本页目录
Lesson 05 练习 — 共享状态通信
练习重点在"对比三种通信机制"和"理解黑板模式的解耦价值"。
练习 1:对比消息传递 vs 共享 State(关键概念,5 分钟)
运行 code.py 的实验 1 和实验 2,对比回答:
- 实验 1(消息传递)里,执行者怎么拿到规划者的输出?(提示:拼进 prompt 字符串)
- 实验 2(共享 State)里,执行者怎么拿到规划者的输出?(提示:读
state['plan']) - 如果规划者的输出特别长(比如 2000 字),哪种方式更容易出问题?为什么?
- 跑完后想查看中间结果(plan/execution),实验 1 和实验 2 哪个更容易追溯?
这道题帮你理解"为什么要从消息传递升级到共享 State"。
练习 2:看黑板的内容演进(核心机制,5 分钟)
运行 code.py 的实验 3,观察黑板(knowledge 池)的内容怎么变化:
- researcher 执行完后,黑板里有几条?标签是什么?(提示:【事实】)
- analyst 执行完后,黑板里有几条?新增的标签是什么?(提示:【分析】)
- 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 毕业项目会用到的模式。
思考题(不写代码)
-
黑板模式和共享 State 有什么本质区别? 提示:共享 State 每个 Agent 读写不同字段;黑板是所有 Agent 读写同一个池。
-
为什么 handoff(L02)属于"消息传递"而不是"共享 State"? 提示:handoff 传递的是消息(对话历史),不是 State 字段。
-
什么场景下黑板会变得有害? 提示:Agent 太多、黑板信息爆炸、有过时信息没人清理——读取时难以判断哪些还有效。
完成标志
- [ ] 能说清三种通信机制的区别(消息传递/共享 State/黑板)
- [ ] 理解黑板模式的解耦价值(加 Agent 不影响其他)
- [ ] 知道共享 State 是前 4 课一直在用的(L01/L03/L04)
- [ ] 理解 reducer 对共享 State 和黑板都是必须的
- [ ] 能根据场景选型(简单→消息,固定流程→State,松耦合→黑板)
下一课 L06 学多模型路由 + 四种网络拓扑总览——LangGraph 主干段收官。