创建时间: 2026-08-12最后更新: 2026-08-12

1. 多 Agent 演变

天气 Agent 只适合回答天气相关建议,但「我明天出门要带什么?」还涉及个人习惯和同行人的需求。如果继续给天气 Agent 增加状态读取、记忆检索和最终清单职责,它会重新变成一个知道所有事情的巨大 Agent,上一篇建立的上下文隔离也会消失。

更合适的做法是让三个领域 Agent 分工:

Agent独立上下文可使用的能力明确不负责
天气 Agent用户问题、天气工具结果生产级天气子图习惯与陪同人
习惯 Agent用户问题、当前 Agent 状态读取本次运行状态天气与长期记忆
陪同人 Agent用户问题、记忆检索结果读取长期记忆天气与个人习惯

它们都只返回领域结论,再由一个 Supervisor 对最终结果负责。

2. Supervisor

Supervisor 的职责是理解总目标、选择合适的子 Agent、准备委派任务、等待结果并解决重复或冲突。它不应该绕过天气 Agent 自己查天气,也不应该凭空补写记忆。

正在加载图示...

图中的每个子 Agent 都有自己的模型消息和工具范围。Supervisor 只接收它们最后返回的领域答案,因此天气子图里的坐标、重试和供应商错误不会占用主 Agent 的上下文。

3. 工具

在 Supervisor 模式中,子 Agent 常被包装成工具。工具描述告诉 Supervisor 什么时候应该委派,工具函数内部才真正调用对应 Agent。

specialists.ts
1
const weatherAgentTool = tool(
2
({ task }) => runWeatherSubagent(task),
3
{
4
name: 'ask_weather_agent',
5
description: '委派天气 Agent 查询可靠天气并给出携带建议',
6
schema: z.object({ task: z.string() }),
7
},
8
)

习惯 Agent 从当前 AgentState 读取习惯,陪同人 Agent 从长期记忆检索结果中工作。它们的工具输入都只有 task,具体数据由各自边界注入,而不是让 Supervisor 把整个全局状态复制给所有 Agent。

4. 并行委派

本案例要求 Supervisor 在同一轮调用三个工具。LangChain Agent 的 v1 工具节点会并发执行同一条模型消息中的多个工具调用,因此天气、习惯和陪同人三条支线可以同时工作。

supervisor.ts
1
const supervisor = createAgent({
2
name: 'packing_supervisor',
3
model,
4
tools: [weatherAgentTool, habitAgentTool, companionAgentTool],
5
version: 'v1',
6
systemPrompt: '同一轮调用三个领域 Agent,结果返回后合并清单。',
7
})

并行只解决等待时间,不解决意见冲突。假设天气 Agent 建议带保温杯,习惯 Agent 也建议带水杯,Supervisor 需要合并重复项;如果一个 Agent 建议轻装,另一个要求携带药品,Supervisor 应把安全相关建议放在更高优先级,而不是随意删掉其中一个。

订阅后可阅读剩余内容
AI 电子伴侣企业级项目实战
已发布239计划发布120目标已完成199%