![]()
過去兩年,大模型寫代碼已經不再新鮮。從代碼補全到 GitHub issue 修復,從競賽編程到倉庫級軟件工程,人們習慣用一個簡單標準評估 coding agent:代碼能不能寫對?測試能不能通過?
但 Claude Code、Codex 這類系統的出現,正在把問題推向更底層的一層。真正強的 coding agent,并不只是 “會寫代碼”。它還要能在長時間窗口內讀倉庫、做計劃、改文件、運行命令、查看報錯、修復失敗、維護上下文,并在多輪反饋中持續推進任務。
這套讓模型長期可靠 “跑起來” 的執行系統,就是 Agent Harness。很多關于 harness 的討論,關注的是模型外面應該包什么:工具、API、沙箱、記憶、權限邊界、驗證器、反饋循環。它們回答的是 “一個可用 Agent 需要哪些系統組件”。
來自伊利諾伊大學香檳分校(UIUC)、Meta 和斯坦福(Stanford University)的 102 頁綜述《Code as Agent Harness》進一步追問:當 Agent 被放進長期任務環境里,真正把推理、行動、反饋、驗證和協作串起來的操作對象是什么?
答案是:代碼。
![]()
- 論文標題:Code as Agent Harness
- 論文:https://arxiv.org/pdf/2605.18747
- GitHub 倉庫:https://github.com/YennNing/Awesome-Code-as-Agent-Harness-Papers
這里的代碼,不只是模型最終生成的一段程序,也不是說 Agent 框架本身由代碼寫成。它指的是 Agent 在 harness 中不斷生成、運行、修改、保存和共享的一系列代碼化中間物:Plan.md、測試腳本、shell 命令、patch、執行日志、workflow、技能庫、仿真器、驗證器,甚至共享倉庫狀態。
傳統代碼生成里,代碼通常是模型最后交付的產物;但在 Agent Harness 里,代碼會進入整個執行循環,承載計劃、執行、反饋、驗證和狀態管理,正在成為 harness 組織長期執行過程的核心媒介。
![]()
Code as Agent Harness 將代碼視為 Agent 系統中的可執行、可檢查、有狀態媒介,并從接口、機制、多 Agent 擴展三個層次展開。
為什么 Harness 需要代碼作為核心載體?
一個純粹的大語言模型本質上是無狀態的。它可以根據上下文生成下一段文本,但不會天然保存任務進度,也不會自動維護外部世界的狀態變化。Harness 的作用,就是把模型接到真實執行環境里。
代碼之所以適合成為 harness 的核心載體,是因為它有自然語言不具備的三個屬性:可執行、可檢查、有狀態。
可執行,意味著模型的意圖可以變成真實操作。一個計劃不只是 “我將修改文件”,而是可以落成 shell command、patch 或測試腳本。
可檢查,意味著執行過程會產生客觀反饋。編譯錯誤、runtime error、測試結果、日志和 trace,都能告訴系統當前發生了什么,而不是只依賴模型自我解釋。
有狀態,意味著任務進度可以被持久保存。倉庫、文件系統、配置、測試、commit history、skill library 都能記錄 Agent 已經做了什么、失敗在哪里、下一步應該接著哪里做。
所以,這篇 survey 和一般 harness 綜述最大的不同,不是又列一遍工具、記憶和沙箱,而是把代碼放在中心位置:代碼是 harness 中最穩定、最可操作的狀態載體。
代碼如何打通 Harness 的接口?
這篇綜述的第一層是 Harness Interface:代碼如何成為模型和外部世界之間的接口。
首先,代碼讓推理可執行。過去模型依賴自然語言 Chain-of-Thought 做推理,但文本推理很難驗證。PoT、PAL 等方法把中間推理轉成程序,讓解釋器完成計算;Lean/Coq 相關工作則進一步把推理變成機器可檢查的證明過程。關鍵不在于 “模型會寫程序”,而在于推理本身被外部化成了可執行對象。
其次,代碼讓行動可落地。對于 Claude Code 或 Codex,行動不是一句 “我會修復 bug”,而是實際修改文件、運行測試、查看報錯、再生成 patch。對于機器人,SayCan、Code as Policies、Voyager 等工作展示了另一種形式:語言目標被轉成技能調用、控制腳本或可復用函數。
第三,代碼讓環境可建模。Agent 要長期運行,就必須知道環境狀態。軟件倉庫、測試結果、執行日志、DOM tree、仿真器、數據分析腳本,都可以成為 Agent 理解世界的結構化表示。SWE-bench、AgentBench 等可執行評測環境也正是基于這一點:任務不再只是靜態問答,而是在一個可執行環境中完成。
代碼進入 Harness Interface 后,推理不再只是文本,行動不再只是承諾,環境也不再只是描述。它們都變成了可以執行、檢查和更新的狀態。
![]()
代碼在接口層連接 reasoning、acting 和 environment modeling,讓 Agent 的推理、行動與環境狀態進入同一個可執行閉環。
![]()
代碼作為接口層的發展路線圖。
Harness 如何用代碼管理狀態與反饋?
真實任務很少一步完成。修復一個 bug,可能要多次定位、修改、測試和回滾;操作一個網頁系統,可能要跨多個頁面和工具;做一個科學實驗,可能要提出假設、運行模擬、分析數據,再根據結果調整下一步。
這時,關鍵不只是模型更強,而是 Agent 的每一步是否能被組織進一個可控的執行循環。
Planning不再只是模型腦內計劃,而可以變成 Plan.md、workflow 或可執行任務圖。Memory也不只是 “更大的上下文窗口”,而是哪些倉庫證據、執行日志、失敗經驗、歷史 patch 應該被保存、壓縮或卸載到外部狀態中。Tool use也不只是 API 調用,而是通過終端、沙箱、測試框架、靜態分析器等工具改變外部世界。
最核心的是Plan-Execute-Verify 循環。計劃定義操作范圍,執行在沙箱或受限環境中發生,驗證依賴測試、linter、靜態分析和運行日志。像 SWE-agent、OpenHands 這類系統之所以重要,不只是因為它們會調用工具,而是因為它們把 “寫代碼 — 運行 — 失敗 — 修復” 組織成了可重復的狀態轉移過程。
一個成熟的 Agent 不應該害怕報錯。報錯、測試失敗和執行日志,正是代碼 harness 控制 Agent 行為、讓它逐步收斂的反饋傳感器。
![]()
規劃、記憶、工具使用和執行反饋共同構成代碼中心 Harness 架構,支持 Agent 長程運行。
多 Agent 協作時,代碼是共享基底
當任務復雜到單個 Agent 無法完成,多 Agent 協作成為自然方向。一個 Agent 做 manager,一個做 planner,一個寫代碼,一個寫測試,一個做 reviewer。
但多 Agent 的真正難點不是 “多叫幾個模型討論”,而是它們如何共享同一個世界狀態。
如果多個 Agent 只靠聊天記錄協作,很容易出現狀態發散:每個 Agent 都以為自己理解了當前進展,但它們對代碼到底被改成什么樣、測試失敗在哪里、哪些修改已經生效,可能并沒有共同認知。
代碼在這里提供了更穩定的共享基底。倉庫、測試、PR、issue、CI log、review comment、執行 trace,都可以成為多個 Agent 共同讀寫和驗證的對象。真正的協作不是 “互相說服”,而是圍繞共享程序狀態不斷收斂。
多 Agent 系統的共同語言,不應該只是自然語言對話,而應該是可執行的共享代碼狀態。
![]()
在多 Agent 系統中,共享倉庫、測試、執行狀態和 workflow 構成協作基底。
從 Claude Code 到機器人:
代碼正在成為 Agent 操作系統
Code as Agent Harness 最先在 coding agent 中變得明顯,并不意外。軟件世界天然可執行、可測試、可回滾、可記錄,因此最適合作為 Agent 落地的樣板間。
但這個趨勢并不止于寫代碼。在 GUI/OS Agent 中,網頁和操作系統正在被轉化為可編程環境,DOM tree、accessibility tree、Playwright 腳本都讓界面操作變成可執行狀態轉移。在機器人中,語言意圖需要變成技能庫、控制腳本和仿真反饋,抽象目標只有落到可執行代碼里,才能被物理約束檢查。在科學發現中,假設、實驗、模擬、數據分析和實驗記錄可以被組織成代碼流水線,Agent 不只是生成想法,而是通過可執行 pipeline 推進發現過程。
因此,未來很多 Agent 不一定都叫 coding agent,但它們很可能都會運行在某種 code-centric harness 之上。
模型像大腦,harness 像身體和神經系統;而代碼,就是把大腦、身體、反饋和記憶連接起來的操作系統。
![]()
Code as Agent Harness 從代碼助手擴展到 GUI/OS、機器人、科學發現、個性化系統等場景。
Open Problems:
下一代 Agent 不能只評測最終結果
當 Agent 變成長期執行系統,評測方式也必須改變。過去 benchmark 主要看最終結果:答案對不對、測試過沒過、任務完成沒有。但對于 code-harnessed agent,這遠遠不夠。
一個 Agent 可能最終通過測試,但過程中做了大量危險修改、污染共享狀態,或者引入隱藏 regression。另一個 Agent 可能沒有完成任務,但執行軌跡清晰、失敗原因明確、狀態可恢復。真實部署中,后者未必更差。
論文因此提出了幾個開放問題:如何做 harness-level evaluation,不僅評估最終輸出,也評估計劃、工具調用、狀態轉移和反饋使用;如何處理 incomplete feedback,因為測試通過不代表程序真正正確;如何實現 regression-free self-evolution,避免 harness 自我優化時引入新失敗模式;如何解決多 Agent 共享狀態中的語義沖突;以及如何把 human-in-the-loop 變成可記錄、可追責、可驗證的系統狀態。
AI Agent 的下一步,不只是讓模型更會回答,而是讓整個代碼化執行過程更可檢查、更可恢復、更可治理。
過去,代碼是模型的考題。
現在,代碼正在成為 Agent 的操作系統。
關于作者
寧徐瑛(Xuying Ning),本文一作,伊利諾伊大學香檳分校(UIUC)CS 博士生,研究方向包括 AI Agent、多模態機器學習與信息檢索,一作工作發表于 ICLR(Oral)、ICML 等頂尖會議,共累計發表論文 20 余篇,入選 2026 年 Siebel Scholar,曾在 Meta、Ant Group 開展研究工作。本文核心貢獻者還包括 UIUC 博士生 Katherine Tieu、魏天心(Tianxin Wei)、李子豪(Zihao Li)、貝元琛(Yuanchen Bei),以及 Meta 研究科學家付東奇(Dongqi Fu)。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.