← 回Software Factories @ AI Engineer
Boundary006 · AI Engineer World's Fair

Fighting Slop with Slop

拿 Slop 打 Slop:三年造出 BAML 的實驗

Vaibhav Gupta(Boundary) · 2026-07-31 · 21:32

fighting slop with slop — Vaibhav Gupta, Boundary

21:32長度
5金句
8名詞
15段落

Boundary 拿掉 code review、靠 agent 互評來打造 BAML,但講者說這場仗終究會輸,問題在語言的地基。

重點摘要

6 件事

零 code review 的工程哲學團隊不做 code review、要求工程師平行工作,也不規定要用哪一種 AI 工具;能撐起這種鬆散管理的,是他們自訂的一句話——程式碼可以是 slop,寫作不行。

用一份小檔案取代規範與其約束每個人怎麼寫程式,團隊寫了一份極簡的 architecture.md 取代常見的 Claude.md,裡面只放幾個月、幾年都不會變的東西(例如編譯器的分層),讓任何模型都看得懂。

設計文件先於程式碼他們做了取代 Notion 與 GitHub 的設計文件工具,接上 Slack 通知,最後靠一條規定——文件要有人真的讀過——才讓品質穩定下來;再搭配依賴圖與 CI 規則守住架構邊界,三、四個月沒再改過架構。

讓 agent 互相審查、AB 測試語言團隊讓 agent 不斷生成 BAML 程式,再叫另一批 agent 讀執行紀錄找問題,人只負責判斷哪些是真的錯、哪些只是幻覺,甚至直接 AB 測試不同語言設計,用資料決定要留哪個版本。

現有語言的地基本來就有問題講者認為就算做到這些,這場仗還是會輸,因為 TypeScript 這類語言的設計目標本來就是討好會寫程式的人類,那些討好人的妥協,本身就是語言內建的 slop。

解法是讓 BAML 嵌進既有語言不是要大家重寫全部程式碼,而是讓 BAML 的函式能直接被 Python、TypeScript、Rust 等語言呼叫,型別、例外處理甚至 closure 都能正確跨語言邊界傳遞,型別系統成為唯一不會說謊的真相來源。

時間軸 · 金句在右

15 段 · 時碼連回 YouTube

開場:不做 code review 的團隊團隊不做 code review、要求工程師平行工作、也不規定用哪種 AI 工具,三年前決定造一個容不下 slop 的程式語言。
定義 slop:你沒讀過的程式碼導師「Slop Sue」教他要打敗 slop 就得先變成 slop;slop 的定義很簡單——任何你沒讀過的程式碼都算,而現在正是程式庫最乾淨的時刻。
01:16
「Slop is just any code you don't read.」Slop,就是任何你沒讀過的程式碼
architecture.md 取代規範與其規定每個人用什麼工具,團隊寫了一份極簡的 architecture.md(取代 Claude.md),只放幾個月、幾年都不會變的架構分層,讓任何模型都看得懂。
設計文件之戰團隊訂下「程式碼可以是 slop,寫作不行」,做了取代 Notion 與 GitHub 的設計文件工具、接上 Slack 通知,最後靠一條規定——文件要有人真的讀過——才讓品質穩定下來。
02:33
「Code can be slop, writing cannot.」程式碼可以是 slop,寫作不行
依賴圖與架構守門另一個工具把依賴圖視覺化,並用 CI 規則鎖住不能被打破的架構邊界,讓 agent 新增套件或加入不當依賴時能立刻被抓到,架構三、四個月沒再變過。
讓 agent 互評、AB 測試語言團隊讓 agent 不斷生成 BAML 程式,再用別的 agent 讀執行紀錄找問題,人只負責判斷哪些是真的錯、哪些是幻覺,甚至直接 AB 測試語言功能,靠資料而不是猜測做決定。
坦言:這場仗還是會輸講者認為就算做到這些,戰爭還是會輸,因為 TypeScript 這類語言的設計目標本來就是討好會寫程式的人類,那些妥協——像排序時把數字轉成字串——本身就是語言內建的 slop。
換個角度:不靠讀程式碼理解系統介紹 BAML 想從第一原理重新設計語言;示範一個把程式碼視覺化的工具,讓工程師點進去才看到真正在意的那幾行,其他部分可以直接放著當 slop。
全程執行追蹤展示一套幾乎零效能成本的執行追蹤系統,讓 agent(也讓人)不必讀完所有程式碼,就能靠追蹤知道時間花在哪裡、哪裡出錯。
幫 agent 設計的工具用一個能同時給出說明、原始碼與所有呼叫點的「describe」指令取代 grep 系列工具,強調程式碼才是真正說實話的來源,文件與 README 都可能講錯。
11:39
「the code is always the source of truth.」程式碼永遠是唯一的真相來源
每個函式都變成 CLI示範任何函式都能直接打包成獨立、跨平台的 CLI 執行檔,agent 不必先讀懂程式碼就能直接執行,工程師的速度不再被底層系統卡住。
錯誤處理重新設計把錯誤處理拉回第一原理:函式會不會丟出例外由編譯器自動推論並強制證明有沒有處理,不再是工程師憑感覺猜的巢狀 try-catch。
14:58
「It's no more guessing. There's no unknowns. It's guaranteed to be proven.」不再是猜測,沒有未知數,一切都能被證明
承認:新語言會帶來新問題講者坦白要求大家把所有程式碼重寫成新語言注定會輸,真正的解法是讓 BAML 的函式能直接嵌進 Python、TypeScript、Rust 等現有語言呼叫,型別、closure 都能跨語言邊界正確傳遞。
總結:思考過的流程比標準化重要重點不是哪一個工具,而是團隊要對工程流程夠有想法;他舉例前一天就有工程師直接用 BAML 寫出一個部分可用的 C 語言編譯器。
結語:呼籲重造地基呼籲每個人回去打造自己的「不像樣工具」,膽子夠大的人再去想 Git、資料庫與程式語言這些地基級系統該怎麼重造。
20:55
「I think we do need a new Git. I think we do need a new database, and yes, I think we need a new programming language.」我認為我們確實需要一個新的 Git,也需要一個新的資料庫,沒錯,我認為我們需要一個新的程式語言

名詞與人物

8 個

Vaibhav Gupta講者,在 Boundary 工作,主導這場「用 slop 打 slop」的內部工程實驗。
Boundary講者所屬公司,過去三年在沒有傳統 code review 的流程下打造程式語言 BAML。
BAMLBoundary 打造的程式語言,設計目標是讓 agent 能安全大量生成程式碼,同時保有型別安全與可證明的錯誤處理。
Slop這場演講對「你沒讀過的程式碼」的定義,也是團隊自嘲要用 slop 打敗 slop 的核心概念。
Slop Sue講者口中教他「要打敗 slop 就得先變成 slop」的導師,演講裡的玩笑角色。
architecture.md團隊用來取代 Claude.md 的極簡規範檔,只放幾個月、幾年都不會變的架構分層資訊。
TypeScript演講中被拿來當反例的主流語言,講者認為它的設計目標是討好會寫程式的人類,而非替 agent 設計,因此天生帶著 slop。
Ripgrep被講者拿來當「還是要讀程式碼」的比較基準,用來對比後面展示的 agent 專用查詢工具。

延伸

演講裡沒展開的

  • 演講提到有工程師「就在前一天」用 BAML 寫出一個部分可用的 C 語言編譯器,但沒有展示程式碼或說明範圍。
  • 讓 agent 互評並 AB 測試語言功能的那套系統,演講中沒有給它取名字,也沒說明評分或篩選幻覺的具體規則。
  • 講者在結尾提到業界還需要一個新的 Git 與新的資料庫,但這場演講只點出問題,沒有進一步說明方向。

標籤

原片

Agent開發工具評估

在 YouTube 看原片 ↗