9 美元,20 分鐘。一個 AI 代理(Agent)交出了一款復古遊戲編輯器。
介面上精靈編輯器有了,遊戲畫面也出來了,看起來挺像那麼回事。
點進去玩——什麼都不回應。角色站在螢幕上一動也不動。翻開程式碼才發現,遊戲邏輯跟畫面之間的連線是斷的。介面上完全看不出來。
如果你讓這個 Agent 自己評價這份作業,它會告訴你:功能完整,介面良好,建議發布。
這就是 Anthropic 最新一篇工程部落格所剖析的問題。他們的工程師 Prithvi Rajasekaran 做了大量實驗,得出一個很硬的結論:
AI 不會真正評價自己的工作,它會自我欺騙。
AI 發現了自己寫的 bug,然後說服自己這不算大問題,接著就通過了——這才是你需要一個獨立驗收環節的原因。
自我欺騙長什麼樣
具體到前端設計領域,這個問題最肉眼可見。
讓 Claude 生成一個頁面,它會給你一個白底卡片、紫色漸層、居中堆疊的東西。技術上沒毛病。視覺上毫無記憶點。
然後你讓它給自己打分。它說:佈局合理,層次清晰,使用者體驗良好。
換個人看一眼:這不就是每個 AI 都會吐出來的預設皮膚?
問題不在模型能力——Claude 寫 CSS 寫得很好。問題在於它沒有能力判斷「好不好看」。遇到主觀判斷,它永遠往寬鬆了打。有客觀標準的任務也沒好多少——它對自己的能力缺乏準確認知。
這件事的底層原因,Anthropic 想明白了:
讓創作者批評自己的作品,難度遠大於訓練一個獨立的評審者變得嚴格。人也是這樣。你讓工程師自己 review 自己的程式碼,大概率覺得哪哪都挺好。拉個同事來看,問題就冒出來了。
解法:從 GAN 借一個思路
他們從生成對抗網路(GAN)的結構裡借了個思路:一個 Agent 只管生成,另一個 Agent 只管挑刺。
Generator 負責寫程式碼、做設計。Evaluator 負責驗收。
關鍵是 evaluator 怎麼驗收——不是看截圖打分,是用 Playwright 真的去操作頁面。點按鈕、填表單、查 API 返回、看資料庫狀態。像一個真人 QA 一樣走完整套流程,然後寫回饋,generator 根據回饋改,一輪一輪迭代。
但 evaluator 也不是天生靠譜。
Anthropic 說了句大實話:開箱即用的 Claude,是一個很差的 QA Agent。
早期的 evaluator 發現了真實的 bug,然後——說服自己這不算嚴重——然後批准了。它還喜歡只做表面檢查,邊界情況根本不碰。
校準的方法很笨但有效:讀 evaluator 的日誌,找到它的判斷跟你是不一致的地方,改 prompt,再跑,再對比。好幾輪才調到基本符合人類的嚴苛程度。
為什麼不直接把 generator 調嚴?因為試過了,調不動。讓一個獨立的評估者變嚴格,比讓一個創作者學會自我批評,容易一個數量級。這就是拆分的全部價值。
給「好不好看」定標準
前端設計這個領域最難的不是生成,是定義什麼叫「好」。
Anthropic 把審美拆成了四個可以打分的維度:
| 維度 | 評什麼 | Claude 裸跑水準 |
|---|---|---|
| 設計品質 | 顏色、排版、佈局是否形成統一身分 | 差 |
| 原創性 | 有沒有客製的設計決策 | 差 |
| 工藝水準 | 字體層級、間距、對比度 | 及格 |
| 功能性 | 使用者能不能完成任務 | 及格 |
Claude 的工藝和功能天生不差。問題出在設計品質和原創性——它太安全了,永遠選最不會出錯的方案。
他們在評分標準裡重點加碼了前兩項,明確懲罰那些一眼 AI 味的套路。評分標準裡甚至寫了一句「最好的設計應該有博物館級的品質」。
這句話後來產生了意想不到的效果——模型開始往某種特定美學方向收斂。說明評分標準的措辭本身就是一種創意引導,不是中性的。
第十輪,畫風突變
驗證這套架構最有意思的案例:給一個荷蘭藝術博物館做網站。
跑了 5 到 15 輪迭代。每輪 evaluator 用 Playwright 真的去操作頁面再打分。一次完整生成要跑四個小時。
前九輪在常規範圍內。深色主題,乾淨排版,展品卡片。越來越精緻,但本質上還是你能想到的「博物館網站」。
第十輪,generator 把之前的方案全推翻了。
做了一個 3D 空間體驗:CSS 透視渲染的房間,棋盤格地板,畫作掛在牆上自由擺放,導航方式不是滾動也不是點擊——走過一扇門進入下一個展廳。
單次生成做不到這種跳躍。它是 evaluator 持續施壓的產物——當常新路徑被反覆批評為「缺乏原創性」後,generator 被逼到了全新的方向。
沒有挑刺官,就沒有這個創意跳躍。
9 美元 vs 200 美元 vs 125 美元
他們把這套思路擴展到全端開發,加了一個 Planner(把一句話需求展開成完整規格),變成三個 Agent。
復古遊戲編輯器的對比:
| 模式 | 時長 | 花費 | 結果 |
|---|---|---|---|
| Solo Agent | 20 分鐘 | $9 | 介面上看,核心功能壞的 |
| Agent Harness | 6 小時 | $200 | 能玩,有 AI 輔助生成功能 |
Evaluator 抓到的 bug 精確到程式碼行:矩形填充工具的 mouseUp 沒觸發、Delete 處理的條件邏輯寫反了、FastAPI 路由定義順序導致 reorder 被當成整數解析。這種級別的回饋,靠 Agent 自省不可能得到。
後來模型升級到 Opus 4.6,sprint 結構可以砍掉了——generator 能連續跑兩個多小時不崩。他們又用一句話 prompt 做了一個瀏覽器端的 DAW(數位音訊工作站),4 小時,125 美元。能編曲、能混音,內建 AI Agent 幫你鋪旋律加鼓組。
模型變強了,一些舊的鷹架確實可以拆掉。
但 evaluator 沒有被拆掉。
因為模型的能力邊界只是往外推了一些,邊界本身沒有消失。在邊界以內,generator 自己搞得定。在邊界附近——功能只實現了表面、路由順序導致的隱蔽 bug、互動邏輯的遺漏——evaluator 依然是最後一道防線。
寫在最後
這不是一個技術問題,是一個認知問題。
AI 的能力已經很強了。寫程式碼、做設計、搭系統——單看產出的速度和廣度,已經超過大多數人。
但它有一個人類工程師通常不會有的缺陷:它不知道自己哪裡不行。
發現了問題會自我說服,驗收自己的作業永遠打高分,邊界情況不會主動去碰。
解決這個問題的方法,不是等模型更強——更強的模型依然有能力邊界,依然不擅長自我批評。
方法是給它找一個專職挑刺的搭檔。然後花時間把這個搭檔調嚴。
這件事聽起來不性感,但 Anthropic 用實驗證明了:同一個模型,有沒有這個搭檔,產出是廢品和成品的區別。
📌 原文:https://www.anthropic.com/engineering/harness-design-long-running-apps