Vibe Coding都沒(méi)學(xué)完,Prompt Engineering課還在賣,Context Engineering墨跡還沒(méi)干,現(xiàn)在又來(lái)一個(gè)?
AI圈造新詞的速度,快趕上模型迭代了。過(guò)去一年光「XX Engineering」就冒出來(lái)四五個(gè)。
但我去讀了OpenAI和Anthropic的原文之后,反應(yīng)變了。不是「哇好新」,是:等等,這不就是我過(guò)去半年一直在干的事嗎?
我寫CLAUDE.md,告訴AI我是誰(shuí)、什么規(guī)則必須遵守。配hooks,在agent關(guān)鍵節(jié)點(diǎn)注入檢查。建知識(shí)庫(kù),給AI準(zhǔn)備決策需要的上下文。調(diào)skills,定義AI能用什么工具、有什么權(quán)限。
做了半年,從來(lái)沒(méi)覺(jué)得這些事需要一個(gè)統(tǒng)一的名字。
然后OpenAI發(fā)了篇博文說(shuō)這叫Harness Engineering。Mitchell Hashimoto發(fā)了篇博文也說(shuō)這叫Harness Engineering。Anthropic發(fā)了兩篇工程文章,Martin Fowler寫了長(zhǎng)文分析,大家都這么叫。
行,那就叫Harness Engineering。
Harness這個(gè)詞,英文原意是馬具、韁繩。不是馬本身,是套在馬身上讓它能拉車、能被引導(dǎo)的那整套東西。沒(méi)有它,馬就是一匹亂跑的野馬,力氣再大也白搭。
![]()
三層關(guān)系很好懂:Prompt Engineering是你對(duì)馬說(shuō)的話,向左轉(zhuǎn)、跑快點(diǎn)。Context Engineering是幫馬看路的一切,地圖、路標(biāo)、地形。Harness Engineering是韁繩、馬鞍、圍欄和道路本身,讓十匹馬同時(shí)安全跑起來(lái)的系統(tǒng)。
Prompt管你問(wèn)什么,Context管你給模型看什么,Harness管整個(gè)東西怎么運(yùn)轉(zhuǎn)。Context是Harness的一部分,Harness還多管了約束、反饋和質(zhì)量檢查。
懂了這個(gè),再看最近幾個(gè)月的事,很多碎片就拼上了。
先說(shuō)最硬的一個(gè)數(shù)據(jù)。LangChain的coding agent在Terminal Bench 2.0上,成績(jī)從52.8%漲到了66.5%,排名從Top 30跳到Top 5。重點(diǎn)是:模型完全沒(méi)換。他們只改了三樣?xùn)|西:系統(tǒng)提示詞、工具配置、中間件鉤子。
同一個(gè)模型,換了套韁繩,成績(jī)天差地別。
模型可能已經(jīng)不是瓶頸了。瓶頸是你給它搭了個(gè)什么樣的環(huán)境。
然后是OpenAI自己的實(shí)驗(yàn)。Codex團(tuán)隊(duì)3個(gè)工程師,后來(lái)擴(kuò)到7個(gè),5個(gè)月,用Codex搞出了一個(gè)100萬(wàn)行代碼的beta產(chǎn)品。零行人工手寫。約1500個(gè)PR合并,每個(gè)工程師每天3.5個(gè)PR,估算速度是傳統(tǒng)方式的10倍。
![]()
這些數(shù)字很炸。但有個(gè)問(wèn)題沒(méi)人聊:這100萬(wàn)行代碼的質(zhì)量怎么樣?
速度快了10倍,不代表產(chǎn)出好了10倍。每人每天3.5個(gè)PR,誰(shuí)在做代碼審查?六個(gè)月后需要改需求的時(shí)候,這100萬(wàn)行好改嗎?AI寫的代碼和人寫的代碼有個(gè)關(guān)鍵區(qū)別:人寫代碼時(shí)會(huì)無(wú)意識(shí)地留下結(jié)構(gòu)線索,方便將來(lái)的自己理解。AI不會(huì)。它只解決眼前的任務(wù),不考慮六個(gè)月后維護(hù)這段代碼的人會(huì)不會(huì)罵娘。
所以harness不只是讓AI寫得快,還得讓AI寫得能維護(hù)。OpenAI的實(shí)驗(yàn)證明了速度,但長(zhǎng)期成本還是個(gè)問(wèn)號(hào)。
回到他們?cè)趺醋龅降摹artin Fowler把harness拆成了三塊。
第一塊:上下文工程。給模型一張地圖,不是一本1000頁(yè)的說(shuō)明書。維護(hù)一個(gè)持續(xù)更新的代碼庫(kù)知識(shí)庫(kù),加上agent能實(shí)時(shí)看到的系統(tǒng)狀態(tài)。上下文是稀缺資源,塞太多反而擠占干活的空間。
第二塊:架構(gòu)約束。不光靠AI自己檢查,還有代碼檢查器和結(jié)構(gòu)測(cè)試在旁邊盯著。硬規(guī)則,不遵守就編譯不過(guò)。
第三塊:垃圾回收。專門有個(gè)agent周期性運(yùn)行,不寫代碼不做功能,就干一件事:找文檔里的矛盾和架構(gòu)違規(guī)。一個(gè)專職找茬的AI。
Anthropic走了另一條路。他們搞了個(gè)三agent架構(gòu):規(guī)劃者負(fù)責(zé)把簡(jiǎn)單指令擴(kuò)展成詳細(xì)的產(chǎn)品規(guī)格,生成者按迭代一次做一個(gè)功能,評(píng)估者跑端到端測(cè)試。
![]()
靈感來(lái)自生成對(duì)抗網(wǎng)絡(luò)。訓(xùn)練一個(gè)專門的評(píng)估者讓它一直挑刺,比讓生成者自己檢查自己管用得多。誰(shuí)都不擅長(zhǎng)批評(píng)自己,AI也一樣。
他們還發(fā)現(xiàn)Claude Sonnet 4.5有「上下文焦慮」。不是人焦慮,是模型焦慮。上下文太多,表現(xiàn)反而變差。壓縮不夠,必須定期清空重來(lái)。
所以harness不是越大越好。這可能是最反直覺(jué)的部分。
到這里你可能想:這不就是給老東西起了個(gè)新名字嗎?
說(shuō)實(shí)話,還真有點(diǎn)。
航天工程師60年前就在做類似的事。NASA讓飛船自動(dòng)執(zhí)行任務(wù),圍繞自動(dòng)化系統(tǒng)設(shè)計(jì)的約束、反饋循環(huán)、冗余檢查、異常處理,和今天說(shuō)的harness沒(méi)有本質(zhì)區(qū)別。工業(yè)控制領(lǐng)域也一樣,PLC編程里的安全聯(lián)鎖機(jī)制就是一種harness。
AI圈不是發(fā)明了harness engineering,是終于意識(shí)到自己需要學(xué)幾十年前就有的工程紀(jì)律。
但命名還是有價(jià)值的。當(dāng)一群人各自在做類似的事,沒(méi)有共同的詞來(lái)說(shuō),經(jīng)驗(yàn)就傳不開(kāi)。這個(gè)詞出來(lái)之后,突然大家都能聊到一起了。就像Vibe Coding,你可以笑它,但它確實(shí)讓一種做法變成了可以討論的東西。
Harness Engineering也一樣。價(jià)值不在于發(fā)明了什么,在于讓一群人意識(shí)到:自己工作的重心變了。
我自己去年8月搭了Claude Code自動(dòng)化寫作工作流。從那以后寫文章輕松太多,平時(shí)做做選擇,噴一噴不滿意的地方就好了。但讓這套系統(tǒng)好用的,不是模型有多強(qiáng),是我圍繞它搭的那一圈東西。
CLAUDE.md從一個(gè)簡(jiǎn)單的規(guī)則文件,變成了一個(gè)路由器。它就干一件事:判斷當(dāng)前任務(wù)屬于哪個(gè)工作區(qū),然后指向?qū)?yīng)的規(guī)則。寫公眾號(hào)時(shí)不會(huì)被iOS開(kāi)發(fā)的規(guī)則干擾。
Hooks是另一層。在agent執(zhí)行關(guān)鍵操作前后注入腳本。編輯文件之前自動(dòng)跑linting,生成代碼之后自動(dòng)做類型檢查。這不是prompt里寫的「請(qǐng)注意代碼規(guī)范」,是物理上攔住它,不合格就不讓過(guò)。建議和約束,完全兩回事。
Skills解決了模塊化的問(wèn)題。每個(gè)skill是獨(dú)立的能力包:一個(gè)管小紅書配圖,一個(gè)管飛書同步。平時(shí)不占context,需要時(shí)才調(diào)。
路由器、hooks、skills、知識(shí)庫(kù),加在一起就是一個(gè)harness。沒(méi)人告訴我這叫什么,它自己長(zhǎng)出來(lái)的。
這個(gè)生長(zhǎng)方式,和Mitchell Hashimoto說(shuō)的一樣。
他是HashiCorp聯(lián)合創(chuàng)始人,Terraform創(chuàng)造者,今年2月寫了「My AI Adoption Journey」,首次給這個(gè)實(shí)踐命名。方法極其樸素:每次agent犯錯(cuò),就工程化一個(gè)方案,讓它再也犯不了同樣的錯(cuò)。他拿自己的終端模擬器Ghostty舉例,配置文件里每一行都對(duì)應(yīng)著agent過(guò)去犯過(guò)的一次錯(cuò)。文件是活的,一直在長(zhǎng)。
我的CLAUDE.md也是這么長(zhǎng)出來(lái)的。被AI搞煩了就加一條,規(guī)則太多了就砍一輪。活的系統(tǒng)。
如果你想開(kāi)始,三條就夠。
給地圖不給說(shuō)明書。CLAUDE.md應(yīng)該像地圖:項(xiàng)目結(jié)構(gòu)、文件關(guān)系、關(guān)鍵約束。不要把每步都寫死。AI需要方向感,不需要僵化步驟。
每次犯錯(cuò)加一條規(guī)則。空文件開(kāi)始,agent犯一個(gè)錯(cuò)就加一條。三個(gè)月后那個(gè)文件就是你的harness。高度定制,因?yàn)槿悄銏?chǎng)景里真實(shí)出過(guò)的問(wèn)題。
讓AI查AI。Anthropic的Evaluator思路。別讓AI自己查自己。最簡(jiǎn)單的做法:寫完后開(kāi)一個(gè)新對(duì)話,把結(jié)果貼進(jìn)去:「找出所有問(wèn)題」。你會(huì)驚訝第二個(gè)AI能發(fā)現(xiàn)多少第一個(gè)漏掉的。
最后聊一個(gè)我想了很久的問(wèn)題。
Martin Fowler在文章里說(shuō):如果太早把人類從「in the loop」移到「on the loop」,將來(lái)可能沒(méi)人真正懂得怎么回事,也就沒(méi)人能設(shè)計(jì)好的harness。
這句話值得多讀兩遍。
現(xiàn)在設(shè)計(jì)harness的人,都是寫過(guò)很多年代碼的老手。Mitchell Hashimoto能給Ghostty寫好harness,因?yàn)樗斫饨K端模擬器的每個(gè)細(xì)節(jié)。OpenAI那3個(gè)工程師能駕馭100萬(wàn)行代碼,因?yàn)樗麄冎朗裁醇軜?gòu)是好的、什么會(huì)在三個(gè)月后爆炸。
但下一代呢?新手程序員從第一天起就不寫代碼,只寫CLAUDE.md,他能設(shè)計(jì)出好的harness嗎?
Martin Fowler把這叫「經(jīng)驗(yàn)工程」。怎么在AI寫所有代碼的時(shí)代培養(yǎng)新人。
我自己是個(gè)有意思的樣本。
我從來(lái)沒(méi)手寫過(guò)代碼,所有產(chǎn)品都是AI寫的。小貓補(bǔ)光燈上了AppStore付費(fèi)榜Top 1,累計(jì)用戶超百萬(wàn)。我的harness從零開(kāi)始,在和AI互動(dòng)中一點(diǎn)一點(diǎn)長(zhǎng)出來(lái),沒(méi)有任何編程經(jīng)驗(yàn)可以遷移。
但我得對(duì)自己誠(chéng)實(shí)。
我能設(shè)計(jì)harness,不是因?yàn)槲姨焐到y(tǒng)設(shè)計(jì)。是因?yàn)槲以诤虯I協(xié)作的上千小時(shí)里,觀察到了它的行為模式。它什么時(shí)候偷懶,什么時(shí)候幻覺(jué),什么時(shí)候需要硬約束而不是溫柔提醒。這些判斷力不來(lái)自寫代碼的經(jīng)驗(yàn),但來(lái)自另一種經(jīng)驗(yàn):和AI反復(fù)較勁的經(jīng)驗(yàn)。
問(wèn)題是,這種經(jīng)驗(yàn)?zāi)芙虇幔课易约赫f(shuō)不清楚。
我知道CLAUDE.md該怎么寫,但讓我教別人為什么這么寫,我會(huì)卡住。很多決定是直覺(jué)做的,直覺(jué)來(lái)自踩坑,踩坑來(lái)自大量重復(fù),大量重復(fù)來(lái)自時(shí)間。這和老程序員說(shuō)「你寫幾萬(wàn)行代碼自然就懂了」其實(shí)是一回事。
所以問(wèn)題可能不是「寫代碼的經(jīng)驗(yàn)」能不能被替代。而是:不管你積累的是什么經(jīng)驗(yàn),足夠多的經(jīng)驗(yàn)本身就是設(shè)計(jì)harness的前提。沒(méi)有捷徑,換了個(gè)賽道而已。
也許Martin Fowler擔(dān)心的不是「沒(méi)人寫代碼了」,而是「沒(méi)人愿意花夠多時(shí)間踩夠多坑了」。
這個(gè)我也不確定。留給你想。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.