Day 60 / 共 60 天 · 阶段 10 运行时·生产·收官 🏁

收官:把 60 天拼成一张地图

你走到了终点。这一天不讲新源码,而是把前 59 天散落的知识点收拢成一张完整的地图——从「一个 StateGraph 怎么定义」一路到「一个可部署的 Server」,看清每块拼图在整体中的位置。然后横向对比六个 Agent 框架的取舍,最后给你一条继续走下去的路。恭喜,也辛苦了。

📍 全程回望 · 10 个阶段 60 天,你在终点
①入门 ②状态流 ③控制流 ④Pregel ⑤通道 ⑥持久化 ⑦中断 ⑧函数式 ⑨预制流式 ⑩生产收官
💡 一句话总结你学到了什么 LangGraph 的本质,就一句话:把「一个 Agent 的推理过程」建模成一张图,用 Pregel 超步引擎驱动它一步步跑,用通道管数据、用 checkpoint 存进度,从而让它可中断、可回放、可分布式、可上线。这 60 天,你把这句话里的每一个词都拆到了源码层。
L01

60 天,我们到底走了什么路

还记得 Day 1 那个疑问吗——「LangGraph 和 LangChain 到底啥关系,它解决什么」。现在你能自己回答了:LangChain 管「怎么调一次模型/工具」,LangGraph 管「怎么把很多次调用编排成一个有状态、能循环、能人工介入的流程」。60 天就是沿着这个「编排引擎」从外到内、再从内到上线,走了一圈:

看得见的层
StateGraph / 节点 / 边 / State —— 你写的 API(阶段 1-3)
看不见的引擎
Pregel 超步循环 / 通道 / checkpoint —— 框架的核心(阶段 4-6)
高级能力
中断人在环 / 函数式 / 子图 / 预制件 / 流式(阶段 7-9)
上线
Runtime / 错误 / CLI 部署(阶段 10)
👶 大白话前三个阶段学的是「你怎么用」,中间三个学的是「它内部怎么转」,后三个学的是「怎么玩出花」,最后学「怎么发货」。一个完整的软件生命周期:会用 → 懂原理 → 用得高级 → 能上线。这正是「读懂一个框架源码」该有的深度。
L02

十阶段知识地图(一张大图)

把 60 天钉在一张图上。每个阶段标注了「核心源码文件」和「你该记住的一句话」:

LangGraph 60 天知识大地图 ① 入门与心智 (D01-06) StateGraph / add_node / add_edge / compile graph/state.py · 「图 = 节点+边+状态」 ② 状态与数据流 (D07-12) reducer / add_messages / Annotated graph/message.py · 「谁负责合并更新」 ③ 控制流 (D13-18) 条件边 / Command / Send / 递归上限 graph/_branch.py · types.py · 「怎么决定下一步」 ④ Pregel 执行引擎 (D19-26) ★核心 超步 / _loop.py / _algo.py / _runner 「BSP:读→算→写→存,循环」 ⑤ Channels 通道 (D27-32) LastValue / BinOp / Topic / Barrier channels/*.py · 「状态字段背后的存取策略」 ⑥ 持久化与记忆 (D33-40) ★核心 Checkpoint / InMemory/Sqlite/Postgres / Store libs/checkpoint · 「进度存档 + 长期记忆」 ⑦ 中断与人在环 (D41-46) interrupt() / resume / 时间旅行 / replay types.py · 「暂停等人,再从断点续」 ⑧ 函数式 API 与子图 (D47-52) @entrypoint / @task / 子图 / 缓存 / 重试 func/__init__.py · 「不画图,用装饰器写」 ⑨ 预制件与流式 (D53-58) create_react_agent / ToolNode / 5 种流 prebuilt/*.py · 「开箱即用 + 逐 token 输出」 ⑩ 运行时·生产·收官 (D59-60) Runtime / errors / CLI 部署 / 知识地图 runtime.py · libs/cli · 「从 Demo 到上线」 贯穿始终的两条主线:数据(State→通道→checkpoint→序列化) / 执行(图→Pregel 超步→任务→重试) 建议二刷顺序(若基础扎实想直击核心) ④ Pregel 引擎 ⑥ 持久化 ⑦ 中断人在环 ⑨ 预制件 这四块是 LangGraph 区别于「普通 LLM 调用链」的护城河,也是面试最常被追问的地方。
图注:绿=你写的 API 层,蓝=数据/控制流,紫=核心引擎(深水区),橙=高级能力,青=预制/流式,靛=上线。
阶段一句话记住核心源码
① 入门图 = 节点 + 边 + 共享状态graph/state.py
② 状态流reducer 决定「新旧值怎么合并」graph/message.py, channels/binop.py
③ 控制流条件边/Command/Send 决定「下一步去哪、扇出几份」graph/_branch.py, types.py
④ Pregel ★超步循环:准备任务→并行执行→apply_writes→存档pregel/_loop.py, _algo.py
⑤ 通道每个 state 字段背后是一个 Channel 存取策略channels/*.py
⑥ 持久化 ★checkpoint 拆值存 blob;Store 管跨线程长期记忆libs/checkpoint*
⑦ 中断interrupt 抛异常暂停,Command(resume=) 从断点续types.py, pregel
⑧ 函数式@entrypoint/@task 把普通函数变成图func/__init__.py
⑨ 预制/流式create_react_agent 开箱即用;5 种 stream 模式prebuilt/*, pregel/_messages.py
⑩ 生产Runtime 注入依赖;langgraph.json + CLI 打包上线runtime.py, libs/cli
L03

一条主线:一次 invoke 内部发生了什么

如果只让你记一件事,记这个——把 graph.invoke({"messages":[...]}, config) 到返回结果之间发生的全过程串起来,你就把 60 天的知识点全用上了:

控制流:一次 invoke 的完整生命周期(用到的天数标在括号里) 1. 输入映射 map_input (D24) 2. 恢复/新建 读 checkpoint (D33-38) 3. 超步循环开始 PregelLoop.tick (D20) 4. 准备任务 prepare_next_tasks (D21) 5. 注入 Runtime override (D59) 6. 并行跑节点 Runner+重试 (D22/D25) 7. 收集写 interrupt? 暂停 (D41) 8. apply_writes 写进通道 (D21/D27) 9. 存档 saver.put (D34/D35) 10. 流式发出 stream 模式 (D57) 还有活跃节点? 有→回步骤4 11. 输出 map_output (D24)
图注:橙色虚线是「循环回边」——只要还有活跃节点,就回到步骤4 开下一个超步。这就是 Pregel 的心跳,也是 60 天所有知识点的交汇处。
💡 能把这张图讲清楚,你就真的懂 LangGraph 了这 11 步里,几乎每一步都对应一个阶段:输入输出映射(阶段4)、恢复存档(阶段6)、超步循环(阶段4)、通道写入(阶段5)、中断(阶段7)、Runtime 注入(阶段10)、流式(阶段9)。它们不是孤立的知识点,而是一次执行里前后咬合的齿轮。面试时被问「LangGraph 内部怎么跑的」,把这张图讲一遍就是满分答案。
L04

六框架横向对比:LangGraph 站在哪

本站还做了 eino / OpenHands / CrewAI / AutoGPT 等一系列框架的源码教程。学完 LangGraph,横向对比能帮你建立「选型直觉」——没有最好的框架,只有最合适的场景:

框架核心抽象擅长取舍
LangGraph状态图 + Pregel 超步 + checkpoint需要循环、人在环、持久化、可回放的有状态复杂 Agent概念多、上手陡;但生产能力最全
LangChainChain / Runnable 链线性的「取数据→喂模型→出结果」流水线不擅长循环与复杂状态(所以才有了 LangGraph)
CrewAIRole/Agent/Task/Crew 角色协作「多个角色分工协作」的直觉式建模,上手快底层编排能力弱于图模型,复杂控制流受限
AutoGPT目标驱动的自主循环「给个目标自己想办法」的实验性自治可控性/可靠性弱,偏演示
OpenHandsEvent 流 + Agent/Runtime 沙箱软件工程类 Agent(读写代码、跑命令)面向 coding 场景,通用编排非重点
eino (字节)Graph/Chain 编排(Go)Go 生态、强类型、高性能服务端生态与 Python LLM 工具链相比较新
💡 选型直觉:什么时候选 LangGraph当你的需求里出现这些词——「多轮循环、工具调用后再判断、需要人工审批、崩了要能续跑、要能回看历史步骤、要上线扛并发」——LangGraph 的每一个特性都是为它们量身打造的。反过来,如果只是「一次性把文档喂给模型总结一下」,用 LangChain 甚至直接调 SDK 就够了,上 LangGraph 是杀鸡用牛刀。框架的复杂度应该匹配问题的复杂度。

👶 学了 LangGraph,其它框架还用重新学吗?

👨‍🏫 不用从零学。因为你已经掌握了Agent 编排的通用心智:状态怎么管、控制流怎么走、工具怎么调、多步怎么协作。换个框架,只是换一套 API 名字和抽象包装——CrewAI 的 Task、eino 的 Graph、OpenHands 的 Event,本质都在解决你已经理解的同一批问题。这就是深读一个框架源码的复利:第一个框架学原理,后面的框架都是查文档。

L05

学习与求职建议:下一步走哪

🤔 你可能正在想「源码是读完了,但离『能拿这个吃饭』还有多远?简历上怎么写?下一步该做什么项目?」

三条务实的路,按你的目标挑:

🛠 想做工程
用 LangGraph 做一个带持久化 + 人在环 + 流式的完整项目(如客服/研究 Agent),走一遍 langgraph dev → build → 部署。把 D59 的部署链路亲手跑通,这就是最好的作品集。
📚 想懂更深
二刷阶段 ④⑥⑦(Pregel/持久化/中断),对照本站其它框架教程横向读。尝试给 LangGraph 提一个小 PR(改文档/加测试也算),体验开源协作。
💼 想求职
把 L03 那张「invoke 生命周期图」讲熟——它是面试杀手锏。简历写「读过 LangGraph 源码,理解 Pregel 超步/checkpoint 机制」,比只写「用过 LangChain」有分量得多。
💡 关于「读源码」这件事本身的收获这 60 天真正训练的,不只是 LangGraph 知识,而是一种能力:面对一个陌生的大型代码库,能从入口一步步啃到核心、看懂设计取舍、还原作者的思考。这个能力换到任何框架、任何语言都通用,是比「会用某个库」值钱得多的硬本事。

本站有一份专门的 Agent 开发求职路线,把「从 0 到能面试」拆成了每天 30 分钟的路径,和这套源码教程正好互补——源码教程给你「深度」,路线图给你「广度和节奏」:

→ 去看《Agent 开发 0→1 学习路线 · 68 天》 ← 回 60 天总目录二刷
L06

收官寄语 + 下一站

🎓 写在最后60 天前,LangGraph 对你可能只是一个「能画 Agent 流程图的库」。60 天后,你能说清它的每一层:为什么用超步而不是普通递归、checkpoint 为什么要拆值存 blob、interrupt 靠抛异常实现、Runtime 为什么不进 state……你不再是「会调 API 的人」,而是「懂它为什么这么设计的人」。这中间的差距,就是这 60 天每天 30 分钟攒下来的。

最后用一段代码收尾——回到最开始,但你现在看它的眼神已经完全不同了:

# 一个 StateGraph,你现在能看穿它背后的每一层
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import InMemorySaver

builder = StateGraph(State)          # ← 阶段1:图的骨架
builder.add_node("agent", call_model)   # ← 阶段4:节点会变成 PregelNode
builder.add_conditional_edges("agent", route)  # ← 阶段3:Branch 决定去向
builder.add_edge(START, "agent")     # ← 阶段1:入口
graph = builder.compile(             # ← 编译成 Pregel(阶段4)
    checkpointer=InMemorySaver(),    # ← 阶段6:每步存档
)
graph.invoke({"messages": [...]}, {"configurable": {"thread_id": "1"}})
# ↑ 这一行背后,是 L03 那张 11 步生命周期图的完整运转
💡 从「看代码」到「看穿代码」同样六行代码,60 天前你看到的是「怎么写」,现在你看到的是「每一行会触发框架内部的哪套机制」。这就是读透源码的意义——代码没变,你的眼睛变了。

🏁 60 天,你征服了

  • 10 个阶段、60 天、覆盖 LangGraph 从 API 到引擎到上线的全栈
  • 核心深水区:Pregel 超步引擎、持久化/checkpoint、中断与人在环
  • 一张能讲清「invoke 内部全过程」的生命周期图(面试杀手锏)
  • 六框架选型直觉 + 一套可迁移的「读大型源码」的方法论
🚀 下一站:回到 60 天总目录 挑感兴趣的阶段二刷,或跳到 Agent 求职路线 把知识变成作品和 offer。感谢你走完这 60 天——真正的学习,从合上教程、打开自己的项目那一刻才开始。
← Day 59 Runtime·部署 🏁 回到 60 天总目录 →