Agent Engineering 课程阅读
首页/课程四 · 工作流与多智能体编排/Lesson 05 练习 — 共享状态通信

在 GitHub 查看原文

本页目录

Lesson 05 练习 — 共享状态通信

练习重点在"对比三种通信机制"和"理解黑板模式的解耦价值"。


练习 1:对比消息传递 vs 共享 State(关键概念,5 分钟)

运行 code.py 的实验 1 和实验 2,对比回答:

  1. 实验 1(消息传递)里,执行者怎么拿到规划者的输出?(提示:拼进 prompt 字符串)
  2. 实验 2(共享 State)里,执行者怎么拿到规划者的输出?(提示:读 state['plan']
  3. 如果规划者的输出特别长(比如 2000 字),哪种方式更容易出问题?为什么?
  4. 跑完后想查看中间结果(plan/execution),实验 1 和实验 2 哪个更容易追溯?

这道题帮你理解"为什么要从消息传递升级到共享 State"。


练习 2:看黑板的内容演进(核心机制,5 分钟)

运行 code.py 的实验 3,观察黑板(knowledge 池)的内容怎么变化:

  1. researcher 执行完后,黑板里有几条?标签是什么?(提示:【事实】)
  2. analyst 执行完后,黑板里有几条?新增的标签是什么?(提示:【分析】)
  3. analyst 读黑板时,能看到 researcher 写的内容吗?它是怎么读到的?

关键认知:黑板模式的精髓——后一个 Agent 能看到前一个 Agent 写的所有内容,但它们之间没有直接通信,只通过黑板这个"中介"。


练习 3:给黑板加一个"质疑者"(10 分钟)

在实验 3 的黑板系统里加一个新 Agent:skeptic(质疑者),在 analyst 之后、writer 之前执行。它的职责是读黑板,对已有信息提出 1 个质疑/补充。

要求: 1. 定义 skeptic 节点:读 state['knowledge'],往黑板写 【质疑】... 2. 在图里加上这个节点:researcher → analyst → skeptic → writer 3. 跑一遍,看黑板最终有几条内容(应该是:事实 + 分析 + 质疑)

观察:加这个 Agent,你改了几处代码?其他 Agent 的代码需要改吗?

💡 这就是黑板模式的解耦价值——加 Agent 只需"加一个节点",不用动其他 Agent。如果是消息传递,你得改"谁传给谁、拼进谁的 prompt"。


练习 4:故意去掉黑板的 reducer(认知题,5 分钟)

BlackboardState 里的:

knowledge: Annotated[list[str], operator.add]  # 有 reducer

改成:

knowledge: list[str]  # 没有 reducer

再跑实验 3,看黑板最终有几条。

预期:没有 reducer,每个 Agent 的 return 会覆盖黑板而不是追加——最终黑板只有最后写入的那一条(writer 不写黑板,所以可能是 analyst 的【分析】,researcher 的【事实】被覆盖了)。

⚠️ 这证明:即使是串行的 Agent,只要它们都写同一个字段,就必须配 reducer。验证后记得改回来。


练习 5:把 L04 的并行 + L05 的黑板结合(进阶,15 分钟)

L04 学了并行(Send),L05 学了黑板。结合起来:多个 researcher 并行往黑板写事实

设计: - 用 Send 触发 3 个 researcher 并行(每个研究不同子问题) - 每个 researcher 往 knowledge 黑板写一条 【事实】 - 黑板用 operator.add reducer 自动合并 3 个并行结果 - 之后 analyst 读黑板全部,写分析

提示:这就是 map-reduce(L04)+ 黑板(L05)的组合——并行 worker 往共享黑板写。这是 L09 毕业项目会用到的模式。


思考题(不写代码)

  1. 黑板模式和共享 State 有什么本质区别? 提示:共享 State 每个 Agent 读写不同字段;黑板是所有 Agent 读写同一个池。

  2. 为什么 handoff(L02)属于"消息传递"而不是"共享 State"? 提示:handoff 传递的是消息(对话历史),不是 State 字段。

  3. 什么场景下黑板会变得有害? 提示:Agent 太多、黑板信息爆炸、有过时信息没人清理——读取时难以判断哪些还有效。


完成标志

  • [ ] 能说清三种通信机制的区别(消息传递/共享 State/黑板)
  • [ ] 理解黑板模式的解耦价值(加 Agent 不影响其他)
  • [ ] 知道共享 State 是前 4 课一直在用的(L01/L03/L04)
  • [ ] 理解 reducer 对共享 State 和黑板都是必须的
  • [ ] 能根据场景选型(简单→消息,固定流程→State,松耦合→黑板)

下一课 L06 学多模型路由 + 四种网络拓扑总览——LangGraph 主干段收官。