背景
Discussion #38 提议把各章代码整理成独立可运行的脚本。讨论中进一步建议优先采用 Notebook:读者可以按步骤执行、查看中间状态,也可以保留经过清理的运行结果。
此前 Issue #23 已整理过第 3 章的八个示例方向。该 issue 关闭时约定,后续不再按单章零散推进,而是建立覆盖全课程的统一共建任务。本 issue 用来承接这项工作,并长期记录认领与完成情况。
这不是要求一个贡献者一次整理全部章节。可以只认领一章中的一个 Notebook。
期望的目录结构
首个 PR 可以在仓库中建立下面的基础结构,后续贡献沿用同一约定:
notebooks/
├── README.md # Notebook 索引、运行说明和完成状态
├── ch02/
│ └── 01-quickstart.ipynb
├── ch03/
│ ├── 01-state-backend.ipynb
│ └── 02-filesystem-backend.ipynb
└── ...
文件名使用两位序号和简短英文名称。一个 Notebook 只讲一个可以独立验证的主题;内容较多的章节可以拆成多个文件。
每个 Notebook 至少包含
- 学习目标,以及它对应的课程章节或小节;
- 操作系统、Python 版本和依赖版本;
- 所需环境变量与外部服务说明,不写入真实密钥;
- 完整的 import、模型初始化、工具或后端定义;
- 可以从头到尾顺序执行的 Agent 调用与验证步骤;
- 需要观察的中间状态和预期现象;
- 常见报错、成本或网络要求,以及必要的资源清理步骤。
模型名建议通过 MODEL_NAME 等环境变量配置。密钥从环境变量或本地 .env 读取,禁止写进 Notebook。保留输出时,请删除密钥、Token、个人路径和其他敏感信息,并截断过长的模型响应或日志。
如何认领
请先在本 issue 下留言。可以直接复制下面的格式:
准备认领:chXX / Notebook 主题
对应课程小节:
计划覆盖的运行路径:
验证环境:操作系统、Python 版本、deepagents/langchain/langgraph 版本
是否依赖付费 API 或外部服务:
维护者确认没有重复后即可开始。建议一个 PR 只包含一章,或者一组关系紧密的小实验。
提交前如何验证
Notebook 需要在干净环境中从第一格运行到最后一格,不能依赖上一次运行遗留的变量、文件或内核状态。可以使用 Jupyter、VS Code,也可以用下面的方式执行:
jupyter nbconvert \
--to notebook \
--execute notebooks/chXX/<文件名>.ipynb \
--output-dir /tmp \
--ExecutePreprocessor.timeout=600
请在 PR 描述中记录:
- 实际执行命令;
- 操作系统和 Python 版本;
deepagents、langchain、langgraph 等主要依赖版本;
- 是否使用模型 API、数据库、沙箱或其他外部服务;
- 从头执行是否成功,以及清理敏感信息后保留的关键结果。
如果某个示例受模型输出随机性影响,请验证工具调用、状态变化、文件产物等可检查的行为,不要把某一句固定回答当作唯一通过条件。
完成标准
每个 PR 需要满足以下条件:
- Notebook 与课程正文使用的概念和 API 一致;
- 在说明的依赖版本下可以从头到尾顺序执行;
- 除环境变量外,不要求读者手工修改隐藏状态或本机绝对路径;
- 不包含密钥、个人数据、大段无关输出或未清理的调试日志;
- 更新
notebooks/README.md 中的章节索引、依赖说明和完成状态;
- 如果正文需要增加 Notebook 入口,随 PR 更新对应章节链接;
- PR 关联本 issue,并说明自己完成了哪一项。
初始认领清单
第 3 章可以直接参考 Issue #23 中已有的 StateBackend、FilesystemBackend、LocalShellBackend、StoreBackend、CompositeBackend、FilesystemPermission、GuardedBackend 和 PolicyWrapper 示例清单,不需要重新整理需求。
PR 合并后,维护者会更新上面的清单。后续新增章节也会继续加入这里,因此本 issue 会保持打开状态。
背景
Discussion #38 提议把各章代码整理成独立可运行的脚本。讨论中进一步建议优先采用 Notebook:读者可以按步骤执行、查看中间状态,也可以保留经过清理的运行结果。
此前 Issue #23 已整理过第 3 章的八个示例方向。该 issue 关闭时约定,后续不再按单章零散推进,而是建立覆盖全课程的统一共建任务。本 issue 用来承接这项工作,并长期记录认领与完成情况。
这不是要求一个贡献者一次整理全部章节。可以只认领一章中的一个 Notebook。
期望的目录结构
首个 PR 可以在仓库中建立下面的基础结构,后续贡献沿用同一约定:
文件名使用两位序号和简短英文名称。一个 Notebook 只讲一个可以独立验证的主题;内容较多的章节可以拆成多个文件。
每个 Notebook 至少包含
模型名建议通过
MODEL_NAME等环境变量配置。密钥从环境变量或本地.env读取,禁止写进 Notebook。保留输出时,请删除密钥、Token、个人路径和其他敏感信息,并截断过长的模型响应或日志。如何认领
请先在本 issue 下留言。可以直接复制下面的格式:
维护者确认没有重复后即可开始。建议一个 PR 只包含一章,或者一组关系紧密的小实验。
提交前如何验证
Notebook 需要在干净环境中从第一格运行到最后一格,不能依赖上一次运行遗留的变量、文件或内核状态。可以使用 Jupyter、VS Code,也可以用下面的方式执行:
请在 PR 描述中记录:
deepagents、langchain、langgraph等主要依赖版本;如果某个示例受模型输出随机性影响,请验证工具调用、状态变化、文件产物等可检查的行为,不要把某一句固定回答当作唯一通过条件。
完成标准
每个 PR 需要满足以下条件:
notebooks/README.md中的章节索引、依赖说明和完成状态;初始认领清单
TodoListMiddlewareCompositeBackend第 3 章可以直接参考 Issue #23 中已有的 StateBackend、FilesystemBackend、LocalShellBackend、StoreBackend、CompositeBackend、FilesystemPermission、GuardedBackend 和 PolicyWrapper 示例清单,不需要重新整理需求。
PR 合并后,维护者会更新上面的清单。后续新增章节也会继续加入这里,因此本 issue 会保持打开状态。