💻 《深入理解 AI Agent》第 5 章

Coding Agent 与通用 Agent · 代码是 Agent 的元能力
11 个动画场景 · 覆盖 5.1–5.2 · 含语义解析、幂等与 Agent 自举
📌 Coding Agent 成熟度最高,不是因为代码模型特别强,而是软件工程几十年的基础设施本身就是一套强大的 Harness

🎯 一张图看懂第 5 章

七个工具起步,一路做到「代码创造代码」
🧰
七个工具
读写查改跑,够用了
→
📁
文件系统
记忆、产物、协作接口
→
🧩
任务四象限
把活推向最佳区
→
🧬
元能力
代码:思考 / 约束 / 生成 / 自举
💡 一句话总纲: 代码不只是 Agent 的产出,更是它的思考工具、约束工具和适配器。能写代码的 Agent,能力边界是开放的。

场景 1 · 七个工具的小工具箱 5.1.1

最小 Coding Agent 只需 7 个工具就能干绝大多数活
🧰 最小工具箱🧮Code Interpreter⌨️Bash📖读文件📝写文件✏️编辑文件🔎Glob🔍Grep⌨️只用一个 BashCodex 的极简路线一个 Bash 顶一堆工具
工具不在多,在于正交 —— 7 个工具就能覆盖读写查改跑
启发: 工具不在多,在于正交。Bash 这类通用执行器往往优于一堆专用工具 —— OpenAI Codex 甚至只用一个 Shell。

场景 2 · 文件系统是 Agent 的中枢 5.1.2

记忆用 Markdown 而非向量库,人能改、Git 能回滚
📁 文件系统当记忆📄MEMORY.md高层事实用户偏好🗓️daily/*.md按日日志天然时间序人可改 · 可回滚⬛ 向量库当记忆改一条只能覆盖无时间序 · 难 diff边做边更新👁️读记忆🔧调工具💻写代码📦存产物🔁更新记忆
文件系统同时是记忆、产物、协作接口 —— 这是 Coding Agent 的地基
为什么是 Markdown: 用户能直接删一行纠错、天然有时间序、Git 能 diff 能回滚 —— 这三条向量库都给不了。

场景 3 · 任务四象限:把活推向最佳区 5.1.4

Harness 的目标是把任务推到「目标明确 + 验证自动」那一格
✅ 可自动验证👤 需人工验证目标明确目标模糊🎯最佳工作区自动验证 + 明确目标⏳能做,人会卡等人有空看结果🌀最危险的一格分数涨了,代码烂了🧩探索性任务Agent 只能打辅助把任务往左上角推
Harness 工程只做一件事:把任务推往目标明确 + 可自动验证那格
最该警惕的一格: 目标模糊 + 可自动验证 —— 会「高效地跑偏」,分数涨了、代码烂了。最佳区则适合大规模代码迁移,知识全在代码库本身。

场景 4 · 静默卡死与「连续 3 次」熔断 5.1.5 重点

最危险的故障不是报错,是水管通着却不出水
💧通着,却不出水🐕看门狗超时就杀掉重来连续 3 次熔断阈值 · 来自统计3000+ 次一个会话的极端连败25 万 / 天全球白烧的调用
最危险的故障不是报错,是水管通着却不出水
场景: TCP 建好了、一切正常,数据流却停住,不报错也不断开 —— 所以要挂一个独立的空闲看门狗。「连续 3 次」这个阈值来自真实统计,真出现过连败三千余次的会话。

场景 5 · 语义解析破黑名单 5.1.9 重点

Shell 黑名单形同虚设,必须理解命令而不是匹配关键词
# 黑名单追不上无穷的写法 $ rm -rf / ← 拦住 $ $(echo rm) -rf / ← 命令是拼出来的 $ find / -exec rm {} \; ← 藏在参数里
🚧 关键词黑名单rm -rf /✗换个写法就绕过只认固定写法🔬 语义解析find-name "*.log"-exec rm认出了藏着的 rm
安全不能靠「匹配关键词」,必须理解命令真实的语义
呼应第 4 章: 那边讲工具描述会被注入,这里讲工具参数会绕过防护。黑名单追不上拼接、变量替换这些写法,只能把整条命令摊开做语义解析。

场景 6 · 代码替 Agent 算那道数学题 5.2.1 重点

让 LLM 想、让代码算,分工避免算错
❓题目只选物理的有几人?✗ 14 人拿错集合去减✓ 8 人让代码去算LLM 解题意 · 代码做算术
让语言模型做算术,是在用它的短板 —— 计算外包给代码
核心: 把算术、符号推导、精确计数外包给确定性程序。40 人班里 60% 选数学(24)、45% 选物理(18)、都选 10 人,模型把「只选物理」算成 24 − 10 是拿错集合,正确是 18 − 10 = 8。

场景 7 · 取消政策的三重守门员 5.2.2

不可逆操作前,最后一道防线必须建在模型伪造不了的数据上
① 系统提示词软约束可能被绕过② checklist 自查留下记录可审计追责③ 真值校验查数据库真实值模型伪造不了只有第三道是硬的
三层各司其职,但最后一道必须建在模型伪造不了的数据上
三层各司其职: 提示词管引导(软、可绕)、checklist 管留痕(可审计)、真值校验管兜底(查数据库真实值、时间取服务端时钟)。只有第三层是硬的。

场景 8 · PPT 的提议者-审核者 5.2.3

生成代码后必须渲染检查,写的人不能自己审自己
✍️写幻灯片🖼️渲染成图🔍看图挑刺✏️改回来最多 2–3 轮防失控第 1 轮 · 5 处内容过多,建议拆分第 2 轮 · 2 处字体太小,加到 14pt第 3 轮 · 0 处通过
审核者看的是渲染结果 —— 写的人不能自己审自己
流程: Proposer 写 Slidev 幻灯片 → 渲染成图 → Reviewer 用 Vision LLM 看图挑刺 → 改回来,最多 2–3 轮。为什么必须渲染: 排版溢出只有眼睛看得出来。

场景 9 · 十轮问答 vs 一次表单 5.2.5 重点

动态表单把十个澄清点一次收集完,级联逻辑自动显隐
💬 十轮问答× 10 轮从哪出发?北京?到哪?上海?单程还是往返?…… 还有 5 轮📋 一次表单航班查询出发地:北京目的地:上海行程:往返 ▾返程日期:03-08提交十个问题一次问完
表单不是装饰 —— 它把十轮澄清压缩成一次交互
概念名: 生成式 UI —— 界面不写死,由 Agent 现场生成。选「往返」自动显出返程日期(级联逻辑免费拿到),返回结构化 JSON 直接喂给 search_flights()。

场景 10 · SQL Artifact:数据绕过 LLM 5.2.5

让 LLM 只写查询,数据从库直送前端
✗ 旧路:LLM 读数据🗄️数据库5000 行明细🐌LLM 读 5000 行复述一遍 → 易错 · 烧 token📄前端只拿到文字✓ 新路:数据绕过模型🗄️数据库5000 行明细📝LLM 只写 SQLSELECT ...🔒执行层只读 · 参数化📊前端直渲染数据不过模型
让模型写查询而不是抄数据 —— 数据走高速,模型只发指令
可迁移的模式: 凡是「大量数据 + 少量判断」,都该让模型只产出查询或代码,数据通路绕开模型。

场景 11 · Agent 自举:复制加变异 5.2.6

造新 Agent 最稳是复制自己验证过的代码再定向改
🧬已有 Agent复制👥新 Agent变异✏️定向改造✨✅基于范例修改继承已验证的框架,最稳❌从零生成上下文随意 · API 过时
造新 Agent 最稳的路径:复制自己,再定向变异
像生物进化: 用验证过的代码做母本,继承框架与工具约定,再换系统提示词、换工具集做定向改造。从零生成看着自由,实为放弃所有已验证的工程积累。