單一代理的除錯已經大致解決:看提示、看工具呼叫、看輸出。
多代理圖形則不同。讓團隊不斷踩雷的模式如下:
- 代理 A 將任務交給代理 B
- B 呼叫工具
- 結果回到 A
- A 根據結果做出決策
- 三個步驟之後,最終答案明顯錯誤
問題通常不在步驟 5。錯誤發生在交接(步驟 2)。等到你盯著最終輸出時,只能靠手動從日誌還原整個鏈。
這就是多代理除錯的代價。
為什麼交接會在無聲無息中出錯
在單一鏈中,只有一個元件掌握狀態的來龍去脈。
在多代理執行中,狀態常常是隱式的:
- A 記錄:「我傳了正確的東西。」
- B 記錄:「我收到合理的內容。」
- 兩者在各自看來都「正確」。
- A 原本的意圖與B 實際操作的內容之間的落差,正是無聲失敗藏身之處。
如果你只記錄每個代理自己的輸出,這個落差就永遠不會被發現。
在完美工具出現前,有三件事可以幫上忙
1. 把交接視為一等事件
不要只記錄「代理 A 結束」/「代理 B 開始」,而要記錄更多:
- 決定交接的原因
- 傳輸中的資料
- 接收方被告知的內容
- 接收方實際能存取的項目(工具、記憶體範圍、權限)
最後一項很重要。資料可能吻合,但授權卻不同(B 無法讀取 A 以為它能讀取的記憶體)。
2. 優先使用步驟檢查,而非整條重新執行
當工具具有副作用(寄送郵件、更新工單、移動資金)時,重新執行整條圖形來除錯既慢又危險。
你真正需要的是:跳到交接步驟,並在那裡檢查狀態。
3. 及早(低成本)偵測差異
實務上有一個有效模式:在邊界建立快照。
- 傳送方快照:A 放在傳輸線上的內容
- 接收方快照:B 在第一次工具/LLM 呼叫之前所綁定的工作狀態
- 比對兩者
若兩者有差異,你能在步驟 2 就抓到,而非步驟 5。比完整重播更省:只要比對快照,不必重新執行圖形。
從節點分叉(在該狀態下測試不同的工具/政策,而不必重播上游)是復原的一半。偵測才是大多數團隊從未建立的那一半。
這對「代理可觀測性」意味著什麼
泛用的「顯示 LLM 跨度」對單一鏈有幫助。
多代理系統需要邊界感知的操作:
- 跨代理的巢狀/連結執行
- 在決策時可見的記憶體
- 已授權的工具
- 依邏輯任務彙整的成本與重試次數
這正是我們正在用 Cartha 打造的方向(SDK-first:追蹤、範圍記憶體、預算、多代理巢狀)。我們對完整的「從節點分叉」以及自動交接差異探測仍處於早期階段,並且對此保持坦誠。
如果你只能記住一件事:請記住記錄交接,而不只是代理本身。
給你的問題
如果你正在執行多代理圖形(LangGraph 或其他):
- 你是否把交接視為一等事件來記錄,還是只記錄各代理的 I/O?
- 當你「重播」時,是完整重新執行,還是步驟層級的檢查?
- 你是否建立過任何檢查,確認傳送方的資料與接收方解讀的狀態完全一致?
很想知道你在正式環境中哪些做法有效(或失敗)。
文件/試用:cartha.in/how-to-use
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.