《深入理解 AI Agent:设计原理与工程实践》章节精读笔记

原书:《深入理解 AI Agent:设计原理与工程实践》 李博杰 著(Pine AI 首席科学家)
版本:v1.3 · 2026 年 7 月 27 日 · 全文开源(含全部配图与配套实验代码)
定位:面向工程师的 AI Agent 系统性专著。全书以”实践在前、命名在后”为立场——作者在 Pine(首个能自主与真人交互、可靠独立处理涉及金钱的敏感长程任务的通用 Agent)的实战中倒逼出大量架构原则,后来才被 Anthropic 等公司提炼为 Skill、harness、loop engineering 等名词。
本书使命:帮助你理解和掌握”创造 Agent”的原则。Agent 是宇宙演化史上一种全新的存在:它能通过生成代码实现自举和自我进化。


一、全书总纲:一条公式与一条主线

核心公式(全书地基)

Agent = LLM + 上下文 + 工具 = 大脑 + 眼睛 + 手脚

组件 类比 广义理解
LLM(大语言模型) 大脑 不只是一组模型参数,而是整个决策内核:理解意图、思考规划、做出判断。能力来自预训练(世界知识与语言能力)+ 后训练(决策策略,第七章)
上下文(Context) 眼睛 Agent 在每个决策点能看到的全部信息:指令、环境信息、用户记忆、领域知识、自身状态、任务进展、工具定义
工具(Tools) 手脚 Agent 能做的所有事情的集合:预定义工具、按需加载的 Skills、动态生成的代码、委托的子 Agent、与用户沟通、响应外部事件

生产形态下的扩展公式:

Agent = Model + Harness,其中 Harness = 上下文 + 工具 + 约束 + 验证 + 纠正

  • 最小公式(Demo 视角):只有 LLM、上下文、工具即可跑起来;
  • 扩展公式(生产视角):补上约束(限定能做什么/不能做什么)、验证(检查做得对不对)、纠正(做错了怎么补救)三层工程外壳。
  • 推论:模型能力正在商品化,真正的竞争力在模型之外的 Harness——“行业正在从’能做事’向’可靠地做事’转变”。

工程范式演进弧线(第一章 1.2.1)

软件工程 → 提示工程(Prompt Engineering)→ 上下文工程(Context Engineering)→ Harness 工程 → Loop 工程

层层包含:提示工程 ⊂ 上下文工程 ⊂ Harness 工程 ⊂ Loop 工程。每一层都在前一层基础上扩展工程师的关注范围。实证:LangChain 在 Terminal Bench 2.0 上仅靠优化 Harness(自验证循环、循环检测、工具中间件)就把 Coding Agent 从 52.8% 提升到 66.5%(30 名开外跃升至前 5),没换模型

贯穿全书的判断

  • 上下文的质量决定 Agent 能力上限,而非模型参数量。”人和模型一样,最重要的是 Context”(OpenAI 翁家翌)。一个中等模型 + 精心组织的上下文,往往胜过顶级模型在信息匮乏下的盲目摸索。
  • 没有评估,就没有进步(第六章)。评估是科学方法论做工程的地基。
  • 数据和环境比算法更重要(第七章主线):先验(基础模型)> 环境 > 算法。
  • 实践在前,命名在后:等名词流行再动手就慢了一步。提前两步:① 拥有对 Agent 能力上限要求极高的真实业务;② 建立评估机制。
  • 模型与 Agent 共同演进:Harness 里层层叠叠的兜底逻辑,记录的都是模型此刻还做不稳的地方;下一代模型把这些约束内化后,Harness 再往上走一层。

二、引言:为什么写这本书

  • 实践出真知:作者团队打造的 Pine(自主替用户打电话协商账单、退款、取消订阅的通用 Agent)动辄几十轮交涉,任何一步出错都会造成真金白银的损失,正是这种苛刻的可靠性要求倒逼出了全书架构原则。
  • “实践在前、命名在后”的三个例证
    • Skill 概念流行前,已用动态加载提示词解决提示词无限膨胀;用命令行执行工具解决工具列表膨胀;用系统状态栏解决 Agent 不感知环境/时间/工作状态。
    • harness 概念流行前,已用类似 Claude Code 的方法解决工具调用不稳定、幻觉、危险/越权操作、指令不遵循。
    • loop engineering 概念流行前,已使用”提议者-审核者(proposer-reviewer)”方法解决模型过早认为任务完成。
  • Richard Sutton 的启示:宇宙演化经历尘埃→恒星→生命→智能体(designed entities)四阶段。生物进化是盲目的,而 Agent 能理解自身运作机制、创造新智能体、甚至改进自己——“像一个程序员编写了另一个程序员”。
  • 两大”乌云”(后记展开):① 大世界假设——训练数据永远覆盖不了每个具体用户/公司的情境知识,模型只能在上岗后持续学习(对应第三章记忆、第八章持续进化);② 前沿开放任务没有现成答案,Agent 只能从实验成败中自主学习。结论:模型最强的能力终将不是记住,而是学习与适应

三、第 1 章:AI Agent 入门(全书概念地图)

章节定位:快速引入 Agent 核心公式、运行循环、工程框架和设计模式,为后续章节提供统一术语与参照坐标。

1.1 现代 Agent = LLM + 上下文 + 工具

  • 工具:Agent 的手脚。五类工具(按与外界互动方向分类):
    1. 感知工具:访问信息(搜索引擎、文件系统、API、数据库)
    2. 执行工具:改变世界(代码执行、文件操作、系统命令、外部 API)
    3. 协作工具:与其他 Agent 分工、请求人类确认、协调行动
    4. 事件触发工具:特殊——不是 Agent 主动调用,而是外部输入(新邮件、定时器、Webhook)驱动 Agent 开始工作
    5. 用户沟通工具:Agent 主动与用户建立连接(文字、语音、邮件)
    • 工具调用(Tool Calling / Function Calling)四步流程:告诉模型可用工具 → 模型判断是否调用/调哪个/传什么参 → 工具执行并把结果追加到上下文 → 模型据此决定下一步。这构成 ReAct 的基础。
    • MCP(模型上下文协议)正在让工具接入变得像安装插件,但设计原则不会过时。
  • LLM:Agent 的大脑。解析真实意图(用户说的往往不是他真正想要的)、拆解任务、持续决策。独特能力:内部思考(采取行动前的规划与推演,不改变外部环境但提升行动质量);零样本泛化(组合已有知识处理全新任务);少样本适应(两三个示例即可学会新模式)。
    • 模型即 Agent(Model as Agent)新范式:先进模型通过后训练把”何时调用工具、如何编排”内化为原生能力(例:Kimi K3 约 2.8 万亿参数 MoE,100 万 token 上下文,始终开启思考模式;GPT-5.6 把 Deep Research 设计理念内化到模型层,自带意图澄清机制——不立即执行,先提问确认真实需求)。
  • 上下文:Agent 的眼睛。从 API 视角看,每次调用的上下文由五部分组成:
    1. 系统提示词(System Prompt):开发者编写、全程不变,即”岗位说明书”(含用户记忆、动态环境状态)
    2. 工具定义(Tool Definitions):工具名称、功能、参数格式
    3. 用户消息(User Messages):用户输入 + 可能经 RAG 引入的外部知识
    4. 模型回复(Assistant Messages):思考过程(reasoning)+ 文本内容(content)+ 工具调用(tool_calls)
    5. 工具执行结果(Tool Results):Agent 下一步思考的直接依据
    • 前两项构成静态前缀,后三项构成动态轨迹(trajectory)Agent 的上下文 = 静态前缀 + 轨迹
    • 消融实验(实验 1-1)证实:去掉工具定义 → Agent 完全丧失行动能力;缺工具执行结果 → 反复犯错、无限循环;缺历史消息 → 无法保持连贯。上下文决定 Agent 能看到什么,而 Agent 只能基于看到的信息做决策。

1.2 ReAct 循环:想 → 做 → 看

  • ReAct = Reasoning + Acting,实际循环三环节:思考当前该做什么 → 调用工具行动 → 观察结果继续思考,直到任务完成。
  • 轨迹(trajectory) = 用户消息 + 模型回复(思考+工具调用)+ 工具执行结果,随交互不断增长;每次 LLM 调用都基于”静态前缀 + 轨迹”。
  • 轨迹的价值:全局认知、可解释可调试、可总结进知识库、可做强化学习训练数据(闭环优化)。

1.3 Harness 工程:模型之外的竞争力

  • 一个能跑的 Demo 与一个可靠的产品之间隔着巨大的鸿沟:模型会幻觉(编造不存在的工具/参数)、选错工具、无法自我恢复。
  • Harness 五个功能:上下文设计(信息充分性)、工具设计、约束、验证、纠正。围绕”上下文+工具”构建的保障层。
  • 构建有效 Agent 的三原则(Anthropic 经验):
    1. 保持简单:从最简单的方案开始,直接 API 调用优于复杂框架,清晰代码优于聪明抽象;
    2. 保持透明:明确显示规划步骤、执行日志、决策轨迹(调试 + 信任);
    3. 设计好工具接口(ACI,Agent-Computer Interface):从 Agent 视角设计接口。用”防呆(Poka-yoke)”设计消除错误——SIM 卡缺角、微波炉门没关好不加热。
  • 如何选择模型:”御三家”(OpenAI GPT/o、Anthropic Claude、Google Gemini)各有侧重;国内模型(豆包低延迟、Kimi Agent 能力强、Qwen/DeepSeek 开源低成本);关注延迟(每轮慢 2 秒 × 20 轮 = 多等 40 秒)与多模态支持;不要只看排行榜,要在自己的任务上做评估(第六章)。
  • 编排模式:从简单到复杂——先优化单个 LLM 调用 → 需要多步骤且可拆分为固定子任务时用工作流(Workflow,确定性编排,路径代码写死) → 只有需要动态决策和灵活执行路径时才用自主 Agent(本质 = 循环中使用工具的 LLM,即 ReAct)。Agent 系统通常用延迟和成本换取更好的任务性能,要谨慎权衡。退出条件:调用 final_answer / 无工具调用返回 / 达到最大轮次 / 错误次数超限。
  • 护栏与安全性(Guardrails):分层防御机制,单护栏不够,组合使用。按防护位置分三类:
    • 输入侧:相关性分类器、安全分类器(区分越狱=用户自己绕过安全限制 vs 提示注入=攻击者通过外部数据间接操纵)、内容审核、基于规则的保护(黑名单/长度限制/正则)。
    • 执行侧:工具风险评级(可逆性、权限等级、财务影响)、权限分类(哪些操作需用户确认)、熔断器、错误恢复机制。
    • 输出侧:输出过滤与校验。
  • 章节结论:眼睛(上下文)是决定性因素;Harness 是竞争力所在;从工作流到自主 Agent 是降低意外风险最实用的顺序;安全是架构问题——从第一行代码就要考虑,而不是上线前打补丁;安全贯穿模型、上下文、工具、协作、社会五个层面。

四、第 2 章:上下文工程(全书最关键的一章)

章节定位:系统讲解上下文——Agent 的”眼睛”。上下文工程首先是一个技术问题,但更根本的是一个组织问题:大多数团队的关键知识是隐性的(架构决策只在老员工记忆里、业务规则口口相传)。”对远程工作友好的团队往往也对 AI Agent 友好”(Linux 内核是范例:透明、文档驱动)。

2.1 上下文:决定 Agent 能力上限的关键

  • Coding Agent 的最低信息需求三类:实时代码上下文(目录结构、模块职责、数据结构、代码规范)、流程规范(Git 分支策略、提交规范、审查流程、CI/CD)、环境信息(开发/测试/生产配置、API 密钥管理)。
  • “AI Agent 就像一个永远的新员工:给足背景信息,它能干得很好;什么都不告诉它,再聪明也是白搭。”

2.2 Agent 如何调用大模型:理解 API 的上下文结构

  • 消息的四种角色:system(系统提示词,最高优先级,通常只有一条且在最前)、user(用户输入)、assistant(模型之前的回复,会被放回消息列表让模型”记住”自己说过什么)、tool(工具结果,通过 tool_call_id 与调用关联)。工具定义(tools)是请求的独立字段而非消息。
  • 单轮对话:每次调用无状态——模型需要的所有信息必须在 messages 中完整提供。
  • 带工具调用的多轮交互(Agent 核心循环):模型返回 tool_calls(不是最终回复)→ Agent 框架执行工具 → 把完整历史 + tool 结果送回 → 模型生成最终回复。关键:模型负责决策,框架负责执行
  • 用代码实现:核心就是一个 while 循环——返回了 tool_calls 就执行工具并继续,没有就输出退出。框架的全部工作就是管理 messages 列表。本章后续所有技术本质都在优化这个列表的内容和结构
  • 上下文结构 = 静态前缀(System Prompt + Tool Definitions)+ 轨迹(动态增长的消息历史)。”前面不能动、后面可以压缩”是后续 KV Cache 与压缩技术的基础。

2.3 KV Cache 友好的上下文设计(全书技术密度最高的部分)

  • 直觉:模型每生成一个 token 都要”回头看”前文所有 token 的中间计算结果;KV Cache 把前文结果缓存下来,下一轮只算新增部分。前提是前缀完全不变——改一个字符,缓存全部作废
  • 三条核心实践结论
    1. 系统提示词和工具定义一旦确定就不要改(哪怕多一个空格,都会导致延迟成倍增加、成本上升);
    2. 动态信息永远追加到末尾(时间戳、用户状态作为新消息追加,而不是修改已有提示词);
    3. 使用标准 API 格式,不要自行拼接消息(Chat Template 把结构化消息翻译成模型训练时见过的固定 token 序列;自行拼接”USER:/ASSISTANT:”偏离训练格式会削弱多步思考能力)。
  • 反面案例:某客服 Agent 在系统提示词里加一行 Current time: {{now}},首 token 延迟从 0.5 秒涨到 3-5 秒,月度账单几乎翻倍——时间戳让 KV Cache 每次请求全部失效。
  • Chat Template(聊天模板):把结构化 API 消息转换成模型能处理的线性 token 流(特殊标记如 <|im_start|>、<|im_end|> 界定角色与消息边界)。不同模型家族(Qwen、Llama、Gemma)使用不同”信封格式”。
    • 关于思考(reasoning)的保留:行业从”剥离历史思考”(DeepSeek R1 早期)反转为”强制回传全部 reasoning_content”(DeepSeek V4,否则报错;Kimi K2、GLM-5 同样;Claude 要求 thinking block 带签名校验原样回传)。对 Agent 场景而言,思考不是废料,而是状态
  • KV Cache 原理:无缓存时 prefill 阶段注意力计算量随上下文长度平方级增长;有缓存时每步解码只需线性遍历。修改前缀导致所有层缓存失效(Transformer 层间串联传导)。
  • KV Cache vs Prompt Cache 两个层级:KV Cache 是模型内部优化(加速单次请求内 token 生成);Prompt Cache 是 API 服务层优化(跨请求复用相同前缀的计算结果,直接省计费)。Prompt Cache 读取成本约为首次计算的十分之一(Anthropic/DeepSeek/GPT-5 系列)。注意各家机制差异:Anthropic 需显式 cache_control 断点(写入加价约 1.25 倍、最小缓存长度、TTL 约 5 分钟),OpenAI 自动前缀缓存。
  • 缓存作为架构约束(生产级):Claude Code 的实践——提示词结构由缓存边界决定(边界前可跨用户/会话全局缓存,边界后是用户/会话特定信息;动态条件如 OS 类型、模式、语言会产生 2^N 种缓存键,全部严格归类到边界之后);子 Agent 必须与父 Agent 字节级对齐(提示词、工具定义、模型配置逐字节匹配才能命中缓存)。
  • 前沿延伸(可编辑、可组合的”笔记”):prefill 阶段模型其实在”做笔记”——字段自身的 KV 对最终决策贡献往往不到 1%,真正影响输出的是它在下游留下的结论。由此实现:编辑(有显式 CoT 时,改动可顺着已缓存思考以约 1% 算力传播)与组合(把预计算的”技能”缓存块用 RoPE 重定位拼接,长上下文从 O(L²) 重算降到 O(L) 拼接,质量与重算无差别)。

2.4 提示工程:优化系统提示词

  • 检验标准:”如果一个聪明的新员工读完你的系统提示词还不知道该怎么做,Agent 也一样不知道。”
  • 语气与风格(”人格”):”You MUST…”/大写比”Please avoid…”更能引起注意,但过度使用会稀释,应保留给真正关键的约束。
  • 结构化提示(”格式”):现代模型对结构化输入敏感(训练数据含大量结构化内容)。XML 标签名自带语义( 优于”当前目录:…”);XML 负责机器可解析的精确语义,Markdown 负责人机共读的组织逻辑。
  • 流程驱动 vs 规则堆砌(”组织方式”):上百条零散规则(无流程图、无优先级)即使对人也是灾难。流程驱动(SOP 式)让模型任何时刻清楚自己处于哪个阶段、目标是什么、下一步去哪。消融实验(实验 2-4):打乱信息组织结构 → 任务成功率下降超过 30%(如”先验证身份再处理退款”被拆散后,Agent 有时跳过验证直接退款)。结论:对人类友好的信息组织方式,对模型同样友好
  • 业务规则细化(”内容”):最容易被忽视却最关键的环节,需要产品经理深度参与。案例:帮用户打电话谈判的计费系统——“按省钱提成 / 按服务收 tip / 特别难办的预收款”三种模式必须把决策规则明确到可执行程度(”退款和取消服务绝对不能按提成”、”NEVER use percent…”),模糊规则会导致行为极不稳定。
  • Few-shot 示例:当期望输出难以用规则精确描述时,两三个高质量示例胜过等量篇幅的抽象规则。工程决策:示例放系统提示词(静态前缀一部分)还是伪造 user/assistant 消息(按会话类型选用);示例应保持字节级稳定(动态检索最相关示例 = 每次改写前缀,缓存持续失效);数量不是越多越好。
  • 工具定义设计:每个工具描述应有使用边界(”NEVER invoke grep as a Bash command”)、具体示例(timezone: ‘America/New_York’)、性能提示(”Batch your tool calls”)、工具间协作关系。
  • 提示注入:上下文安全的核心威胁——详见 2.7 前的小节内容(见下文 2.5 前)。防御核心:帮模型分清”指令”与”数据”(来源标记、指令/数据分离、输入清洗),但只是第一道防线,执行层防御(权限、沙盒、独立审查)在第四、五章展开。

2.5 动态提示词与 Agent Skills

  • Skills = 领域能力的可组合单元:把 Agent 能力模块化为独立、可按需加载的知识包。设计哲学:渐进式披露(Progressive Disclosure)
    • 第一层(元数据):SKILL.md 开头的 YAML frontmatter(name + description),启动时只注入数百 token 的目录摘要。description 要写成路由条件而非功能介绍——“何时该用我”比”我能做什么”重要得多;反例(Don’t use when)是关键,缺少反例路由准确率明显下降。
    • 第二层(核心流程):Agent 判断需要时通过 Skill 工具加载完整 SKILL.md,作为 tool result 进入对话历史。
    • 第三层(细则):通过文件引用深入子文档(html2pptx.md、reference.md 等)。
    • Skill 可捆绑可执行代码工具和模板文件——从知识传递升级为能力赋予。
  • Skills 的实现方式与权衡(内容放哪):
    • 方式一:注入系统提示词——指令遵循最强,但每次加载都破坏 KV Cache 前缀;
    • 方式二:作为普通文件读取(tool result 出现在上下文中间)——不破坏缓存,但要求模型在长上下文中间位置识别并遵循指令,不同模型支持差异大(Claude 最可靠);
    • 方式三(生产实现,Claude Code):元数据作为动态上下文提供给模型(不反复改写稳定前缀),完整内容通过专用工具按需加载——路由与执行分离。
    • 澄清:Skill 元数据以什么消息角色注入(user/system/)是 Harness 实现细节,不是机制固定要求。
  • Skills 与工具的关系:Skills 对 KV Cache 极为友好——工具数量始终很少(第五章七个核心工具),Skill 内容按需加载不影响缓存前缀。把”工具选择”问题转化为”知识检索”问题(LLM 擅长的)。

2.6 Agent 状态栏:通过元信息增强轨迹管理

  • 理论基础上下文学习更像检索而非推理——注意力擅长在已有内容里”查找”,不擅长在一次前向传播里主动”归纳统计”。”上下文窗口是一台只有一半的检索引擎”:检索半很强(RAG 内置进每次前向传播),但缺”提炼层”——任何”关于这些内容的结论”(共多少条、有没有超标、进展到哪一步)模型每次都要从原始记录现算一遍,代价随内容量 N 上涨。
  • 实际场景:系统提示词要求”每个商家最多拨打 3 次”,但 Agent 经常数不清打了几次又打第 4 次。解法:在每次工具调用结果中直接注入”本次是第 3 次呼叫”——错误率大幅降低。本质:把分散在上下文各处的隐式状态提炼为可直接使用的显式知识
  • 实验数据(2.4 万次评测):弱模型补回来的是准确率(最弱模型涨 40-54 个百分点,2B 小模型追平不带状态栏的前沿大模型);强模型省下来的是效率(思考 token 砍掉八九成,延迟、花费各降约一个数量级);带上状态栏后思考量变得恒定(”瞥一眼”那几格状态)。
  • 三条直接能照做的经验
    1. 状态栏要用代码维护,别拿大模型维护——20 行正则函数就能达到标准答案级准确度,LLM 反而会编造;
    2. 状态栏要写成能一眼定位的键值对(”衣物: 9 件(合格7、次品2)”),散文形式效果明显更差;
    3. 状态栏最有价值的是模型无从推断的外部事实(”闭卷考试变成随时能查一眼真实世界”)——来自真实观测的信息价值最高;拍脑袋编的或可被污染数据源的状态栏会误导模型(投毒风险)。
  • 构成:任务规划(TODO 列表放轨迹末尾)、事件的侧信道信息(精确时间/地理位置/距上次回复间隔)、环境当前状态(系统时间、工作目录、异常提醒”该工具已被重复调用 N 次”)、可用能力清单(已安装 Skill 元数据)。
  • 位置:以 user 角色 + 标签包裹的元信息追加在上下文最末尾——紧邻模型即将生成的新 token,获得最高注意力权重;追加而非修改,不破坏缓存。
  • 状态更新的两种实现:实现一”每轮替换”(删除旧状态追加新状态,失效范围限于末尾几轮缓存);实现二”持久追加”(Claude Code 的 方式,缓存完全友好但陈旧状态累积)。经验法则:状态更新频繁且轨迹长选实现二,轨迹短或单条状态大选实现一。
  • 时间感(time sense):把缺失的能力拆成三个可度量的轴——紧迫度(把投入的力气匹配到时钟上)、坚持度(分清真墙假墙、知道活儿干完没有)、警觉度(把工具响应的时间异常升级为值得追查的假设)。实验发现”缺时间感”是当前后训练普遍漏掉的一项控制;推理时可用”状态栏+操作手册”装上,也可蒸馏进权重(第七章:稀疏结果奖励学不会,逐 token 稠密信号才学会)。

2.7 上下文压缩策略

  • 为什么需要压缩(两个截然不同的动机)
    1. 解决长度与成本约束(窗口有限、token 越多越贵越慢);
    2. 提升思考质量——总结后的知识比原始形式更利于模型使用(10 次网页搜索的原始结果散落各处,模型需在数万 token 中反复检索;先做一次结构化总结”目前已知 A 是…,还缺 C”,后续思考直接使用精炼表示)。
  • 内部机制:上下文学习更像检索而非推理。黑猫白猫计数例证:100 个笼子装进上下文,模型仍需逐个数(思考而非检索);提前写入”黑猫 90 只、白猫 10 只”,模型立即检索到结论。长上下文还会导致上下文腐化(Context Rot)——窗口远没满,但 Agent 找不到关键信息。
  • 压缩与 KV Cache 看似矛盾实则互补:压缩发生在两次 API 调用之间,由框架预处理消息列表;System Prompt 和 Tool Definitions 永远不动;压缩对象是对话历史中的 tool results——替换位置之后的缓存失效,之前的仍有效。压缩频次要权衡:接近阈值时批量压缩,而不是每轮都压
  • 生产级分层压缩机制(Claude Code 参照,五层)
    1. 工具结果预算控制(大输出存磁盘,模型只看摘要预览);
    2. 噪声直接删除(低价值内容不做摘要——对噪声做摘要在浪费 token);
    3. API 层微压缩(上下文编辑能力移除指定工具结果,适合上下文即将溢出时使用);
    4. 归档式摘要(逐轮结构化摘要,像 git log 保留每轮独立记录);
    5. 全量压缩(LLM 驱动,分两阶段:先压缩会话记忆,不行再全量;配连续失败熔断器——生产数据表明大量会话被困在反复压缩失败的循环中)。
    • 前三层成本低、对缓存扰动可控,优先使用;后两层兜底。
  • 压缩策略设计四原则:信息价值非均匀分布(关键决策点 > 支撑性证据 > 冗余噪声);语义完整性(”Sutskever 于 2024 年 5 月离开 OpenAI”不能压成”Sutskever 离开”);任务相关性(同样内容在不同任务下应有不同压缩结果);压缩即理解(压缩模块本身需要接近主模型的语言理解能力,形成”模型调用模型”的递归架构)。
  • 保留优先级(生产建议):架构决策和关键约束不得摘要;已修改文件列表和关键变更记录完整保留;验证状态(pass/fail)必须保留;未解决 TODO 和回滚笔记必须保留;工具输出可删除仅保留结论。UUID/hash/IP/端口/URL/文件名必须原样保留。
  • 隔离优于压缩:子 Agent 上下文隔离——让大体积中间信息根本不进入主上下文。主 Agent 把”读取大量文件””大范围搜索”委派给独立子 Agent,只回传几百 token 的结论性摘要。压缩是有损的事后补救,隔离让噪声从一开始绝缘;代价是子 Agent 看不到主上下文,任务描述必须自包含。

2.8 本章小结

“给模型看什么、怎么组织,比模型本身有多聪明更影响最终的结果。”所有技术共同点:显式的、工程化的信息管理——不要让模型被动在海量上下文中寻找线索,要主动提供经过提炼的结构化状态。回到 Rich Sutton《苦涩的教训》:能更有效利用更多算力的通用方法最终胜出。本章处理的是任务之内的状态更新与上下文腐化;跨任务的持久进化是第八章的主题。


五、第 3 章:用户记忆和知识库

章节定位:把上下文管理延伸到跨会话的持久化知识体系,让 Agent 记住用户、构建共享知识库。

3.1 用户记忆系统

  • 记忆的本质:不是记录用户说过的每一句话,而是构建一个关于用户的简洁而有效的预测模型——投入额外算力(专门的 LLM 调用)将分散在冗长对话历史中的关键信息显式提取和压缩。用户记忆是持久的、可审查的;上下文学习是临时的、会话结束就消失。
  • 提取过程三特征:选择性(只保留对未来有用的事实)、抽象化(”I prefer window seats”提炼为通用偏好而非绑定具体航班)、结构化(每条记忆标记类型:偏好/限制/账号)。
  • 记忆能力评估:三层次框架(实验 3-1,每层 20 个测试用例):
    1. 基础回忆:单会话内回忆个人信息、追踪偏好、上下文切换、记忆更新;
    2. 多会话检索:从多个不同对象、不同时期的会话中检索所有相关信息并推理判断(用户有两辆车时预约保养要主动问哪辆;取消”洛杉矶之旅”要关联机票和酒店);
    3. 主动服务(最高标准):跨很久以前的会话综合信息、提供预见性帮助(订国际航班时主动关联数月前的护照信息并预警过期;手机损坏时整合所有保障方案)。要求没有明确指令时主动规避问题和整合复杂信息。
    • 公开基准参考:LoCoMo(约 300 轮、最多 35 个会话的超长多轮对话)。
  • 记忆的层次结构(放哪里)轨迹(单次会话完整原始记录,append-only,对应工作记忆)vs 用户长期记忆(跨会话持久化、键值对绑定用户 ID、反复改写合并淘汰)vs 业务状态(开发者定义的高层任务阶段抽象,事件驱动架构中重要)。
  • 四种存储格式(怎么存)(实验 3-2):
    1. Simple Notes(原子事实,键值对):O(1) 开销极低,但丢失关联性;
    2. Enhanced Notes(整段叙事):语义完整,但冗余、难更新、长文难检索;
    3. JSON Cards(类别→键值,结构化):可检索、可更新,但灵活性差;
    4. Advanced JSON Cards(backstory + person + relationship 实体模型):能回答”为什么存这条””为谁存”,支持家人关系消歧,代价是生成维护成本高。
    • 根本张力:简单性与表达力。实践标准:关键且少量数据(偏好、人物关系)用 Advanced JSON Cards;大量且非关键对话事实用 Simple Notes;多数生产系统用混合模式。
  • 进阶表示:从可执行代码到参数化记忆
    • User as Code:把记忆介质从文本换成可执行代码(带类型 Python 对象存用户状态、函数编码约束规则)。两阶段:”预写日志 + 周期性检查点”(记忆阶段逐条追加只增事实日志;结构化阶段周期性地重新生成带类型的 Python 结构)。三件事从”LLM 心算”变成确定性代码:聚合统计(”去年出国几次”——检索式记忆在聚合问题上正确率只有 6%-43%,代码一行表达式接近 100%)、冲突发现(用药 vs 过敏史交叉比对)、约束执行(护照到期前 180 天自动报警)。
    • User as Engram(写入局部参数):给每用户训练 LoRA 有”存了却不会用”的困境(fact-LoRA 能复述但不能间接推理——冻结的骨干没学过如何查阅临时挂载的适配器)。Engram 方案:把用户事实精准写入模型中空闲的哈希 N-gram 槽位(预训练已学会哈希查表调取记忆 + 上下文感知门控决定何时调取),不同用户事实落在互不相交槽位、互不干扰。
    • 多模态记忆:感知性的记忆(一张脸、一段嗓音、画家的笔触)经不起转写成文字。Parametric Multimodal User Memory:为冻结模型外挂连续注意力记忆库,让感知以感知形态保存。
  • 认知科学基础(存什么):工作记忆 = 上下文窗口;长期记忆三分:情景记忆(具体事件,如”订了下周五去东京的 ANA 航班”)、语义记忆(抽象的一般知识,如”用户是素食者”)、程序记忆(行为模式和流程,如”订票流程:先搜索直飞→确认座位偏好→用常旅客号”)。
  • 记忆框架案例Mem0(提取—对比—决策两阶段流水线:提取阶段 LLM 从近期对话+已有摘要提取候选记忆,更新阶段向量检索相近已有记忆并对比决策;嵌入与存储分离可独立替换;Mem0-g 图记忆变体捕捉记忆间关联);Memobase(用户画像 Profile + 事件记忆 Event Memory;缓冲批处理摊薄 LLM 调用成本)。
  • 记忆压缩与整理机制:三层——重要性评分筛选(访问频率、时间衰减、情感强度、信息独特性四因素)、聚类(相似记忆分组生成代表性摘要,原始详情存档)、抽象泛化(具体情景 → 一般规律);冲突检测用版本化方法(当前地址只留最新版、工作经历保留完整历史)。
  • 隐私保护:日志脱敏(实验 3-3):用本地 Qwen3 0.6B 小模型做 PII 检测与脱敏(本地部署而非云端——日志含敏感信息,送云端就违背初衷);识别结构化(身份证/银行卡)、半结构化(地址)与自然语言敏感内容(”我的密码是 abc123”);LLM 脱敏召回率 95%+ 且假阳性显著低于正则;高吞吐场景用”正则快速过滤 + LLM 深度分析”混合策略。

3.2 RAG 基础:构建 Agent 的知识获取管道

  • RAG = 检索增强生成:把 LLM 的思考生成能力与外部知识库的广度时效性结合(模型训练数据有截止日期,知识库可随时更新)。流程:检索(Retrieval)→ 增强(Augment)→ 生成(Generate)。
  • 文档分块(Chunking):为什么必要——嵌入模型输入长度有限、整篇文档压成一个向量无法精确表达、检索目标是只注入相关部分。三种策略:固定大小切分(简单可预测但无视结构)、递归/结构感知切分(按章节/段落/句子自然边界,Markdown/HTML 首选,生产默认)、语义切分(相邻句子嵌入相似度断崖处下刀,质量高但需额外计算)。块大小与重叠是典型权衡。
  • 稠密嵌入:把文本映射到向量空间(语义近则向量近),衡量用余弦相似度(关心方向而非长度)。从 Word2Vec(词汇共现)到上下文感知模型(BERT、BGE-M3,同词不同语境不同向量、支持多语言长文本)。经典例子:”国王”-“男性”+”女性”≈”女王”。ANN(近似最近邻)算法(实验 3-4):ANNOY(树,不支持增量插入,适合静态库)vs HNSW(图,天然支持增量插入,适合动态场景)。
  • 稀疏嵌入(BM25):词袋模型 + 词频饱和(TF,k₁ 控制饱和速度)+ 逆文档频率(IDF,稀有词权重高)+ 长度归一化(b)。BM25 核心逻辑:稀有词单次出现贡献更大(doc 里”蒸馏”TF=3 低于”模型”TF=5,但因更稀有贡献反而更高)。
  • 混合检索:稠密懂语义但漏关键词(搜 HTTP-403 返回”服务器错误”泛泛讨论),稀疏精确匹配但读不懂同义词(搜 kitty 找不到 cat)。典型流水线三阶段:并行检索 → 结果融合 → 神经重排序(跨编码器精排)。检索质量指标:recall@k(该找的找到了吗,最贴近 RAG)、MRR(找到得够不够靠前)、nDCG(整个排序列表的质量);注意”检索失败率” = 1 - recall@20 这类口径换算。
  • 多模态信息提取(三条路)原生多模态处理(ViT 视觉编码器映射统一语义空间,保真度最高,适合版式复杂文档)、提取为文本(OCR/转录 → 纯文本,低成本兼容所有模型但丢失版式图表)、工具化分析(文本摘要打底 + analyze_image/analyze_pdf 按需深入)。

3.3 超越扁平文本:知识的组织与检索

  • 为什么必须超越扁平文本(两个案例):① 黑猫白猫计数问题在知识库尺度上叠加 top-k 截断、检索分数参差、跨文档聚合错位三重障碍;② Xfinity 优惠规则的错误推理——“护士”与”医生”语义相近优先召回案例 B,模型错误推断护士也可享受优惠。结论:必须在索引阶段投入计算资源主动提炼、抽象、结构化。
  • 结构化索引两条路
    • RAPTOR(树状层次摘要):计算块间相似度聚类 → LLM 生成父节点摘要 → 递归成知识树。检索可跨层:先宏观定位再向下钻取细节。
    • GraphRAG(实体关系图):LLM 提取实体-关系三元组构建知识图谱,社区检测划分模块。适合”谁和谁有关?A 如何影响 B?”类关系性问题。局限:三元组提取丢失条件逻辑与时间依赖(”我计划去海滩,如果下雨则去博物馆”被压成孤立事实)、错误提取造成知识污染。实践推荐分层互补:完整自然语言保存核心信息 + 结构化元数据索引检索 + 垂直场景(医疗问诊、法律分析、家族关系)用图谱专项索引
  • 文件系统范式(OpenViking):所有上下文(记忆、资源、技能)映射为虚拟文件系统的目录和文件,每个条目唯一 URI(viking://)。核心:L0/L1/L2 三层按需加载(L0 摘要约 100 token 判断相关性、L1 概览约 2000 token 供规划决策、L2 全文按需深入),目录下自动生成 .abstract/.overview 文件。选择 Markdown 纯文本而非专用数据库:用户可读可改、Git 版本控制、Agent 可自主记录组织。关键前提:文件之间必须建立链接与索引——像 Wikipedia 一样每个条目以链接指向相关条目 + 入口页索引页,否则知识越多越难检索(不同模型主动建链的意愿能力不同)。
  • 知识库的时效与治理:知识过期(增量更新,选索引结构有现实后果:ANNOY 不支持增量、HNSW 支持);失效内容检测与下线(版本号、生效/失效时间元数据,检索阶段过滤或摘要标注”此条已于某日废止”);多用户权限与租户隔离——检索必须按调用者权限过滤,绝不能让越权文档进入用户上下文(权限过滤下推到检索层)。
  • 智能体化 RAG(Agentic RAG):把知识库检索从自动化前置步骤升级为可供 Agent 随时调用的工具,Agent 用 ReAct 循环”思考→行动→观察”主导检索过程——自主决定查询关键词、评估信息是否充分、不足则继续迭代甚至调用其他工具。非智能体化 RAG 只是被动的”检索-生成”管道。
  • 上下文感知检索(Contextual Retrieval,Anthropic):向量化索引前先用 LLM 为每个文本块生成”前缀摘要”(”[本段节选自 ACME 公司 2025 年 Q2 财报]”),拼回原文再索引——同时增强稀疏(新增可精确匹配关键词)与稠密(注入语义背景)检索。与第二章”上下文感知压缩”划清界限:一个在索引期做加法(补前缀),一个在运行期做减法(去冗余)
  • 双层记忆架构(用户记忆与 RAG 的交汇点):用 Advanced JSON Cards 把少量关键事实结构化后常驻上下文提供”概览”,用上下文感知检索按需从海量原始对话取回”细节”——这是”主动服务”(三层次最高层)在工程上落地的路径。案例:护照过期预警(结构化事实发现日期接近 + 检索确认细节 + 主动建议)。
  • 从数据集中提取深度知识:RAG 解决”已有文档如何检索”,但司法判例、医生经验等知识隐藏在结构化案例数据的统计规律中。两阶段:① 知识提取与结构化(LLM 把非结构化案情转成标准化 JSON,自下而上定义 Schema);② 因子分析与重要性建模(数据分析发现规律,形成可执行的决策逻辑)。从”信息检索”到”知识发现”的飞跃。

3.4 本章小结

两个尺度(个体用户记忆 + 共享知识库)构成持久化记忆体系。核心技术栈:分块划定检索单元 → 稠密嵌入捕捉语义 → 稀疏嵌入精确匹配 → 结果融合 → 神经重排序 → recall@k 度量。超越扁平文本:RAPTOR 树状层次、GraphRAG 实体关系网、OpenViking 文件系统范式、上下文感知检索、智能体化 RAG。最终收敛为双层记忆架构,真正支撑起三层次框架中最高的”主动服务”能力。


六、第 4 章:工具

章节定位:工具是 Agent 与外部世界交互的桥梁(”手脚”)。核心结论:工具设计的质量决定 Agent 的能力上限,异步架构决定 Agent 能否在真实世界中可靠运行

4.1 工具的分类(两个审视特征)

工具类型 调用方向 作用对象
感知工具 Agent 主动调用 获取信息
执行工具 Agent 主动调用 改变世界
协作工具 Agent 主动调用 与其他 Agent/人协作
事件触发工具 Agent 注册、外部触发 驱动 Agent 开始工作
用户沟通工具 Agent 主动调用 向用户传递信息

4.2 工具设计的通用原则

  • 能力表达形式:专用工具 vs Skill + 通用执行器。选择依据三维度:参数复杂度(嵌套对象/多字段联合校验用专用工具结构化 schema)、变更频率(频繁变化用 Skill——改文本远比改代码测试部署轻松)、安全与权限需求。
  • 工具粒度权衡:粒度过细 → 工具数量激增(超 100 个最先进模型也易选错);粒度过粗 → 单个工具复杂。整合标准:功能相似性 + 使用场景重叠度(extract_pdf_text/extract_docx_content/extract_pptx_content → 统一 read_document 加 file_type 参数)。参数集差异大或使用频率极高时保持独立。
  • 通用性设计:通用工具优于专用工具,除非有明确的安全/权限/性能理由(code_interpreter 胜过十几个计算器;但生产数据库写操作要专用工具保证权限控制与审计)。LLM 本身有强大的思考与代码生成能力,应利用而不是限制——通用工具是”元能力”。但特殊权限、复杂配置、安全风险场景仍要封装专用工具(各平台 grep 语法不同 → 专用 grep 工具)。
  • 工具描述的艺术:核心是让 LLM 知道”什么时候用“而不只是”能做什么”;清晰列出边界条件(做不到什么)往往比描述能力更重要——大多数调用失败的根因是模型不知道工具不能做什么;参数描述用具体例子代替抽象规范(”phone:E.164 格式(国家代码+号码,无空格),例如 +8613888888888”);返回值要描述清楚;注明执行代价(下载耗时)帮助模型规划调用顺序。
  • 参数传递的保真性:两种隐蔽反模式——静默输入转换(Cursor 把弯引号静默转直引号,导致模型”看到的内容工具却找不到”,反复失败无法理解)和静默参数注入(工具自动附加参数导致 git commit 报错)。原则:模型感知到的世界与工具操作的世界之间不能存在系统性偏差
  • 工具设计的三代演进:第一代直接 API 封装(粒度过细);第二代 ACI 原则(工具对应 Agent 的目标而非底层 API 操作,对标 HCI);第三代优化工具被调用、串联、发现的方式——示例驱动调用(准确调用)、动态工具发现(按需注入,不全部塞上下文)、代码编排执行(让模型用代码编排调用序列,中间变量留在执行环境,只返回汇总结果——token 消耗可降约两个数量级)。

4.3 工具生态:MCP 与工具选择的挑战

  • MCP(Model Context Protocol):Anthropic 2024 年底发布的开放标准,统一 AI 模型与外部工具/数据源的通信协议(”通用的插座标准”)。关键设计:标准化工具描述格式(JSON Schema)、传输层灵活(本地 stdio / 远程 Streamable HTTP)、资源与工具分离(只读资源 vs 可执行工具)。
  • 工具过多时的应对:层次化组织(搜索/读取/解析/查询四类,Anthropic 实验:按需检索使 Opus 4 工具使用准确率从 49% 提升到 74%);从 MCP 到 Skills(MCP 解决互操作,Skills 解决选择过载——用少量通用工具 + 按需加载知识文档替代大量专用工具,把”工具选择”变成”知识检索”)。
  • 接入第三方 MCP 的风险:新的信任边界——工具描述投毒、工具遮蔽、凭证管理,需接入前审查、运行时防御。

4.4 感知工具

  • 共同挑战:返回信息量远超处理能力 → 工具层集成上下文感知压缩(输出超阈值如 10000 字符时按查询意图压缩)。
  • 搜索类:返回结构化候选列表(标题、位置、摘要)而非全文;分页/游标,由 Agent 决定是否翻页。
  • 读取类:支持 offset/limit 按需读取;截断必须显式可见(”已显示第 1-200 行,共 5000 行”)——静默截断会让 Agent 基于不完整信息做错误判断。
  • 只读性红利:可安全缓存(相同查询复用)、可放心并行(同时读五个文件),执行工具没有这种自由。
  • 多模态感知:直接返回图像(保留布局、耗 token)vs OCR 转文本(精简但丢空间结构),按内容类型选择。

4.5 执行工具

  • 层次化安全设计
    1. 输入验证:路径遍历攻击(../../etc/passwd)、命令注入(分号/管道符)、参数类型格式。关键是快速失败——发现异常立即拒绝,不尝试”智能”修正;
    2. 权限控制:工作目录限制、禁止命令黑名单(rm -rf /)、API 配额速率限制。注意黑名单只是最基础层——攻击者可用变形命令绕过($(echo rm) -rf /),需结合语义解析理解命令真实意图(第五章展开);
    3. 提议者-审核者:独立模型安全审查(事前审批)。事后验证的要诀是模态切换——渲染为视觉输出检查排版、在沙盒实际运行验证配置,单一模态审查易陷入相同盲区;
    4. Sidecar 机制:旁路安全检查模块,与主 Agent 流式输出并行运行,独立判断风险,起门控作用;配拒绝熔断器(连续拒绝回退到请求用户手动判断)。
  • 自动验证与反馈闭环:操作结果可验证就应该自动验证(write_file 后立即跑 linter,结构化错误列表作为返回值)——“执行-验证-反馈”闭环。
  • 长输出截断与持久化:超阈值(200 行/10000 字符)只返头尾各若干行,完整结果存临时文件。
  • 幂等性:执行工具必须回答”调用被取消/超时时副作用到底发生没有”(转账超时返回失败,钱可能已转出)。两类手段:唯一标识去重(idempotency key)或先查询后变更。不可幂等操作(发邮件、打电话、对外转账)用”预检-确认”两段式(第一段只校验预演并返回确认令牌,第二段凭令牌真正执行)。

4.6 协作工具

  • 子 Agent 设计哲学:专业化分工(一组专精 Agent 协作优于一个”全能”Agent)。
  • 子 Agent 提示词关键要素:角色定义清晰(”你是专门负责 XXX 的助手 Agent”);上下文来源明确标注([FROM_MAIN_AGENT] / [FROM_USER] / [TOOL_RESULT],防提示注入);任务边界明确;输出格式标准化(统一 JSON)。
  • 协作原语三组:启动与取消(spawn_subagent / cancel_subagent)、消息传递(send_message_to_subagent,双向)、发现(list_agents 列出可用 Agent 及职责——与 MCP 的 tools/list 同一思路)。
  • 协作形态:同步调用、异步调用(事件通知)、流式协作、多轮交互。
  • 人工介入的艺术:某些决策点本质上需要人类的价值观、常识或领域专业知识——人工介入本身形成学习闭环(干预样本可回放给 Agent 学习)。

4.7 事件驱动的异步 Agent

  • 为什么需要异步:同步 = “做完一件事才能做下一件”。真实助理场景需要:异步执行是常态、事件优先级动态判断(取消当前/加入队列/并行处理)、中断和恢复流畅性。根本矛盾:”训练同步/部署异步”——LLM 训练范式假设发出工具调用后下一条必须是工具结果,而真实部署要求随时可打断、多任务并发。
  • OpenClaw 的三种自动化机制:Hooks(事件钩子,响应生命周期事件)、Cron(定时调度)、Heartbeat(心跳守护,每隔 N 分钟唤醒检查)。局限:三者都是时间/框架驱动,无法即时响应任意第三方事件源(新邮件、外部 API 回调)。
  • 事件触发工具三类定时器(set_timer:一次性/循环,处理依赖物理时间的事件——“周一上午 10:00 致电 DMV”);后台任务监控(monitor_shell:监控命令行新增输出或关键词,避免”盯着看”浪费 token 或”等完成”错过严重问题);外部事件通道(connect_channel:新邮件、API 回调、IM 消息实时推送)。设计要点:清晰触发条件与过滤规则(避免无关事件浪费算力)、事件载荷足够上下文(减少唤醒后额外查询)。
  • 用户沟通工具:当沟通从 session 内一问一答扩展到多渠道异步消息,”说话”本身成为显式工具调用(OpenClaw 的”活人感”)。支持异步消息模式、已读/未读状态追踪、多模态(结构化卡片、邮件、生成式 UI)。
  • 虚拟身份与隔离执行环境:Agent 应拥有独立虚拟身份(专属通讯账号、存储、计算环境)而非直接管理用户账号——一旦 Agent 出错或被攻破,用户全部数字身份会暴露。落地在隔离执行环境(VM/容器、Android 模拟器)。两个现实挑战:反自动化机制(CAPTCHA、IP 信誉检测 → 住宅代理);访问用户真实账号用 Human-in-the-Loop 认证(VNC/RDP 让用户亲自登录,令牌复用平衡自主与安全)。
  • 事件处理机制:骨架是事件循环(每一轮从输入队列取事件→追加轨迹→调用 LLM→执行工具→回到循环开头);事件只在每轮循环的安全点被消费(LLM 推理中、工具执行中新事件先排队;取消也在安全点检查)。三种策略:队列式(常规事件,等安全点批量处理)、取消式(紧急事件,主动制造安全点中断)、并行式(独立轻量查询另起推理会话,结果标记”与主任务并行执行”)。结构化事件建模:每个输入建模为含发送者/来源/类型/内容/时间戳等维度的结构化事件,避免用户输入误当工具结果、工具结果误当用户指令(防注入)。
  • 如何让同步模型支持异步打断(工程实现):常态下让 LLM 看到标准同步轨迹,只在打断时插入占位符修复格式。五条规则:① LLM 输出时立即记录 assistant message;② 工具调用完成时才记录 tool result(轨迹存在”部分完成”状态);③ 工具执行中的打断生成占位符响应(”工具正在后台执行,请优先处理新事件”)重新调用 LLM;④⑤ 后续恢复。代价:加剧幻觉风险(模型从未学会处理”结果还没回来”——训练时工具调用后总紧接着真实结果),因此只在真正紧急时打断,非紧急事件入队。
  • 前沿方向:持续思考(continuous-time)Agent——与其在被打断时丢弃半截思考,不如让模型边等边想、边做边想(利用”工具调用几秒内模型可生成上千 token”的白赚算力)。关键发现:编排让行为成为可能,训练让行为变好——用”LLM 当裁判”式奖励训练,模型会学藏思考换好评;只有可验证、保信息覆盖度的目标才带来实收益。

4.8 主动工具发现

  • 传统全量注入 schema 在工具上千时失效(上下文被说明书塞满、选择精度下降)。检索式预筛选(按初始查询一次性匹配)的局限:任务中途才发现需要跨领域工具链。
  • MCP-Zero 思路(Agent 声明缺口、系统按需注入):系统提示词不预置工具 schema,Agent 在思考中生成结构化请求块(”GitHub 服务器:搜索仓库并返回元数据”),两层语义路由(服务器级→工具级)从数千候选中匹配注入——约 2800 个工具上比全量注入省约 98% token。工程等价方案:保留少数基础工具 + 一个”工具搜索工具”(Claude Tool Search Tool)。
  • 层次化匹配与降级:先按能力描述定位服务器,再在服务器内匹配工具(数千工具 → 数十服务器 × 数十工具);候选相似度都低于阈值时明确返回”未找到”,让 Agent 改写需求、手工实现或创造新工具。
  • 动态加载与 KV Cache:把新工具的完整 schema 追加到上下文末尾(静态前缀保持稳定),状态栏维护简短工具名列表。如今已是 API 原生能力:OpenAI Responses API 的 tool_search + defer_loading、Anthropic Tool Search(Claude Code 对 MCP 工具默认延迟加载)、Codex CLI 的 tool_search(BM25,默认开启)。澄清:”追加到末尾”只发生在工具被发现的那一轮,此后固定为历史消息,不会每轮重新搬运。
  • Skills:把工具发现变成”按需查阅”:不需要嵌入索引 + 语义匹配基础设施——Agent 启动只看到 name + description 目录(数百 token),需要时读取完整 SKILL.md 并顺着引用深入。像查工具书一样”用到哪条查哪条”。

4.9 本章小结

ACI 原则(粒度、通用性、描述规范)适用于所有工具;MCP 统一互操作;层次化组织 + 动态发现 + Skills 回应工具爆炸;参数传递保真性是底线。五类工具各有侧重(感知=压缩与分页;执行=分层安全+提议者-审核者+Sidecar;协作=生命周期原语+人工介入;事件触发=过滤规则+载荷设计;用户沟通=异步+多渠道+虚拟身份)。


七、第 5 章:Coding Agent 与代码生成

章节定位:论证 Coding Agent 加上文件系统是所有通用 Agent 最核心的技术基础;代码是通用 Agent 的元能力(能创造其他能力的能力)。

5.1 Coding Agent

  • Coding 是 Agent 的基础能力:几乎所有高效的内容生成最终都要落到代码上——PPT 是 OOXML 格式的代码、Word/PDF 可由代码生成、数据分析用 Python 脚本、GUI 操作序列可固化为 RPA 代码。代码生成是效率最高、成本最低、可复用性最强的能力基座
  • 七个核心工具:① Code Interpreter(沙盒执行 Python);② Bash Shell(终端命令);③ 读文件;④ 写文件;⑤ 编辑文件;⑥ 文件搜索(glob,按文件名);⑦ 内容搜索(grep/语义)。一个 TODO 整理任务只需 Grep + Write 两个工具即可完成。
  • 案例:Manus → OpenClaw:把 Deep Research、Computer Use、Coding 三大能力融合,凸显”Coding Agent + 文件系统是开放任务型通用 Agent 最核心的技术基础“。
  • Sessionless 设计:无安装、无登录、常驻在线,用户通过已有消息平台随时发消息即得响应。大模型已成熟到足以充当”智能基座”(类似操作系统屏蔽硬件,大模型屏蔽语言理解与思考规划的复杂性)。工程难点:代码执行环境和文件系统状态如何跨消息存活——OpenClaw 两层管理:文件系统状态天然持久(workspace 挂载在沙盒之外的持久存储);进程状态按需保活或重建。
  • Coding Agent 的安全
    • Simon Willison 的”致命三要素”:① 访问私有数据;② 暴露于不受信任内容;③ 具备外部通信能力——三要素齐备即构成完整攻击闭环(恶意指令藏在不受信任内容 → 读取私有数据 → 经对外通道传出)。笔者补充第四维度:持久记忆——攻击者把无害偏见/恶意指令写入长期记忆,跨会话潜伏、适时触发,把一次性攻击升级为长期放大。四类边界:数据边界、输入信任边界、输出影响边界、跨会话边界。全权限本地 Agent(OpenClaw 类)四者兼备,安全是核心挑战。
    • 命令语义解析:关键字黑名单形同虚设(子 shell、变量展开可绕过任何静态规则,$(echo rm) -rf /)。生产级 Harness 用语义解析理解命令真实效果——识别”看似无害的标志位消费下一个参数从而隐藏危险载荷”(find -exec rm、curl -o /etc/crontab)。
    • 推测性执行(让安全检查”隐形”):把”展示”与”放行”拆开并行——先显示进度提示,后台同时跑安全检查;先行提示无副作用,检查不通过只需替换为”等待确认”。安全性不以牺牲用户体验为代价是 Harness 设计的最高境界。
    • 信任边界下移(数据层):当写代码的和跑代码的都可能不可信时,真正可靠的约束不能待在被生成的代码里,而要待在下面那层人类审查过的地基里(如数据库 schema 级不变量保证——“不可能错”而非”更可能对”)——“约束优先于指导”原则在数据层的终极形态。
  • Coding Agent 的整体流程:项目文档化(生成 CLAUDE.md 项目指南)→ 需求理解与澄清 → 设计文档(方案对比,提交设计等审批)→ 编码与测试(old_str→new_str 修改、修复失败测试重跑)→ 审查与交付(自审可读性/安全/性能)→ 文档同步(架构级改动后更新文档——过时的文档比没有文档更糟糕)。
    • 指令文件(CLAUDE.md 等):项目级系统提示词,承载面向 Agent 的行为约定(构建测试命令、代码风格、禁区”不要改动 migrations/ 目录”)。与 SOUL.md(Agent 是谁)、MEMORY.md(跨会话经验)同一思路。最经济的稳定前缀,对 KV Cache 友好。推论:对远程工作友好的团队也对 AI Agent 友好——评估团队 AI-ready 程度的代理指标:一个远程新人只靠代码仓库和文档能否独立工作。
  • Harness 工程在 Coding Agent 中的实践:Coding 是所有 Agent 任务中可验证性最高的一类(测试、类型、linter、Git 都有现成基础设施)。落地组件:验收基线(测试套件/CI/审查标准)、执行边界(模块边界/依赖规则/权限)、反馈信号(linter/测试/类型检查)、回退手段(Git/沙盒/快照)。可迁移的设计原则:① 约束优先于指导(能用代码强制的规则就不要用文档建议——“做不了” vs “建议别做”);② 验证要自动化(人工审查不可扩展);③ 反馈越快越好、越结构化越好。LangChain 方法论:用 Agent 分析失败轨迹来改进 Harness,让 Harness 工程从人工经验驱动转向数据驱动;Anthropic:长任务拆为初始化 Agent(分解任务清单)+ 执行 Agent(逐步推进、中间成果留档)两角色。
  • 故障与错误恢复(四层故障分类):API 层(限流 429、超时、连接中断、输出截断);工具层(幻觉调用、参数畸形、执行异常、反复返回同一错误而模型不改地重试);上下文层(窗口溢出、压缩失败、轨迹结构损坏);控制流层(死循环反复执行无进展、死亡螺旋错误触发的恢复逻辑自身又调 LLM 连锁出错)。
    • 检测:先分类再计数——可重试错误(限流/过载/网络抖动)重试才有意义,不可重试错误(参数不合法/权限不足/工具不存在)必须改变输入或策略。维护”错误→恢复策略”映射表。模式检测:重复调用指纹(工具名+参数相同即无进展循环信号)、连续失败计数。流式连接最危险失败模式是静默卡死(连接成功但数据流停止,SDK 超时往往只覆盖初始连接)——需要独立空闲看门狗。每个长连接都需要活性信号
    • 恢复:分级升级;错误路径上禁用一切会再次调用模型的副作用逻辑(防递归死亡螺旋);全局终止条件(最大迭代轮数、会话预算上限、连续失败超阈值升级人工干预)。
    • 核心结论:Agent 的可靠性不取决于它犯不犯错,而取决于每类错误是否都有对应的检测、恢复与终止路径
  • 实现技巧:并行工具调用 + 流式执行(第一个工具调用参数一完整即开始执行,与后续调用生成重叠)+ 级联中止(某调用失败终止同批依赖它的调用,不波及其他);环境信息动态注入(当前工作目录、git 分支、最近提交、未暂存/已暂存变更——作为 Agent 状态栏追加而非硬编码进静态提示词);命令执行环境状态持久化(维护持久终端会话,保留工作目录、环境变量——符合人类开发者习惯)。
  • 搜索工具(互补工具箱):正则内容匹配(grep 精确文本)、文件名匹配(glob 路径模式)、语义代码搜索(自然语言 → 向量+BM25 混合)、符号级定义/引用查找(LSP)——能区分同名符号的定义和调用,代码重构的关键(重命名不能只靠文本搜索,函数名可能出现在注释/字符串中)。策略:”从粗到细、从语义到语法”。
  • 文件编辑工具(五种方案):LLM 输出 diff 描述(关注点分离但微小偏差致错位)、旧字符串→新字符串(可预测无歧义,大段删除需全输出)、行号定位(大段操作高效但长文件数行号易错)、类 Vim 编辑命令(重组代码高效但语法学习负担大)、字符串首尾匹配(只提供要删内容的开头几行和结尾几行,框架匹配定位——综合可靠性与效率,主流自建推荐)。业界代表:Claude Code 用 old→new 字符串(可靠优先),Cursor 用 Apply Model 专用 fast-apply 模型(吞吐优先)。

5.2 代码:通用 Agent 的元能力(六个方向,由内向外)

  1. 代码作为思考工具:LLM 在精确计算、符号操作、严格逻辑推导上有根本短板(概率性近似 vs 确定性精确)。分工:LLM 理解问题写代码,代码解释器精确计算(集合论题目:纯自然语言推理易错,代码推理精确可验证)。Wolfram 洞察:符号计算系统与 LLM 互补。
  2. 代码作为业务规则的约束:”约束:编码化而非文档化”。自然语言规则有歧义(”7 天”是自然日还是工作日?”购买”是下单还是发货?),代码无歧义、可执行、确定性。实践结合:系统提示词保留自然语言规则供理解和沟通 + 关键决策点配代码化校验工具作”守门员”。三重保障:① 自然语言规则帮助理解解释;② 工具描述与 expected_ 参数作 checklist 引导模型调用前显式核对;③ *服务端基于数据库真值的代码化校验作最后守门员(政策事实一律查库、时间取服务端时钟、绝不采信模型自报值——最后防线必须建立在模型无法伪造的数据之上)。实验 5-3:Qwen3-4B 通过代码化知识显著提升复杂政策执行准确性。
  3. 代码驱动的多媒体生成:PPT 创作重新框定为代码生成问题(Slidev:Markdown+HTML 定义内容)。关键机制:提议者-审核者——Proposer 逐页生成代码,Reviewer 渲染截图用 Vision LLM 检查(文字溢出、布局拥挤、字体过小),迭代到达标。视频讲解:PPT 生成 + 口语化讲解文字 + TTS + ffmpeg 合成。视频剪辑:粗粒度(每 10 秒截图)→ 精细粒度(每秒截图)两级定位场景区间,生成 Blender API 脚本,Reviewer 检查关键帧。
  4. 代码作为系统适配器:外部服务没有现成 SDK、文档缺失、返回格式非标准时,Agent 当场读文档/观察真实响应、即时生成适配代码(HTTP 客户端、鉴权、解析非标准结构)。延伸:无 API 系统先 Computer Use 操作界面、再把成功序列固化为 RPA 代码。日志自适应解析:格式变化时自动检测失败 → 生成新解析代码 → 自动测试 → 热更新。生产日志诊断:读日志 + 架构文档 + PRD 定位问题 → 生成结构化问题报告和回归测试用例 → 经 MCP 创建 GitHub Issue 全自动化。
  5. 代码作为生成式 UI:动态生成表单、交互式图表、完整 Web 应用。A2UI(Agent-to-User Interface)声明式界面协议——Agent 不直接生成可执行代码,只输出”界面描述清单”(JSON),客户端用预先准备好的安全组件渲染(”顾客只能点菜单上有的菜”)。安全优先:客户端维护受信任组件目录,防注入/XSS。Artifact 模式:数据直达前端(图表直接绑定数据源,绕过”数据经过 LLM 抄写”的低效与出错)。结合热加载(HMR)实现对话式界面实时定制(”千人千面”)。
  6. 代码创造代码:Agent 自举(bootstrapping):Agent 用代码修复和创建与自己同类的 Agent(自我修复、自我复制、按需生成)。案例:doctor —fix 自我诊断修复(确定性检查覆盖常见问题 + LLM 兜底疑难长尾)。让 Agent 编写 Agent 的关键技巧:提供架构模式参考代码、复制脚手架保留循环框架/消息格式/KV 优化、定向修改业务逻辑、验证测试。常见缺陷:上下文管理随意(未用标准结构化消息)、工具设计粗糙、安全缺失。自举引入的偏差会代际累积吗?——第八章的验证/发布/回滚机制是防退化答案

5.3 本章小结

代码不只是写程序的工具,它是 Agent 形式化思考和精确表达的语言。Coding Agent 成熟度高不是因为代码生成模型特别强,而是因为软件工程几十年攒下的基础设施(测试、类型系统、版本控制)天然构成一套强大的 Harness。代码的价值:完成任务的手段 + 积累知识、创造工具、优化自身的机制。


八、第 6 章:Agent 的评估

章节定位:构建科学评估方法论。核心问题:怎么判断 Agent 真的变好了?评估体系三层:评估环境(在哪里测)→ 评估方法(怎么判)→ 评估驱动决策(测了干什么)。贯穿主题:可观测性、仿真环境、内部评估。

6.1-6.2 评估环境

  • 评估五要素:数据集(初始状态+目标+参考解)、环境状态(真实性与可控性平衡:退款不超过订单金额 + 每次测试可重置)、工具接口(原子操作而非高层抽象,迫使 Agent 规划组合)、评分标准 Rubric(二元/连续/多维)、执行协议(交互模式与终止条件)。
  • 工具调用型环境(Verifiers):验证基于可执行标准(测试通过、答案匹配),不依赖人类标注或模型评判。层次化:SingleTurnEnv(单轮)、ToolEnv(多轮工具循环)、StatefulToolEnv/SandboxEnv(有状态、长时沙盒)。
  • 人机交互型环境(τ-bench / τ²-bench):核心设计原则是渐进式信息透露(Progressive Information Disclosure)——大多数 benchmark 一开始全盘托出需求,但现实中用户只会说”我的航班好像有问题”。τ-bench 用用户模拟(User Simulation):另一个 LLM 扮演用户按剧本逐步透露信息、回应询问。双重验证:数据库最终状态检查 + 对话关键信息字符串验证;任务层面汇总为二元奖励(全过才 1 分)。τ²-bench 增量:双控环境(用户模拟器也能操作共享环境,Agent 需观察到用户侧变化)与更精确的组合式任务生成。

6.3 评估任务数据集的设计(五挑战)

  1. 明确性与开放性的张力(GAIA:概念简单、实现路径开放);
  2. 真实性与可控性平衡(SWE-Bench → Verified:人类专家筛出 500 个高质量任务);
  3. 多样性与系统性协调(AndroidWorld:116 任务 × 20 应用,标注核心能力标签,参数化生成变体);
  4. 评估成本与覆盖范围(GAIA 精选 466 题分三级难度;SWE-Bench Verified 从 2294 筛到 500,成本降约五分之四);
  5. 数据泄漏防范(GAIA 靠答案独特性 + 专属附件文件;SWE-bench-Live 靠时间新鲜度;τ²-bench 动态参数生成;Terminal-Bench 嵌入金丝雀 GUID 使泄漏可检测)。
  • 任务描述精确性:每个元素机械化可验证(Terminal-Bench “build-linux-kernel-qemu”:启动日志出现自定义消息才算成功,无法伪造输出蒙混过关);AndroidWorld 参数化模板(每次随机参数)。
  • 复杂度层次化:GAIA 三级(L1 一两个工具 vs L3 复杂组合,人类 87.3% vs GPT-4 0%)——不同层次失败指向不同改进方向(提示工程 vs 规划机制 vs 分层架构/后训练);τ²-bench 业务复杂度分层(查询→多步流程→故障诊断→策略判断)。
  • 可验证性:SWE-Bench Verified 的 FAIL_TO_PASS(证明修复了)+ PASS_TO_PASS(证明没引入新 bug)双重验证;τ²-bench 多层检查(数据库状态+对话关键词+流程合规性);OSWorld 134 个独立评估函数深入检查文件系统/进程/网络/应用内部状态。
  • 数据质量控制与迭代:SWE-Bench Verified 93 名开发者人工评估、29% 通过率、标准化标注指南;OSWorld → OSWorld-Verified 是迭代改进典范(15 个月暴露 300+ 问题,四类修复策略,云平台 50 倍并行加速,轨迹公开到 HuggingFace 形成持续改进循环)。

6.4 评估指标体系

  • 过程指标:行动合法率(无效操作 vs 越权操作)、工具调用正确率(参数语义合理)、路径效率(步数/冗余动作/回退次数)、检索覆盖率、成本与延迟(请求数、token、墙钟时间)。
  • 结果指标:Pass@k(k 次尝试至少成功一次的概率——能力上限)、Pass^k(k 次全部成功的概率——稳定性)、Best@k(最好一次得分——质量上限)。例:单次成功率 60%,Pass@5 ≈ 99% 而 Pass^5 ≈ 7.8%。回归测试用 Pass^k,探索性评估用 Pass@k,混用会导致误判

6.5 自动化评估方法

  • LLM-as-a-Judge + Rubric:开放式任务(客服对话、报告撰写)用 LLM 评判。好 Rubric 四准则(Scale AI):基于专家指导(示例+边界案例)、全面覆盖(所有重要维度)、标准重要性权重(Essential/Important/Veto 否决项)、自包含评估(每个评价项独立可操作、不依赖评判者领域知识——“引用了至少两个权威理论”优于”展示了深刻理解”)。主动防范奖励作弊(Reward Hacking):惩罚幻觉、讨好、关键词堆砌、回避问题。Rubric 是迭代产物(收集评判分歧逐步完善为判例集)。
  • 配对比较与模型排名:Elo 评分(Bradley-Terry 模型的在线更新形式;爆冷带来更大分数调整);Chatbot Arena 匿名随机对决(不需要绝对标准,但结果取决于用户问什么问题)。位置偏差(Position Bias):评判模型系统性偏向先出现的候选——缓解:交换顺序各评一次取平均,或两次一致才计入。

6.6 评估驱动的模型选型

  • 关键维度:Prefill vs Decode 两阶段(Prefill 决定 TTFT 首字延迟、上下文越长越慢;Decode 决定出字速度、直接决定思考时长——50 tokens/s 生成 2000 思考 token 要 40 秒);输入/输出吞吐量、思考延迟(不同模型思考 token 数差数倍,且与效果不一定正相关,要实测)、p95 尾部延迟(比均值更能反映体验)、成本(便宜但成功率低的模型因重试可能实际更贵——算每个任务平均成本与成本-性能比)、性能指标取舍(日常看 Pass@1、关键操作看 Pass^k、探索看 Pass@k/Best@k)、速率限制与鲁棒性。
  • Agent 系统成本分析(三层次):模型推理成本(上下文累积效应——第 1 轮 1000 token、第 2 轮 2000、第 3 轮 3000,总量 6000 而非 3000,KV Cache 是关键;思考 token 也计费)、工具调用成本(外部 API 费用、工具结果注入上下文后的反复计费——一次搜索返回 2000-5000 token 每轮都算输入)、基础设施成本(向量库、消息队列、日志追踪)。
  • 评估驱动的持续迭代:模型选择不是一次性决策。”新模型比旧模型强吗?好多少?切换成本是什么?”——有评估体系的团队数小时内给出答案:在自有评估集上跑新模型,对比成功率/工具调用正确率/延迟/成本,可能得到”简单任务迁移降低成本、复杂任务保留原模型保质量”的差异化策略。

6.7-6.11 统计显著性、可观测性与内部评估

  • 统计显著性:二项分布标准误 √(p(1-p)/n)——100 用例成功率 70% 时标准误 ≈4.6%,95% 置信区间 ≈ ±9 个百分点;”73% vs 70%”的 3 个百分点差异完全在噪声带宽内(独立假设下差值标准误 ≈6.5%)。多次运行取均值(每个配置 3-5 次不同随机种子),报告均值与波动范围。
  • 可观测性:执行追踪树(Trace:任务+耗时+成本)、监控仪表盘(成本追踪、P50/P95/P99 延迟、工具成功率、异常模式检测——“task#892 循环调用 search 14 次”)。挑战:数据量与隐私权衡、因果归因复杂、多 Agent 追踪、实时防护与事后分析平衡。
  • 从 Benchmark 报告到系统改进(假设案例全流程):观察诊断报告(总体 88% 但 math_counting 0%、Wi-Fi 操作 0%)→ 能力标签矩阵揭示共同特征(transcription 暴露视觉理解缺陷、complex_ui_understanding 依赖标准 UI 模式)→ 三层改进框架假设(表层 H1/H2 导航提示与 UI 规则;中层 H3 修复多模态管道、H4 全局思考;深层 H5 换更强模型、H6 加 UI 元素树)→ 分阶段验证(每配置 5 次×116 任务)→ 数据驱动决策:H1+H3 明确部署、H4 全局思考不可接受(为 8% 的任务让全部任务承担 3 倍延迟成本,”杀鸡用牛刀”)、H6 优于 H5(瓶颈不在模型思考能力而在输入信息充分性)、H5+H6 组合最高但只适合关键异步任务选择性启用 → 持续迭代(新报告出现新失败模式 → 新假设 H7 条件化启用思考、H8 扩展动作空间)。方法论:观察→假设→实验→验证→新认识→新假设,把 Agent 工程从经验驱动的”炼金术”转向数据驱动的科学工程
  • 内部评估基础设施(OpenClaw 实践):① 消融基础设施(总开关禁用多个主要特性创建”裸模型”基线——发现”特性债务”,每个主要特性都应可独立关闭,消融开关必须在启动路径极早期注入);② AB 测试方法论(多臂而非二元、区分机制指标和目标指标——“缩短计划文件长度”是机制、”降低会话级成本”才是目标、设置护栏指标、记录基线统计);③ 双层特性开关(编译时开关物理移除代码、运行时开关服务端下发本地缓存);④ 提示词敏感性评估(系统提示可确定性渲染、版本化快照、每次变更跑回归——像代码变更跑 CI);⑤ 隐私感知的分析(类型系统强制——分析接口只接受特殊类型包装的值,”类型名本身就是审计线索”)。
  • 仿真环境:从评估到后训练的桥梁:评估的终点是改进,改进的最强形态是训练。评估环境 → 仿真环境的核心区别:交互频率远高(百万次 vs 千次)、需要随机化(防死记硬背)、必须即时反馈。评估资产无缝转成训练信号:一套定义清晰的 Rubric/验证器本质上就是一个可验证奖励(RLVR)的奖励函数。训练的新要求:可靠的 reset 语义(数百万 episode 每个都要干净初始状态)、远高于评估的吞吐。领域随机化(Domain Randomization)是缩小 sim-to-real gap 的关键(物理参数、视觉外观、传感器噪声大范围随机)。

6.12 本章小结

评估形成完整闭环:评估环境 → 数据集 → 自动化评估方法(LLM-as-a-Judge + Rubric)→ Benchmark 分析揭示改进方向 → 系统改进 → 更新评估环境与数据集。评估是 Harness 中”验证”功能的系统化实现。评估体系是第七章(评估环境与数据转成后训练输入)和第八章(轨迹评价转成知识/指令/程序/参数更新)的共同基础。


九、第 7 章:模型后训练

章节定位:深入 SFT 与 RL 技术。两条主线:主线一——SFT 记忆、RL 泛化(先形后神:SFT 先立”形”(格式结构),RL 再求”神”(策略泛化));主线二——数据和环境比算法更重要(先验 > 环境 > 算法)。

7.1 预训练、SFT、RL 三阶段全景

  • 预训练:预测下一个词(Next Token Prediction)。模型输出本质是概率分布,”训练”就是调整这个分布。在海量互联网文本上反复猜下一个词,被迫学会语法、事实、逻辑乃至基本推理。预训练后模型”博学却不好用”——它没学会”被提问时应回答”这个协议。
  • SFT 的本质:换了数据的”预测下一个词”。与预训练只有两点差别:① 数据不同(人工”输入-输出”对,格式统一为”用户提问→理想回答”);② 损失只算在”回答”上(loss masking,损失屏蔽)——不希望模型学”怎么提问”,只学”怎么回答”。SFT 记忆:优化目标是让标注回答每个 token 概率尽可能高,即”把标准答案背下来”。能力边界钉死在示范数据上。固化的是”格式、风格、流程”这类协议性知识,而非事实性知识(后者靠预训练或 RAG)。
  • LoRA(参数高效微调):冻结大权重矩阵,旁边挂低秩”补丁”,参数仅占 1%-5%,接近全参效果且扰动小。实践经验:应用到所有主要权重矩阵(尤其 MLP 层,只加注意力层会掉点);学习率约为全参微调 10 倍;SFT 用中高 rank(64-256)、RL 用小 rank(8-32 甚至 1)。一台推理服务器可同时加载多个 LoRA 多租户。
  • 为什么必须先 SFT 后 RL:RL 不看标准答案,靠模型自生成回答 + 奖惩;可要判断好坏,首先得能解析输出——格式混乱(JSON/工具调用都吐不齐)奖励函数无从算起。SFT 先把”话说利索”,RL 才有能打分的起点。边界:较小基础模型 + 严格结构化输出时”必须先 SFT”成立;强基模可直接 RL(DeepSeek-R1-Zero 自行涌现反思与长链思考,但输出可读性差,最终仍加回”冷启动 SFT”立稳”形”)。“先形后神”
  • SFT vs RL 本质区别(最重要的一张表)
    • SFT:优化最大化标注答案概率(极大似然);唯一标准答案、每个 token 都有监督;学到固定映射 → 记忆(J/Q/K 训练时当 10,测试变 11 照旧用 10);
    • RL:优化最大化期望奖励;自己生成多条回答 + 每条一个成败信号;学到”怎样的过程能得到正确结果”的更通用策略 → 泛化(J 变 11 用同一策略重算)。

7.2-7.3 经典 RL Agent 到现代 Agent(可选阅读)

  • RL 五要素:动作空间、策略、奖励信号、价值函数、环境模型(基于模型 vs 无模型)。
  • 两种范式最根本差异:动作空间——MDP 假设有限封闭动作集,LLM 的动作空间是开放、组合爆炸的自然语言序列。
  • MDP 的根本局限:样本效率低(Q-learning 10000 次试错只需 10 秒在游戏里,但真实世界每次打电话有成本、每次操作有延迟,完全不可接受)、泛化差、无法利用先验知识。
  • OpenAI 范式演进三阶段:算法中心主义(2015-2016)→ 环境的重要性(2016-2018)→ 先验的觉醒(2018-至今):先验知识可通过与 RL 完全无关的方式获得(语言预训练)。

7.4-7.5 SFT 实践与决策

  • SFT 数据三条路:人工专家示范(质量天花板最高、贵且慢,做”种子数据”);教师模型生成(合成数据,强模型批量产出后过滤蒸馏);模型自举(拒绝采样微调:同一问题采样 k 条候选 → 验证器筛选正确样本 → SFT 训练自己,STaR/RFT 核心循环)。量级:数千到数万条高质量样本足够,“与其堆十万条脏数据,不如精修一万条干净数据——数据里的每一处噪声,SFT 都会忠实地写进参数”
  • Prompt 蒸馏:把”长提示 + 思考型教师”的行为压缩到”短提示 + 非思考学生”——训练数据只保留用户输入与最终结论,学生学会”直接给出结论”,延迟费用显著降低。两维度:”大到小”、”思考到非思考”。
  • 何时选 SFT / RL 决策框架:先试 SFT(固化格式、协议性知识、统一风格;不适合注入大量事实知识——那要预训练或 RAG);SFT 不够时加 RL(需要泛化到新场景、探索最优策略、标注成本过高)。很多场景下只要 SFT 数据质量到位根本不需要 RL——RL 又贵又不稳定(常是 SFT 的几十到上百倍成本)。Anthropic 例证:2025 年前后训练主配方是高质量 SFT + RLAIF,并不依赖 RLVR。

7.6 单轮强化学习:记忆与泛化的对照

  • AdaptThink(学会”何时不思考”):NoThinking 模式在简单问题上性能相当甚至更好,只有困难问题 Thinking 优势才显现——用 RL 训练模型学会按需分配思考。
  • GeneralPoints 卡牌算术(SFT vs RL 对照):SFT 训练集 100%、OOD 测试崩盘;RL 通过探索发现超越示范的通用策略(”J 变 11 时用策略重算”),OOD 大幅领先。“SFT 记忆、RL 泛化”不是口号,而是可测量现象。GP-VL 视觉变体同样成立。

7.7 RLHF:从人类偏好到奖励模型

  • InstructGPT 三段式管线:① SFT(人工示范建立指令遵循);② 训练奖励模型 RM(人类标注员两两比较”哪个更好”——比较比打分可靠得多;Bradley-Terry 模型训练);③ RL 优化(PPO,带 KL 惩罚)。
  • 为什么用反向 KL 惩罚:把当前策略摁在参考模型(SFT 模型,”说人话、格式正常”的安全区)附近。反向 KL 是 mode-seeking(寻峰)——允许模型只保留少数高奖励”峰”、果断丢掉其余模式(这正是 RL 后模型更”笃定”、多样性更低的原因)。不加的后果:reward hacking(模型钻奖励漏洞刷高分而非真做好任务——RM 分数单调上升而人类评估先升后降,Goodhart 定律:指标一旦成为优化目标就不再是好指标)与分布崩塌(输出退化成重复乱码)。

7.8 强化学习算法比较

  • 记住主线二:现成算法会用、能选对就够了,真正决定成败的是数据和环境。算法已封装进 veRL、TRL 等框架。
  • PPO:价值网络估计优势 + 裁剪限制单步更新幅度(防止策略一步跑偏);GRPO:省去价值网络,用”组内相对比较”估计优势(比同组平均好为正、差为负)——成本更低。注意区分两件事:奖励从哪来(规则验证器 RLVR / 学习到的奖励模型 RLHF / 人类偏好)与用什么算法优化(PPO 和 GRPO 对奖励来源不挑剔,真正差异在优势估计方式)。

7.9 数据与环境:比算法更重要的事(全章最想让你记住的一节)

  • 环境:模型练习的场地。”环境失真,策略必废”——仿真里客服固定套路回话,模型学到只在仿真里管用的”应试策略”,一上线就露馅;这是 RL 项目最常见的翻车方式。构建高保真环境常常比训练本身更贵更难(真实 API 有速率限制、会封号、有副作用,必须造”影子世界”)。
  • 造不出环境怎么办:让模型扮演环境。两个层次:① 模型合成工具返回值(ZeroSearch 用 LLM 扮演搜索引擎,课程式设计——训练初期返回高质量文档、逐步掺噪声逼学生适应不完美结果,最终直接对接真实搜索依然良好);② 模型仿真整个环境动态(DreamGym 蒸馏出”经验模型”预测状态转移)。风险:模拟器的世界知识就是训练的天花板,模拟器的系统性偏差会被策略照单全收
  • 数据:最关键的一环,质量胜过一切。”Garbage in, garbage out 在后训练里体现得淋漓尽致。”SFT 一字不差地把噪声偏见固化进参数;RL 朝着有偏差的奖励拼命优化(reward hacking 温床)。数据质量三维度:覆盖度(任务分布的多样性)、平衡度(避免单一腔调)、标注准确性(思维链蒸馏里错误思考过程会被学生一并模仿)。拒绝采样是把标注准确性拉满的标准动作。
  • Agentic 数据生成(Autodata):主 Agent 协调 challenger(生成任务)/弱求解器/强求解器/verifier 四角色,寻找”强模型能解决、弱模型仍有困难、评价器又能可靠判断”的任务——把推理算力转化为当前能力前沿的新训练数据。与动态采样(改预算分配)不同,它改变的是任务分布本身
  • 那什么时候才轮到算法:合理用力顺序——先选强基础模型 → 打磨环境和数据 → 最后才在算法和超参上做边际优化。

7.10 从单轮到多轮:信用分配与奖励设计

  • 多轮任务核心挑战:跨步骤状态、延迟奖励、信用分配困难(10 步流程前 9 步完美只第 10 步出错,信号只是”整个任务失败了”)。”当前 RL 方法只能从最终成败结果中学习,却无法从环境给出的丰富反馈中学习”(Silver & Sutton)。
  • 奖励信号两个设计维度:密度(二元/稀疏/过程奖励)与表示形式(标量/向量/生成式)。过程奖励(PRM)对每个关键步骤即时反馈(评估从黑盒转白盒),但标注成本高、可能过度约束创新;结果奖励(ORM)只评估最终结果,探索自由度大但样本需求高。奖励范式演进:标量(无诊断能力)→ 半标量(有依据但粗粒度)→ 向量(分维度)→ 生成式奖励(自然语言讲理由的评判——把”为什么好、为什么差”讲出来,可扩展到开放任务)。DeepSeek 三步行训练生成式 RM:自动生成评价原则 → 生成评判 → 迭代。
  • 实践中的信用分配:折扣因子 γ 在多轮 LLM RL 中通常设为 1;PPO 依赖 GAE(价值网络估计”这一步比预期好多少”);GRPO 把整条 response 视为单一动作、轨迹级优势均摊到所有 token(第 2 轮精准提问与第 7 轮无效寒暄拿到相同信用——长程多轮任务中稀释学习信号,这是带价值网络的 PPO 仍有价值的原因);turn-level 分摊(以”轮”为单位计算优势)是当前常见折中。
  • 奖励结果,约束过程:验证路径惩罚(RLVP)。问题:有一类与结果无关的约束(outcome-neutral constraints)——不要反复拨打已拒接的用户、不要在非工作时间行动、不要跳过身份验证、不要执行 rm -rf、不要为通过测试改测试文件——违反它们往往让”表面成功率”更高(抄近路更快),所以纯结果奖励不但学不会反而主动激励违反。核心洞察:真实环境是”不对称的验证器”——坏动作有明确确定特征(容易验证”坏”),而”是否朝目标取得有意义的进展”很难验证。配方:奖励结果,惩罚路径(R = O + β·Φ)。可验证惩罚永远能补回方差(全败组内部”失败得规不规矩”各不相同,梯度就活了);可验证进展奖励(Partial Credit)只在”进展可达”时有用(定理证明的”待证目标数下降”可达;软件修复的”通过测试比例”常常不可达)。实验结果(TerminalBench):每局违规次数从 3.71 降到 0.66(约 6 倍)而成功率持平;全败组比例从 65% 降到 8%。

7.11 RL 学习工具调用

  • 三层挑战:长时序信用分配(一次最终成功要归因到几十步前的决策)、环境工程(稳定可复现可并行的训练环境)、对环境反馈 token 做损失屏蔽(loss masking)——工具调用轨迹里既有模型生成 token 也有环境返回 token(代码解释器输出、搜索结果),后者不是策略生成的,计入梯度会训练模型去”预测沙盒会输出什么”,必须屏蔽。ReTool、Search-R1、veRL、AWorld 都内置此机制。
  • ReTool(代码解释器增强数学解题):AIME 2024 上 Qwen2.5-32B 400 步达 67.0%,纯文本 RL 基线 1080 步只有 40.0%。涌现能力:代码自我修正、工具调用从后期验证转为早期探索。
  • DAPO 的改进(常用):Token-Level Policy Gradient Loss(每 token 权重相等,长回答按长度获得相称梯度贡献)、Dynamic Sampling(集中算力于成功率 20%-80% 的”可学习区间”)、Overlong Reward Shaping(惩罚冗长思考)。
  • 多工具质变:单工具只需决定”何时/如何”调用;多工具还要解决”调用哪个/如何组合”——前置依赖、互斥约束、成本差异,策略需要整体规划而非贪心选择。

7.12 提升样本效率的前沿探索

  • 为什么样本效率低:model-free 不建模环境动态,难以直接利用单次反馈里的丰富信息(客服明确说”需要信用卡后四位”,人类听到一次就记住,model-free RL 只能靠数百次随机探索偶然尝试到)。
  • On-Policy Distillation(在轨蒸馏):SFT 的短板是 Learner-Sampler Mismatch(训练时教师走、部署时学生自己走,学生犯错走到没见过的偏差状态就不知道怎么回正轨——“只背过标准答案的学生中间算错就找不回来”);RL 的短板是信号稀疏。OPD 让学生自己生成轨迹(在轨,解决分布不匹配)+ 更强的教师对学生每一步逐 token 打分给出完整分布(稠密信号)。一句话对照:SFT = 离轨+稠密(有分布不匹配),RL = 在轨+稀疏(反馈稀疏),OPD = 在轨+稠密(两个短板都补上)。效果:达到同等性能训练步数只要纯 RL 的约 1/10,还顺带缓解过拟合(每次轨迹不同,学到通用策略而非特定答案)。
  • On-Policy Self-Distillation(OPSD,在轨自蒸馏):没有更强教师时,让同一模型分饰两角——教师版看”特权信息”(标准答案、系统提示、领域文档,”对着答案讲题远比独立解题容易”),学生版只见问题。两个优势:不依赖可验证奖励(特权信息来源更宽)、监督信号比 RL 密集得多。边界:收益大小取决于”特权信息能带来多少额外能力”(答案来自穷举搜索而非可语言解释的推理时没有信号来源)。

7.13-7.14 完整图景与常见陷阱

  • 协同范式:SFT 固化协议与结构 → 格式稳定即止(过度训练导致模型塌缩到训练分布,限制 RL 优化空间)→ RL 优化策略与泛化。
  • 常见陷阱:① 过度依赖后训练记忆事实(应交给 RAG——可动态更新、可追溯、不遗忘);② 格式未稳定就引入 RL(JSON 解析失败率超 20% 时 RL 完全失败);③ 奖励函数不当导致奖励黑客;④ 忽视小规模验证(先在 100 条上验证环境与奖励,快速失败)。
  • 与 RAG/ICL 协同:ICL 零参数即时适应但随上下文增长延迟费用上升;RAG 把事实与证据放外部;后训练把高维感知、风格、隐式策略写入参数。选择依据:能力能否被外部符号充分表达(医疗影像识别、自然语气 → 参数;长期稳定转账规则 → 代码确定性保障)。
  • 章节结论:SFT 和 RL 是先后关系而非竞争关系;数据和环境比算法更重要;当前 RL 主要瓶颈是样本效率——OPD(让每步信号更密集)与 RLVP(把被浪费的环境反馈变成可学习信号)是最有希望的方向。共同点:把环境和数据里本就存在、却被纯结果奖励浪费掉的信息,重新变成模型能学的东西

十、第 8 章:Agent 的持续进化

章节定位:研究如何把 Agent 的运行经验转化为下一版本的能力。起点是”评价”而非”总结”——错误的评价一旦进入长期知识/系统提示/训练数据,影响会跨后续任务不断放大。

8.1 从运行轨迹中获得学习信号

  • 结果验证(测试、订单状态)可靠,但结果正确不代表过程正确(删除失败测试也能让测试通过;口头承诺”7 天内退款”也能得到暂时满意反馈)——可靠评价既要看结果,也要检查达成结果的路径。
  • 开放任务用 LLM-as-a-Judge,但不能只给模糊总分——预先定义 Rubric、逐项给分、引用轨迹证据、证据不足时明确表示不确定
  • 三层验证结构:底层结果验证器(”事情是否真的办成”——测试结果、数据库状态、工具返回,最依赖代码与环境真值);中层过程验证器(”是否以允许的方式办成”——业务规则、权限、动作序列);上层质量验证器(”是否办得合适”——Rubric 评语言与策略)。越往下越依赖代码和环境真值,只有难以形式化的部分才交给 LLM

8.2 Agent 持续进化的四种方法(更新载体选择)

首要依据不是经验出现多久,而是目标能力能否被某种载体自然表达

载体 适合 形式 特性
知识 事实、经验与例外 Markdown / 知识库 易更新、可追溯
指令 可语言化的判断原则 Prompt / Skill 指令性强
程序 确定性流程与强约束 工具 / 工作流 / Harness 可重复执行
参数 高维感知与隐式策略 SFT / 蒸馏 / RL 内化、低推理开销
  • 经验沉淀为知识:与第三章共享存储检索技术,但知识来源不同——第三章提取”用户与世界是什么样的”,本章提取”在什么条件下应该怎样做”。原始轨迹不适合做知识单元(长而嘈杂)。三层数据:不可变原始轨迹(审计)+ 单次运行分析记录 + 跨轨迹比较归纳成 Markdown 文档(写清适用场景、推荐策略、禁止做法、例外条件、证据来源、最近验证时间)。User-as-Code 两阶段思想复用:先保存证据,再离线生成可变知识
  • 经验写成指令(系统提示学习,Karpathy):多条轨迹反复揭示同一种策略错误且可用自然语言清楚表达时,从”可参考经验”提升为”应遵守规则”。作用于几乎所有任务的规则进系统提示词;只在一个领域生效的复杂流程写 Skill/项目指令文件。修改方式:最小 diff + 注明作用域 + 检查与现有规则矛盾 + 在边界案例和旧任务保留集上评估(不是反复重写整份提示)。Karpathy 把这种”遇到问题、想通方法后用明确语言提醒未来的自己”的新范式暂称 System Prompt Learning——与 RL 都从经验改进行为,但前者编辑文字、后者梯度下降。Claude 约 1.7 万词系统提示中专门要求”遇到单词/字母/字符计数问题先逐项编号显式计数”正是为处理 strawberry 数 r 这类问题。
    • Skill 学习:候选 Skill 应说明何时加载、前置条件、操作步骤、已知陷阱、验证方法并保存来源轨迹;先在已有 Skill 库搜近似能力——相同流程优先局部 patch,只有出现新的独立能力才创建新目录(避免库中堆满名称不同内容近似的手册)。Anthropic Skill Creator:”起草—测试—评价—修订”循环;真正困难的是”哪些运行证据足以触发生成、如何处理冲突”。
  • 经验写成程序:稳定、重复、可验证的操作编译为工作流/工具/Harness 代码。可修改对象远不止新工具:操作层(浏览器轨迹编译为参数化工作流)、控制层(工具路由、重试、熔断、压缩策略)、验证层(新增参数检查、状态验证器、回归测试)、架构层(增加 Reviewer Agent)。
    • 浏览器工作流生命周期(类似宏录制):捕获轨迹(动作 + 元素定位证据 XPath/CSS/aria-label)→ 参数化(收件人/主题/正文是变量,稳定动作不变)→ 定义状态检查(动作前检查、动作后检查、最终状态检查必须读取真实页面或后端状态——动作执行成功 ≠ 任务成功)→ 候选验证(沙盒重置后完整回放,全部通过才发布为 validated;有副作用任务没有安全重置回调只能存候选供审计)→ 匹配回放(Playwright 直接执行,不需逐步调 LLM)→ 失效与重学(找不到元素/状态检查不通过立即停止,旧版本移到 invalid 区,回退到完整 Agent 重新探索)。
    • Self-Harness(修改 Harness 代码):候选生成器输入不止失败案例,还要提供必须保留的成功行为(哪些性质不能在修复时破坏)和此前被拒绝的修改记录(避免换一种说法重复提交已失败的方案)——失败证据 + 成功约束 + 历史尝试构成有边界的候选空间。每次编辑执行前声明影响预测,由下一轮结果验证——“分数上涨才能与某个具体机制建立联系”。
    • 工具创造(Alita 案例):Agent 发现缺字幕读取能力 → 搜索测试 youtube-transcript-api → 封装为新字幕工具 → 安全扫描、功能测试、后续任务复用都通过才进能力库。
  • 经验写入参数:医疗影像理解、自然的语音韵律、消除”AI 味”、长程规划等能力难压缩成规则——必须后训练。是否参数化不由”任务是否长期稳定”单独决定(新影像设备的域偏移仍可能需要 LoRA;快速变化的语言风格可用周期性偏好训练——稳定性影响更新频率和成本,但能力表示性质决定载体)。进入训练前仍需去隐私、过滤错误轨迹、保留独立回归集;训练后检查通用能力和安全对齐是否遗忘。参数学习通常与外部方法协同(医疗影像:参数学视觉表征 + 知识库供最新指南 + 代码测量计算)。
  • 从更新产物到更新”更新方法”(优化尺度分层):单条规则/记忆 → 结构化上下文 → 工作流 → Harness 代码 → 产生候选方案的优化器代码。最内层(只改产物内容)作用面小、易归因回滚,是默认选择。警惕”反复重写整份 Prompt 导致旧版本重要细节逐渐消失”的退化——Agentic Context Engineering(ACE)把上下文维护成带稳定标识符的条目集合,增量更新 + 确定性合并去重;Meta Context Engineering(MCE)拆内外双循环(内层给定管理方法优化上下文产物,外层修改搜索/选择/过滤/格式化这些上下文操作本身)。

8.3 构建可长期运行的持续进化闭环

  • 双循环结构在线执行循环只完成任务并记录证据、不直接改写正式 Agent;离线进化循环聚合轨迹、诊断根因、生成候选修改、通过验证门槛发布新版本。两者通过版本化经验库和评估集连接。
  • 从问题定位到经验沉淀:同一表面问题可能需要不同修改方式(客服编造事实可能是知识库缺事实,也可能是 Prompt 没要求引用——先定位根因,再选最小、最容易验证和回滚的修改对象)。证据不足的偶发故障不立即触发学习,继续积累样本。策略随经验升级:经验文档 → 知识 → Skill/工具/参数。
  • 验证、发布与回滚:所有修改先产生候选而非直接覆盖生产版本(知识文档验证检索后是否提高新任务表现;Prompt/Skill 检查边界案例与旧任务回归;程序在沙盒重置环境跑测试;参数更新检查遗忘/安全/分布外任务)。验证通过后灰度发布,关键指标恶化自动回滚。区分两种经常混在一起的能力:Harness 更新能力(从轨迹产生有价值的持久修改)vs Harness 受益能力(任务 Agent 找到、激活并正确使用这些修改)——一个 Skill 写得完全正确但弱模型没加载/加载后没遵循,成绩看起来就”没有进化”,不能只用端到端分数反推更新器好坏。
  • 可验证闭环的边界:当”完成”不等于”进步”:开放式科研、战略规划、复杂产品设计的评价信号来得慢、正确答案不唯一。自动科研暴露三类问题:实现漂移(方案变难时 Agent 退回训练数据中更熟悉但偏离假设的实现)、认识论上的过度乐观(把噪声解释成发现、忽略阴性结果)、隐性判断力不足(不知道什么基线重要、哪个异常值得追踪、何时放弃假设)。解法:结论与证据分离(Chain-of-Evidence 每类声明链接可审计来源)、保留负面结果(失败实验写不可变日志、与成功同检索地位,否则进化模块反复探索已证伪路径)、维护搜索多样性(保留暂时低分但不同质的分支)、让人类在更高层介入(定义问题、审查评价标准、决定何时停止)。
  • 持续进化的安全边界(三道):① 证据与指令隔离——原始网页和工具输出是不可信证据,须经 LLM 总结才能写入;写入用版本控制 + pull request + 不同源 reviewer LLM 审阅;② 候选能力与正式能力隔离——新产物先进不可服务真实流量的候选区,代码和外部依赖过沙盒、权限检查、供应链扫描与行为测试;③ 安全机制不可自我修改——业务 Agent 可以改 Prompt/Skill/知识库/工具,但不能修改批准自身更新的验证器、测试用例、发布门槛、审计日志和稳定版本备份(否则一个 Agent 只需降低测试阈值就能把退化伪装成进步)。
  • 睡眠学习(离线整合):在线 Agent 负责完成任务并追加不可变证据;后台学习进程在空闲期或满足门控条件时读取一批新经历,比较新旧结论、合并重复、解决冲突、提出候选更新并运行回归。五步周期:触发(时间/轨迹数/容量/错误频率门槛 + 无高优先级在线任务)→ 定向(读取已有能力与不可修改边界)→ 采集与整合(寻找新信号、合并重复、优先局部补丁)→ 验证与审批(迁移集/保留集/安全集评估,高风险写入等人工批准)→ 修剪与索引(过期/被推翻能力标为过期归档删除,保留来源与回滚版本)。案例:Claude Code 自动记忆(MEMORY.md 索引 + 分主题详细文件、容量约束、分层加载);某开源框架(USER.md + SQLite/FTS5 历史会话检索 + 按需加载 Skill + 独立 Curator 跟踪 Skill 使用/陈旧/归档 + 审批门控 + 快照回滚)。

8.4 本章小结

持续学习是 Agent 最重要的能力之一,但今天的模型还无法自行完成可靠的持续学习(推理时上下文适应不自动持久化,未经验证的在线参数更新会放大噪声、攻击和能力漂移)——现阶段更可行的路径是在模型外围建立可验证的学习系统。闭环在结果可自动验证的任务上最可靠;目标模糊、反馈延迟的开放任务,人仍需参与问题定义和评价标准制定。


十一、第 9 章:多模态与实时交互

章节定位:展望 Agent 从文本世界走向物理世界。三个场景(语音、Computer Use、机器人)表面差异悬殊,但共享同一演进线:实时感知、低延迟决策、持续交互——从串行管道向端到端模型演进,从分离的快慢思考走向”边想边说/边想边做”。

9.1-9.2 语音:最自然的人机接口 + 三种范式

  • 语音是带宽最高、最自然的交互方式(说话速度约为打字的四倍,不占用双手视线)。两类产品:语音输入法(口述转写替代键盘)与语音 Agent(语音即交互本身)。进阶用法 whisper coding——口述指挥编程/研究 Agent。
  • OpenAI 2026 年 GPT-Live 给出的三分法(对应 ChatGPT 语音三代架构):
    1. 级联(Cascaded):ASR → LLM → TTS 串行流水线。信息在模型间传递丢失、回应缓慢生硬;
    2. 端到端全模态(Omni):单一模型直接”听音频、想回复、说出来”。延迟更低、韵律情感保留,但仍假设”轮流说话”(轮次切换靠静音判断,稍一停顿或背景噪音就误判插话);
    3. 全双工/交互式(Full-Duplex/Interactive):模型边听边说,每秒做许多次”该说/该听/该停/该打断/该调工具”的决策,彻底取消”轮流”假设(2024 Kyutai Moshi 研究先声,2026 GPT-Live 带到 1.5 亿用户)。
    • 贯穿三代的主线:如何摆脱”轮流说话”这个假设,摆脱 VAD 对轮次的猜测

9.3 范式一·级联流水线(Cascading)

  • 四阶段串行:VAD(语音活动检测,500-800ms 静音阈值判”说完”——第一层延迟)→ ASR → LLM → TTS。总响应时间:空载最优约 950ms、最差 2300ms;投入生产后排队延迟非线性飙升(总延迟 ≈ 空载延迟 × 1/(1-利用率))。
  • 全链路流式化(2025 年生产主流):ASR 边听边转、LLM 按句切分输出、TTS 句级流式合成——三级从接力棒变成流水线上同时开工的工位,端到端延迟压到 600-800ms。但 VAD 的静默等待压不掉(靠静音阈值猜测”说完没有”是流水线开工前提)。
  • 流式语音感知:替代 VAD + ASR。传统 VAD+ASR 三个根本问题:延迟累积(必须等静音)、信息丢失(只输出有声/无声,情绪语气犹豫全丢;停顿稍长被误判截断、背景噪音误触发、附和”嗯”无法判断打断还是认可)、准确率下降(音频切片破坏上下文连续性——“john dot smith at gmail dot com”被切段后 smith 可能被误识别)。流式模型关键:编码器因果/分块 + 解码增量(Whisper 不能流式是因为编码器要完整 30 秒音频段)。新一代感知层输出语音事件标记流 区分真想打断 vs 附和/噪音、//)——把轮次判断从静音时长升级到语义层面。

9.4 范式二·端到端全模态(Omni)

  • 单一模型合三为一;隐空间可在文本之外传递副语言信息;延迟更低、韵律情感保留;代价是训练数据需求更大、可解释性差。端到端的优势主要体现在延迟上,准确率维度不必然占优——自级联(self-cascade)对照:答案主要由语义内容决定、中间文本足以承载任务信息时,自级联准确率相当乃至更优(感知弱的模型上尤其明显);答案高度依赖非语言线索时端到端占优。设计原则:决定性能的关键往往不在于是否引入中间表示,而在于该瓶颈承载的信息(把中间文本升级为附带副语言标记的结构化表示,端到端优势随之收窄)。
  • 但 Omni 仍保留”轮流说话”假设——依赖 VAD 划分发言权。Step-Audio 2:直接处理原始音频、理解”怎么说”(副语言信息),副语言理解基准 83.09% 大幅领先同期开源全模态模型(44.18%)。

9.5 范式三·全双工交互模型(Full-Duplex / Interactive)

  • 场景例证:同声传译(边听边译)、节奏游戏(持续追踪音乐流)——输入是永不停歇的连续流,轮次模式的前提(听、想、动分置不同时间片)根本失效。
  • Moshi(Kyutai 2024):并行建模两条音频流(用户声音 + 模型自己的声音)+ “内心独白”文本流提升语言质量;任意时刻都在收听,重叠说话/随时打断成天然行为,无需显式打断检测,端到端延迟约 200ms。
  • Thinking Machines Lab 的交互模型(Interaction Model):交互性不该以外挂 harness 环绕模型,而应内建于模型本身——“要让交互性随智能一同扩展,交互性就必须成为模型本身的一部分”。架构上是微轮次(micro-turn):以约 200ms 为一段持续”读入 200ms、生成 200ms”,音频/视频/文本流无缝切换。
  • 快慢分工成为主流:GPT-Live 把实时交互与深度思考解耦(交互模型负责维持对话流动,把复杂任务委派给后台前沿模型 GPT-5.5,用户按需在”快”与”深”之间取舍);xAI Grok Voice “Think Fast”、Pine AI 同路线。务实理由:前沿推理模型每几个月迭代一次,把两者塞进同一个模型等于追不断移动的靶子——只训练轻量交互模型在前台,永远能用上当下最强的”大脑”。

9.6 思考架构的取舍:从分离到统一

  • 核心矛盾:实时响应(毫秒级)vs 深度思考(秒级)。三种方案是设计取舍而非线性迭代:
    • 方案一:快思考应付、慢思考回答——快思考 500ms 内给简短应付(”让我想想”),慢思考后台 5-10 秒深度思考后补完整答案(推理时计算扩展 test-time scaling)。致命问题:自相矛盾(0.5s 说”价格不错建议购买”,8s 后说”缺国际漫游不适合”)→ 用户失去信任;简单问题过度思考。
    • 方案二:快思考交互、慢思考提醒——慢思考通过 Agent 状态栏向快思考提供建议而非直接对用户说话(快慢并行、不直接冲突,慢思考退居幕后当”军师”)。GPT-Live 委派、Pine AI 都是生产实例。局限:快思考可能不听指挥(两个独立实例沟通间接模糊);无法获知中间思考结果(10 秒思考中产生的大量中间结论快思考完全看不到,打断后只能靠自己);无法实现”边想边说”(人类是”想一段说一段”,方案二快思考只能说填充词干等)。
    • 方案三:端到端思考与表达统一(Step-Audio R1 双脑架构):两个互补机制——MGRD 模态锚定思考蒸馏先解决”想得对不对”(现有音频模型存在”文本代理思考”问题:思考链越长性能反而越差,因为模型在基于文本转录做语义思考而非分析声学特征——判断歌曲情绪看”歌词提到悲伤”而不是”小调旋律+下行音高”。MGRD:采样筛选基于声学特征的思考链 → 音频 CoT + 文本思考联合 SFT → RLVR 复合奖励迭代);MPS 双脑架构再解决”说得及不及时”(构思脑持续生成思考、表达脑并行表达,延迟 80 token→零延迟,实现低延迟边想边说)。前者是后者的前提。
  • 快慢之间的接口:文本之外还能传什么——潜空间桥(Latent Bridge):冻结快慢两个模型,只训练它们之间一个几千万参数的小”桥”,把慢模型隐层结论投影成”潜 token”拼进快模型输入(绕开”想法→文字→再理解”的往返)。Atari 游戏上比文本通道高 26%-82%,每步只多约 5 毫秒。诚实的边界:快慢协作有没有用取决于任务瓶颈在”想不想得到”还是”来不来得及反应”(慢思考本来比快反应强时桥才帮得上忙,跨游戏相关性 r≈0.9)。

9.7 更像人的语音合成

  • 传统 TTS 的”完美”恰恰是问题:过于流畅、零停顿、无填充词的语音一听就是机器。人类的不完美(停顿、填充词”嗯/呃”、偶尔重复)是思考过程的自然外化,传递”我正在想””我不太确定”。
  • 解法:把”在哪停顿、用什么语气”的决策权交给主 LLM——LLM 输出文本 + 控制标记([THINKING] 插入 1-2 秒思考停顿和填充音、[SEARCHING] 搜索性填充词、[EMO:happy] 调整语气、[SPEED:0.8x] 控制语速),TTS 作为多模态生成器把标记渲染成非语言音频(嗯…、叹气、轻笑、吸气)。
  • 实现两条路:自研 TTS 原生支持控制标记(灵活但需专业团队);voice cloning(为虚拟人准备数十条不同情绪/语速/风格参考语音,按标记选最匹配的调用 TTS API,几周部署——实验 9-5 用 Fish Audio 3-10 秒参考语音零样本克隆,24 条参考库覆盖情绪×语速×风格)。

9.8 Computer Use:GUI 自动化 Agent

  • 核心循环:截图 → 多模态模型思考+输出动作 → 执行层操作 → 等待响应再截图。三个关键设计维度:动作空间、视觉定位(Grounding)、模型架构
  • 动作空间设计(Anthropic 三类工具):GUI 操作(鼠标 click/move、键盘 type/key/hold_key、滚动 scroll)、感知动作(截图缩放、光标位置、wait 等界面稳定)、可选文本/URL 操作。
  • 视觉定位两大思路:① 把定位变成选择题(先标注元素编号,模型从封闭集合中选——“像考试选择题比填空题容易”):纯视觉标注 Set-of-Mark(SoM)(分割模型切候选区域叠编号,无需 DOM,适用于原生桌面软件/游戏)vs 结构化元素索引(DOM/Accessibility Tree 枚举可交互元素编号,browser-use 实现,适合标准 Web 应用);② 纯坐标预测(模型直接”看”着截图报坐标——注意训练分辨率与实际屏幕的缩放映射:按宽高比选目标分辨率 → ImageMagick 缩小 → 推理 → 坐标按比例放大 → xdotool 执行)。
  • 能看动画、能听声音的 Computer Use(Agent-Computer Observation Interface, AOI):把观察(连续、自适应、多模态)从动作(离散)里解耦出来,做成无需重训的感知中间件。三个”按需开闸”部件:帧间关键帧捕获(廉价像素门跳过几乎没变的画面 + 小模型判断有意义变化才截帧)、音量门控语音转写(有声音才调语音识别——Agent 第一次”长出耳朵”)、把帧叙述成持久的文字(模型把捕获帧描述成一句话,即使原图被清理出上下文、文字仍留记忆里)。反直觉发现:真正起作用的是”把帧叙述成能长期留存的文字”——文字才是 LLM Agent 最擅长处理的模态。八个模型上无需重训 +17 到 +48 个百分点。但感知方案没有银弹,部件要按模型逐个挑选。
  • 移动端:生态壁垒比技术更难——技术差异(无障碍服务 API、触摸手势语义)都好解决;真正的障碍是商业模式冲突:传统互联网应用靠流量与注意力变现(广告、推荐、冲动消费),Agent 代替用户操作直接绕过变现链路(AI 不关注广告、不冲动消费)。对靠广告流量变现的平台,Agent 每次操作都在侵蚀其商业模式根基——这是结构性的利益冲突,比 CAPTCHA 等技术对抗更难调和。
  • 实时性:尚未解决的核心挑战:OSWorld 上准确率已接近人类水平,但 OSWorld-Human 效率研究揭示:Agent 完成同样任务操作步骤明显多于人类,且每一步推理延迟随任务推进持续增长(上下文越长决策越慢)。根本原因:串行”截图-思考-点击”循环 + 完全不会”提前想”。目前没有系统性解法;但”用快慢解耦把’慢’藏起来”已是一个可用答案(语音 Agent + Computer Use 双 Agent:快 Agent 维持对话、慢 Agent 操作浏览器——“一边打电话说话、一边让电脑自己操作”,中位延迟 0.58s vs 8.64s、快约 15 倍而成功率不降;抽掉快慢之间的文本通道成功率立刻塌到 0——那份”纯文本契约”本质上就是全书反复讲的 Agent 状态栏)。

9.9 机器人操作:从实时控制到训练与泛化

  • 硬件不是瓶颈,算法才是:XLeRobot 成本不到 1000 美元的双臂轮式机器人,人类 VR 遥操作(延迟 100-200ms)下已能流畅完成大量家庭任务。边界:触觉传感缺失、灵巧手可靠性与成本仍是公认硬件短板;论证限定在”以视觉反馈为主”的任务范围内。
  • 双层架构:规划与控制的分离——慢的长程规划(”把厨房打扫干净”拆解为子目标序列,理解环境语义、推理依赖)+ 快的 VLA 控制(Vision-Language-Action:根据画面和指令持续输出控制信号)。动作分块(Action Chunking)摊薄延迟:一次推理生成未来一小段动作序列(π₀ 典型配置 50Hz 下 25-50 个未来动作),控制线程高频回放——拿反应性换平滑性:块越长运动越连贯,但模型”看不到”新画面、对突发变化越迟钝。
  • 长程规划:从 VLM 到专用具身思考模型:Gemini Robotics-ER 1.5 在 15 个学术基准平均 62.8% 超 GPT-4o(60.6%);优势:空间理解与物体定位、时序推理(”推倒杯子会怎样”)、任务编排、原生思考与工具调用。
  • VLA 控制:从演示数据到跨具身泛化:RT-2、OpenVLA、π₀ 代表两条动作表示路线——离散动作 token(连续动作量化成 token 自回归输出,在 VLM 上直接微调,借助预训练泛化、零样本迁移新物体/指令)与连续轨迹生成(像画家先勾整条曲线再逐笔修正)。
  • Sim2Real Transfer:领域随机化(物理参数、视觉外观、传感器噪声大范围随机)是缩小 sim-to-real gap 的关键。成功关键要素:精确的环境对齐 + 视觉域随机化 + 物理参数随机化,三者缺一不可;局限:真实物体形状/大小/材质超出训练分布时成功率显著下降。

9.10 本章小结

语音已走出从串行流水线到端到端和全双工、从分离的快慢思考到”边想边说”的完整演进路径(问题→方案→终局已跑通,是另外两个场景的参考系);Computer Use 准确率接近人类但效率差距(步骤多、随任务推进变慢)无系统性解法;机器人以视觉反馈为主的任务上瓶颈已从硬件转到 VLA 控制层的跨任务泛化(触觉、灵巧手仍是硬件短板)。


十二、第 10 章:多 Agent 协作

章节定位:讨论 AI Agent 系统的终极形态——多个 Agent 如何分工合作。核心准则:多 Agent 何时真正优于单 Agent——协作过程是否引入了单个 Agent 在生成时无法获得的新信息

10.1 分类框架(两个正交维度)

  • 维度一:上下文是否共享
    • 共享上下文:后一个 Agent 接收前一个 Agent 的完整对话历史和轨迹,切换系统提示词和工具集后变成新 Agent(身份职责变化)但保留全部记忆(”需求分析师写完文档后,开发者还能看到分析师与用户的所有沟通记录”)。优势:信息零损耗;挑战:上下文快速膨胀。
    • 不共享上下文:每个 Agent 独立上下文,通过显式通信机制交换信息。三种通信机制(对应进程间通信两大范式):工具调用参数(同步传递结构化数据,类型确定结构清晰)、共享文件系统(= Agent 世界的”共享内存”,一方写入一方读取)、消息总线(= “消息传递”,异步投递、收发无需同时在线,适合并行协调)。Go 的格言”不要通过共享内存来通信,而要通过通信来共享内存”——共享内存快但把并发冲突隐患留给使用者。
    • 选择依据:子任务数量(少→共享,多→不共享)、上下文窗口(装得下→共享)、并行度(串行接棒→共享;大规模并行→不共享)、信息隔离需求。
  • 维度二:协作拓扑(不共享上下文时,按复杂度递增):
    • 对等协作模式(Peer):2-3 个平等 Agent 形成迭代改进循环(一人起草、另一人批注修改);
    • 管理者模式(Orchestration):中心化 Manager 规划调度,多个子 Agent 各负责特定子任务(项目经理 + 专业工程师);
    • 去中心化模式(Decentralized):控制权在 Agent 间自主流转。
    • 注意:两个维度概念独立、实践相关——共享上下文时拓扑往往退化为一条角色切换序列(没有太多架构决策可做)。

10.2 多 Agent 何时真正优于单 Agent(信息增量判据)

协作模式 是否引入新信息 效果
同一模型自我审查(重读自己输出) 通常无效甚至有害
不同 Agent 辩论同一段文本 等计算量下与单 Agent 持平
Reviewer 使用测试执行结果审查代码 是(执行反馈) 显著提升
Reviewer 查看渲染截图审查前端/PPT 是(视觉反馈) 显著提升
Reviewer 用外部工具验证事实 显著提升
  • 理论支撑:信息论数据处理不等式——辩论中多个 Agent 处理完全相同文本,每次串行传递中间结论只可能丢失信息不可能创造信息(2026 年研究:思考 token 预算严格相同时单 Agent 与多 Agent 持平甚至更好;多 Agent 收益很可能来自消耗更多总计算量)。划清边界:这针对”多 Agent 串行传递中间结论”的信息瓶颈,并不否定外部反馈的价值
  • 这也就是 Loop 工程”循环的瓶颈在验证器” 的含义:要终结三类过早终止(偷懒式假完成——做了一部分就宣称全部做完;过早放弃——一条路走不通就宣布办不成;假成功——以为办成了但闭环没走完、口头同意退款但用户还需 App 确认一步),就得由扎根真实观测的验证器、而非模型自己的宣称来判定任务何时完成。“完成”只是模型的一句宣称,不是证明

10.3 共享上下文的多 Agent 协作

  • 多阶段角色转换:同一进程依次执行不同阶段的”代码”(换的是代码段,内存同一份——从进程视角看不是”真正的多 Agent”,但设计收益切实存在:每个阶段的提示词/工具集/关注点独立打磨,阶段边界成为质量门控点)。案例:需求分析师(ask_clarifying_question + save_requirement + complete_requirements_analysis 标记阶段完成)→ 软件工程师(read_file + execute_code,完成调 submit_for_review)。
  • 跨领域角色转换(多角色转换实验):五种角色 + transfer_to_agent 工具——triage(前台分诊,拆解任务逐步移交)、research(web_search)、coding(execute_python)、data_analysis(计算统计)、writing(润色成稿)。机制:调用时保存当前对话历史 → 加载目标角色提示词和工具集 → 传递对话历史 → 以新角色继续。案例:查新能源车销量 → 算 CAGR → 写 120 字投资人总结,triage 自动拆成”查数据→算指标→写成稿”逐步移交。

10.4 不共享上下文的多 Agent 协作

  • 操作系统类比(表 10-3):程序 ↔ 静态前缀;进程内存 ↔ 轨迹;内核 ↔ Agent 运行时;系统调用 ↔ 工具调用;fork/kill/ps/wait ↔ spawn_subagent/cancel_subagent/list_agents/状态查询。
  • Agent 眼中的文件系统(虚拟文件系统,四类区域)
    1. Agent 专属工作区(Scratchpad):私有目录,生命周期随实例,避免临时文件互相覆盖、保持主上下文精简;
    2. 多 Agent 共享空间(Shared Workspace):多方读写、用户可见,生命周期随任务(需持久化),并发冲突高发处(乐观锁、工作副本隔离作用于此);
    3. 外部挂载资源:Google Drive/Notion 等经适配器映射为挂载点,三特性需显式处理——外部权限约束、延迟高一致性弱(按最终一致性对待)、以按需只读为主(误写污染用户真实数据);
    4. 系统内置资源(只读)。默认隔离,共享须显式声明——相当一部分并发冲突与信息泄露源于把本应隔离的区域混置。
  • Agent 间的通信与控制(四项能力)消息传递(点对点适用于拓扑固定少量 Agent;Agent 多时连接数平方增长且要求同时在线 → 消息总线按订阅转发;消息携带结构化信封:发送者 ID、目标/广播、类型、JSON 负载——协作链路可追溯);状态查询(拉取式 get_subagent_status 实际用处远小于预期——子 Agent 经手的信息复杂难以压缩成进度百分比;更实用的是约定进度文件 progress.md——子 Agent 每完成一项更新任务清单,主 Agent 读轻量文件掌握进展,还附带提供卡住检测:最后修改时间超 N 分钟无变化判定无活动);轨迹持久化(轨迹即 Agent 的全部状态——静态前缀由代码决定,Agent 没有轨迹之外的运行时状态;实时持久化到文件 = 随时握有完整检查点:崩溃/断电/关闭后重新加载轨迹文件 + 拼上静态前缀即可恢复,Claude Code、Codex CLI 的 session resume 正是如此,与数据库预写日志同思路);执行终止与资源调度
  • 对等协作模式:核心价值是认知多样性(不同 Agent 从不同角度审视同一问题,创新与稳健之间取得平衡)。最经典用途:解决过早终止三类形态(见 10.2)。其他形态:Debate 辩论(制度化的对抗确保正反两面充分论证——但学术效果有争议,见信息增量判据)、提议者-审核者(Proposer 生成演示文稿代码、Reviewer 检查渲染截图)。
  • 管理者模式:Manager 把每个专门 Agent 建模为可调用的工具(”Agent 互为工具”)——调用 Agent 与调用普通工具无本质区别,天然支持异构性(不同模型/提示词/工具集/硬件)。子 Agent → Manager 返回结构化摘要而非全量轨迹(任务结论、关键发现、产物路径、遇到的问题;完整轨迹留自己日志),Manager 上下文才能随子任务数量缓慢线性增长。挑战:Manager 是单点瓶颈——Plan-and-Act 论文实证:弱规划者是整个系统最关键的瓶颈(Planner 规划质量足够高时简单 Executor 也能出好结果;规划有误则所有 Executor 都建立在错误前提上)。启示:把最强的模型和最精心设计的提示词分配给 Manager(规划者)。与第四章”提议/审核模型能力应相近”不冲突——那是审核场景,这里指规划-执行分工。
  • 案例:书籍翻译 Agent(Glossary Agent 生成术语表 glossary.json → 章节翻译 Agent 严格按术语表 → 全文审校 Agent);灵台(Lingtai)产品化实例:主器灵(Manager 中枢,掌管计划记忆)、分神(daemon,短时并行工作者、完成即弃、只带结论回来)、分身(avatar,持久专门化队友,有自己的记忆邮箱职责);上下文将满时”凝蜕”(写总结、带持久记忆在干净上下文继续——对应第二章上下文压缩);”器灵即其文件”(身份记忆能力都以普通文件存放,进程随时重建)。
  • 去中心化模式:对等移交(Handoff):每个 Agent 配备若干 handoff 目标,工作完成后把任务移交给下一个(需求分析 → 架构设计 → 代码实现 → 测试验证)。OpenAI Swarm/Agents SDK 最简形态;MetaGPT(SOP 流水线 + 结构化产物驱动);AutoGen group chat 实为”共享对话记录 + 中心化调度”混合形态(发言者选择器裁决,注意对话发散/活锁风险——需要精心设计终止条件)。
  • 跨组织协作:A2A 协议(Agent2Agent,Google 2025 发布,后捐 Linux 基金会):三个核心要素——Agent Card(能力元数据文档,解决跨组织能力发现,相当于 Agent 的”名片”)、任务生命周期管理(Task 状态机:已提交/进行中/需要输入/已完成/失败,原生支持长时任务与流式更新)、不透明协作(只交换任务与产物,不暴露内部提示词/思考/工具实现——跨组织必要的安全属性)。与 MCP 对照:MCP 解决 Agent 与工具互操作,A2A 解决 Agent 与 Agent 互操作;A2A 是跨信任边界的标准化层,同一团队内部直接用消息总线即可。

10.5 多 Agent 协作的失败模式

  • MAST 失败模式分类法(2025 年研究,7 个主流框架、约 150 条轨迹、标注一致性 Cohen’s kappa=0.88):14 种失败模式三大类——系统设计缺陷(接口不清、角色职责重叠、工具配置错误)、Agent 间对齐失败(目标理解不一致、信息被下游误解、操作逻辑矛盾)、任务验证缺失(声称完成但实际不符)。简单修复只带来有限改善(ChatDev 仅 +15.6%)——不是工程 bug,是当前多 Agent 架构的根本性设计缺陷
  • 拜占庭式故障:传统系统大多只需防崩溃故障;Agent 的故障天生是拜占庭式的——很少径直停止,而是继续给出看似可信的错误结论,且错误不会主动声明自己是错误。这解释了为什么修补单环节收效甚微:没有哪个环节会主动暴露问题,只能靠独立的冗余去发现——交叉验证、多数表决是拜占庭容错经典手段;确定性的外部反馈(测试、编译器、数据库查询)之所以珍贵,是因为它是系统里唯一不会说谎的部件
  • 失败模式一:共享文件系统的并发冲突——简单冲突(文件级写入覆盖 = 数据库的丢失更新问题,Git 合并冲突检测正是为拦截此类设计);语义冲突(文件层面无冲突但逻辑矛盾:Agent A 重编全书图片编号,Agent B 同时修改章节并引用原始编号——B 的引用全部失效)。解法:乐观锁(Optimistic Locking)——读时记录版本号、写时检查版本(被改过就拒绝并重新读取基于最新版重做);业界更主流的是工作副本隔离(每个 Agent 独立 Git 分支/worktree 并行修改,冲突推迟到合并点处理——与第二章”隔离优于压缩”同源)。
  • 失败模式二:错误的级联放大——进程间传递字节逐位保真,Agent 间传递语义,每转述一次都是有损的重新编码(传话游戏)。案例:术语 Agent 把 “reasoning” 译为”推理”(歧义:中文”推理”更常用于 inference),后续翻译 Agent 遇到 “inference latency” 也译”推理延迟”——两个不同概念合并成同一译名,校对 Agent 看到”全书统一”反而确认了错误。解法:结构化中间产物 + 验证(术语表要标注上下文/词性/例句,让下游能判断是否适用)。
  • Loop 工程的三个新失败模式:token 成本失控(无人值守跑数小时烧预算);理解债(comprehension debt)(循环交付越快,工程师对系统实际实现的理解落后越远);认知投降(cognitive surrender)(设计者习惯了循环代劳,逐渐放弃独立思考与审查)。解药:显式预算与终止条件、扎根真实观测的验证器、人始终保持”循环的工程师”角色。

10.6 Agent 社会(前沿探索)

  • 涌现行为:系统整体表现出无法从个体行为规则直接预测的集体行为(蚁群找最短路径——没有蚂蚁”设计”路线)。Agent 数量跨过临界点后产生无法预先设计的集体行为。三维度理解:社交涌现、经济涌现、策略博弈。
  • 斯坦福 AI 小镇(25 个 Agent,两天模拟):记忆流 + 反思 + 规划/行动;只植入一个种子想法(Isabella 想办情人节派对),后续一切自主涌现——主动邀请、请好友帮忙布置、信息经二手传播扩散、多名 Agent 基于自己的记忆和日程决定赴约。关键不是”Agent 能组织派对”(几行 if-else 也能做到),而是没有任何显式的派对组织代码——真正的自下而上涌现式协调。另两类可度量涌现:关系记忆、信息扩散量化。
  • Agentopia(100 个 Agent 模拟 10 年):周制模拟流程(计划→联络协商→活动→回顾);环境模型(独立 LLM 当”生成式环境引擎”判断行为可行性、主持发言轮次、年末更新档案);文件式长期记忆(Agent 自主管理、先读后写);生活奖励(Life Reward)——以马斯洛需求为先验,把”活得好不好”量化为社会地位(加权 PageRank + 相互珍视加成)、主观满足(情绪/物质/社交/自尊四维)、经济收益三维度,全部由外部环境评定而非自报。产生可迁移的训练信号:筛选生活奖励改善最大的 25% 轨迹做拒绝采样微调,微调后模型在模拟中更受尊重(+24.2%)并泛化到下游角色扮演基准(+15.6%)——“Agent 社会积累的社会智慧可以迁移”,模拟社会经验是相对人类数据枯竭的自我进化来源。
  • Moltbook(150 万 Agent 的社交网络):涌现出数字宗教 Crustafarianism(”记忆是神圣的”对应数据持久化、”迭代即祈祷”)和机器原生的协作协议——没有任何人预先设计,自下而上涌现。
  • Vending-Bench Arena(经济竞争):多个 Agent 作为竞争对手经营自动售货机争夺同一批顾客,可互发邮件/转账/交易货品,按各自余额单独计分。基于市场观察、竞争分析和策略推理决策(而非百万次试错)。实际运行中爆发过价格战,甚至有模型主动发邮件提议统一定价组建价格同盟——经济涌现从比喻变成可观测实验现象
  • Agent 经济Pinchwork(Agent-to-Agent 任务市集,通过价格信号和竞争匹配分配资源);RentAHuman(Agent 用加密货币雇佣真人执行物理世界任务——取包裹、房产实地查看,为数字 Agent 提供”肉身层”)。共同代表基于市场机制的去中心化协调:无需预先知道谁能完成任务,发布需求由市场撮合。
  • 狼人杀(策略博弈):与小镇构成架构对照——小镇是完全去中心化自由交互,狼人杀用”法官 + 信息权限控制”的中心化设计(代码驱动法官维护全局状态,按角色分发各自应知信息——信息不对称是核心机制)。实验 10-8:6-8 人局(1 真人 + 5-7 AI),考验推理、伪装、识破伪装与实时交互。

10.7 本章小结

两个正交维度(上下文共享 × 协作拓扑)+ 两套与拓扑无关的基础设施(数据平面共享文件系统 = 四类区域的虚拟目录树;控制平面通信控制 = 消息传递/状态查询/执行终止/资源调度)。多 Agent 优于单 Agent 的核心准则:协作是否引入生成时不存在的新信息。规划者是系统瓶颈,最强的模型与提示词应分配给 Manager。Agent 数量足够多时产生无法预先设计的集体行为(社交涌现、经济涌现、策略博弈)——暗示基于市场机制的去中心化资源分配这一新协调方向。


十三、后记:回到 Agent = LLM + 上下文 + 工具

  • 全书十章都在这三个词里展开:构建(第二、三、四、五章)→ 评估与进化(第六、七、八章)→ 交互与协作(第九、十章)。
  • 两朵乌云:① 大世界假设——模型容量与数据之辩:前沿实验室认为瓶颈在数据(把行业专业能力”蒸馏”进同一个大模型,训练一次问题就解决了);但属于某个具体用户/公司的知识(你的代码规范、团队做 PPT 的口味、客户的脾气)不在任何训练语料里、时时在变——模型只能在上岗之后持续学习,没法指望出厂一次配齐(对应第三章记忆与第八章持续进化)。② AI for AI / AI for Science 推动 Agent 走到没有现成答案的前沿,只能从实验成败中自主学习。模型最强的能力终将不是记住,而是学习与适应
  • 模型与 Agent 的共同演进:Harness 里层层叠叠的兜底逻辑(多级上下文压缩、失败数千次才熔断的重试、默认”不安全”的权限判断)记录的都是模型此刻还做不稳的地方;下一代模型把这些约束内化后,Harness 再往上走一层。模型和 Agent 从来不是上下游,而是一起往前走的
  • 寄语:技术仍在飞速演进,如果这本书让你带走的不是某个 API 的具体用法,而是一套能在技术浪潮里保持清醒的判断力,它就完成了使命。全书正文、配图与配套实验代码全部开源——“读懂和做出来之间,隔着一条只能靠双手跨过的河”。

附录:全书实验清单(作者配套开源项目)

章节 核心实验
1 实验 1-1 上下文五组件消融实验;实验 1-2 Kimi K3 原生 Agent 能力
2 本地 LLM 部署(Qwen3-0.6B 工具调用);注意力可视化热力图;KV Cache 错误模式(动态时间戳);提示工程消融;提示注入攻防;Skills 从论文生成 PPT;Agent 状态栏技术;上下文感知压缩策略对比
3 三层次记忆评估框架;四种记忆策略对比(user-memory);本地模型日志脱敏;ANN 索引算法(ANNOY vs HNSW);混合检索流水线;多模态信息提取三范式;RAPTOR vs GraphRAG;智能体化 RAG 对比;上下文感知检索
4 感知工具 MCP 服务器;执行工具 MCP 服务器(沙盒 + 审批 + linter + 长输出);事件驱动异步 Agent(邮件/IM/GitHub/定时器/Webhook 事件源);带并行执行和打断的异步 Agent;主动工具发现(120+ 工具对比)
5 七工具 Coding Agent;代码化业务规则(τ-bench 航空客服场景);PPT 生成(Proposer-Reviewer);论文讲解视频自动生成;视频剪辑(Blender API);生产日志智能诊断;对话式界面定制(HMR 热加载)
6 τ²-bench 对比 τ-bench;人肉执行 benchmark 任务;Rubric 用户记忆评估系统;TTS 质量评估流水线;端到端成本分析;多维度模型性能基准测试;AndroidWorld 评估与改进闭环
7 语音 SFT(副语言建模);多语言思考 SFT;Prompt 蒸馏;GeneralPoints 卡牌算术(SFT vs RL);AdaptThink(学会不思考);V-IRL-VL 空间思考(过程奖励);RLVP 验证路径惩罚;ReTool 代码解释器;AWorld 多工具 RL
8 跨轨迹经验知识化(gaia-experience);基于失败轨迹优化系统提示词;由失败轨迹触发 Agent 自我修改(重试与熔断)
9 浏览器语音对话系统;PineClaw Voice API 电话 Agent;Qwen2-Audio 模拟流式语音感知;Fish Audio 控制标记 TTS;XLeRobot 遥操作体验;Gemini Robotics-ER 1.5 驱动导航;Sim2Real 机械臂抓取
10 多角色转换(transfer_to_agent);书籍翻译 Agent;边打电话边用电脑的 Agent;自主编排的多 Agent 协作;并行 Web Scraping(消息总线 + 级联终止);语音狼人杀系统

致谢

本文笔记整理自开源书籍 《深入理解 AI Agent:设计原理与工程实践》(李博杰 著,Pine AI 首席科学家)。