posts

《AI Agent 开发入门》 · 全书目录与章节索引(61 篇)

《AI Agent 开发入门》全 61 篇,以从零手写的 Agent 运行时 minagent 为主线,从消息协议与可编程假模型起步,经工具调用、推理模式、上下文工程、记忆与检索、规划与编排、多 Agent 协作,讲到错误重试、可观测性、评测与测试、服务化交付。示例以 Python 3.14 在本机实跑,默认走零凭据、零成本的假模型路径,本页给出全书分章目录。

《AI Agent 开发入门》全 61 篇,是一套以一个从零手写的 Agent 运行时为主线的入门书:从第 1 章定义 Message 与 Role 起,到第 18 章把引擎组装成端到端项目,minagent 会一路长大——二十行的朴素循环、可替换的模型接口、工具注册表与并行调用、三种推理模式、上下文裁剪、短期与长期记忆、本地可离线向量检索、任务分解与图编排、多 Agent 消息总线、错误分类与重试、span 追踪与成本核算、确定性测试与评测集、最后收敛成一个稳定的库接口与 HTTP 服务。所有示例基于 Python 3.14(本机实测 3.14.6)实跑,默认走假模型路径,零凭据、零成本、逐字节可复现。

本页是《AI Agent 开发入门》的全书目录:按章节顺序列出全部 61 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的三条学习路径与八到九周计划。

全书概览

项目内容
书稿《AI Agent 开发入门》
篇数61 篇(正文 18 章 54 节 + 目录篇 + 序 + 前言 + 附录 A–D)
领域AI Agent 引擎从零实现到可交付服务
贯穿项目minagent —— 一台从零手写的 Agent 运行时,18 章逐步长大
阅读方式从目录篇 进入按顺序通读,或按查漏场景跳读
实测版本Python 3.14.6(本机 Homebrew)、Node 26.5.0(第 17 章 TS 对照)
依赖正文第 1–16 章只用标准库;pydantic / httpx / anthropic / fastapi 仅在明确标注「可选」处引入
上级专题书稿专题

全书目录

前置

节文章核心内容
—目录与学习路径全书导航页:本卷怎么读、三条阅读路径与八到九周计划、六部分依赖关系与 54 节逐节索引
—序更高视角:为什么现在要学 Agent 开发、本书的写法取舍与常见误解
—前言本书怎么来的、写给谁、技术栈与版本口径、三卷结构、本书不写什么
附 A附录 A.minagent API 与模块速查Message / ToolCall / ModelResponse / Tool / ToolRegistry / run / Agent 的签名与语义速查,含 model.calls 断言法
附 B附录 B.FakeModel 脚本语法与测试夹具速查三种脚本元素(str / ToolCall 列表 / ModelResponse)的语义对照、四种脚本模式、调用序列断言、真实响应录制回放夹具
附 C附录 C.环境与离线复现速查Python 3.14 venv、依赖安装源、Node 26 可擦除语法约束、Docker 起 postgres/redis、零网络复现步骤
附 D附录 D.常见错误与 FAQ高频报错原文与最小复现:假模型脚本耗尽、工具参数不匹配、JSON 解析失败、SSE 断流、max_steps 撞线……每条给原因与修法

第一部分:引擎地基(第 1–3 章)

节文章核心内容
1.11.1 环境与仓库骨架建好 minagent/ 目录结构、配好 venv、理解全卷的代码组织与运行方式
1.21.2 Agent 的最小定义与消息协议定义 Message / Role / ToolCall,理解 Agent 的最小构成与消息的序列化回放
1.31.3 可编程假模型 FakeModel用脚本驱动的假模型替换真实调用,零凭据跑通第一轮对话
2.12.1 Model 协议设计用 Protocol 定义 Model,把「调用大模型」变成可替换抽象;EchoModel 与 ScriptedModel
2.22.2 真实供应商适配与离线替身写一个真实供应商适配器(可选),把真实响应录成夹具离线重放
2.32.3 Token 预算与截断策略估算 token、设定预算,在超限时按策略裁剪;BudgetedModel 装饰器
3.13.1 朴素循环:跑到没有工具调用为止写出第一个 run() 循环,理解「多轮」从哪来、RunResult 有哪三件东西
3.23.2 停止条件与循环上限五条止损线:自然收敛、max_steps、max_tokens、工具连续失败、重复动作;用 AgentLoopError 把异常终止变成数据
3.33.3 抽成 Agent 类:状态、步骤与回调把循环收进 Agent 类,暴露 on_step / on_tool_call 回调与 history 状态

第二部分:能力扩展(第 4–7 章)

节文章核心内容
4.14.1 工具即函数:schema 生成、注册表与分发用 Tool 与 ToolRegistry 把普通函数暴露给模型,自动生成 schema
4.24.2 参数校验与执行隔离校验工具入参、隔离异常,让错误以 {"error": ...} 结果而非崩溃呈现
4.34.3 并行工具调用与结果合并一轮里同时调用多个工具,按顺序合并结果;量化并发收益
5.15.1 ReAct:把「想—做—看」写进循环把思考、行动、观察三段式嵌进循环,并解释它为何只是同一个循环的变体
5.25.2 Plan-and-Solve:先出计划再执行让模型先给计划再逐步执行,减少来回试探与无效调用
5.35.3 Reflexion:失败后的自我修正失败后回看轨迹、生成反思,再重试一次;对照三种模式的代价
6.16.1 系统提示与指令分层把系统、开发者与用户指令分层,用 model.calls 验证分层是否真的落到消息里
6.26.2 上下文裁剪与摘要超预算时裁剪历史或用摘要压缩,保留 system 与最近上下文
6.36.3 结构化输出约束与解析兜底约束模型输出 JSON,解析失败时带错误重试一次
7.17.1 流式事件模型用 token / tool_call / step / error 事件流描述一次运行,让每一步都可被订阅
7.27.2 会话状态对象用 Session 承载多轮状态,隔离不同会话的历史
7.37.3 检查点与快照把状态存盘,崩溃后能从检查点续跑而不重头再来

第三部分:记忆与知识(第 8–10 章)

节文章核心内容
8.18.1 对话缓冲与摘要记忆用缓冲与摘要两种策略保存近期对话,权衡保真度与体积
8.28.2 记忆检索注入从记忆里挑出相关片段,注入到当前上下文而非全量塞入
8.38.3 记忆写入策略决定什么该记、什么时候记、记多细,以及如何按相似度去重
9.19.1 嵌入与向量存储:本地可离线方案手写一个可离线的嵌入与向量索引(仅第 9 章用到 numpy)
9.29.2 混合检索:关键词 + 向量 + 重排融合关键词与向量召回,再加一层重排,量化各自贡献
9.39.3 记忆即工具把记忆读写暴露成 recall / save_note 工具,交给模型自己决定何时用
10.110.1 文档加载与切分加载文档并按语义边界切成可检索的块,对本站文章目录跑切块统计
10.210.2 索引与检索工具提供 search 与 read 两个工具,让 Agent 自己查知识库
10.310.3 带引用的回答让答案附上来源引用,可追溯、可核对,并校验引用是否真的支持结论

第四部分:编排与协作(第 11–13 章)

节文章核心内容
11.111.1 任务分解:把大问题拆成子任务 DAG把目标拆成有依赖关系的子任务图,识别可并行的部分
11.211.2 计划执行器按依赖顺序执行子任务,汇总中间结果,支持串行与并行
11.311.3 重规划执行受阻时回看计划,局部重排而非全盘重来
12.112.1 状态机式编排手写一个最小图引擎:节点、边与状态流转
12.212.2 分支、合并与循环支持条件分支、并行合并与带出口的循环
12.312.3 人类在环在关键节点暂停,等待人工确认后继续,并保留可恢复的中间状态
13.113.1 角色与分工用 supervisor / worker 划分职责,各司其职
13.213.2 消息总线与共享状态用进程内消息总线连接多个 Agent,隔离与共享各自的边界
13.313.3 协作模式对照顺序、辩论、投票三种拓扑的步数 / 延迟 / 成本量化对照,判断何时值得上多 Agent

第五部分:可靠性与度量(第 14–16 章)

节文章核心内容
14.114.1 分类错误与重试把错误分类,只对可重试的做退避重试,不可重试的快速失败
14.214.2 超时、取消与结构化并发用 asyncio.TaskGroup 统一管理超时与取消,避免任务泄漏
14.314.3 幂等与副作用识别有副作用的工具,用幂等键让重试不产生重复影响
15.115.1 运行追踪把一次运行变成 span 树,记录完整的调用结构
15.215.2 结构化日志与关联 ID输出可检索的结构化日志,用关联 ID 串起全链路
15.315.3 成本与用量核算累计 token 用量,换算成可比较的成本,按模型与步骤归集
16.116.1 确定性测试用假模型与断言轨迹写出确定性测试,把「模型看到了什么」变成可断言事实
16.216.2 评测集与打分建一个小评测集,用引用可回溯与答案可支持两类信号打分
16.316.3 对比实验一次只改一个变量,用对比实验判断改动到底有没有让效果变好

第六部分:交付(第 17–18 章)

节文章核心内容
17.117.1 库的对外接口收敛出一个稳定的公开接口,隐藏内部实现,讲清版本策略与破坏性变更
17.217.2 HTTP 服务化用 FastAPI 与 SSE 把引擎暴露成可流式调用的服务
17.317.3 TS 落点一:同一协议的 TS 客户端用 TypeScript(Node 26 可擦除语法)写一个遵循同一协议的客户端
18.118.1 端到端组装工具、记忆、检索与编排,跑通从提问到带引用回答的完整任务
18.218.2 真实 API 冒烟(可选)可选地用真实供应商做一次冒烟验证,对照假模型与真模型的差异
18.318.3 回顾与路线回顾 minagent 的演进路径,给出进阶学习路线与进入实战卷的衔接

怎么用这份索引

相关阅读

全部文章 Golang Game Saas Rust Python Java 游戏开发 客户端开发 GameDev TypeScript
agent

《AI Agent 开发入门》14.2 超时、取消与结构化并发

Agent 一轮并发调多个工具时,一个慢工具就能拖住整轮。本节用 asyncio.timeout 给单个协程设墙钟上限,再用 asyncio.TaskGroup 做结构化并发,任一子任务超时或失败则整组取消,不留孤儿任务。给出 run_with_timeout 与 run_tools,并用注入的慢工具真跑,打印超时触发、任务被取消、finally 全部执行、残留任务为 0 的证据。

10 分钟阅读
AI Agent AI Agent 开发入门 超时取消
agent

《AI Agent 开发入门》14.1 分类错误与重试

把 Agent 遇到的错误分成可重试与不可重试两类:网络抖动、限流 429、临时 5xx 走指数退避加抖动重试,参数错误 400、权限 403、校验失败直接判死。给出 classify 与 with_retry 两个函数,讲清工具错误回灌给模型换策略、模型错误交给重试的分工,并用脚本化假调用真跑「前两次失败第三次成功」,打印退避间隔与实际尝试次数。

9 分钟阅读
AI Agent AI Agent 开发入门 错误分类
agent

《AI Agent 开发入门》13.3 协作模式对照

把同一批假模型 worker 组织成顺序(pipeline)、辩论(debate)、投票(voting)三种协作拓扑,完成同一个质数判断任务,真跑并量化对比步数、模型调用次数、总耗时与结果一致性,给出实测表格。再给一张决策表,说明什么任务适合哪种拓扑,以及为什么「能用顺序解决的就别上辩论与投票」。

11 分钟阅读
AI Agent AI Agent 开发入门 协作拓扑
agent

《AI Agent 开发入门》13.2 消息总线与共享状态

用进程内消息总线连接多个 Agent:MessageBus 提供 publish/subscribe/history,SharedState 是带 asyncio.Lock 的共享字典。讨论「消息传递」与「共享内存」两种协作范式的取舍与坑(竞态、顺序、可观测性),并用 asyncio 真跑两个 worker 通过总线交换消息协作完成一件事,以及共享计数器在无锁下丢更新、加锁后正确的对照实验。

8 分钟阅读
AI Agent AI Agent 开发入门 消息总线
agent

《AI Agent 开发入门》13.1 角色与分工

把单个 Agent 拆成 supervisor 与 worker:Worker 是一个带专用 system 提示与工具子集的 Agent(检索员、计算员),Supervisor 负责把目标拆成子任务、派给合适的 worker 并汇总结果。用假模型脚本化一次路由决策,真跑「拆成子任务、各自执行、汇总」的完整流程并打印派发与回收,给出单 Agent 与 supervisor-worker 的取舍表。

9 分钟阅读
AI Agent AI Agent 开发入门 多 Agent
agent

《AI Agent 开发入门》12.3 人类在环

有些节点不能全自动——发送邮件、扣款、删数据这类高风险且不可逆的操作,必须停下来等人点头。本节给图引擎加上人在环:用 interrupt_before 标记「执行前必须暂停」的节点,run 返回暂停点与待决策 state,人用 approve/reject/modify 决策后经 resume 继续。用假模型真跑「敏感工具调用前暂停→人批准→继续」,并给出哪些节点该设人工审批的判据。

8 分钟阅读
AI Agent AI Agent 开发入门 人类在环
agent

《AI Agent 开发入门》12.2 分支、合并与循环

12.1 的图是一条直线,每步只有一个后继。真实流程有分叉、汇合与回炉。本节把单后继引擎升级为波次执行:一批节点同波运行,各自触发下游再去重汇合。讲清条件边(按 state 字段走不同分支)、fan-out/fan-in(一个节点触发多个下游再合并)与带退出条件的循环边,并用假模型真跑「生成→校验→不合格回炉」的循环,打印每轮迭代、收敛与撞上限两种结局。

9 分钟阅读
AI Agent AI Agent 开发入门 条件边
agent

《AI Agent 开发入门》12.1 状态机式编排

循环式 Agent 适合开放式任务,但固定流程需要显式结构。本节手写 minagent 的最小图引擎:Node(名字加一个函数)、Edge(源到目标、可带条件)、Graph(add_node/add_edge/set_entry/run),节点间用 dict 状态传递数据。用假模型真跑一条分类→检索→综合的三节点线性链,打印每个节点的进出 state,并给出图编排与循环式 Agent 的取舍表。

9 分钟阅读
AI Agent AI Agent 开发入门 图编排
agent

《AI Agent 开发入门》11.3 重规划

执行中某步失败或结果不满足预期时,把「已完成的子任务 + 失败点 + 观察」喂回模型产出新计划:可复用已完成的、替换失败的、追加补救的。给出 replan 实现与 seed 复用机制,用假模型脚本化「原计划第 2 步失败→重规划出替代路径→完成」,真跑打印两版计划对比,并给出何时重规划、何时直接失败上报的决策清单。

11 分钟阅读
AI Agent AI Agent 开发入门 重规划
agent

《AI Agent 开发入门》10.3 带引用的回答

要求 Agent 输出时对每个论断标注来源 [doc_id#chunk_id],并给出引用校验函数:先查引用是否指向真实存在的块(存在性),再查被引块是否真的支持该论断(用论断关键词是否出现在被引块做简易支持度)。用假模型脚本化一个带引用、夹一个伪造引用的回答,真跑校验并打印有效/无效引用,讲清「可核对性」为什么是 Agent 可信度的关键。

12 分钟阅读
AI Agent AI Agent 开发入门 引用校验
agent

《AI Agent 开发入门》10.1 文档加载与切分

检索增强的第一步是把一堆文件变成可检索的块。本节先剥掉 frontmatter,再用带重叠的 chunk(text, size, overlap) 固定长度切块,并拿本仓库 content/posts/python/ 下 6 篇真实文章实测:文件数、总块数、平均/最长/最短块长全部给出。最后对比按字符切与按语义切的取舍,代码在 Python 3.14.6 跑通。

10 分钟阅读
AI Agent AI Agent 开发入门 文档切分
agent

《AI Agent 开发入门》9.2 混合检索:关键词 + 向量 + 重排

本节在 9.1 的向量检索之上再叠两路信号:用 BM25 做关键词召回,与向量相似度一起用 RRF 倒数排名融合,最后按标题命中做简单重排。我们会真跑对比纯关键词、纯向量、混合三路在同一批记忆上的排名差异,给出重排前后的实测表格,并说明生产系统为何最终用交叉编码器替代这条简单规则。

10 分钟阅读
AI Agent AI Agent 开发入门 混合检索
agent

《AI Agent 开发入门》8.3 记忆写入策略

检索解决「怎么取」,本节解决「怎么存」。如果什么都往记忆里塞,召回会被噪声淹没;塞得太少又会漏掉关键信息。本节给 minagent 加上写入策略:用 should_write 判断什么值得记(偏好、事实、结论 vs 寒暄),用规范化字符串比较做 dedup 去重,用 slot 加时间戳做冲突消解让新信息覆盖旧信息,并真跑一组写入用例。

9 分钟阅读
AI Agent AI Agent 开发入门 记忆写入
agent

《AI Agent 开发入门》8.2 记忆检索注入

缓冲与摘要只能记住最近的对话,用户上周说过的偏好照样找不回来。本节让记忆支持按相关度召回:把记忆存成带文本的条目列表,用关键词与中文二元组打分,实现 retrieve(query, k) 挑出最相关的几条,再拼进本轮上下文。我们用假模型演示「用户提到上周的偏好,Agent 从记忆里召回并回答」,并列出关键词检索的三个陷阱。

10 分钟阅读
AI Agent AI Agent 开发入门 记忆检索
agent

《AI Agent 开发入门》8.1 对话缓冲与摘要记忆

第 3 章的 history 只增不减,对话一长必然撑爆上下文。本节给 minagent 立下统一的 Memory 协议(add / get_context),并实现两种短期记忆:BufferMemory 保留最近 N 条或 N token,SummaryMemory 超阈值时用模型把旧对话压成摘要。我们用假模型跑一段长对话,对比两版注入 messages 的条数差异,并给出三者对照表。

8 分钟阅读
AI Agent AI Agent 开发入门 短期记忆