長運行 Agent
Managed Agent:腦手分離
核心洞察:把 Agent 的思考和執行拆成獨立組件,讓系統在任何部分出錯時都能優雅恢復。
類比:操作系統的虛擬化
三個核心組件
Session
會話日誌
Append-only 的事件流,持久化存儲。記錄所有發生過的事情:用戶輸入、工具調用、模型輸出。
Harness
腦 / 大腦
調用 Claude 並路由工具調用的循環。負責思考:決定下一步做什麼、如何組織上下文。
Sandbox
手 / 沙箱
執行程式碼和編輯檔案的容器環境。負責執行:運行命令、寫檔案、與外部系統互動。
為什麼要拆開:寵物 vs 牛羣
架構演進
舊方案(寵物)
Session + Harness + Sandbox 都在同一個容器裏。
容器掛了 = 會話丟失 = 無法調試 = 任務徹底失敗。
就像養了一隻寵物,掛了就完了,無法替代。
容器掛了 = 會話丟失 = 無法調試 = 任務徹底失敗。
就像養了一隻寵物,掛了就完了,無法替代。
新方案(牛羣)
每個組件獨立部署,互不依賴。
容器掛了 = 工具調用失敗 = Claude 決定重試 = 新建容器繼續。
就像牧場的牛,掛了重來一個,系統照常運行。
容器掛了 = 工具調用失敗 = Claude 決定重試 = 新建容器繼續。
就像牧場的牛,掛了重來一個,系統照常運行。
動手試試:故障恢復模擬
Harness
Brain(腦)
execute()
emitEvent()
Sandbox
Hand(手)
Event Log
Session(會話)
點擊下方按鈕,觀察不同故障場景下系統的恢復行為。
腦離開容器後的好處
關鍵改進
-
容器變成工具調用:
execute(name, input) -> string,對 Harness 來説就是一個普通函式 - 容器掛了 = 工具調用返回錯誤 = Claude 自行決定是否重試 = 自動新建容器繼續工作
- Harness 可以在容器啓動前就開始處理,不需要等容器 ready
-60%
TTFT p50 降低
-90%+
TTFT p95 降低
TTFT = Time to First Token(首 Token 響應時間)
安全的結構性解決
安全問題的架構級解決
- 舊方案:Agent 生成的程式碼和 API 密鑰在同一個容器裏,Prompt Injection 可以直接偷密鑰
- Git Token:在克隆倉庫時注入容器環境變數,沙箱內可以用,但 Agent 看不到 token 值
- MCP OAuth Token:存在外部 vault 裏,通過代理轉發 MCP 調用,沙箱內無法直接存取 token
多腦多手
組件可以自由組合
Brain A
Brain B
Brain C
多個 Brain:各自只是無狀態 Harness,按需啓動
Sandbox 1
Sandbox 2
Sandbox 3
Sandbox 4
多個 Hand:各自是獨立工具,可以傳遞給不同 Brain
這意味着你可以讓一個 Brain 同時操控多個 Sandbox(並行執行),也可以讓同一個 Sandbox 在不同的 Brain 之間傳遞(接力執行)。組件之間完全解耦。
好的架構讓組件可以獨立失敗和獨立替換。腦手分離不只是性能優化,它從根本上改變了系統的可靠性模型:從「一隻寵物掛咗就全完」到「任何部分都能重建」。