長執行 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 之間傳遞(接力執行)。元件之間完全解耦。
好的架構讓元件可以獨立失敗和獨立替換。腦手分離不只是效能優化,它從根本上改變了系統的可靠性模型:從「一個寵物掛了全完」到「任何部分都能重建」。