一个 Agent 完成任务有困难
系统提示词膨胀、工具过多,容易开始“走神”。
众人拾柴火焰高,还是三个和尚没水喝?
预计 14 分钟 · 系列:从 0 到 1 设计一个 Agent
多智能体(Multi-Agent)就是把一个复杂任务交给多个 Agent 一起完成,而不是把所有事塞给一个 Agent。
每个 Agent 都是一个独立的“决策单元”,有自己的提示词 / 人设、上下文和工具,能独立决定下一步动作或把任务交给别人。
一个“团队”代替“一个人”,这就是多智能体。
| 维度 | 单 Agent | 多 Agent |
|---|---|---|
| 能力边界 | 一个 Agent 做所有事 | 每个 Agent 各有所长 |
| 上下文 | 自己维护一个上下文 | 每个 Agent 各自维护自己的上下文 |
| 工具 | 一个 Agent 掌握全部工具 | 每个 Agent 只挂自己需要的工具 |
| 决策路径 | 单线程、顺序推理 | 可并行、可交接 |
| 调试难度 | 链路清晰,相对简单 | 协调环节多,调试更复杂 |
| 适用任务 | 任务专一、上下文可控 | 任务多分支、需要专业分工 |
一个通才
搞定一切
多个角色配合
完成复杂任务
能用单 Agent 解决,就不要强行拆成多 Agent。多一层协作,就多一份成本和复杂度。
系统提示词膨胀、工具过多,容易开始“走神”。
搜索、分析、写作等工作模式各不相同。
子任务之间依赖较弱,可以同时跑,提升效率。
例如写代码、审代码、写测试,互相监督。
多个 Agent 联合起来,可以处理更大的信息量。
按“权力集中度”从高到低,常见有三种协作模式。
多智能体要协作,首先要能“说上话”。不同的 Agent 之间需要传递任务、上下文、中间结果等信息,并在合适的时候把任务交给下一个 Agent。
无论采用什么方式,Agent 之间的通信本质上是在传递以下内容:
| 传递内容 | 含义 | 典型场景 |
|---|---|---|
| 任务 | 要做什么 | “帮我调研 X 公司的竞争对手” |
| 上下文 | 背景信息 | “我们的产品定位是 Y” |
| 中间结果 | 已经完成的产出 | “已经搜到 N 条候选公司” |
| 状态 | 当前进度 | “检索完成 80%,还剩 3 项” |
| 控制权 | 谁接管下一步 | “这个任务交给写作 Agent” |
在同一个系统里,多个 Agent 可以通过不同的方式进行通信,常见做法有:
| 方式 | 适用场景 | 特点 | 示例 |
|---|---|---|---|
| 结构化消息 | Agent 数量少、固定 | 每条消息有 schema,容易校验 | { "task": "...", "input": "..." } |
| 共享状态 | 父子模式 | 父 Agent 把中间结果写到共享区,子 Agent 读取 | 共享内存 / 数据库 / 缓存 |
| 任务队列 | 蜂群、管理者模式 | 每个 Agent 从队列里抢活,异步处理 | 消息队列(如 Redis、SQS) |
| 文件系统 | 长任务、大输出 | 子 Agent 把结果写文件,只回传“引用”,避免大段文本在对话里传递 | /outputs/report.md |
当 Agent 来自不同的公司、不同的团队、不同的云,就需要一套跨系统协议,这就是 A2A(Agent-to-Agent Protocol)。A2A 是 Google 在 2025 年 4 月发起、目前托管在 Linux 基金会下的开放协议,目标是:让任何框架、任何厂商的 Agent 都能互相对话。
| Agent Card | 一个 JSON 文件,描述“我能做什么,我怎么被调用”,相当于 Agent 的“名片” |
|---|---|
| Task | 任务对象,有完整生命周期(pending → in-progress → completed / failed) |
| Message / Part | Agent 之间互发的小段内容,可以是文本、图片、文件等 |
| Artifact | 任务最终产出 |
多智能体可以带来更强的能力,但也更复杂。下面是一些关键的注意事项:
每个 Agent 做什么,不做什么。避免职责重叠和相互干扰。
选择合适的通信方式,明确消息格式、超时、重试和兜底逻辑。
多智能体会显著增加 token 和调用次数,需要在效果和成本之间找到平衡。
考虑超时、任务失败、输出不符合预期等情况,设计重试和兜底机制。
先用少量 Agent 跑通效果,再逐步扩展,避免一开始就过度复杂。
请选择最合适的选项,完成后查看解析。
金融行业研究报告
每日报表数据提取
点击选项后,可以看到每个选项的详细分析和建议。