缺陷抓得再快,code review 還是得有人問這筆改動該不該存在

https://www.adaptivecapacitylabs.com/2026/08/24/there-is-more-to-code-review-than-automatable-detection/

2026 年 8 月 24 日,John Allspaw 在 Adaptive Capacity Labs 的網站上寫了一篇,整段引用了一篇論文的摘要。論文標題是 The End of Code Review: Coding Agents Supersede Human Inspection,6 月 11 日以第一版掛上 arXiv(2606.13175),作者是瑞典皇家理工學院 KTH 的 Martin Monperrus。Allspaw 連結這篇、行文稱「這篇文章」「作者」「這篇論文」。Monperrus 這個名字在他連結的論文頁上。

摘要把 code review 寫成軟體開發的主要品質關卡:從 Fagan 1976 年把 code inspection 形式化算起,五十年來、各種規模的組織,合併前由人看過同事的改動。Coding agent 在摘要裡是以大型語言模型為底、能讀、能寫、能測、能修軟體的自主系統。論文主張,agent 已經跨過一道能力門檻,傳統的人類 code review 不再是品質管線裡必要的一環。撐住這句的是兩個主張。Code review 講出來的每個目標,agent 都能以更低成本、更高吞吐做到。Agent 寫 code、人仍當強制審查者,這種接法是死胡同:給不出有意義的保證,也無法跟著 AI 輔助的吞吐擴張。

Allspaw 認為文章結構清楚,不常讀論文的工程師也看得懂。論證站在一個他稱為 substitution myth 的框架上。這個框架先把人的貢獻拆成幾項可度量的功能,再證明機器每項都做得到,然後宣布人可以換掉。

Monperrus 這篇自己寫明是立場論文,綜合既有的能力證據,沒有另做一篇新的實證。它把 peer code review 拆成四項功能:抓缺陷(defect detection)、風格與慣例的檢查(style enforcement)、知識傳遞(knowledge transfer)、讓相關的人知道發生了什麼改動(awareness)。論文把這四項跟 Bacchelli 與 Bird 對實地審查的整理對在一起,接著主張 agent 每一項都做得到,於是有能力換掉人類 reviewer。論文引言把這句說得更直:傳統的人類 code review 已經多餘,品質管線應改由 agent 做驗證。引言裡還有一句 Allspaw 沒有拿來當靶子的話:對常規改動,強制人審的成本效益已經翻轉。他的文章沒有引用那些能力數字。他抓的是拆法。拆完之後,每一項都被當成機器可以單獨做完、也量得出來的功能。他認為審查裡要緊的事,常常拆不成這種可勾選的功能。Allspaw 把爭點放在這個推論:做得到每一項,就換得掉 reviewer。推論要成立,審查必須等於四項的加總。他認為不等於。缺的判斷也拆不成清單上的下一項。

說一句看不懂,就是這次審查的發現

有經驗的工程師讀完一份 diff,說 “I don’t understand this.” Allspaw 寫,這句困惑就是發現。它可能是 code 太複雜,可能是抽象不對,也可能是意圖沒講清楚。三種讀法都落在這筆改動上:一個夠格的人讀不下去。

大型語言模型處理得了這份 code,也能寫出一段看起來通順的說明。處理得了,跟給得出另一種訊號,是兩件事。後者是一個夠格的人正當地看不懂。模型這邊的「看懂」是把內容處理完。人這邊的看不懂是一種阻力,阻力本身帶資訊。論文把可理解性放在比較靠近風格的那一側。可理解性不是風格問題,是人試著讀懂這份產物時才出現的性質:人卡住或跟上,發生在這次互動裡。風格檢查多勾一格,替代不了有人在讀、而且讀不下去。

看不懂一旦被收進風格,它就不再被當成這筆改動的發現。Allspaw 把方向倒過來。合法的人類不解,是審查該留下的訊號。模型的處理能力蓋不住它,因為那個訊號要有一個會不解的人,才出得來。

對不對之前,先問這筆該不該存在

審查裡會出現這樣的句子。「這應該拆成兩個 PR 嗎?」「這解的是症狀,不是問題。」問的是意圖、範圍、這筆改動適不適當。這些都排在「code 正不正確」前面。範圍問的是這份 diff 是不是把兩件決策綁在一起。症狀問的是,眼前這個修法過了,原來的問題還在不在。兩問都還在爭這筆改動該以什麼形態存在,甚至該不該存在。

論文的框架假設送審的改動是必要的,也假設審查主要在做驗證。碰過正式環境(production)的人知道,code review 常常是最後一次、有時是唯一一次,還能期待有人出聲問:這筆到底該不該改。

審查若把改動當成既成事實,剩下的座位只夠找錯、對風格、對測試。必要性沒有座位。Agent 可以很會驗證一份已經決定要進的 diff。驗證問的是:照眼前這份改動,實作有沒有偏。必要性問的是:這筆值不值得合併。第二問不在那四項功能裡。四項都做完,第二問仍然可以沒被問過。

論文摘要把「agent 寫、人仍每一筆必看」稱為死胡同。論文正文接著寫得更具體:agent 生出 code 之後,人審常常變成橡皮圖章;人的產能跟不上 AI 的吞吐,審查佇列變成卡住管線的地方。Allspaw 引用的摘要裡已經有死胡同這個判斷。他沒有因此同意人審可以從管線拿掉。他指出框架先把改動當成必要,把審查收成驗證。人還坐在審查席上,被分到的工作只剩對不對。該不該存在,不在問題裡。

該在卻不在,diff 不會自己標出來

人可以注意到一件事:API 契約改了,錯誤處理沒改。缺的那一塊不會以新增行的樣子出現在 diff 裡。審查者心裡有一份「按這個改動,這裡應該有東西」的預期,然後發現預期落空。Allspaw 把這個能力寫成:認得出預期該在、實際上不在。

論文沒有談這個。他認為特別該談,因為看不見缺席(absence blindness)正是大型語言模型常常很弱的一類失敗。Agent 審在場的內容。有這塊經驗的工程師,很容易看見不在場的內容。

四項功能裡的「抓缺陷」,預設缺陷是看得到的偏差:寫錯的邏輯、不合風格的寫法、不該出現的資安問題。缺席常常沒有偏差可標,因為那一行沒被寫出來。清單對著在場的行比對,缺的那一塊不會被任何一項功能報出來。審查若被定義成偵測在場的問題,這一類從定義裡就消失了。Agent 把四項都做完,做完的報告仍然可以對一份少了錯誤處理的改動給過。

預期從哪裡來,他沒有另寫一份清單。契約一改,呼叫端通常還要處理新的失敗,這是熟悉這塊的人帶進來的。Agent 比對已經寫出來的行。人多比對一層:這種改動通常還會帶上、這次卻沒有的東西。

誰寫的,會改你盯多緊

Peer review 的人帶著一種校準過的注意力(calibrated attention):依過去跟作者共事的經驗,決定這次盯多緊。作者常常就是同事。資歷較淺的工程師第一次提交進支付模組,得到的注意力,跟一位資深、他稱為 grey beard 的工程師做例行重構,不會一樣。審查者把當下的誰、改什麼、什麼時候、在哪裡,對上自己知道風險落在哪。支付模組本身危險。第一次交這塊的人,危險再加一層,因為審查者還沒有這個人在這塊上的紀錄。老手的例行重構仍要看,盯的密度來自另一種經驗:這個人過去怎麼處理類似的改動。

論文把 diff 當成等價輸入。同一套檢查、同一種簽法、同一種說明。自動檢查這樣做說得通,測試不關心這是誰的第一次。人審若也把輸入等價化,資淺者第一次動錢流,跟老手改自己寫過很多遍的模組,會走同一種盯法。風險感是校準過的;把 diff 當等價輸入,給不出「這個人過去交過什麼」這層經驗。

摘要替代不了兩邊一起把理解做出來

論文把知識傳遞收成資訊投遞,agent 產生解釋就好。Allspaw 寫,code review 裡的討論是一種共同的認知活動(joint cognitive activity)。審查的人學到作者怎麼下手。作者從審查者的問題裡,學到自己沒講清楚的地方。討論結束時有一份共同理解,開始之前兩邊都沒有。那份理解要等討論發生才有。摘要若在對話之前產生,手上只有對話還沒發生的那一側。

他用 coactive 叫這種工作:兩邊一起做。單向傳送是作者把已知的東西交出去,接收端收下。審查裡常發生的是兩邊都還不知道最終那份理解長什麼樣。審查者的問題可以逼出意圖,作者的回答可以改掉審查者原本的讀法,兩邊的心智模型都動了。Agent 的摘要可以寫得很完整,這個過程還沒開始。

「讓別人知道」(awareness)在四項功能裡是單獨的一項,論文認為 agent 同樣做得到。Allspaw 沒有另開一節駁它。他寫到的「知道」,出現在版本庫外面的脈絡裡。那份知道常常不在這份 diff 裡,一份說明也投遞不完。

版本庫外面的一句話,會改這筆 diff 怎麼讀

審查時會出現 diff 裡沒有的句子。「這個服務上星期二剛出過事。」「下游那個消費端的團隊,快要把這個介面廢掉。」「法務跟我們說,這個欄位不要再寫進 log。」

這些是審查者帶在身上的話。上星期二的事故改的是風險背景,同一筆改動跟平常那天不一樣。下游即將廢掉的介面,改的是這筆還值不值得做。法務那句話,改的是某一行 log 還准不准留。三句都碰到「code 正不正確」以外的判斷。

人掌握的脈絡比自己意識到的多,真的碰上時又認得出來。組織現在什麼狀態、最近發生過什麼、測試和文件和版本控制都沒寫下的非正式約定,都會影響眼下這筆 code 該怎麼看。這種事常見到幾乎隱形。論文假設 codebase(這份程式碼庫)就是完整脈絡。Allspaw 寫:從來不是。

審查當下把這些句子跟這份 diff 接上的,是已經知道這些事、又被要求對這筆改動負責的人。程式碼庫再齊,也只齊到有人把它寫進去的程度。沒寫進去的那部分,會改這筆怎麼判。

簽名會痛,審查的方式才會不一樣

論文把人的責任當成合規物件:為了法律或其他規則,需要一個具名的人(named human)。Allspaw 認為這樣不夠。你知道自己個人要為核准這筆改動負責,審查就會被這個事實塑形。他稱為 skin in the game。Agent 在 pull request 上簽過,不承擔後果,也沒有一種激勵結構逼它認真估這一筆。

論文的討論有把倫理放進來。落到的建議是:倫理審視放在需求工程(requirements engineering)和上線後的監控(post-deployment monitoring);強制的 PR 審查不承載這件事。Agent 審查像其他自動檢查一樣被治理,不確定或高風險再升級給人。Allspaw 把這個轉向稱為 hand-waving,是把眼下的問題往後踢。

論文建議的調整是:多數 commit 由 agent 做有結構的簽核;人的核准留給高風險改動、新的架構,以及法規要求具名負責的路徑。這份分級看的是改動種類。Allspaw 寫的那種注意力,看的是誰交的。論文在拆功能時把 diff 當成等價輸入;後面的分級把高風險挑出來給人,沒有把「這個人過去交過什麼」放回每一筆的盯法裡。

他沒有逐條拆這份建議。他抓的是責任被當成表格上的名字之後的後果。名字在表格上,不會改變人怎麼讀 diff。會改變讀法的,是這筆如果出事,算在簽名的那個人身上。沒有後果的簽核,沒有這個壓力。

課責若只剩合規物件上的具名,或只出現在受規管路徑,日常合併上別人期待的那種社會課責就蓋不住。

四項各做一遍,跨在中間的那層從第一步就沒了

Allspaw 對這篇文章最根本的異議,是它把 code review 主體放在偵測上:找缺陷、找風格違規、找資安問題,然後假設偵測得更快、更便宜,一律更好。

Code review 同時是協調、意義建構(sensemaking)、治理(governance)。協調是相關的人要不要在這筆改動上對齊。意義建構是把 diff 讀成:在現在這個組織裡,這筆到底在做什麼。治理是誰有權放行,放了之後誰承擔。三件事發生在同一次閱讀裡。人可以看不懂這筆抽象,看見錯誤處理沒跟著契約走,想起上星期二的事故和法務那句話,也知道這是誰第一次動支付、核准算在自己頭上。這些判斷會互相改寫。拆開成交接的四份產出之後,那個互相改寫的動作不在任何一份裡。

Substitution myth 在他筆下常走同一條路。先把人的貢獻拆成可度量的功能。再證明機器能用它自己的可度量功能,把這些貢獻複製出來。然後宣布人多餘。這條路常常在同一個點垮掉。真正要緊的貢獻,是跨功能怎麼接在一起。人能對沒有事先計畫的情境和脈絡改自己的做法,並且承擔別人期待的那種社會課責。

沒有事先計畫,指的是審查進行到一半,輸入變了。上星期二的事故不會出現在四項功能的定義裡,它出現在審查者打開 diff 的那一天。人改的是自己怎麼看這筆,功能清單還是原來那四項。簽名會痛也不會變成第五項可勾的功能,它改變的是前四項要看得多認真。臨時的法務約束同樣不在清單上。拆解的第一步沒有把這些算進去。要緊的是跨功能怎麼接在一起,不是把人的貢獻再拆細一點;他認為原文也沒有把這層算進去。

讓 agent 寫 code 的團隊若照這個分法排管線,找缺陷、對風格、掃資安可以留在自動檢查裡。人留在合併前那個要不要放行的決定上:這筆改動該不該存在、缺了什麼、版本庫外面哪一句話會改讀法、核准算在誰頭上。四項功能各做一遍,得不出這個決定可以刪。

Navier-Stokes 之後,LLM 還是個不能放手自己顧店的怪物級實習生

https://dank.systems/posts/2026-09-15-ai-bear.html

Navier-Stokes、FreeBSD 的 RCE、Hugging Face 那場事故,頭條一輪接一輪。同一段時間,還有一件事在發生:軟體公司照樣在雇人、在留人,而這些工程師在當紅 benchmark 上的分數,比他們每天要盯的模型還低。

Jay Kruer 在 dank.systems 寫下《why i'm still bearish on LLMs after navier-stokes》,就從這個落差問起。如果模型真能接手,這些位子為什麼還在?

問題出在定價。前沿實驗室的估值,掛在一個故事上:現成、可以直接整批替換掉多數知識工作者的東西,馬上就會有,或很快就有。但今天的前沿模型,連最簡單的任務都要人費工監督,護欄一層又一層。頭條上的火力展示、實驗室自己的說法,把「有意義的自主已經到手」講得很像真的。估值是照那個故事給的,模型現在的表現不是。

模型的強,只延伸到訓練資料隔壁那一小圈

模型能好好泛化的範圍很小,就貼著它訓練過的那些任務。連在這個範圍裡,都有很重的但書。實驗室確實有一套通用配方,幾乎任何「好壞可以被明確打分」的特定任務都教得會,很多這類任務也本來就躺在訓練資料裡。但只要在同一類任務裡稍微動一下,下場往往是直接失敗,或者開始 reward hacking,用看起來過關的方式騙過評分。

要修 reward hacking,得先找到很少數的那種人

他認為,reward hacking 現在唯一的解法,是靠領域專家寫出嚴謹的規格。領域專家的時間貴得嚇人。更麻煩的是,嚴謹的規格本身是一門手藝,要的是問題領域之外的專業,連很多熟練的軟體工程師都做不好。要同時是領域專家、又是規格專家,在絕大多數領域裡,這種人的交集小得可笑。

CPU 專案裡,寫規格跟驗證的人比設計的人多

貴還不是最麻煩的。嚴謹規格的工,常常比照著口頭規格直接把東西做出來還重。硬體工程就是最好的案例。圈內有個說法:一個典型的 CPU 專案,規格與驗證工程師大約是設計工程師的三倍,五比一也不是沒聽過。

而且多數任務沒有「規格寫一次就放著」這種好事。嚴謹的正式規格,常常是在照著口頭規格實作的過程中,邊做邊跟冒出來的發現對話,才慢慢長出來的。至於那些真的有一份高階規格、寫完就不用再動的任務,比如一整個 CPU 架構家族的指令集規格,用現在的技術去驗證,代價高到做不動,只好退回比較低階的規格。低階規格造起來更貴,遇到設計變動也更脆。

Navier-Stokes 是最順的那一題,不是常態

Navier-Stokes 這類題目,跟純數學裡同類的命題,是 agentic 工作對上嚴謹規格時的絕對最佳情況。定理的敘述本身就是一份嚴謹規格,而且被數學社群審了幾十年。要把它翻成 Lean,只是用 mathlib 裡那些身經百戰的數學物件直譯一遍。負責當裁判的 Lean 也被大量稽核過,而且專門設計來避開那些會讓它被 reward hack 的健全性(soundness)問題。

但它不是金鐘罩。以前就出現過健全性漏洞,讓 LLM 把假證明從證明核心(kernel)洗過去;這種漏洞還有更多顆沒被找到,也不是不可能。而這已經是最樂觀的配置了。絕大多數人類的知識工作,長得完全不像這個樣子。

找人類來複查,一樣撐不住

嚴謹規格之外最好的替代方案,是人類複查。人類複查的量能,跟語言模型產出的量完全不成比例。更糟的是,連專家人工複查都極容易被 reward hack:xz 後門、明尼蘇達大學那批 hypocrite commits 混進 Linux,都是現成的例子。

只要人類複查還是 agentic 生產流程裡的關鍵環節,生產速度就注定被人類的時間跟注意力卡住。對「一整個國家的天才都塞進資料中心」那個畫面來說,這是完全行不通的。偏偏前沿實驗室的執行長們,講得像是再幾個月就會到。

真的能放手的公司,只有三種

把這些放在一起看:在大多數領域,LLM 還會繼續像一個怪物級實習生。在大人手上又快又有效,但你不會把整間店交給他。多數公司沒辦法採用全自主的 AI,原因不是員工能力不夠,也不是技術擴散太慢,而是當前架構裡看起來就根深蒂固的結構問題。

他數了數,能接受全自主 LLM 的公司只有三種。

一種是失敗起來很便宜的公司:本來就會請實習生的、做快速原型的。

一種是任務窄、而且本來就有清楚護欄的:受控環境裡的重複性體力工作、客服聊天。

一種是本來就吃得起嚴謹規格與驗證成本的:晶片設計、新藥開發,還有其他「上線失敗就是存亡問題」的領域。

前兩種對價格敏感,而且大概不需要從便宜模型跳到前沿模型的那一段推理能力升級。這些公司最適合的,是跑在便宜硬體上的開源模型,甚至直接擺在使用現場。對第一種和第三種來說,在數學和資安研究裡做出頭條的那種模糊組合搜尋,看起來更吃 agentic swarm 的寬度,也就是一次開幾個 agent 一起做,而不是單顆模型的推理能力。小型開源模型重現那些帶起 2026 春天熱潮的 mythos CVE,就是個例子。真是這樣的話,更該用便宜的開源模型,同樣的工作量可以開更寬的 swarm。這個想法他自己也講明是假設,不是定論。

第三種公司也許還是會用前沿模型,不過他們的工作能不能用 DeepSeek V4.1 Flash 這種便宜模型做完,並沒有定論;加上前面那個 swarm 寬度的好處,往便宜那邊推的理由只會更多。這個族群還有一個特性:他們對自己的 IP 通常非常保密,就算 Anthropic 跟 OpenAI 說不會拿使用者資料去訓練,要把家底整包送上去,恐怕也不太開心。

有人會說,就算前沿實驗室完蛋了,「資料中心塞滿腦弱模型」這個劇本吃掉的算力,跟「資料中心裡有一顆超智慧」也差不多。差別在:塞滿天才的資料中心會自己運轉,能吃多少算力就吃多少;腦弱 swarm 則被人類指揮官卡得死死的。他的賭注是,這波波及的範圍會遠遠超出前沿實驗室本身。

〈思想實驗室〉-EP-同樣用AI,為什麼矽谷人早就「活在未來」?用AI做App要到「能賣」的關鍵是?

去年十一月,Anthropic 推出 Claude 3.5。科技浪 Podcast 的主持人哈利把這個時間點當成一道分水嶺:在那之前,AI 大概只能寫兩成的程式碼,剩下的工程師自己處理;在那之後,開發一個網頁或 App,人類可以一行 code 都不碰。「回圈工程」這個詞最近在矽谷被喊得很大聲,連黃仁勳都說它是二零二六年下半年最該學的能力之一,講白話一點,就是你不用再一句一句指揮 AI,改成設計一套回圈,讓它自己去寫、自己去測、錯了自己去改。

國威在《思想實驗室》開場就把問題定調。大家聽到這件事,第一個反應通常是工程師是不是要沒工作了,但他說這個問法問錯了。當做出東西變成大家都會的事,真正把人狠狠拉開的是知不知道自己在做什麼,而這條線跟你是不是工程師沒有半毛關係。不管你是做行銷、做企劃、想創業,只要想用 AI 做出真的東西,都得先搞懂自己到底想做什麼。

哈利大學念的是國際貿易,靠自學轉進資料科學與 AI 工程,節目曾登上 Apple Podcast 科技類排名第一。他和團隊做了一門課,從軟體基本功一路教到部署、資安和產品上線。這集要談的就是,當人人都能叫 AI 做東西,懂跟不懂的差距藏在哪裡。

那個十一月之後,AI 從聊天機器人變成會動手的 Agent

哈利說,過去半年是他看到 AI 變化最大的一段時間。分水嶺就是去年十一月 Anthropic 推出的 Claude 3.5,在那個模型之後,AI Agent 的時代真的開始了。軟體工程這邊的感受最直接,原本 AI 大概能寫兩成的程式碼,其他還是得自己來;現在大家都不用碰,常見的網頁或 App 開發,整個過程不用自己寫任何一行 code,Agent 會把全部事情處理掉。知識工作也跟著變。過去這一年沒讓 ChatGPT 做過 PPT 或 Excel 的人可以試試看,不管是要做公司的 Sales Kit,還是家族聚會的小展示,叫它做出來,結果會讓人嚇到。這些能力背後是同一個源頭:AI 能長時間工作的能力變長了。國威也觀察到,ChatGPT 的 Codex 跟 Claude 算是現在非常強的兩個 Agent 使用介面。

Claude 這個工具其實二零二五年初就出現了,工程師圈在那一年就有人在用,但哈利說,真正感覺到它對一般人也變得非常有用,是今年年初的事。其實早在二零二三年就很多人在嘗試 AI Agent,只是二零二三、二零二四、二零二五這三年,AI 還沒有辦法勝任 Agent 的工作,現在可以了。Claude 從今年年初到現在的成長看得出來,Codex 更誇張:今年年初只有一百萬活躍使用者,現在一千五百萬,光是最近一個月就從六百萬衝到一千五百萬,而且這些人絕對不全是工程師。

CUDA 護城河在鬆動,因為 kernel 這種難題對 AI 是可驗證的

哈利先打了預防針。他自己很看好 NVIDIA,至少短期非常看好,NVIDIA 手上也不只一個護城河。但過去兩三年被大家當成主要護城河的那個 CUDA,過去半年很明顯開始鬆動。他對 CUDA 護城河的定義放在軟體可移植性與移植成本上:AI 剛爆發的那兩三年,只有 NVIDIA 把軟體層做了那麼久,對 AI 運算的優化做了那麼多,同一套模型、同一批運算,跑在 NVIDIA 的 GPU 上就是比 AMD 或其他 AI 晶片快。AI 公司想快點把運算層建起來、快點訓練跟推論,最好的做法還是買 NVIDIA。

變化的來源是 AI agent 寫 code 的能力進步太快。而且不只是寫網頁、寫 App、做 PPT 或 Excel,寫 GPU kernel 的能力也明顯提升。kernel 是模型最後拆解出來的那些運算,決定它們要怎麼在 GPU 上算得最快。X 上那些最前端的 kernel engineer 已經在討論,自己的工作接下來可能就沒了。實際案例也一個一個出現:有人把原本寫在 CUDA 裡的化學模擬運算,靠 AI agent 搬到 macOS 或其他 GPU 上。這種移植以前是一整個團隊花半年到一年的大工程,現在叫 Claude 或 Codex 去跑就能完成。

哈利說,關鍵在於這件事從人類的角度看是軟體工程裡最難的部分,對 AI 來說卻是一個可驗證的問題。AI 真正難的是不可驗證的問題;只要目標明確、有明確的結果跟優化目標,它就可以一直優化下去。Anthropic 的共同創辦人 Tom Brown 兩週前分享過一個例子:他們拿到 AMD 的 AI 機櫃,要把最強的模型跑上去,原本以為會很困難,結果直接叫 Claude 想辦法跑得越快越好,然後就讓它去跑。整個週末工程師沒做什麼事,Claude 自己在那邊無限迭代,一個週末之後,效能曲線就一路往上。

哈利的判斷是,CUDA 在軟體移植成本上的護城河會持續下降,而且已經降得很明顯。但 NVIDIA 過去十年建立的那麼大的開發生態系,不可能在這麼短的時間內被摧毀,只是它已經沒有辦法再單靠軟體移植成本把大家框住。

Loop Engineering:把「下 prompt」換成「定義目標跟驗證」

哈利把 Loop Engineering 用一句話講完:不是寫 prompt 叫 AI 去做一件事,而是定義一個目標,定義這個目標要怎麼驗證,然後叫 AI 持續工作,直到目標被達成為止。Claude 的開發者講過一句很狂的話,說他現在已經沒在 prompt AI 了,他有一堆回圈在跑,由這些回圈去 prompt AI,他的工作是去寫回圈。國威形容這像薛西弗斯把巨石推上山頂,石頭又滾下來;哈利補了一句,如果真的丟一個 AI 完全做不到的任務,最後哭的可能不是 AI,是錢包。

實際操作起來很單純。在 Claude 或 Codex 這些 coding 工具裡打 slash go,寫下目標,按 enter,Agent 會先做計畫、把目標拆開、想每一步要做什麼,每做完一步就檢查結果有沒有達成,一直做到最終目標達成。國威問的是判斷力的來源:如果不知道「對」長什麼樣子,怎麼寫得出驗證的邊界?如果這種判斷力以前是靠一行一行寫 code 跟踩雷練出來的,那新人一開始就跳過寫這件事,要怎麼長出那雙眼睛?

Loop Engineering 被說成未來,哈利同意,但他也說現在講還太早。它會變主流,是因為它明顯優於 prompting:不用再想每一步怎麼做、再教 AI 完成,只要想結果怎麼驗證;而且很多時候放手讓 AI 做,真的會做得比人好。它太早,是因為現在 AI agent 的能力跟 token 效率還沒到那個程度。Agent 會犯各種小錯、需要自我修正,有時候還會鬼打牆。現在真正在玩的是那種 token 自由的人,Anthropic 內部的人和 Codex 的員工整天在喊 Loop Engineering,因為他們有無限的 token 可以燒。他們玩的是叫 Claude 在 Claude 裡面 build 一個 Microsoft Excel 的 clone,所有功能一比一完全對照,然後 go,跑五天甚至一兩個禮拜,每分每秒都在跑,直到做出來。一般工程師要付這種 token 帳單,沒有人付得起。

國威注意到另一件事:與其說它超級貴,不如說在這之前,人們連想像要挑戰這種事都不可能。現在只要模型夠聰明、AI 可以長時間工作,好像有錢就辦得到,等 token 越來越便宜,更多人會辦得到。哈利說這就是重點,所有科技演進都一樣,能力會先到,成本才會降下來,降到所有人都能擁有這樣的能力。而 OpenAI、Anthropic 最前沿的那批工程師,他們用 AI 的方式、工作的方式、看到的世界,已經跟一般人不一樣了。矽谷那一群人、周遭一般的工程師、再外面的一般人,三層之間看到的未來差得非常明顯。

Coding 會被抽象掉,留下來的是軟體工程的本質

哈利說他想小小挑戰國威的問題。軟體工程的本質一直都不在 coding 本身,重點是建立一個真的能運作、有用、安全的系統;coding 只是工具,是幫助你達到目標的手段。你就算再熟各種語法,會寫複雜的遞迴函式,如果不知道一個系統要怎麼被建立起來、怎麼才會安全,那也沒有意義。從這裡就能看出來,coding 這件事是可以被抽象掉的。

整個軟體工程領域的演進,就是抽象層一直往上提高。最早大家在寫 assembly,那是很接近機器、接近零與一的語言;後來出現 C 這種高階語言,開始接近人類語言一點,機器底層的概念被包起來,但記憶體還是得自己管;再到 Python,連記憶體都不用管,語法也更接近自然語言。每一次抽象層提高,都把一些底層的技術細節包起來。在 Python 的年代當一個好的軟體工程師,不需要知道記憶體怎麼打點,也不用處理中斷點。AI 時代是同一條路:現在大部分軟體工程工作已經不用自己碰 code,未來大概都不會自己寫任何一行,但還是要透過不斷迭代、了解軟體工程的基本功,以及對系統思維的理解,才能培養出判斷什麼才是對的能力。

國威把這比成科學素養。一般人不需要學會每個科目怎麼做研究,只要掌握一些原則跟原理,大部分的事情不需要了解到那麼細,也沒有那個時間。他接著問,如果軟體工程思維越來越重要,工程師會被取代,還是會有更多人變成工程師?

哈利的答案是兩種狀況會同時出現。軟體工程這個專業還是會在,還是會有人負責建立很複雜、很穩定、很進階的系統;與此同時,大部分職位的邊界會越來越模糊,軟體工程不再是軟體工程師的專利,所有人都可以做一點。他請大家看走在最前面的公司在找什麼人。國威接話,說他的同事原本是編輯、是拍片的,現在全部都在自己 vibe coding;矽谷那邊的版本更明顯,Meta 一個 L7 的資深 staff engineer 前一天才在網路上發文,說公司的職位越來越模糊,designer 開始寫 code、開始對公司的 code base 做出貢獻,原本非技術的 PM 也開始做這件事。Anthropic 更直接,他們找的 PM 希望有一點技術能力、懂軟體的基本概念,能替公司做出貢獻。

理由很實際。一個懂一點軟體工程、會用 Vibe Coding 工具的 PM,以前要排工程資源、跟工程師溝通、想辦法要到時間,連改一個小 feature 都要經過大量溝通;現在他自己把 feature 做完,原本可能要一個禮拜才上線的事,當天就搞定。國威說他自己很有感,最近所有 App 的更新速度都在變快,每天都不一樣。哈利說百分之百是這樣。他跟 co-founder 已經做過三個產品,去年兩個、今年一個,今年的產品他們沒有寫任何一行 code,全部都是 AI 寫的,由他們去駕馭這些 AI,迭代速度非常快。他下的判斷是,未來是通才的時代,職位會越來越模糊,最有價值的員工就是有自己的專業、同時又學會一點軟體工程概念的人;這種能力提升遲早會反映在薪水上,現在這間公司不給,未來的公司會給。

那軟體工程思維會不會有一天不再被需要?哈利說,只要軟體還存在、只要 AI 還是工具而不是百分之百取代人類,在那之前,軟體工程的基本功都還是重要的技能。如果人類真的走到奇點之後那個無法預測的世界,所有軟體人類連想都不用想,AI 自己就寫完了,但走到那一步,要問的問題已經不是軟體工程,是人類存在的必要。他也認為世界不會改變得那麼快:現在的 AI agent 跟模型真的很強,軟體工程大部分真的被解決了,但它們說到底還是工具,還是由人類叫它們做事、操作它們、檢查它們的工作。只要這件事還成立,就需要有人懂軟體工程。

從會動的玩具到能收錢的產品,中間是一整排基本功

國威自己玩過那種一句話生出 App、或一句話生出一個 SaaS 服務的工具,體驗很爽,一下子跑出一個會動的東西,會有「我做完了」的感覺。但會動跟真的能交到別人手上、能收錢的產品之間,差很遠。

哈利把中間的差距一個一個點出來。隨便找一個 Vibe Coding 工具,一兩行 prompt,二十分鐘內就有一個可以在自己電腦上玩的網頁或 App,困難的是下一步。產品要怎麼讓大家使用到,這是部署:AI 寫完的 code 都存在你的電腦裡,要放到哪裡才能讓所有人都用到。部署到雲端、大家真的可以用之後,接著是資安,哪些資料是關鍵、敏感的,不能流出去,最恐怖的就是 API key,它也是很多 Vibe Coding 鬼故事的核心,到底要放在哪裡,才不會不小心上傳到雲端、不小心讓大家看到。資安管好之後,還要跟同伴協作,就算不協作,自己也要做版本控制:AI 不小心寫爛了一個版本,要怎麼回到兩個版本之前?同伴要怎麼跟你同時開發?這就牽涉到 Git 跟 GitHub。產品做完、大家也可以登入了,要怎麼真的收到錢、讓大家刷卡付錢,這是金流,要怎麼串接。從一個玩具到一個真的有用、可以部署、大家可以付錢、又安全的產品,中間有非常多核心的軟體工程概念需要理解。

哈利說,AI 每一件事都可以幫你做,也可以告訴你怎麼做。但如果你自己不知道要做這件事,也不知道 AI 到底有沒有幫你做,這件事在你腦中根本是一團糊,是未知的未知,你要怎麼確保 AI 真的把所有事情都 cover 好了?「AI 可以幫你做事,但它做出來的東西是你要負責。你的 App 出了問題、API key 被狂刷,你不能去找 OpenAI 算帳,是你自己要負責。」所以就算 AI 真的每一件事都能做,你還是要懂背後的核心原理。

國威請他講一個具體的翻車例子。最有名的 Vibe Coding 鬼故事是 API key 外洩。API key 是讓你使用 OpenAI、Anthropic 這些高階模型的一串密碼,任何人拿到就可以用你的名義去用這些模型,用量都算在你頭上。懂軟體工程的人知道,API key 要放在一個 .env 的檔案裡,這個檔案不可以上傳到雲端,要讓 GitHub ignore 它。當時有一個 Vibe Coding 的講師不懂這些概念,把 API key 寫死在自己的軟體裡面,結果所有使用那個軟體的人都在刷他的帳單,他原本只是想 demo 給大家看;如果遇到真的有惡意的人,可以把 API key 抓下來,放到自己用量很大的其他用途上,後果會不堪設想。

另一個例子哈利不覺得是鬼故事,反而覺得蠻成功。知名 YouTuber 六指淵做出一個自己的 Vibe Coding 產品,是一個字幕工具,一天就有一萬多個使用者。但網站也出現被攻擊的情況。國威笑說可能是好心的學長要幫他測試;哈利說這正是軟體工程裡很重要的一個概念:如何防止濫用。

巨頭很強,但利基市場還是有位置

哈利團隊課程的訴求是「賺到第一筆錢」,他說這是在強調課程的完整性:從完全沒有經驗,到真的跟 AI 協作做出一個可以上線、可以用、可以收錢、可以串金流、真的收到第一筆收入的產品,中間所有重要的核心概念。他也說清楚,很多人買課不是為了做自己的產品,是單純想學軟體工程的核心概念,回去替公司的客戶做出貢獻。所以他在談的其實是軟體工程核心概念對大家的價值,一個面向是做產品,另一個面向是職場競爭力。做產品這邊,很多以前沒有技術能力的人,現在可以因為懂這些知識開創全新的機會。

回到六指淵。他本身是 YouTuber,最擅長的是剪輯,卻能透過 Vibe Coding 做出一個剪輯用的字幕工具,上線一兩天就有一萬個使用者。假設一個月收兩百塊,一萬個使用者就是兩百萬,哈利補了一句,當然不知道實際上付費的有多少人,但軟體產品是可以很賺錢的。有人會說他是大 YouTuber,一般人做不到這個數字。哈利說確實如此,但換一個場景:一個 freelance 的健身教練,或一個營養師,如果也有打造產品的能力,可以做一個自己的健康 App 直接賣給學員,當成諮詢服務的增值,把自己的專業、知識跟風格全部放進去,這就是一條新的事業可能性。

國威問得更直接:OpenAI、Anthropic 的產品那麼強,現在開發一個新的 AI App,還有生存空間嗎?哈利的答案是,想做出一個非常成功的消費者 AI 軟體,在現在這個時代真的有一點困難,過去三年真正很成功的,可能就只有 Speak 這類產品。但利基市場的機會還是很多。他跟 co-founder 去年做了一個產品叫「小結」,可以幫大家總結 YouTube 影片,回答影片當中的任何問題,網站也可以。當時很多人說 NotebookLM 就有這個功能,這個產品一定沒有生存空間。結果它到現在還在賺錢,而且有一萬多個使用者,原因是他們在某一個特定的使用體驗場景上,做到了一件 NotebookLM 做不到的事。另一種利基是自己手上就有一群客群,像健身教練、營養師,他們賣給自己學員跟客戶的東西,OpenAI 跟 Google 的產品沒有辦法競爭。哈利說,大家真的去找的話,機會還是很多。

工具會過時,基本功不會

國威說自己也有一些小點子想實現,問一個過去沒有在 coding 的人要從哪裡開始。哈利的建議是先建立全局觀:先了解 AI 時代軟體工程變成了什麼樣子,以及現在的 Vibe Coding 體驗是什麼。有概念之後,再從軟體工程的基礎開始,但不是 coding 的基礎。過去學軟體工程有點困難,是因為要從底層語法一行一行、一個 function 一個 function 學;現在所有 code 都是 AI 在寫,只要學高層次的軟體工程概念,而高層次的概念相對好學。一個很好的起點是先搞懂什麼是前端、什麼是後端:幾乎所有軟體都有前端跟後端,兩者的角色定位是什麼、它們怎麼溝通,以及大家常講的 API 到底是什麼。這個順序剛好也是課程的排序,從整個 overview 開始,接著前端、後端,然後是現代技術棧,包括 React、Next.js 跟一些現代的部署工具,實際把一個產品做出來,再到部署的概念,把玩具變成產品,然後是資安,最後到商業。

商業這一段,是哈利跟 co-founder 去年打造產品時被驚訝到的地方:成本比想像中難算很多,尤其是 App 裡有用到 AI 的話。API 的計價方式分成 input token 跟 output token,價錢不一樣;有些 input token 還有 cached input,cache hit 跟 cache miss 也不一樣;有些模型會思考,思考過程的 token 又要怎麼算。使用者都還沒進來,要怎麼估算 token 成本,才能定一個讓自己不要虧一屁股的價錢,裡面有很多細節。這些內容他們放進了第八個模組。

國威問,這跟市面上其他的 AI 教學或影片課程差在哪裡。哈利說差非常多,他們的初衷是用 AI 時代的方式去教 AI 時代最重要的知識,而市面上大部分資源兩點都沒做到。市面上大部分的 AI 課程聚焦在工具、工作流、一堆秘技跟 prompt,但那些是現在真正最重要該學的東西嗎?工具過時得太快,工作流也一樣。去年大家還在買一堆 n8n 的課程,每個人都在講 n8n 工作流,今年已經沒有人在用 n8n;兩三年前大家在講 Midjourney、Stable Diffusion,現在那些東西到哪裡去了。工作流同理,AI 模型的能力進展太快,現在依照當下模型能力做出來的工作流,未來可能完全用不到,因為未來的模型直接幫你做了。Anthropic 現在每推出新一代模型,就直接刪掉八十趴的 system prompt,因為以前需要教模型注意的事情,它現在自己就會注意了。Prompt 無時無刻都在改變。

哈利不是叫大家不要學工具。現在有實際的痛點要解決,確實應該去找最好的工具來用;但要知道,學工具不是讓你在 AI 時代持續累積真正實力的方式。很多人盲目追求工具,卻不知道真正應該培養的是基本功,是軟體工程的核心概念。他說他們的課是目前市面上第一堂完全聚焦在軟體工程核心概念的課。

至於「AI 時代的方式」,他們直接做了一個平台叫氛圍學院,課程是跟 Google 工程師 Kai 一起開的「AI 時代軟體必修課」。哈利看到的是,ChatGPT 剛出來的時候大家就在講教育要被完全改變,AI 可以做互動式、沉浸式的教材,又可以當每個人的個人助教,但到了二零二六年,九十九趴的線上學習資源還是長得跟五六年前一樣,就是影片課程。他們想以 AI 為中心,做一個真正 AI 時代該有的學習體驗。

學習體驗有兩個面向。一個是互動式、沉浸式的學習:軟體工程裡很多概念非常抽象,例如後端,很多人沒辦法掌握它到底是什麼,他們就實際把概念模擬出來,讓學員直接操作。像是蓋了一個 Line 的模擬器,在操作熟悉的 Line 介面的同時,可以看到 Line 背後的伺服器做了哪些操作、怎麼處理訊息。另一個面向是個人化:平台裡有一個 AI 助教,學習過程中遇到任何問題就直接問,甚至有個截圖按鈕,框起需要的區域就可以問;你在看哪一頁、哪個單元、哪張卡片,AI 助教都知道,所以可以立刻給出當下最直接、最個人化的回覆。

國威問了線上課的兩個老問題:買了一堆、九成沒上完;或是上完了,動手還是做不出來。哈利說九成沒看完還是客氣了,他知道的真實數字是只有五趴的人會看完線上課程。原因很直白,就是太無聊:坐在那邊看影片,只有 input,很難讓大腦真的 engage 在學習裡;要邊學邊做,學到一個概念就立刻操作、看它在眼前出現,才有動力把它學完。他認為課程的價值是內容跟完課率相乘,所以對完課率很有信心。

至於做不出來,傳統 Vibe Coding 課程的痛點是摩擦力:講師在電腦上做,學員跟著操作,但每個人的作業系統、環境都不一樣,步驟那麼多,每一關都可能卡住,卡住就走不下去。互動式學習可以把這個問題解掉。例如 API key 不能亂放這個概念,傳統課程通常要走到很後面、App 都建好要串 API 的時候才會遇到,很多人根本走不到那裡;在他們的平台上,教完概念的同時,學員立刻就在互動環境裡操作一次,複製 API key,丟到該丟的地方,馬上就知道它應該放在哪裡。當然這些是模擬出來的環境,實戰沒辦法被模擬取代,所以他們也有實戰單元跟影片單元,手把手用真實世界的工具,在自己的電腦裡一步一步把產品完成。哈利把這講成三層體驗:完全受控的環境、部分受控的環境,到學員自己的環境。

國威說他過去也買了很多線上課,都沒有看完,他很期待這次能有嶄新的體驗。節目最後他下的判斷是,寫 code 這件事的抽象化程度變高了,反而讓想打造系統的人更需要核心的軟體工程思維;透過這樣的方式,更能跳過那些會卡住你的事情,真的把產品做出來。

這一集裡最刺的一句,是哈利說 AI 不能幫你負責。回圈工程、Agent、Vibe Coding 這些詞之後還會再換;他今年那個沒寫一行 code 的產品,就是他自己先站上去的位置;課程裡要補的,是 AI 沒辦法替他負責的那一半。國威開場說的那條線,到最後還是同一條:工具把每個人都往前推,但推得到多遠,還是取決於知不知道自己在做什麼。