Orchestrator 和 Sub-agent 的責任邊界怎麼劃定?有沒有通用的原則?
Orchestrator 和 Sub-agent 的責任邊界設計沒有唯一正確答案,但有幾個廣泛適用的原則:
第一,Orchestrator 負責「怎麼把任務拆解和整合」,Sub-agent 負責「某一類任務的最佳執行」。Orchestrator 應該知道「我需要數據分析、風險評估、策略生成這三類工作」,但不應該知道「用 CoinGecko API 的哪個端點能查到 ETH 的 7 天平均 Gas 費」——那是數據 Sub-agent 的職責。
第二,鏈上執行操作集中在 Orchestrator 或一個專門的「執行 Sub-agent」。分析類 Sub-agent 不應該有鏈上簽署授權。這讓安全邊界清晰:讀取外部數據(可能被 Prompt Injection 污染)的 Sub-agent,和執行資金操作的授權,在設計上就是分離的。
第三,信息傳遞採用結構化格式而不是自然語言。Orchestrator 向 Sub-agent 分配任務,以及 Sub-agent 向 Orchestrator 返回結果,都應該使用預定義的 JSON 結構,而不是自由文本。這降低了 Prompt Injection 通過 Sub-agent 回傳內容污染 Orchestrator 的風險。
第四,Sub-agent 不應該知道其他 Sub-agent 的存在。這是「最小知識原則」——一個分析市場數據的 Sub-agent 不需要知道有另一個 Sub-agent 負責生成策略。這讓系統更模組化,也減少了攻擊者通過污染一個 Sub-agent 影響整個系統的路徑。
Orchestrator 在 LangChain(LangGraph)裡怎麼實作?有沒有最簡單的入門範例?
LangGraph 是 LangChain 的多 Agent 工作流框架,用有向無環圖(DAG)來描述 Orchestrator 和 Sub-agent 的協作關係。最簡單的 Orchestrator 模式:
在 LangGraph 裡,你建立一個 StateGraph,定義幾個節點(每個節點對應一個 Agent 或一個處理步驟),然後定義節點之間的邊(哪個節點執行完後流向哪個節點)。Orchestrator 節點的職責是讀取初始任務,決定先調用哪個 Sub-agent 節點,以及在所有 Sub-agent 完成後進行結果整合。
最簡入門結構:一個 orchestrator 節點接收用戶輸入並決定路由;一個 data_analyst 節點查詢市場數據;一個 risk_assessor 節點評估風險;一個 synthesizer 節點整合所有結果輸出最終建議。Orchestrator 節點通過 Conditional Edge(條件邊)決定「先走哪條路」,不是線性地一個接一個。
關鍵的 LangGraph 概念:State 是整個工作流共享的狀態字典,每個節點讀取和更新這個 State。這讓 Orchestrator 知道哪些 Sub-agent 已完成、結果是什麼,而不需要 Sub-agent 互相通訊。對加密 Agent 的實際建議:在 State 裡明確標記哪些欄位是「已驗證的」(通過 Schema 驗證的工具回傳數據),哪些是「Sub-agent 的推斷」,讓 Orchestrator 在整合時能區分不同可信度的信息。
Orchestrator 和 AutoGen 的 GroupChat 機制有什麼不同?什麼時候選哪個?
兩者解決「多個 Agent 協作完成任務」這個問題,但設計哲學完全不同:
LangGraph Orchestrator 模式:執行路徑由預先定義的 DAG 決定,Orchestrator 是一個有明確職責的協調節點,不是一個「在對話中決定下一個發言者」的角色。流程是確定性的——在設計時你就知道「數據分析之後一定去風險評估,風險評估之後才到策略生成」。這讓流程可審計、可測試,適合有財務後果的場景。
AutoGen GroupChat 機制:多個 Agent 在一個虛擬的「對話組」裡,輪流發言、辯論、互相質疑,GroupChat Manager(等效於 Orchestrator)決定下一個發言的是哪個 Agent。整個協作更接近「讓 Agent 自由辯論找到最好的答案」。流程是動態的,每次執行可能不同路徑。
選哪個的原則:如果你的任務有清晰的執行路徑(數據獲取 → 分析 → 決策),用 LangGraph Orchestrator——確定性、可審計、對 Prompt Injection 的防禦更好(自然語言通訊更少)。如果你的任務需要多個視角的「辯論」來提高決策質量(例如讓技術分析 Agent 和基本面 Agent 互相質疑彼此的結論),用 AutoGen GroupChat——動態、多角度,但更難測試和審計。對加密場景:執行層(有資金操作)用 LangGraph;純分析層(無資金操作)可以用 AutoGen 做多視角辯論。
在加密場景,Orchestrator 持有鏈上授權有什麼具體的安全設計要求?
Orchestrator 持有主要的鏈上操作授權,讓它成為整個多 Agent 系統裡最需要安全保護的節點。幾個具體的安全設計要求:
第一,Orchestrator 的輸入驗證。Orchestrator 接收的輸入有兩個來源:用戶的初始任務(相對可信)和 Sub-agent 的返回結果(需要驗證)。對 Sub-agent 返回結果必須做 Schema 驗證——確認格式符合預期({"protocol": string, "apy": float, "risk_score": int}),不接受意外的長文字欄位(可能是注入指令)。任何不符合 Schema 的 Sub-agent 回傳,不送進 Orchestrator 的 LLM Context,直接截斷並告警。
第二,鏈上操作決策必須有獨立確認層。Orchestrator 做出「執行鏈上操作」的決策後,不能直接執行。必須通過一個在 Orchestrator LLM 推理流程之外的確認機制(人工確認通道、或硬性的規則引擎驗證)。這讓即使 Orchestrator 的 LLM 推理被污染,攻擊者也無法直接觸發資金操作。
第三,Sub-agent 不能主動請求 Orchestrator 執行鏈上操作。信息流應該是單向的:Orchestrator 分配任務給 Sub-agent,Sub-agent 返回分析結果給 Orchestrator,Orchestrator 自主決定是否執行鏈上操作。Sub-agent 的返回結果裡不應該包含「建議立刻執行 X 操作」的主動指令——那是 Orchestrator 的決策權,不是 Sub-agent 的職責。
第四,完整的決策鏈審計日誌。每一個鏈上操作都應該能從日誌裡追溯到:哪個 Sub-agent 提供了哪個數據 → Orchestrator 基於什麼做了決策 → 通過了哪些確認層 → 最終鏈上執行的詳情。這個追溯能力在安全事故發生後是根本原因分析的唯一依據。
DeFi 策略 Agent 裡 Orchestrator 的一次完整任務協調流程
任務:「評估 Aave、Compound、Morpho 的 USDC 機會,如果有明顯優勢就執行移倉。」
Orchestrator 收到任務後,把它拆解成三個子任務並分配:向 DataAgent 請求三個協議的當前 APY 和 TVL(格式:{"protocol": str, "usdc_apy": float, "tvl_usd": float});向 RiskAgent 請求三個協議的安全評分(格式:{"protocol": str, "risk_score": int, "recent_incidents": list});向 GasAgent 請求當前 Gas 費估算(格式:{"gas_gwei": float, "est_cost_usd": float})。
DataAgent 調用 DeFi Llama API,返回 Schema 驗證通過的數據:[{"protocol": "Morpho", "usdc_apy": 7.8, "tvl_usd": 890000000}, ...]。RiskAgent 調用安全評分 API,返回風險評分。GasAgent 調用 Gas 估算服務,返回 {"gas_gwei": 12.3, "est_cost_usd": 1.82}。
Orchestrator 整合三個 Sub-agent 的結果,自主推理:Morpho APY 7.8% vs 當前 Aave 5.2%(利差 2.6%),$800 倉位年化超額收益 $20.8,Gas 費 $1.82,回本需 32 天(合理)。風險評分可接受。決策:建議移倉。
但決策觸發了「超過 $100 的操作」門檻,Orchestrator 通過 Telegram Bot 發送確認請求給用戶,等待人工確認。用戶確認後,Orchestrator 才通過執行通道發起鏈上交易。整個過程裡,三個 Sub-agent 都沒有任何鏈上授權,執行決策完全在 Orchestrator 和人工確認層。
Orchestrator 設計的核心取捨是「集中協調的效率 vs 單點失敗的風險」。所有任務的協調邏輯都在 Orchestrator 裡,讓系統設計簡單、可理解,但也讓 Orchestrator 成為整個系統的單點瓶頸——如果 Orchestrator 的 LLM 推理被 Prompt Injection 污染,整個系統的決策都可能受影響。另一個取捨是「同步等待 vs 並行執行」:標準的 Orchestrator 模式讓所有 Sub-agent 按 DAG 順序執行,有明確的等待時間;並行執行(同時調用多個 Sub-agent)能縮短延遲,但增加了狀態管理複雜度和競爭條件的風險。對加密 Agent:延遲通常不是最優先考慮的,優先確保決策的可審計性和安全邊界的清晰性。