fighting slop with slop — Vaibhav Gupta, Boundary
三句話摘要
超越代碼審查:用工具與設計而非人力審查確保系統穩定性,以及為 AI 時代重新設計的新程式語言 BAML。 不是用人力審查代碼確保品質,而是用工具、設計與系統化驗證來建立複雜系統的信任——AI 時代的工程實踐需要重新思考底層假設。 用不變性工具取代程式碼審查 — 不是讓人去讀代碼,而是建立 CLI 工具監控架構規則(語義邊界、依賴關係圖),確保某些設計決策不被破壞。當新包被添加或依賴有漏洞時,CI/CD 會自動告訴你問題在哪裡。
重點整理
重點- 1
用不變性工具取代程式碼審查 — 不是讓人去讀代碼,而是建立 CLI 工具監控架構規則(語義邊界、依賴關係圖),確保某些設計決策不被破壞。當新包被添加或依賴有漏洞時,CI/CD 會自動告訴你問題在哪裡。
- 2
設計文件必須比代碼更嚴謹 — 代碼可以粗糙,寫作不能粗糙。通過設計工具 + Slack 整合每次更新都推送通知,使設計文件成為公司最受歡迎的溝通管道。引入「必須有人真正讀過才能發佈」的規則,自動提升品質。
- 3
代理驗證系統取代人工檢查 — 讓 AI 代理持續生成、測試 BAML 程序,再由另一個代理檢查是否有錯誤(語言缺陷、重複工具調用、邏輯漏洞),通過 A/B 測試找出最優特徵,無需編寫任何代碼就能建立資料驅動系統。
- 4
從第一原理重新設計語言特性 — TypeScript 繼承了 JavaScript 的深層缺陷(分類轉字串、類型推斷漏洞)。BAML 內建強型別錯誤處理(like Rust),編譯器自動推斷函數會拋出哪些異常,保證處理完整性;支援跨語言調用(Python、TypeScript、Rust、Go、Java),傳遞 lambda、泛型、閉包都有型別保證。
實用技巧與重點
乾貨- 團隊規模對比:傳統開發語言需 8 人、2 年以上、數千工時,BAML 只需數百萬個代幣
- 設計文檔工具功能:版本控制、評論功能、Slack 整合推送、Markdown 支持、類似 GitHub 的 CLI 腳本
- 監控工具:
- 依賴關係圖視覺化(內部+外部依賴)
- 架構規則檢查(語義邊界、包隔離)
- 代理驗證流程:
- 代理生成 BAML 程序
- 另一個代理檢查錯誤類型、工具調用次數、結果正確性
- 人類確認真實 vs 幻覺
- A/B 測試找最優特徵
- BAML 核心特性:
- 自動錯誤型別推斷(函數知道會拋出哪些異常)
- 編譯時錯誤處理保證
- 跨語言互操作(Python→TypeScript→Rust,型別安全)
- 傳遞 lambda、泛型、閉包跨語言邊界
- 執行追蹤系統(每個文件含追蹤,代理可審查代碼缺陷與優化機會)
- 可編譯成獨立 CLI 二進位(WASM 兼容,跨 Windows/Mac/Linux)
- 具體例子:工程師用 BAML 完全構建了部分 C 編譯器
結論
結論“不是用人力審查代碼確保品質,而是用工具、設計與系統化驗證來建立複雜系統的信任——AI 時代的工程實踐需要重新思考底層假設。”
完整解析
詳細Vaibhav 來自 Bemo,他分享了一個反直覺的工程實踐:他們開發新程式語言 BAML 時不做傳統程式碼審查,而是依賴自動化工具與系統設計來確保品質。這個選擇源於一個現實:試圖雇用頂尖工程師卻無法統一他們使用的工具與標準(有人想用 Claude、有人想用 Codex),與其強制標準,不如賦予自由。
為了管理這種自由帶來的複雜性,他們建立了三層防禦。首先是架構文件層:一份極小、幾年不變的 `architecture.md` 檔案,只記載編譯器各層結構。任何 AI 代理都能讀懂,新人深入編譯器前必須先與另一位成員溝通。其次是設計層:他們開發了一套設計文件工具(版本控制、評論、Slack 整合),每當設計更新時主動推送到公司頻道。這個工具意外地成為最活躍的溝通方式——凌晨 2 點有人發設計文件,三個人立刻開讀,因為它有趣且不常改變。引入「必須有人真正讀過才能發佈」的規則後,文件品質飛升。第三層是架構監控:一個依賴關係圖工具視覺化程式碼庫,搭配 CLI 檢查規則(包隔離、語義邊界),確保不變式不被破壞。
最革新的部分是驗證層。他們讓 AI 代理持續生成 BAML 程序,再用另一個代理檢查——不僅找出語言缺陷,還分析工具調用次數、是否重複、邏輯漏洞。通過 A/B 測試,他們能確定性地知道哪些特徵減少工具調用、減少錯誤、提高準確率。人類的角色變成判斷「這是真實 bug 還是幻覺」。這樣做的好處是:無需編寫任何代碼就能建立資料驅動的優化系統,傳統上需要 8 人、2 年、數千工時的開發工作只需數百萬代幣。
但 Vaibhav 坦言,現有工具都有底層缺陷。他以 TypeScript 為例:它繼承了 JavaScript 的問題。為什麼分類時要轉成字串?為什麼類型推斷會失敗?這不是 TypeScript 的錯,而是 JavaScript 先存在,然後人們試圖在它上面疊加。BAML 的解法是從第一原理設計:強型別的錯誤處理(如 Rust)。當一個函數呼叫 divide 函數,而 divide 會拋出「除以零」錯誤,編譯器自動推斷該函數也會拋出這個錯誤,無需手寫;捕捉或處理錯誤時編譯器可證明你是否處理完整。跨語言互操作也內建其中:Python 代碼可呼叫 BAML 函數完全型別安全,傳遞 lambda、泛型、閉包都經過型別檢驗,不需要額外封裝。執行追蹤系統記錄每次函數調用的耗時,代理無需讀代碼就能通過追蹤找出效能瓶頸與邏輯錯誤。
他強調,這不是要全世界重寫所有代碼。BAML 的價值在於可從任何語言調用,作為現有系統的補充,而非替代。最後他呼籲工程師回家後建立這些「粗糙工具」強化系統穩健性,同時鼓勵勇敢者思考底層系統哪裡出錯,可能需要新的 Git、新的資料庫、新的程式語言。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。


