《AI Agent 工程实战》目录

《AI Agent 工程实战》全书导航页:说明本卷定位、读者画像与前置知识、六到八周学习节奏与三条阅读路径,交代贯穿项目 ResearchCopilot 与「与既有 AI 专题的分工」,并按六个部分列出 18 章 54 节的完整章节索引,另含常见问题速查表与通往卷三的路线。

《AI Agent 工程实战》目录

这一页是全书的总入口。它不只列出章节标题,还交代本卷怎么读、贯穿项目 ResearchCopilot 的定位,以及每一章的一句话导读。如果你不确定从哪开始,先读「本卷怎么读」与「学习节奏」两节;如果你已经有明确目标,可以直接跳到「分部分章节」按编号定位。

全书结构是:目录 1 篇 + 正文 18 章 54 节,共 55 篇。正文按工程推进的顺序分为六个部分,每一部分解决一类问题,并围绕一个从卷一引擎长出来的研究助理服务 ResearchCopilot 逐步长大。

本卷怎么读

卷一是「把引擎造出来」,本卷是「把引擎装进一个能给别人用的产品」。这个转向意味着阅读方式要换:卷一每一节都能独立跑通,本卷则有前后依赖——第 5 章建的表,第 7 章的 worker 要用;第 3 章定的错误契约,第 4 章的认证要遵守。跳过中间章节直接读后面,会遇到「这个类型哪来的」。

环境前提。 主线语言仍是 Python 3.14(本机实测 3.14.6),配套虚拟环境位于 /tmp/agentbook/venv;TS 侧用 Node 26(本机实测 26.5.0),依赖装在 /tmp/agentbook/ts。与卷一不同,本卷放心使用工程库:pydantic-settings、FastAPI、psycopg、redis、mcp 等都会真正装、真正用,版本号在每一节里都标注为实测值。

两个本地服务。 本卷大量章节需要 Postgres 与 Redis。全卷统一用这两个连接串:

docker run -d --name ab-pg -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=research -p 15435:5432 postgres:17-alpine
docker run -d --name ab-redis -p 16380:6379 redis:7-alpine

注意端口是 15435 与 16380,不是默认的 5432 / 6379——本机这两个默认端口已被占用,用非默认端口是为了不和别的服务打架。每一节需要连库时都会重复给出这两条命令。

假模型仍然为主。 本卷不依赖真实模型 API 就能读完全部内容:所有演示默认走假模型路径,零凭据、零成本、结果确定。真实调用只出现在第 2 章的适配器写法与第 18.3 节的可选冒烟里,且需要你自备密钥、自行决定是否消耗额度。

需要卷一的底子。 本卷复用卷一立下的核心契约:Message / ToolCall / ModelResponse / Model 协议、Tool / ToolRegistry、run() 循环、FakeModel 脚本、AgentLoopError。这些名字在本卷出现时不再重新解释,只说明「服务层怎么用它」。如果这些名字对你陌生,先读卷一第 1、3、4 章。

贯穿项目:ResearchCopilot

ResearchCopilot 是一个研究助理服务:用户提问 → Agent 多跳检索本地语料 → 调用工具(含本地 Postgres 查询)→ 生成带引用的报告;后台 worker 周期跑语料更新与日报。

它被选作贯穿项目,是因为四个工程问题在它身上都自然出现:

  • 工具调用天然分层——search / read / calc 只读,save_note / delete_run 写入,读写分离不是硬凑的。
  • 记忆天然有长短期之分——语料索引是长期,会话是短期,recall 正好可以做成「记忆即工具」。
  • 编排天然是 DAG——规划 → 并行检索 → 综合 → 引用校验。
  • 评测有客观信号——引用能不能在语料里找到、答案有没有被语料支持,是可以用代码判定的。

本卷每推进一章,ResearchCopilot 就多一块能力:第 3 章有了 API,第 5 章有了持久化,第 7 章有了异步执行,第 10 章有了外部工具生态,第 16 章能被打包部署。

学习节奏:建议 6–8 周

按每周 6–8 小时估算,本卷正文约需 6 周;如果每一节的代码都亲手跑一遍并做课后改动,8 周更从容。

一份可执行的六周计划

周章节本周结束时你手上应该有什么
第 1 周第 1–3 章仓库骨架 + 配置对象 + 能跑通的 session/run REST 与 SSE 接口
第 2 周第 4–6 章认证与租户隔离 + Postgres schema + 缓存与限流
第 3 周第 7–9 章异步队列与 worker + 并发控制 + TS 前端能流式显示
第 4 周第 10–12 章MCP 工具接入 + 记忆服务 + 评测与质量门
第 5 周第 13–15 章追踪与指标 + 成本与容量结论 + 输入输出护栏
第 6 周第 16–18 章双栈镜像与 compose 编排 + 发布流水线 + 故障演练复盘

三条阅读路径:

  • 系统通读(6–8 周):按顺序读完 18 章,每节代码都跑一遍。这是唯一能完整建立「Agent 服务怎么上线」心智模型的路径。
  • 带问题速查(1–2 天):直接跳到「常见问题速查」表,按你的症状找到对应小节。
  • 只补工程短板(2 周):如果你已经会写 Agent,但没做过服务化,重点读第 3、5、7、8、13、16 章;第 1、2、4 章可以略读。

与既有 AI 专题的分工

本站已有一批 AI 与 Agent 相关专题,本卷与它们是互补而非重复的关系,边界写在这里以免误读:

  • 与 MCP 专题 的分工:该专题覆盖协议规范、Server 实现、传输与授权等完整内容。本卷只写一件事——minagent 作为 MCP client,把外部 Server 暴露的工具接进自己的工具注册表(第 10.1 节)。协议本身怎么写,本卷不碰。
  • 与 LLM 专题 的分工:该专题讲 Agent 架构、工具调用、记忆、多 Agent 协作等概念与方法。本卷把这些概念落成可运行的服务代码,重点在工程约束:并发、事务、限流、灰度、故障演练。
  • 与 LLMOps 专题 的分工:该专题讲模型侧的运维与部署。本卷讲的是应用侧的运维——评测门、追踪、SLO、成本治理。
  • 与 可观测性专题 、Kubernetes 专题 的分工:那两个专题是通用基础设施知识。本卷只讲 Agent 服务在这两套体系里的特有之处:span 树怎么建、GenAI 语义约定填什么字段、队列积压怎么告警。

一句话概括:专题给你概念,本卷给你一台能跑起来的服务。

分部分章节

下面按六个部分列出全部 18 章 54 节,每一行给出编号、标题与一句话说明。

表格里的编号规则是「章.节」,例如 13.2 表示第 13 章第 2 节。点击标题即可进入该节正文。每个部分开头都有一段导读,说明这一部分在工程推进中的位置;如果你只想知道某节讲什么,直接看表格第三列的说明即可。

第一部分:项目地基(第 1–4 章)

这一部分解决「我们要造什么、怎么配、接口长什么样、谁能用」四个问题。读完能有一个跑得起来的 API 服务骨架,带认证与租户隔离。

节奏上这一部分刻意放慢。第 1 章定下的架构边界(引擎 / 服务 / worker / 存储)会约束后面每一章的代码往哪放;第 3 章定下的错误契约会被第 4、15 章反复引用。

编号章节说明
1.1需求与用例:3 个核心用例与验收标准定下三个用例与可判定的验收标准,明确「不做什么」
1.2架构总览:引擎 / 服务 / worker / 存储边界划清四层边界与依赖方向,走一遍请求的完整时序
1.3仓库与工程骨架:monorepo + TS 包,CI 跑通 lint/test建 monorepo 目录树,本地跑通 pytest 与 node –test
2.1分层配置:pydantic-settings 加载与校验四级来源合并与校验,配置对象靠注入而非全局读取
2.2密钥管理:Anthropic key / DB / Redis 本地注入密钥不落库不进镜像不进日志,缺失即 fail-fast
2.3模型路由与降级:真/假模型开关,离线默认假模型默认假模型,主模型失败时按链降级且降级要透明
3.1REST 设计:session / run / message 资源建模为什么 run 是独立资源,以及 OpenAPI 契约的形态
3.2流式接口:SSE 推送事件事件 envelope 设计与 SSE / WebSocket 取舍
3.3幂等、分页与统一错误契约Idempotency-Key、游标分页与统一错误响应体
4.1认证:JWT 与 API Key 中间件两种凭证并行支持,过期与篡改各自返回什么
4.2授权与租户隔离:workspace 行级隔离跨租户访问返回 404 而非 403,以及 RLS 兜底
4.3工具权限与审批:高危工具二次确认工具分三档,危险调用挂起等人审批再继续

第二部分:数据与性能底座(第 5–6 章)

这一部分解决「状态存在哪、怎么保证不出错、怎么不被打爆」。它把服务从「内存里跑跑」推进到「重启不丢数据、并发不出错、滥用有上限」。

这是全卷最偏基础设施的一段,也是最容易被跳过的一段。但第 5.2 节的原子状态跃迁与第 6.3 节的配额,恰恰是后面第 7 章队列与第 14 章成本治理的地基。

编号章节说明
5.1Schema 设计:会话/消息/运行/记忆表 + 迁移四张表的 DDL 与迁移版本表,消息体存原始 JSON
5.2事务与并发:run 状态机原子更新、行锁防重复执行先查再改为什么会跑两遍,以及原子抢占怎么写
5.3查询优化:EXPLAIN 定位慢查询并加索引五万行数据上的真实执行计划对比与索引取舍
6.1Redis 缓存:检索结果与嵌入缓存命中率缓存 key 必须带租户,以及穿透击穿雪崩的 Agent 形态
6.2语义缓存:相似问题复用与错配检测阈值为什么分不开对错,哪些问题绝不能走语义缓存
6.3限流与配额:按租户 token 预算的令牌桶Lua 原子限流与 token 预算扣减,被限流时 Agent 怎么办

第三部分:异步与前端(第 7–9 章)

这一部分解决「长任务怎么跑、并发怎么控、结果怎么实时给人看」。读完服务能异步执行、能在压力下不崩、能给前端逐步显示过程。

第 7 章把「一次 run」从同步请求改造成异步任务,这是服务架构上的一次分水岭;第 9 章是本卷的 TS 落点,用 TypeScript 把事件消费掉、渲染出来、断线后接上。

编号章节说明
7.1任务队列:run 丢给 worker 异步执行可靠队列与裸队列的区别,以及 202 返回的完整生命周期
7.2重试、死信与幂等指数退避加抖动,超过上限进死信并记录原因
7.3定时与延迟任务:周期语料更新与日报分布式锁的 token 校验与续期,延迟任务用 ZSET
8.1引擎内并发:并行工具与并行子 AgentTaskGroup 真并发与结果按调用顺序回填
8.2背压与资源池:信号量限并发并发上限怎么估,生产快于消费时怎么让上游慢下来
8.3取消、超时与泄漏:慢工具注入验证止损注入慢工具验证超时止损,以及游离任务的泄漏
9.1事件协议:token/tool/step 统一 schema,TS 与 Python 共享类型判别联合类型与三种共享类型做法的代价
9.2前端渲染:TS 最小聊天 UI 逐步显示纯函数归约器与渲染器,增量与全量重渲染的取舍
9.3断线重连:Last-Event-ID 续传不丢步服务端事件缓冲、缓冲淘汰后的 resync 降级

第四部分:生态、记忆与质量(第 10–12 章)

这一部分解决「能力从哪来、记住什么、怎么知道变没变差」。读完能接入外部工具生态、把记忆做成服务、用评测门拦住退化。

第 10 章的边界必须说清楚:MCP 在本卷里只作为工具来源被消费,协议与 Server 实现不在本卷范围。第 12 章的质量门是后面第 14、17 章反复引用的兜底机制。

编号章节说明
10.1MCP 客户端接入:minagent 作为 client 连本地 Server远程工具适配成 Tool、命名冲突与错误映射
10.2工具设计模式:读写分离、幂等、可观测描述即提示词、粒度、幂等键与调用留痕
10.3工具沙箱:子进程/容器隔离高危工具子进程只能隔离崩溃,容器才能隔离权限
11.1写入流水线:抽取、去重、冲突消解去重与冲突消解策略,以及重放两次不产生重复
11.2检索注入:长期记忆接入 run 并量化收益注入位置取舍,以及只改一个变量的对照实验
11.3记忆治理:TTL、隐私与按用户删除写入侧拒绝清单与级联删除的审计留痕
12.1评测集与评分器:成功率/引用准确率/成本可版本化评测集的维护纪律与三个评分器
12.2离线回放与夹具:假模型 + 录制样本确定性回归夹具失配必须报错而不是静默给错响应
12.3CI 质量门:分数下降即拦截基线怎么维护,以及为什么要按样本看退化

第五部分:可观测、性能与安全(第 13–15 章)

这一部分解决「线上出问题怎么查、又贵又慢怎么办、被人钻空子怎么办」。读完能回答三个问题:慢在哪、贵在哪、错在哪。

第 13 章的 span 树是第 14 章成本剖析与第 18 章故障演练的数据来源;第 15 章的护栏与第 4 章的权限是一对——一个管「谁能做」,一个管「模型能不能被诱导去做」。

编号章节说明
13.1结构化日志与追踪:OTel GenAI 语义约定埋点span 树与 contextvars 传播,字段对齐语义约定
13.2指标与看板:延迟/成功率/成本/工具错误为什么平均值会骗人,以及指标基数陷阱
13.3告警与 on-call:从 trace 到告警演练告警规则表、SLO 与错误预算、排查动作
14.1延迟剖析:模型/检索/工具各占多少分阶段计时,以及同步阻塞拖垮异步服务
14.2成本优化:缓存、路由、小模型降级 + 评测兜底三招降本与误判代价,降本必须过评测兜底
14.3吞吐与并发压测:找容量上限与拐点四档并发找拐点,以及超时后 QPS 虚高的假象
15.1输入侧:提示注入与越权工具拦截间接注入最危险,内容与指令必须分离
15.2输出侧:敏感信息、越狱与幻觉引用校验引用存在不等于引用支持,校验要回语料核对
15.3审计与合规:不可篡改审计日志哈希链审计日志,与「按用户删除」的张力

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

这一部分把前面所有东西装进镜像、发上线、并在出故障时知道怎么办。读完能独立完成一次从构建到上线的完整交付。

第 16 章是本卷第二个 TS 落点(双栈镜像);第 17 章把第 12 章的评测接进流水线;第 18 章的故障演练是对全卷的一次反向检验——前面每一章的防护,都要在这里被主动打破一次。

编号章节说明
16.1TS 落点三:Python + Node 双栈镜像瘦身多阶段构建与四个瘦身杠杆,为什么 latest 是坑
16.2本地编排:compose 起 API/worker/postgres/redisdepends_on 不等于依赖就绪,healthcheck 才有用
16.3配置注入、健康检查与优雅退出liveness 与 readiness 的区别,SIGTERM 后要做什么
17.1流水线:lint/test/评测/构建串联阶段顺序的代价权衡,以及评测必须在 CI 里跑
17.2灰度与回滚:新提示/新模型小流量提示词也是可发布配置,回滚必须演练过
17.3版本与迁移:不中断 schema 迁移演练expand–contract 五阶段与长事务锁表风险
18.1容量与架构评审清单五组带通过标准的清单与一份容量估算
18.2故障演练:模型超时/DB 宕机/队列积压三个受控演练的注入方式与复盘问题
18.3上线、观察与迭代 + 真实 API 端到端冒烟(可选)观察节奏、迭代闭环,以及可选的真实冒烟流程

常见问题速查

下表把工程里最常撞上的症状映射到对应小节。左列是「你遇到的现象」,右列是「去哪看」。

现象去哪看
配置散落各处、改一个要改五个文件2.1 分层配置
不小心把密钥打进了日志2.2 密钥管理
模型挂了整个服务就挂2.3 模型路由与降级
前端想边生成边显示3.2 流式接口、9.2 前端渲染
用户刷新页面答案就重跑了一遍3.3 幂等契约、7.2 重试与幂等
两个租户互相能看到数据4.2 租户隔离
模型自己决定删了数据4.3 工具权限与审批、15.1 输入护栏
服务重启后正在跑的 run 全丢了5.1 Schema、7.1 任务队列
同一个 run 被执行了两次5.2 原子状态跃迁、7.2 幂等
查询越来越慢5.3 查询优化
模型 API 账单爆了6.1 缓存、6.3 配额、14.2 成本优化
相似问题反复问、反复花钱6.2 语义缓存
请求进来要等很久才有响应7.1 异步队列
定时任务被跑了两次7.3 分布式锁
并发一高服务就卡死8.2 背压与资源池、14.3 压测
一个慢工具把整个 run 拖死8.3 超时与取消
断线重连后少了一段回答9.3 Last-Event-ID 续传
想让 Agent 用上外部工具生态10.1 MCP 客户端接入
模型老是选错工具10.2 工具设计模式
模型写出的代码执行了危险操作10.3 工具沙箱
Agent 记不住上次说过的偏好11.1 写入流水线、11.2 检索注入
用户要求删除自己的数据11.3 记忆治理
改了提示词不知道效果变好还是变差12.1 评测集、12.3 质量门
CI 里不敢调真模型12.2 离线回放与夹具
线上报错但不知道慢在哪一步13.1 追踪
告警太多、真的出事反而没人看13.3 告警与 on-call
不知道该扩几台机器14.3 压测、18.1 容量估算
检索回来的文档里藏着指令15.1 输入护栏
答案里的引用是编的15.2 输出护栏
镜像太大、构建太慢16.1 双栈镜像瘦身
容器起来了但连不上数据库16.2 compose 编排、16.3 健康检查
发版后想快速回退17.2 灰度与回滚
改表结构不敢上线17.3 版本与迁移
想知道服务能扛多少量18.1 容量评审、18.2 故障演练

小结

这一页的核心信息可以浓缩成三句话:

  • 结构上,全书是「目录 1 篇 + 六部分 18 章 54 节」,共 55 篇,围绕研究助理服务 ResearchCopilot 逐章推进。
  • 路径上,系统通读 6–8 周;有明确症状可以查「常见问题速查」;已会写 Agent 但缺工程经验的话,重点读第 3、5、7、8、13、16 章。
  • 方法上,本卷坚持「假模型为主、真跑为据、每节可复现」——正文里出现的每一个输出,都是在本机真实执行过的结果;跑不了的部分会明确标注原因,而不是编一个好看的数字。

本卷之后是《AI Agent 高级编程》:同一个项目,改用 PydanticAI、Claude Agent SDK、OpenAI Agents SDK、smolagents 等框架重写,并补齐持久化执行、计算机使用、跨 Agent 协议与训练相关的内容。如果你已经能独立完成本卷的交付流程,可以直接进入卷三。

最后再重复一句:本页不需要从头读到尾。它的作用是「在你需要的时候,三秒钟内把你送到正确的那一节」。把这一页加进书签,比记住任何章节编号都有用。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「agent」更多文章

  1. 《AI Agent 高级编程》目录
  2. 《AI Agent 高级编程》11.3 全景回顾:从零到框架的完整路径与展望
  3. 《AI Agent 高级编程》11.2 真实 API 冒烟:假模型 vs 真模型量化差距