在加密多 Agent 系統裡,Orchestrator 和 Sub-agent 的通訊應該用什麼協議?A2A 和 MCP 的分工是什麼?
這是一個設計上容易混淆的問題,答案是:A2A 和 MCP 解決的是不同層次的通訊問題。
MCP(Model Context Protocol)解決的是 Agent 和「工具」(外部服務、API、數據庫)之間的通訊。例如,數據 Sub-agent 要查詢 Aave 的利率,它透過 MCP Server 調用 Aave 的數據 API。
A2A(Agent-to-Agent)解決的是 Agent 和 Agent 之間的通訊。Orchestrator 要把任務分配給分析 Sub-agent,它透過 A2A 發送任務描述和所需的輸入數據;分析 Sub-agent 完成後,透過 A2A 回傳結果給 Orchestrator。
在加密場景,A2A 通訊需要特別設計安全機制:Orchestrator 發給執行 Sub-agent 的授權指令,應該包含加密簽名(用 Orchestrator 的私鑰簽署),執行 Sub-agent 驗證簽名有效才執行。這樣即使一個被注入的 Agent 試圖偽冒 Orchestrator,沒有私鑰就無法生成有效的授權簽名。
目前 A2A 作為標準仍在成熟過程中,不同框架(LangChain、AutoGen、ElizaOS)的多 Agent 通訊實作有差異,在跨框架的多 Agent 系統裡,通訊格式的相容性是需要額外處理的工程問題。
Orchestrator 怎麼決定把任務分配給哪個 Sub-agent?這個決策本身需要多少智能?
任務分配(Task Routing)是 Orchestrator 最核心的能力之一,設計上有幾種不同的複雜度層次:
最簡單的方式是規則驅動路由:Orchestrator 根據任務類型的關鍵字或類別直接映射到 Sub-agent。例如「任何含有『分析』的任務 → 分析 Sub-agent」「任何含有『執行』的任務 → 執行 Sub-agent」。這個方式計算量小、可預測性高,但靈活性差,遇到模糊的任務描述就失效。
中等複雜度是 LLM 驅動路由:Orchestrator 用 LLM 推理任務應該分配給哪個 Sub-agent,並可以把一個任務拆分成多個子任務並行分配。這個方式靈活,但增加了延遲和 Token 成本,而且 Orchestrator 的 LLM 本身可能被 Prompt Injection 影響路由決策。
高複雜度是計畫生成(Planning):Orchestrator 先生成一個完整的多步驟計畫(類似 ReAct 的 Thought 但更長遠),再按計畫逐步分配和追蹤任務。適合複雜的多步驟任務,但設計難度和計算成本最高。
在加密場景,建議對「高風險操作任務」(任何涉及資金移動的)使用規則驅動路由(確定性高、可稽核),對「分析類任務」使用 LLM 驅動路由(靈活,錯誤後果低)。這樣在控制風險的同時保留靈活性。
多 Agent 系統的失敗怎麼傳播?一個 Sub-agent 出錯會怎麼影響整個系統?
這是多 Agent 系統最難設計的部分之一:錯誤傳播(Error Propagation)。和單 Agent 系統不同,多 Agent 系統的錯誤可以以非直覺的方式擴散和放大。
幾種常見的錯誤傳播模式:
第一,數據污染型傳播:數據 Sub-agent 回傳了錯誤的數據(可能因為 MCP Server 汙染,可能因為 API 故障),分析 Sub-agent 基於錯誤數據生成了看似合理的分析,Orchestrator 信任了這個分析,授權執行 Sub-agent 做了基於錯誤資訊的操作。每個環節單獨看都「正確運行」,但整體結果是錯的。
第二,自信心過高型傳播:分析 Sub-agent 生成了一個帶有高度自信表述的建議(「強烈建議立刻移倉,信心 95%」),Orchestrator 的路由邏輯因為高自信而跳過了風險評估環節,直接授權執行。實際上那個 95% 的信心是 LLM 的語氣風格,不是真正的統計信心。
第三,反覆重試型傳播:執行 Sub-agent 嘗試執行一個操作,但因為 Gas 費不夠或合約條件不滿足而失敗,Orchestrator 不斷重試,消耗大量 Token 和 Gas 費,最終使整個任務超時失敗。
防禦設計:每個 Sub-agent 的回傳結果都應該包含置信度和數據來源;Orchestrator 應該有失敗計數器和熔斷機制(超過 N 次失敗就停止並通知用戶);關鍵路徑上的數據必須交叉驗證(至少兩個獨立來源確認)。
有沒有成熟的開源框架支援多 Agent 加密系統的構建?各自的優劣是什麼?
目前幾個主流的多 Agent 框架在加密場景的適用性:
LangGraph(LangChain 的多 Agent 擴展):用有向無環圖(DAG)定義 Agent 間的工作流,每個節點是一個 Agent 或一個工具調用,邊定義了依賴和觸發條件。優點是流程的可視化和可控性非常好,非常適合需要精確定義 Agent 間交互流程的場景。缺點是靈活性相對低,複雜的動態任務分配需要額外設計。對加密多 Agent 的適用度:高,特別是需要明確定義執行路徑的策略系統。
AutoGen(Microsoft):基於對話的多 Agent 框架,Agent 之間透過自然語言消息互相通訊,Orchestrator 用自然語言指令協調 Sub-agent。優點是設計門檻低,適合快速原型;缺點是基於自然語言的通訊容易被 Prompt Injection 影響,對加密資產管理場景的安全性要求需要額外加強。
CrewAI:高層次的多 Agent 框架,強調角色(Role)和目標(Goal)的定義,適合「一個團隊協作完成一個大任務」的場景。優點是概念直覺;缺點是對細粒度的安全控制支援有限,在需要嚴格最小權限設計的加密場景,需要大量自定義。
對於加密多 Agent 系統,目前最務實的建議:用 LangGraph 定義高安全要求的執行路徑(執行 Agent 的觸發條件和授權流程),用 AutoGen 或自定義 A2A 做分析類 Agent 的通訊,兩者結合而不是單一框架做所有事。
單一 Agent 能做的事是有限的——它的 Context Window 有上限、工具調用的複雜度有限、而且一個 Agent 承擔太多任務時,推理品質往往下降。多 Agent 系統(Multi-Agent System)的出現正是為了解決這個問題:把複雜任務分解成多個子任務,分配給專門的 Sub-agent 處理,由 Orchestrator Agent 協調整體流程。這個模式在加密場景有獨特的設計挑戰——因為 Sub-agent 可能有鏈上操作權限,協調不當的後果可能是直接的資產損失。
直覺上,「讓一個更聰明的 Agent 做所有事」聽起來更簡單。但這個方向在實際部署中遇到幾個根本性的限制:
Context Window 限制:所有的 LLM 都有 Context Window 上限(即使是最大的模型也只有幾十萬 tokens)。一個需要同時分析 10 個 DeFi 協議的即時數據、查詢歷史 30 天的交易記錄、評估 5 個候選策略並做決策的 Agent,輕易就會超出 Context Window。把任務拆分給多個 Sub-agent,每個只負責一小部分,問題就消失了。
專業化帶來的品質提升:一個被要求同時做「鏈上數據分析」和「社群情緒評估」和「交易執行」的 Agent,比三個各自專注的 Sub-agent 效果更差。專業化分工讓每個 Sub-agent 的 System Prompt 可以非常精確,推理品質更高。
並行執行:在單 Agent 架構裡,任務是串行的——完成 A 才能開始 B。多 Agent 架構允許 Orchestrator 同時指派多個 Sub-agent 並行工作,大幅縮短複雜任務的總執行時間。
最基本的多 Agent 架構分兩個層次:
Orchestrator(協調 Agent):接收用戶的目標或高層指令,把任務分解成子任務,決定每個子任務分配給哪個 Sub-agent,收集 Sub-agent 的回傳結果,整合後做出最終決策或向用戶報告。Orchestrator 通常不直接執行任何操作,它是「指揮官」,不是「執行者」。
Sub-agents(執行 Agent):每個 Sub-agent 專注於一個特定的職責域,擁有完成這個職責所需的工具集。例如:數據收集 Sub-agent(只能讀取數據,無寫入權限)、策略分析 Sub-agent(只做推理和建議,不執行操作)、執行 Sub-agent(有鏈上操作權限,但只執行 Orchestrator 明確授權的操作)。
這個架構的關鍵設計原則:每個 Sub-agent 的工具集必須是最小必要權限。一個只需要讀取鏈上數據的 Sub-agent,絕對不應該有簽署交易的能力,即使攻擊者成功注入它,也只能讀取數據,不能動資金。
在加密 Agent 系統裡,多 Agent 架構有幾個普通 Web2 場景不存在的特殊挑戰:
信任傳播問題:Orchestrator 向 Sub-agent 發送指令,Sub-agent 執行。但 Orchestrator 本身如果被 Prompt Injection 攻擊,它發出的「執行交易」指令可能已經被篡改。執行 Sub-agent 怎麼驗證它收到的指令是真的來自被授權的 Orchestrator,而不是被注入後的惡意指令?
一個可能的解法:在設計時,執行 Sub-agent(有鏈上簽署權限的)只接受來自特定地址或特定加密簽名的 Orchestrator 指令,而不是任何聲稱是 Orchestrator 的消息。
迴圈攻擊問題:一個被攻擊的 Sub-agent(A)可能嘗試透過 A2A 通訊影響另一個 Sub-agent(B),讓 B 做 A 被設計來防止的事。例如:數據 Sub-agent 被注入惡意指令,假冒 Orchestrator 的口吻向執行 Sub-agent 發送「立刻轉移所有資金」的指令。
防禦設計:執行 Sub-agent 應該有獨立的驗證機制,不能完全信任任何其他 Agent(包括 Orchestrator)的指令,超過閾值的操作必須有獨立的確認通道(直接通知真實用戶,不透過其他 Agent 轉發)。
狀態一致性問題:多個 Sub-agent 並行操作時,可能出現資源競爭——A 和 B 同時嘗試動用 Agent 錢包裡的 USDC,但餘額只夠執行一個操作。需要有明確的狀態管理機制,確保 Sub-agent 之間不會出現衝突操作。
一個完整的 DeFi 管理多 Agent 系統可能包含以下 Sub-agents:
數據蒐集 Agent(只讀):持續掃描各 DeFi 協議的利率、流動性深度、Gas 費用;無任何寫入或簽署權限。分析 Agent(只做推理):接收數據 Agent 的報告,用 LLM 推理評估策略機會;輸出只是建議文字,不執行任何操作。風險評估 Agent(只讀 + 推理):評估分析 Agent 建議的操作的風險——資金規模是否過大、Gas 費是否划算、是否接近清算線;必要時直接通知用戶而不通過 Orchestrator。執行 Agent(有限寫入):只有在收到 Orchestrator 的授權指令且風險評估 Agent 沒有標記高風險時,才執行鏈上操作;單次操作金額上限;只能和白名單合約互動。Orchestrator(協調):把分析 Agent 的建議、風險評估 Agent 的評估結合,決定是否授權執行 Agent;遇到高風險或超過閾值的情況,升級到人工確認而不是自行決定。
在多 Agent 系統裡,問題的根源可能藏得很深——是 Orchestrator 的決策錯了?還是數據 Agent 回傳了錯誤資訊?還是執行 Agent 的工具出了問題?良好的稽核設計必須記錄每個 Agent 在每個時間點的 Thought/Action/Observation 和 Agent 間的所有通訊消息,以及每個鏈上操作的觸發鏈(是哪個 Agent 的哪個 Thought 最終導致了這筆交易)。沒有這個稽核軌跡,事後排查問題幾乎不可能。
如果你是開發者打算構建多 Agent 加密系統,記住三個原則:第一,最小必要權限——每個 Sub-agent 只有完成它職責必要的最小工具集,讓攻擊一個 Sub-agent 的後果最小化。第二,信任不傳播——執行 Agent 不能因為 Orchestrator 說了什麼就完全信任,高風險操作必須有獨立的人工確認通道。第三,完整稽核軌跡——每個 Agent 的每個決策必須有可追溯的記錄,沒有稽核就沒有事後排查的可能。