第 17 章 全景回顾
终章。把十六章积累的零件装配成一台完整的机器,给出一幅可以挂在墙上的总图,然后指出这本书没有讲、但你接下来该去哪
终章。把十六章积累的零件装配成一台完整的机器,给出一幅可以挂在墙上的总图,然后指出这本书没有讲、但你接下来该去哪。
17.1 系统全景
我们的简历筛选系统走过了这样的演进路:
把最终形态的运行时结构画成一张分层图——这是本书的总图:
五层各司其职:LangChain 提供单次能力;核心机制把能力组织成图;运行时负责执行、流式与容错;持久层把执行变成可恢复、可回溯、可记忆的;协作层用子图与多 Agent 应对规模化复杂度。
17.2 概念速查总表
全书核心 API 的一页化浓缩(按主题分组,标注所在章节):
图的构建(第 2、4、6、7 章)
| API | 用途 |
|---|---|
StateGraph(State) |
创建图纸 |
add_node(name, fn) / add_node(name, fn, retry=...) |
注册节点(可带重试策略) |
add_edge(a, b) |
静态边 |
add_conditional_edges(src, route, mapping) |
条件边路由 |
compile(checkpointer=..., store=...) |
编译(可挂持久化与存储) |
Command(update=..., goto=...) |
节点内更新+路由 |
Send(node, payload) |
动态扇出原子 |
状态(第 3 章)
| API | 用途 |
|---|---|
Annotated[T, reducer] |
声明通道合并规则 |
operator.add |
累加/拼接 |
add_messages |
消息追加/替换/删除 |
MessagesState |
快捷消息状态基类 |
运行与观测(第 5、11 章)
| API | 用途 |
|---|---|
invoke / stream / astream / batch |
执行(Runnable 协议) |
stream_mode 五模式 |
values/updates/messages/custom/debug |
get_stream_writer() |
节点内广播业务事件 |
recursion_limit |
超步数安全阀 |
持久化与记忆(第 12、13、15 章)
| API | 用途 |
|---|---|
InMemorySaver / SqliteSaver / PostgresSaver |
检查点后端 |
{"configurable": {"thread_id": ...}} |
线程定位 |
get_state / get_state_history |
快照与历史 |
update_state |
手工改写状态(fork) |
InMemoryStore / store.put/get/search |
跨线程长期记忆 |
get_store() |
节点内访问 Store |
交互与容错(第 8、14、16 章)
| API | 用途 |
|---|---|
bind_tools / ToolNode |
工具循环 |
interrupt(payload) |
节点内中断 |
Command(resume=...) |
中断恢复 |
RetryPolicy(...) |
节点重试 |
17.3 贯穿全书的六条心法
比 API 更值钱的是反复出现的设计判断,收拢成六条:
一、控制流尽量画进图里(第 4 章)。能被看见的流程才能被观测、重跑、恢复。节点内部的私有 if 是图的盲区。
二、并行写必有 reducer(第 3、5、7 章)。多个节点(尤其同超步、Send 实例)写同一字段是常态而非意外,合并语义是状态定义的一部分。默认覆盖只属于单写者。
三、节点是纯函数式的(第 3、14、16 章)。读状态、返补丁;副作用要幂等或后置——重试、中断恢复、时间旅行全都依赖这条纪律。reducer 要纯、路由函数要哑,同理。
四、语义并行不等于物理并行(第 5 章)。同超步只承诺快照隔离,不承诺并发执行。要真实的并发收益,用异步节点与 astream。
五、一切高级特性都长在持久化上(第 12~15 章)。会话恢复、时间旅行、中断、长期记忆——没有检查点这棵树,一根枝都活不了。生产系统的第一步是挂 checkpointer。
六、先单图后多 Agent(第 10 章)。多 Agent 是复杂度的管理手段不是智能的来源。prompt 膨胀、工具过载、子图复用三个信号都没亮之前,加层只会加乱。
17.4 本书没讲什么
诚实的边界与继续前行的路标:
- LangGraph Platform / Agent Server。图的托管运行时:Assistant/Thread/Run/Cron 等 API、A2A 与 MCP 协议、Studio 可视化调试。本书聚焦框架本身,部署形态属平台层。当你需要把图变成多人共用的服务时再去学——好消息是底层协议(thread、checkpointer、stream)你已全部掌握。
- deepagents 等高层范式。在 LangGraph 之上再封装的 Agent 范式(规划-执行-反思)。懂了本书的积木,那些框架会从"魔法"变成"显然"。
- 性能调优。大扇出的并发参数、Postgres 检查点的索引策略、流式背压的精细化处理——生产化之后按需深入。
- 评测(Evals)。怎么科学地衡量"图改了之后效果变好还是变坏"。时间旅行(第 13 章)给了你做回归实验的原料,但系统的评测方法学值得专门一本书。
17.5 结业练习:把它真正跑起来
最后一个大作业,检验全书成色:
从零实现"候选人复投评估系统",要求: 1. 单份评估是 ReAct 子图(工具:查 JD、查公司、查历史评估) 2. 批次评估用 Send 扇出,进度用自定义流推送 3. 综合分超 85 触发 interrupt 人工审批,超时 48 小时自动驳回(服务层 TTL) 4. 评估结论写入 Store 的候选人命名空间,复投时注入历史画像 5. 挂 Postgres checkpointer,演示:中断恢复、从失败检查点重跑、fork 对比两次评估 6. 外部工具故障率 20%:用 RetryPolicy + 兜底节点保证整批流程总能出报告
完成它,你就拥有了一个可以直接写进简历的项目——以及更重要的是,其中每一块你都知道为什么在那里。
十七章、一个系统、一套心智模型。LangGraph 的文档会更新,API 会变迁,但"显式控制流 + 快照化状态 + 超步执行"这三个核心思想短期内不会过时。带着它们去读任何工作流框架(乃至任何分布式系统),都会顺利得多。
祝构建愉快。
本章速查
| 主题 | 坐标 |
|---|---|
| 五层全景 | 能力层(LangChain) → 编排层(核心) → 运行时 → 持久层 → 协作层 |
| 六条心法 | 控制流入图 / 并行必有 reducer / 节点纯函数 / 语义≠物理并行 / 特性长在持久化上 / 先单图后多Agent |
| 继续学习的路标 | Agent Server 与部署、高层 Agent 范式、性能调优、评测方法学 |
| 结业大作业 | 复投评估系统:ReAct 子图 + Send + interrupt + Store + Postgres + 容错 |