Agent Engineering 课程阅读

在 GitHub 查看原文

本页目录

L08 — 多智能体协作

本课目标:理解为什么需要多个 Agent,怎么让它们分工协作。前 7 课都是单个 Agent 干所有事,这课让多个 Agent 各司其职、协同完成复杂任务。

这是 Agent 进阶的重要话题——也是面试常问的"你怎么设计一个多 Agent 系统"。


1. 单 Agent 的局限

一个 Agent 干所有事,听起来简单,但任务复杂时会出现问题:

问题 表现 例子
角色混杂 一个 Agent 既要规划、又要执行、又要检查,prompt 巨复杂 "你同时是项目经理、程序员、测试员" → 哪个都做不好
上下文污染 不同职责的信息混在一个对话里,互相干扰 执行时的工具结果污染了规划思路
不可控 单 Agent 黑盒,难以针对性优化某个环节 规划错了还是执行错了?分不清
无法并行 一个 Agent 只能串行做事 想同时查 3 个资料?得排队

🎯 核心认知:多 Agent 的本质是关注点分离(和软件工程的模块化思想一致)——每个 Agent 只管自己擅长的事,通过协作完成整体任务。


2. 常见的多 Agent 架构

架构 1:主从(Orchestrator-Worker)

一个"主 Agent"负责分配任务,多个"从 Agent"执行具体工作。

        主 Agent(调度)
       ┌───┬───┬───┐
    从A  从B  从C  从D
   (查资料)(写代码)(测试)(文档)

主 Agent 决定"这个任务该派给谁",从 Agent 各干各的。适合任务能清晰拆分的场景。

架构 2:流水线(Pipeline)

任务按顺序流过多个专职 Agent,每个加一层处理。

规划者 → 执行者 → 审查者
(拆任务)(做任务)(查质量)

像工厂流水线——每个工位负责一道工序。适合有明确步骤的场景。本课实现这个。

架构 3:对等辩论(Debate)

多个 Agent 对同一问题各抒己见,辩论后得出更好的结论。

Agent A(正方)↔ Agent B(反方)→ 裁判 Agent(综合)

适合需要多角度思考的问题(如决策、评估)。


3. Agent 间怎么通信?

多 Agent 协作的关键问题:它们怎么传递信息?

方式 做法 特点
共享状态 所有 Agent 读写同一个数据结构(如 dict) 简单直接,但耦合
消息传递 Agent 之间显式发消息(A 的输出 = B 的输入) 解耦,灵活
共享黑板 一个公共"黑板",Agent 往上面写,其他人读 适合复杂协作

本课用最简单的消息传递:每个 Agent 的输出作为下一个 Agent 的输入(流水线式)。

💡 在我们的实现里,"Agent 间通信"其实就是:把上一个 Agent 的回答,作为下一个 Agent 的 prompt 的一部分。因为每个 Agent 本质是一次 LLM 调用,它们的"通信"就是文本传递。


4. 角色设计:规划者 / 执行者 / 审查者

本课实现的 3-Agent 流水线:

规划者(Planner)

  • 职责:拿到任务,分解成清晰的步骤清单
  • 特点:不执行,只想"该做什么、按什么顺序"
  • 类比:项目经理

执行者(Executor)

  • 职责:按计划逐步执行,调用工具
  • 特点:专注"把每一步做好",不操心全局
  • 类比:程序员

审查者(Reviewer)

  • 职责:检查执行者的结果,指出问题或确认通过
  • 特点:挑毛病、把关质量
  • 类比:测试员/质检员
用户任务
   │
   ▼
[规划者] → 输出步骤清单
   │
   ▼
[执行者] → 按清单执行,输出结果
   │
   ▼
[审查者] → 检查结果,输出"通过"或"问题:xxx"
   │
   ▼ (如果审查发现问题,可以回传给执行者重做)
最终结果

每个 Agent 有自己的 system prompt(角色定义),互不干扰。这就是"关注点分离"。


5. 协作的代价(不是越多 Agent 越好)

多 Agent 不是银弹,它有成本:

代价 说明
API 成本翻倍 3 个 Agent = 3 倍 LLM 调用
延迟增加 串行流水线,每多一个 Agent 多一轮延迟
调试复杂 出错了要定位是哪个 Agent 的锅
过度工程 简单任务用多 Agent 是杀鸡用牛刀

🎯 经验法则:先用单 Agent,当单 Agent 明显搞不定(角色混杂、质量不够)时再考虑多 Agent。不要为了多 Agent 而多 Agent


6. 本课代码会做什么

code.py 实现一个 3-Agent 流水线(规划者 + 执行者 + 审查者):

① 三个 Agent 各有角色

每个 Agent 是一个带专属 system prompt 的 LLM 调用,职责清晰分离。

② 协作完成一个任务

给一个复杂任务,看三个 Agent 怎么接力: - 规划者拆解任务 - 执行者按计划执行(调用工具) - 审查者检查质量,可能打回重做

③ 打印每个 Agent 的工作过程

你会清晰看到每个 Agent 的角色、输入、输出——理解它们怎么协作。


7. 跑起来

python agent-lessons/08_multi_agent/code.py

终端会打印三个 Agent 的接力过程。重点看:每个 Agent 各司其职,比一个 Agent 全包更清晰、更可控。


下一课 L09 — 毕业项目 是 Agent 课程的收官:综合所有技术做一个能进简历的项目。