上一回我扯開了話題,分享了我在公司部署到 CI 的一個 AI Agent,那邊已經有 Sub-Agent 的概念 (用同步分支來實現),但 LangGraph 其實有自己一套用來實現 Sub-Agent 的方法:
Sub-Graph (子圖)
如果你平時有在用 VSCode 的 Copilot 或者 Claude,你多多少少會知道 Sub-Agent 的存在。尤其當你丟出一個大任務時,它通常會先進行分析、計劃執行步驟、生成多項 TODO、把子任務分派給 Sub-Agent 處理。相比起執行者,主 Agent 更像一位領班,負責調動一隊 Sub-Agent 去完成任務。
用人類世界的說法,這就是大家都很熟悉的「判上判」(外包再外包)。
我把整個項目交給你,你作為總包商 (主 Agent),負責整體的設計和進度監督,至於具體的搬磚、刷牆、拉水電,你就分別發給其他師傅 (Sub-Agent) 執行。
在 LangChain 的官方文件中,這類架構被稱為 Multi-Agent,運作原理就是有一個主 Agent 負責協調,把每一位 Sub-Agent 當作是 Tool (工具) 來使用 (所以員工就是工具人的意思吧🥲?)。
主 Agent 負責想 3 件事:
現在該叫哪位 Sub-Agent 出場?
要給 Sub-Agent 什麼指令或資料?
Sub-Agent 交回結果後,要怎麼整合起來?
你可能會問,為什麼不直接讓一個 Agent 幹到底就好?
這就牽汲到一個非常現實的工程痛點:
Context Isolation (上下文隔離)
雖然現在模型的 Token 上限 (Context Window) 越來越大,但並不代表我們可以無腦地把所有日誌、文件、對話紀錄通通塞進去。
這跟成立公司一樣 (在有 Agent 之前),如果一個人單幹處理公司的所有事情,包括市場研究、設計、研發、推廣、會計… 就算每天做好做滿 24 小時也做不好。
Agent 的世界同理,一位 Agent 單幹的話很快它就會被之前的上下文所混淆,導致錯漏百出。然而透過發佈子任務到 Sub-Agent,每一位 Sub-Agent 都能有獨立的上下文,運作時不需要知道主流程的其他瑣事。
當 Sub-Agent 完成後,主 Agent 只需要接收精簡後的結果,也不用被 Sub-Agent 執行過程中的那堆碎屑給淹沒。
此架構能有效防止主 Agent 的上下文「爆炸」,也能提高它判斷的準確度。

