ai-agent-book

教程

bojieli/ai-agent-book

AI Agent 深入书籍,开源全文与代码。

项目简介

全面讲解 AI Agent 设计与工程实践的书籍,涵盖从基础到多智能体协作的十章内容。仓库提供全书正文、多语言编译版 PDF 以及按章配套的示例代码。

README 预览

# 深入理解 AI Agent:设计原理与工程实践\n\n**[English](README.en.md) | 中文 | [Tiếng Việt](README.vi.md) | [தமிழ்](README.ta.md)**\n\n本仓库是《深入理解 AI Agent:设计原理与工程实践》一书的开源主仓库,包含**全书正文**与**配套示例代码**。全书正文、配图与配套实验代码全部开源,欢迎把实验亲手跑一遍、提 issue 和 PR。\n\n## 📖 电子书\n\n全书提供多种语言版本:\n\n- **中文 PDF(原版)**:[`book/深入理解-AI-Agent-李博杰-v1.2.pdf`](book/深入理解-AI-Agent-李博杰-v1.2.pdf)\n- **英文 PDF**(社区贡献翻译,by [@nsdevaraj](https://github.com/nsdevaraj)):[`book-en/AI-Agents-in-Depth-Bojie-Li-v1.2.pdf`](book-en/AI-Agents-in-Depth-Bojie-Li-v1.2.pdf)\n- **泰米尔语 PDF**(社区贡献翻译,by [@nsdevaraj](https://github.com/nsdevaraj)):[`book-ta/AI-Agents-in-Depth-Bojie-Li-v1.2-ta.pdf`](book-ta/AI-Agents-in-Depth-Bojie-Li-v1.2-ta.pdf)\n- **越南语 PDF**(社区贡献翻译,by [@toanalien](https://github.com/toanalien)):[`book-vi/AI-Agents-in-Depth-Bojie-Li-v1.1-vi.pdf`](book-vi/AI-Agents-in-Depth-Bojie-Li-v1.1-vi.pdf)\n\n中文正文与编译好的 PDF 位于 [`book/`](book/) 目录;英文、泰米尔语与越南语翻译为**社区贡献**,分别位于 [`book-en/`](book-en/)、[`book-ta/`](book-ta/) 与 [`book-vi/`](book-vi/) 目录,内容可能滞后于中文原版:\n\n- **正文源码**:`book/introduction.md`(引言)、`book/chapter1.md` ~ `book/chapter10.md`(第一至第十章)、`book/afterword.md`(后记)\n- **自行编译**:安装 pandoc、xelatex、ElegantBook 文档类与相关字体后,运行\n\n  ```bash\n  cd book && bash build_pdf.sh\n  ```\n\n  图表由 `book/gen_*_figs.py` 生成、存于 `book/images/`,排版细节见 `book/preamble.tex` 与 `book/*.lua`。\n\n## 📑 内容速览(第 1–10 章)\n\n全书围绕核心公式 **Agent = LLM + 上下文 + 工具** 展开,十章内容如下:\n\n- **第 1 章 · Agent 基础知识**:从“模型即 Agent”的新范式出发,建立 **Agent = LLM + 上下文 + 工具** 的核心公式,并引入 Harness 工程——模型之外的一切工程能力,才是真正的竞争力所在。\n- **第 2 章 · 上下文工程**:上下文决定 Agent 的能力上限。深入大模型 API 的上下文结构、KV Cache 友好设计、提示工程、动态提示词与 Agent Skills、状态栏元信息,以及上下文压缩策略。\n- **第 3 章 · 用户记忆和知识库**:让 Agent 跨会话记住用户、并接入外部知识。涵盖用户记忆系统、RAG 基础管道,以及超越扁平文本的知识组织与检索(结构化索引、知识图谱等)。\n- **第 4 章 · 工具**:工具是 Agent 的双手。讲工具分类与通用设计原则、MCP 协议与工具选择的挑战、感知/执行/协作三类工具,以及事件驱动的异步 Agent。\n- **第 5 章 · Coding Agent 与代码生成**:代码是“能创造新工具的工具”,是通用 Agent 的元能力。以生产级 Coding Agent 为例,展示这一最强通用工具的完整实现。\n- **第 6 章 · Agent 的评估**:把 Agent 的表现变成可比较的信号。从评估环境、数据集设计、指标体系,到统计显著性、可观测性、评估驱动选型,直至生产级内部评

常见问题 (5)

故障排除
如何修复当加粗文本以中文引号开头时 Markdown 加粗无法渲染的问题?

GitHub/CommonMark 不会将开头的 ** 视为强调分隔符,如果它前面是普通的中文文本,并且紧跟在中文标点符号(如 “)之前。在 book/chapter1.md 中,将:

因此它是**“构建”这一部分内部的一个观察视角**,而不是覆盖全书十章的目录。

替换为修复后的改写版本:

因此,它是**构建部分内部的一个观察视角**,而不是覆盖全书十章的目录。

如果必须保留引号,则改用 HTML:

因此它是<strong>“构建”这一部分内部的一个观察视角</strong>,而不是覆盖全书十章的目录。

然后重新加载 GitHub 预览或已发布的页面,验证该短语是否显示为粗体。

来源 Issue #1136
informational
当概念感觉很抽象、而且我总是忘记前面章节的内容时,我应该如何学习一本内容密集的 AI 智能体书籍?

采用主动的、基于项目的学习方法,而不是线性地从头读到尾。1)自己动手重新实现每一章的实验,而不是只阅读书中提供的代码;编程智能体可以提供帮助,但代码要亲自编写并运行。2)仔细观察实验输出,并调试各种失败情况,例如 API 无法访问或结果不符合预期——这些问题能加深理解。3)将书中的思想应用到真实的或个人的 AI 智能体项目中。4)利用每章的思考题进行自我检验。5)遵循"先把书读薄,再读厚,最后再读薄"的循环:提炼核心思想,通过笔记和实验将其扩展充实,然后将其凝练为自己简洁的原则。维护者还将这些建议添加到了 README 的 FAQ 中;更多与阅读相关的问题可以在仓库的 Discussions 区域讨论。

来源 Issue #933
informational
为什么在末尾追加 token 不会使 Transformer 的 KV cache 失效?

该描述需要更正。对于每个 token,K_i = x_i @ W_k 和 V_i = x_i @ W_v 仅取决于该 token 的输入和投影权重;因果注意力并不会使 K_i 或 V_i 依赖于之前的 token。因果掩码仅决定一个 token 可以关注哪些键/值。当追加新的 token 时,已有的前缀及其缓存的 K/V 保持不变,因此缓存仍然有效。新 token 利用缓存的前缀及其新条目,按 z_i = softmax(Q_i · K_{0..i}^T / sqrt(d)) @ V_{0..i} 计算注意力。如果前缀中较早的 token 发生变化,则必须重新计算受影响的缓存条目。

来源 Issue #1104
故障排除
如何修复 MkDocs 首页章节卡片显示过时标题、与侧边栏或实际章节页面不一致的问题?

不一致问题是由项目根目录 index.md 中硬编码的章节卡片引起的。当手稿标题或章节顺序发生变化时,主页的 章节速览 卡片并未更新,因此尽管 book/chapter8.md 的标题是 模型后训练,第 8 章仍显示为 Agent 的持续进化。

永久修复:应用/合并 PR fix(site): generate homepage chapter index from manuscripts。在每次 MkDocs 构建时,根据当前手稿标题生成主页章节卡片,使用配置的导航顺序以及每个版本的 URL 前缀和文件名。然后重新构建并重新部署站点。

临时手动变通方法:编辑 index.md 中硬编码的 <span class="exp-title"> 条目,使其与实际的章节标题和链接相匹配。对于第 8 章,将卡片标题更改为 第 8 章 · 模型后训练。同时验证第 5–9 章,因为它们的标题/顺序似乎发生了偏移。重新生成或更新所有本地化主页文件(index.he.md、index.ko.md、index.ptbr.md 等),而不是仅修复默认主页。

来源 Issue #1138
informational
我需要理解 AI Agent 书中实验的每一行代码吗?

不需要。在继续之前,你无需理解每一行代码。首先理解实验的目标、架构以及每个核心组件的作用。阅读章节内容和伪代码,然后使用 coding agent 从零开始实现该实验,直到它产出预期的结果。只有当你需要对行为进行细粒度控制,或者想学习底层语言/框架时,才去研究实现细节。专注于清晰地描述需求和设计;让 AI 处理重复性的实现代码。实验的 README 和新增的伪代码可以帮助阐明设计。

来源 Issue #637