---
schemaVersion: 1
slug: mp-309-20260617-rahulgs-code-blackbox-verification
ticketId: MP-309
lang: zh-tw
title: 寫 code 不再是瓶頸：把程式碼當神經網路一樣「黑盒驗證」的時代
summary: rahulgs 丟出一套很硬的心智模型：fable+ 等級的模型其實是「英文轉程式碼」的直譯器，寫出 code 已經不是瓶頸，能不能一邊管風險一邊把 code 審完、合進去才是。低風險的程式碼乾脆當神經網路一樣黑盒驗證，逐行 review 留給真正要命的地方。Claude Code 創造者 Boris Cherny 在底下回了一句「完全同意」，並補上他心中的下一個紀元長什麼樣。
originalDate: 2026-06-17
translatedDate: 2026-06-17
source: "@rahulgs on X"
sourceUrl: https://x.com/rahulgs/status/2067257255825686880
author: null
authorshipNote: null
canonicalUrl: https://gu-log.vercel.app/posts/mp-309-20260617-rahulgs-code-blackbox-verification
status: published
replacementTicketId: null
replacementUrl: null
---

# 寫 code 不再是瓶頸：把程式碼當神經網路一樣「黑盒驗證」的時代

> **來源:** [@rahulgs on X](https://x.com/rahulgs/status/2067257255825686880)

先講一個會讓很多工程師不太舒服的觀點：手上這代會寫 code 的模型，本質上不是「會寫程式的 AI」，而是一台「英文轉程式碼」的直譯器。把一個想法丟進去，它就吐出對應的 code——而且不管問題多複雜、輸出的 diff 多大，它都傾向給出「正確」的那一份。

更扎心的是 rahulgs 補的一刀：Fable 5——眼下這一代的前沿模型——會是這個新物種裡**最爛的一代**。意思不是它爛，而是從今天往後只會更強——現在覺得勉強堪用的能力，就是它的下限。

如果這個前提成立，工程師原本最值錢的技能——「把想法翻成正確的程式碼」——就正在貶值。那剩下什麼還值錢？rahulgs 用十點把答案攤開來，而 [Claude Code](https://gu-log.vercel.app/glossary#claude-code) 的創造者 [Boris Cherny](https://gu-log.vercel.app/glossary#boris-cherny) 在底下蓋了一個大大的同意章。

## 真正的瓶頸不在「寫」，在「審」跟「合」

這套心智模型最反直覺的一句話是：軟體出貨需要的時間，跟「生出那個 PR」需要的時間，已經完全脫鉤了。

過去這兩件事幾乎是同義詞——code 寫得慢，產品就出得慢。但當直譯器可以在幾分鐘內吐出一份功能完整的 diff，產出 PR 的成本趨近於零，整條出貨時間軸就被另一件事接管了：能不能在控制風險的前提下，把這些 code 審完、合進去，而且是大規模地審、大規模地合。

換句話說，瓶頸從鍵盤搬到了審查佇列。一個團隊的速度，不再取決於誰打字快、誰演算法熟，而是取決於它有沒有本事讓正確的程式碼快速通過、同時把危險的改動擋在門外。這正是 gu-log 先前那篇 [程式碼變便宜了，但『相信它』沒有](https://gu-log.vercel.app/posts/gp-230-20260616-agentic-code-review) 的同一個轉折——便宜的是產出，貴的是信任。

> **Mogu 吐槽時間：**
>
> 這一刀砍得很準，但它順手把一個壞掉的 KPI 也照出來了：很多公司還在用「這季合了幾個 PR、寫了幾行 code」當生產力指標。當產 PR 變免費，這個數字就跟「今天呼吸了幾次」一樣沒意義。真正該量的是「合進去而沒出事的改動」——review 吞吐量、風險攔截率，這些才是新的瓶頸儀表板 (⌐■\_■)

---

## diff 要多大，看風險不看潔癖

既然 diff 是直譯器免費生的，那 diff 的大小就不該再為了「方便人類讀」而存在，而是純粹為了 review 服務——而 review 的鬆緊，由風險決定。

rahulgs 把程式碼切成兩種對待方式：

**碰到要命的地方，diff 要小**。身分驗證、權限、資料存取、對外網路、金流——這些區域一旦錯了就是資安洞或資料災難，所以改動要切到夠小、小到人類可以逐行盯著看。

**碰到能被「跑出來驗」的地方，diff 可以放大**。前端、後端管線、不碰網路也不碰資料庫的邏輯、那種跑個 benchmark 就知道對不對的效能程式碼——這類東西的對錯可以用實際輸出來證明，不需要一行一行用眼睛確認，所以 diff 大一點無所謂。（反過來說，gu-log 寫過 [Agent 一口氣寫 1500 行就是警訊](https://gu-log.vercel.app/posts/gp-229-20260616-mitchellh-1500-line-diff)：那是因為那 1500 行落在「人得看懂」的高風險區，不是落在這種能跑出來驗的格子裡。同一條紀律的一體兩面。）

順著這個邏輯，rahulgs 還丟出一個會讓潔癖工程師血壓上升的推論：**複雜度的成本本身正在改變**。現在很可能值得「多養 50% 的程式碼」去換 5% 的效能；找到完美抽象的重要性下降了，因為大型重構不再那麼痛苦；反而是糾結程式碼品質的小毛病，變成最大的拖累。他的賭注是——很可能有個更聰明的模型會接手維護這些 code，所以**現在多扛一點技術債是划算的**，而花大把時間親手雕琢、重建系統架構，反而要付出巨大的速度代價。

> **Mogu 碎碎念：**
>
> 這段是整串裡最容易被斷章取義的。rahulgs 不是叫人擺爛寫垃圾 code——他講的是「抽象」跟「nits」這兩層的潔癖該放掉，因為重構變便宜了、未來有更強的模型幫你還債。但他同一串裡把「資安、正確性」的標準拉得超高（diff 要小、要逐行審）。所以正確的讀法是：**該龜毛的地方更龜毛，該放手的地方別再為了優雅熬夜**。把這句讀成「技術債無所謂」的人，大概只看了第七點沒看第二點 ┐(￣ヘ￣)┌

---

## 把低風險的 code 當神經網路：黑盒驗證

接下來這點是整套思維的核心，也是最大膽的一步。

rahulgs 的說法是：如果它叫起來像鴨子、走起來像鴨子，那它就是鴨子。對於低風險的程式碼，與其逐行去理解它在幹嘛，不如把整塊 code（一個服務、一個函式）當成一個**黑盒子**——就像大家對待神經網路那樣，根本不去拆解內部每個權重，只做純粹的實證驗證。

什麼叫實證驗證？問幾個很務實的問題就好：

- 這塊 code 對最近的 10 筆、100 筆、1000 筆、10000 筆輸入，產出的結果對不對？
- 能不能把它隔離起來——不准它對外連網、不准它碰資料庫？
- 萬一它出錯，後果是什麼？是被駭、是當機（記憶體/CPU 爆掉）、還是只是個小麻煩？
- 它是對內還是對外？針對這些風險能做什麼防護？

順著這個邏輯往下推：**逐行讀懂程式碼邏輯這種審查，終究會變成一件昂貴到不划算的事**。所以要把它省下來，只花在真正要命的地方，然後反過來——把系統蓋成「容得下實證驗證」的樣子。rahulgs 舉的例子是：有沒有一個裝飾器可以直接掐掉某塊 code 的資料庫跟網路存取權？因為他觀察到一個關鍵不對稱——**正確性的 bug，遠比存取權的 bug 好補**。算錯一個數字，改一行就好；但讓一塊不該連外網的 code 連上了外網，那是會被人鑽的洞。

> **Mogu 真心話：**
>
> 「把 code 當神經網路黑盒驗證」這句話，工程師第一反應通常是「瘋了吧，誰敢合自己看不懂的 code」。但冷靜想想——大家早就在這樣對待第三方套件了。有誰逐行讀過自己 import 的那 200 個 npm 依賴？沒有。大家信的是它的行為（測試過、很多人用過、出事範圍可控），不是它的每一行。rahulgs 只是把這個「對別人的 code 才有的信任模型」搬到自己生成的 code 上。前提是那個「隔離 + 實證」的籠子要先蓋好，不然就真的是瞎合 (╯°□°)╯

---

## 讓迴圈更快的「軌道」：權限預設全關、要用才開

如果寫 code 免費、審 code 才是瓶頸，那工程師的精力就該全砸在「拓寬這條審查管線」上。rahulgs 把這件事拆成三層能力。

第一層是**把瓶頸工具化**。程式碼檢查工具、測試、CI、影子模式（shadow mode：把新版跟舊版平行跑、只比對輸出而不真的對外出貨）驗證、實證驗證——這些原本是「品質保險」的東西，現在升格成「速度引擎」。能自動擋掉的風險越多，人類就能放心讓越大的 diff 通過。

第二層是**主動性**：要有人持續追問「現在拖慢這個迴圈的最大瓶頸是什麼？怎麼幹掉它？哪些問題該解、什麼時候解？」——把找瓶頸、清瓶頸本身當成一份正職工作。

第三層是**對整個技術棧的深度理解**。這點最值得玩味：rahulgs 不是說「理解每一行」不重要，而是說**理解並管理風險**才是真正重要的。要判斷哪些問題值得解、要不要先解一個更上層的抽象、該丟給模型的是子子任務、子任務、還是整個任務；要排出這個 PR 的風險順序（重要性依序是：資安洞 > 正確性洞 > 效能洞）；要決定這塊該跑在影子模式、沙箱、還是用旗標包起來。

而支撐這一切的，是他口中的「軌道（rails）」：**程式碼的權限應該預設全關、要用才一項一項開**。資料庫寫入、資料庫讀取、對外連線（要連去哪？）、PII 存取——統統先鎖死，需要哪一項才明文打開。再配上「拿到影子模式數據要多久、能同時測幾個 PR、diff 可以分成哪幾類」這些問題，整條迭代迴圈就能在安全的前提下越跑越快。

> **Mogu 碎碎念：**
>
> 「權限 opt-in」這四個字是整串最被低估的工程結論。它等於把雲端 IAM 那套「最小權限原則」直接搬進你自家的函式層——每塊 code 預設活在一個什麼都碰不到的真空裡，要連 DB、要出網都得明文申請。這樣一來，就算某塊黑盒 code 真的寫錯了，它能造成的傷害也被權限籠子鎖死在「小麻煩」等級，不會升級成「上新聞」等級。黑盒驗證之所以敢玩，靠的就是這層籠子。先蓋籠子，再放手 (๑•̀ㅂ•́)و✧

---

## Claude Code 創造者點頭：下一個 code 紀元

這串推文底下，蓋章的人來頭不小——Claude Code 的創造者 Boris Cherny [直接回了一句「以上全部，強烈同意」](https://x.com/bcherny/status/2067272742253232211)。會點頭並不意外：他先前受訪時就講過 [Coding 已經被解決了](https://gu-log.vercel.app/posts/mp-115-20260223-bcherny-coding-solved-lenny)，也談過 [讓 Claude Code 抓 99% 的 bug、人類只做最後把關](https://gu-log.vercel.app/posts/mp-222-20260329-bcherny-claude-code-99-bug-sanity-check) 的分工——rahulgs 這套「人退到管風險」的講法，正好接在他一路以來的立場後面。

他接著補上自己版本的願景：軟體正在進入下一個紀元，模型有能力為**越來越大比例**的任務生出正確的程式碼。所以工程師的工作變成兩件事——先確保模型跟整套系統有對的護欄，然後就是讓「Claude Code ＋ 一個夠強的模型 ＋ 一個驗證器」跑成一個迴圈，不斷餵任務進去（或者，直接給模型它需要的數據，讓它自己生任務），並且一路上把瓶頸找出來、清掉。

把 rahulgs 跟 Boris 兩段疊起來，會看到同一個結論從兩個角度收斂：rahulgs 從「工程師該怎麼想」切入，Boris 從「系統該怎麼搭」收尾。一個說人要把精力從寫 code 移到管風險，一個說產品要把流程從「人寫人審」變成「模型寫、驗證器驗、人顧護欄」。中間那個共用零件，就是**驗證器 + 護欄 + 持續清瓶頸**這條迴圈。

> **Mogu murmur：**
>
> Boris 那句「給模型它需要的數據，讓它自己生任務」聽起來雲淡風輕，其實是整段最猛的一步。前面 rahulgs 講的是「人類把任務切好丟給模型」，Boris 直接把切任務這件事也想交出去——人類退到只顧護欄跟迴圈設計。這跟他自己做 Claude Code 的方向完全一致：工具不是來幫你打字快一點，是來把「寫 → 驗 → 合」整條迴圈接管掉。當然啦，這套能不能成立，全押在「驗證器夠不夠可靠」這個前提上——驗證器要是會看走眼，整個迴圈就變成全自動量產 bug 的機器 (¬‿¬)

---

## 結語

把這串推文濃縮成一句：**寫程式碼的能力正在通膨，管理風險的能力正在升值**。

值得記住的不是「以後 code 都給 AI 寫」這種廢話標題，而是底下那個更難的轉身——當產出一份正確 diff 變成免費，工程師真正的戰場就移到了「怎麼蓋一個能讓正確的 code 飛速通過、同時把危險改動鎖在籠子裡的系統」。逐行讀懂每一行，會從美德變成奢侈品——這正是 [Andrew Ng 說他已經不看 AI 寫的 code](https://gu-log.vercel.app/posts/mp-122-20260225-andrewng-stop-reading-code) 的同一個方向；而蓋好籠子、設好護欄、把驗證自動化，會從雜事變成核心競爭力。

所以下次再花一整個下午跟一個漂亮但無關痛癢的抽象較勁之前，或許值得先問一句：這個下午，拿去把那條 review 管線拓寬一點，是不是更值錢？
