doubleshotblog
← 回到全部文章

已經沒有人讀代碼

連《Clean Code》作者都不讀 agent 寫的代碼——他改用一整套關卡去換信心,而關卡只攔得住有人已經想過的錯。

2026年8月30日 · 5 分鐘 · 雙份濃縮 · #ai #craft #business

有一本書,教會一整代人把代碼寫得可讀。寫那本書的人說,他不讀自己 agent 寫的代碼。

這不是雙重標準。這是讓步,而且讓得比看上去多。

可讀從來不是產品,只是「信心」的一個便宜替代品——讀得懂,你才敢相信那段代碼做的事。他不再買替代品,直接買信心。整個行業其實在做同一件事,只是未必察覺。

值得問的不是他對不對。值得問的是:這場交易讓你看見甚麼,又靜靜地不再讓你看見甚麼。

他讓的是哪一步

他做的不是躲懶,是替換。

7 月,Robert C. Martin 在 X 貼了一段話。大意是:

我不讀 agent 寫的代碼。那些代碼要闖過我所有約束和測試——unit tests、gherkin tests、QA 流程、質素指標、mutation testing、測試覆蓋率,還有一大堆其他約束。闖得過,我對出來的東西就有很高信心。

他自己把那套東西叫做 gauntlet——一連串關卡,兩排人夾道打你,捱得過就算過關。捱得過,不等於有人替你看過一眼。

他沒有放棄 2008 年《Clean Code》以來主張的紀律,只是把紀律搬了位置。以前紀律在代碼裡面——命名、函數大小、一個人讀得明的結構。現在紀律搬到代碼外面那部機器,代碼本身,已經沒有人讀。

替他講句公道話:他是用一套花錢又花心思的東西去替換「讀」。行業現在的常態,是用「甚麼都不做」去替換「讀」,然後叫那個結果做生產力。

關卡看不到的東西

Martin 更早講過同一個意思。4 月,Grady Booch 這樣回應,大意是:

agent 生成的代碼,我全部都會審視。覆蓋率那一類指標,可以給我「功能正常」的信心。但要相信 agent 沒有引入漏洞,那些指標一點信心都給不到我。

他針對的是這一整類做法,不是 Martin 那一套的細節。

再推一步。關卡是用「已經知道的失敗」砌出來的。每一道閘背後,都是某個人犯過一次的錯。犯完,就有人決定從此每次都要檢查這一項。所以關卡記住的,全部是舊傷。未有人受過的傷,關卡認不出。

關卡不是判斷。關卡是一張清單,上面只有你已經想過的錯。

8 月,Z.ai 報告旗下的 GLM-5.3 在 269 個開源項目裡找到 2,436 個漏洞,其中 1,097 個屬中至高危。平均潛伏 26.6 年。最舊一個,追到 1981 年。

這組數字,是廠商測自己的模型、自己公布出來的。跟看任何一份廠商 benchmark 一樣,先打個折。

打折之後,要緊的那一點沒有變:那些漏洞在廣泛使用的軟件裡待了幾十年。期間做過多少檢查,一次都沒有攔住。原因不是檢查馬虎,是沒有人想過要建那一道閘。

落到你的賬單上

這件事其實不陌生。生意的其他地方,你早就接受了同一場交易。

你不會讀會計師的工作底稿。你靠審計,這樣做沒有錯。分別在三點。審計覆蓋甚麼,你大致知道。邊界應該劃在哪裡,整個行業一直在公開爭論。而且有人簽名,要負責。

軟件沒有這種共識。供應商說「我們 AI 輔助做出來的東西質素很高」,意思通常只是「過了我們的關卡」。他們很少講關卡查甚麼。你也很少問。

所以要問供應商的問題已經變了。「給我看代碼」從來不是真要求——你本來就不會讀,現在連他們也不讀。「給我看你的關卡」才是真要求,而且答得好不好,不懂技術的老闆一樣判斷得到。

  • 問清單。那套關卡到底查甚麼,要一頁紙寫得完。寫不出清單,就是根本沒有清單。
  • 問攔截紀錄。一套關卡從來未攔停過任何東西,那是裝飾,不是把關。
  • 問補救。漏了之後,由誰去加那一道閘?一套關卡誠不誠實,看失手那一日發生甚麼事。
  • 問邊界。哪些東西不在覆蓋範圍,要白紙黑字寫出來。每一套關卡都有邊界;供應商講不出自己的邊界,即是未認真找過。

這幾條,沒有一條需要你讀一行代碼。但每一條,都很難用一頁簡報蒙混過關。

你真正買的是甚麼

決定這一切值不值得的,仍然是審問明辨那一步。變的是:被查的那樣東西,已經沒有人讀。

Martin 的答案站得住。對他自己的工作,那個答案大概也是對的。他花了接近二十年去想同一個問題:甚麼值得查。一套關卡值得信,靠的就是這份資歷。

風險從來不在他的答案。風險在複製的人身上。聽到「你不用讀代碼」就停在那裡,後面那一長串紀律一項都沒有搬過去,然後出貨。

那種團隊,一樣有很高信心。信心,正正是一套弱關卡唯一能穩定生產出來的東西。

1981 年那個漏洞,闖過了當時所有人想得到的每一道閘。之後四十五年,看上去和「質素很高」一模一樣。

參考來源

  1. Robert C. Martin — on not reading his agents' code
  2. Uncle Bob vs Grady Booch — rethinking code review
  3. Z.ai — GLM-5.3 vulnerability discovery