![]()
↑閱讀之前記得關注+星標??,,每天才能第一時間接收到更新
Anthropic再發Agent工程實踐神文:Effective harnesses for long-running agents(適用于長期運行Agents的有效工具),強烈建議大家圍觀閱讀
之前我介紹過Anthropic Agent文章合集這里:
隨著AI Agent能力的提升,開發者開始要求它們承擔跨越數小時甚至數天的復雜任務。然而,如何讓Agent在多個上下文窗口之間保持一致的進度,仍然是一個未解難題
長程Agent面臨的核心挑戰在于,它們必須分“會話”(Session)工作,而每個新會話開始時都像是一個沒有過往記憶的新工程師接班。由于上下文窗口有限,且復雜項目無法在單一窗口內完成,Agent需要一種機制來彌合編碼會話之間的鴻溝
Anthropic工程團隊通過觀察人類工程師的工作方式,為Claude Agent SDK開發了一套包含兩個部分的解決方案:初始化Agent(Initializer Agent)和編碼Agent(Coding Agent)
核心挑戰:上下文壓縮還不夠
Claude Agent SDK是一個通用的Agent框架,具備上下文管理功能(如壓縮),理論上應能讓Agent無限期工作
但在實際測試中(例如要求最新的Opus 4.5構建一個claude.ai的克隆版),僅靠上下文壓縮是不夠的。Claude主要表現出兩種失敗模式:
1.試圖一次性完成所有工作:Agent傾向于在一次會話中做太多事,導致中途耗盡上下文,留下的功能只完成了一半且缺乏文檔。下一個會話的Agent必須猜測之前發生了什么,浪費大量時間修復基礎應用
2.過早宣布完工: 在項目后期,新的Agent實例看到已經有一些功能,就誤以為整個工作已完成
解決方案:雙Agent架構
Anthropic將問題分解,提出了雙重解決方案:
初始化Agent:第一個會話使用專用提示詞,負責搭建環境。包括生成init.sh腳本、記錄進度的claude-progress.txt文件,以及展示文件添加情況的初始Git提交
編碼Agent:后續的每一個會話都致力于取得增量進展,并留下結構化的更新
這一方案的關鍵在于讓Agent在開啟新窗口時能迅速理解工作狀態——這主要通過claude-progress.txt文件和Git歷史記錄來實現
環境管理的三大支柱
為了支持這種工作流,環境設置包含以下關鍵組件:
1. 功能列表(Feature List)
為了防止Agent一次性蠻干或過早結束,初始化Agent被要求編寫一個包含所有功能需求的詳細文件。在claude.ai克隆案例中,這包含超過200個功能點。
這些功能最初都被標記為“failing”(未通過),為后續Agent提供了清晰的工作全景圖
JSON文件示例:
{
"category": "functional",
"description": "New chat button creates a fresh conversation",
"steps": [
"Navigate to main interface",
"Click the 'New Chat' button",
"Verify a new conversation is created",
"Check that chat area shows welcome state",
"Verify conversation appears in sidebar"
],
"passes": false
}實驗發現,使用JSON格式優于Markdown,因為模型不太容易錯誤地更改或覆蓋JSON文件。同時,提示詞需包含強硬指令,禁止刪除或編輯測試,只允許更改passes字段的狀態
2. 增量進展(Incremental Progress)
有了初始腳手架后,編碼Agent被要求一次只做一個功能
為了保持環境整潔,Agent需要在每次代碼變更后:
通過Git提交代碼,并附帶描述性信息;
在進度文件中撰寫摘要
這使得模型可以利用Git回滾錯誤代碼,恢復到工作狀態,避免了后續Agent需要猜測前任做了什么的情況。
3. 端到端測試
Claude的另一個主要失敗模式是:在沒有適當測試的情況下標記功能為完成。它往往只做單元測試或簡單的curl命令,卻忽略了端到端的驗證。
解決方案是明確提示Claude使用瀏覽器自動化工具(如Puppeteer MCP server),像人類用戶一樣進行測試。通過讓Claude看到屏幕截圖,它能識別并修復代碼中不明顯的Bug
快速上手流程(Getting up to speed)
基于上述架構,每個編碼Agent在會話開始時都會被提示執行一系列標準步驟:
1. 運行
pwd查看當前工作目錄。2. 閱讀Git日志和進度文件,了解最近完成了什么。
3. 閱讀功能列表文件,選擇一個未完成的最高優先級功能。
4. 運行
init.sh啟動開發服務器。5. 在實現新功能前,先運行基本的端到端測試,確保應用未處于損壞狀態。
典型會話流程示例:
[Assistant] 我先了解一下項目當前狀態。 [Tool Use] [Tool Use] [Tool Use] [Assistant] 檢查Git日志... [Tool Use] [Assistant] 檢查是否有啟動腳本并重啟服務器... [Assistant] 現在驗證基本功能是否正常... [Assistant] 驗證通過。現在我查看 tests.json 決定下一步做什么。常見故障模式與修復方案總結
問題
初始化Agent行為
編碼Agent行為
Claude過早宣布項目全部完成
根據輸入規格,建立包含詳細功能描述的結構化JSON文件。
會話開始時讀取功能列表,只選擇一個功能開始工作。
環境遺留Bug或無文檔記錄
建立初始Git倉庫和進度筆記文件。
開始時讀取進度文件和Git日志;運行基礎測試發現潛在Bug;結束時提交Git和進度更新。
過早標記功能為“完成”
建立功能列表文件。
自我驗證所有功能。僅在仔細測試后標記功能為“通過”。
浪費時間研究如何運行App
編寫能運行開發服務器的init.sh腳本。
會話開始時直接讀取并運行init.sh。
這項研究展示了長程Agent框架的一種可行方案,但仍有未解決的問題:
單Agent vs 多Agent:目前尚不清楚是通用的編碼Agent表現最好,還是采用多Agent架構(如專門的測試Agent、QA Agent、代碼清理Agent)更優
領域泛化:本演示針對全棧Web開發。未來方向是將這些經驗推廣到科學研究或金融建模等其他長程任務領域
參考:
https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents
--end--
最后記得??我,這對我非常重要,每天都在更新:
歡迎點贊轉發推薦評論,別忘了關注我
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.