有个团队上线了一个客服 Agent,跑了三个月,工单解决率一直稳定在 65% 左右。负责人很疑惑:三个月里它处理过上万张工单,按理说该越做越好,怎么没长进?
答案很简单:Agent 不会因为跑得多就自动变强。它处理过的工单全躺在日志里,没人去提炼,下次遇到同类问题它还是从头来。学习这件事不会自动发生,必须被显式设计出来。这一篇讲的就是怎么设计。
一、为什么 Agent 不会自动学习
先泼盆冷水。很多人以为 Agent 用多了自然就学会,这是个误解,根源在注意力机制。
上下文学习的内部机制更像检索而非推理。注意力擅长查找,不擅长归纳统计。把原始经验一股脑堆进上下文,模型能记得,却不会自动把它提炼成可复用的规律。上次踩过的坑,下次原样再踩一遍,因为模型只是”查得到”那段历史,没有把它变成”下次别这么干”的策略。
所以学习必须被显式设计。怎么设计?回到三种学习范式,它们在不同时间尺度上各司其职。
二、三种学习范式怎么分工
Agent 的学习有三条路,不是只有微调一条。
后训练是训练时修改模型权重,永久、通用,但成本高,以周计。上下文学习是推理时靠注意力机制做软更新,临时、即时,会话结束就消失,受限于窗口大小。外部化学习是运行时把知识和流程沉淀到模型之外的文件、知识库、工具代码里,持久、可解释、可随时修正。
三者不是替代,是协同。事实性知识交 RAG,稳定行为交后训练,临时信息交上下文学习。外部化学习是这一篇的主角,因为它不改权重、成本最低,是普通团队能天天用的那条路。
外部化学习产出三种东西,对应三种载体,判别法则很实用。
| 经验类型 | 载体 | 例子 |
|---|---|---|
| 纯事实性信息 | 知识库条目 | 某产品的退款政策 |
| 经常做、参数复杂 | 可执行代码工具 | 标准化的对账流程 |
| 经常变、涉策略判断 | Skill 文档 | 回复客户的语气策略 |
纯粹是事实性信息的存进知识库,经常用且参数复杂的写成代码,经常变且涉及策略判断的写成 Skill 文档。这条法则可以直接贴在工位上。
三、从经验中学习的五种机制
3.1 从失败中学习
任务失败后,让 Agent 用自然语言反思失败原因,把反思文本存进情景记忆。下次遇到类似任务,这段反思会被检索出来作为前车之鉴。
这里有个反直觉的点:失败的信号比成功更稠密。一次失败明确排除了一条路径,是明确信息;成功往往只是众多可行路径中的一条,告诉你这条路通,但可能只是众多通路之一。所以从失败中学习的边际收益,往往比从成功中学习更高。这跟人的经验直觉一致,踩过的坑记得最牢。
3.2 自造 Skill
让 Agent 自己造 Skill,这是我最喜欢的一种机制。Skill Creator 是一种能创造其他 Skill 的元能力,实现了知识积累的自举循环:Agent 不仅能用 Skill,还能造 Skill。
Claude Code 的 CLAUDE.md 就是这个思路的实现。Agent 自动通读代码库,生成项目指南,这份指南本身就是一份 Skill。下次再进这个项目,Agent 不用重新摸索,直接读指南。自举是自我进化的精髓,Agent 造的工具反过来增强 Agent 自己,形成正反馈。
3.3 睡眠学习
记忆不能只在交互时整理,那样会拖慢响应。Claude Code 的做法是:用 Markdown 存用户记忆,后台周期性运行四阶段整合,定向、收集、巩固、修剪与索引。
就像人睡觉时大脑整理白天的记忆,前台快响应,后台慢整理。这个睡眠学习的隐喻很准:Agent 也需要”做梦”,在空闲时把零散经验固化为结构化知识。
3.4 系统提示词的自动优化
直接修改系统提示词文本,是 Karpathy 提出的”系统提示学习”。它有个反直觉的优势:数据效率显著高于结果奖励型强化学习,原因是反馈通道的维度差异。
结果奖励型强化学习的反馈是对或错,一个比特。系统提示学习的反馈是一整段复盘,这里应该先确认金额、那里不该跳过验证。反馈维度高得多,所以数据效率高得多。本质是通过边界情况让规则边界更清晰,跑得越多碰到的边界情况越多,规则就被打磨得越精细。
这不是只有 Karpathy 在喊,学术界已有成体系的框架,思路一脉相承。DSPy 把提示词当程序的可优化参数,开发者只声明每个模块输入什么输出什么,框架在评估集上自动搜索示例组合和指令措辞。OPRO 让模型自己当优化器,把历史提示词及其得分喂进去,让它迭代改写,数学推理上超过了人工设计的提示词。GEPA 走得更远,对失败轨迹做自然语言反思据此进化提示词,并在多个候选间维护帕累托前沿保留互补的优化方向,多项任务上超过了 GRPO 微调(那是后训练篇会讲到的强化学习算法),而采样次数少了一到两个数量级。一个不改权重的提示词优化方法,在效果上压过改权重的微调,还能省一两个数量级的采样,这正是”反馈维度高所以数据效率高”这条判断最硬的实证。
3.5 工作流录制与回放
前面四种机制沉淀的是”怎么想”和”怎么判断”,还有一种经验值得单独拎出来:那些每次参数不同、但核心流程固定的重复操作。这类操作让 Agent 每次都从头用多模态大模型重新发现一遍流程,是纯粹的浪费。
工作流录制的思路类似 Excel 的宏录制:第一次执行任务时录下步骤,以后只需回放。学习阶段,Agent 用多模态 LLM 识别按钮、输入框,把操作录成结构化步骤存进知识库;回放阶段,新任务到来时匹配已有工作流,提取参数后直接回放,不用 LLM 视觉思考,速度能快上数倍。
但这套机制最脆弱的两个环节要是没处理干净,就不可靠。第一是什么时候敢信回放。更稳的做法是把成功操作序列编译成一个带验证谓词的状态机程序:每个状态带一个必须在当前真实屏幕上成立的界面模式,回放时每步动作前先拿谓词核对实时屏幕,先看清再动手,谓词不成立就交还给完整 Agent 重来。正因为回放时一次模型调用都不需要,命中缓存的重复任务能快 8.5 到 13 倍。第二是别把坏程序存进去。编译完立刻重置环境从头回放一遍,用基准评判器确认这次真的做成了才准入库,这道存前验证能挡住那种流程全走完却其实没把事办成的程序。
归结成一条原则:流程记忆也要有验证闸门,自我改进的循环才不会腐坏。去掉这道关,程序库会随着有毛病的程序越攒越多而逐渐退化,看似在积累经验,实则在攒 bug。
四、主动工具发现:从给定到按需查阅
传统 Agent 的工具是预定义的,工程师写好一堆工具 schema 塞进系统提示词。这有两个问题:工具一多就 token 爆炸,而且 Agent 的能力边界被锁死在工程师的预见里。
主动工具发现把工具选择变成按需查阅。两个代表做法值得看。
MCP-Zero 在系统提示词里不预置任何工具 schema,Agent 在思考中生成结构化请求块,动态拉取需要的工具。实测在约 2800 个工具上比全量注入节省约 98% 的 token。这个数字说明全量注入工具 schema 有多浪费,绝大多数工具在一次任务里根本用不上。两层语义路由,服务器级到工具级,让 Agent 只在需要时才把对应工具拉进上下文。
Skills 的渐进式披露是另一条路。Agent 启动时只看到一份薄薄的目录,发现由模型在上下文里的实际需要驱动,无需向量索引。
传统工具发现靠向量检索,算相似度找工具。Skills 的发现靠的是 Agent 在 ReAct 循环里”我下一步需要什么”的自然推理。这比向量检索更准,因为最懂”现在需要什么工具”的,是正在执行任务的 Agent 自己。
还有个 KV Cache 优化配合:可编辑可组合的 KV Cache,把 Skill 预编译缓存、用旋转位置编码重定位粘贴,加载 Skill 不用重算前缀。这和上一篇讲的缓存友好设计是一脉相承的。
五、从工具使用者到工具创造者
这是自我进化的最高形态,Agent 不只是发现工具,还能创造工具。
预定义工具集的根本局限在于,把 Agent 的能力边界锁定在了人类工程师的预见和准备上。工程师没想到的场景,Agent 就没有对应工具。Alita 提出的原则是”最小预定义,最大自我进化”,给 Agent 最少的起手工具,让它自己长出其余能力。
两种创造模式各有用处。从开源生态集成是 MCP 头脑风暴、Web Agent 搜索现成库、阅读 README、封装为 MCP 工具,这是站在巨人肩膀上。从头编写代码创造是让 Agent 直接写代码实现一个新工具,这是自己造肩膀。
Voyager 是这个范式的经典,在 Minecraft 里持续学习,靠三件事。
| 要素 | 作用 |
|---|---|
| 自动课程生成器 | 基于最近发展区,给刚好比现有能力难一点的任务 |
| 技能库 | 层次化、可组合,每次成功探索存成可复用代码技能 |
| 迭代提示机制 | 失败就反思调整再试 |
每一次成功探索都转化为可复用的代码工具,实现了从临时适应到永久积累的跨越。临时适应是上下文学习,会话结束就没了;把经验固化成代码技能,才是永久积累。
自我进化不只是工具层,是三层一起长。工具层面积累更多可调用工具,知识层面知识库越来越丰富,策略层面是元学习,自我进化能力本身也在进化。
六、安全边界:能力越强风险越大
自我进化有四类安全威胁,最危险的是记忆与经验投毒。
供应链攻击是 Agent 从网上拉来的工具可能被投毒。能力漂移是 Agent 自我进化出的能力可能偏离设计意图。工具质量退化是 Agent 自己造的工具质量参差不齐。记忆与经验投毒最危险,被污染的条目跨会话持续生效,受害的不是单次回答,而是 Agent 的知识本身。
普通提示注入害的是单次回答;记忆投毒害的是 Agent 的记忆,被污染的条目会跨会话持续生效,Agent 每次都用这个错误记忆做决策。这比单次注入恶劣得多。
三层缓解对应三道关。写入前审查与来源标记,经验与指令通道隔离,检索时注入检测。这跟前面讲工具安全时的叠护栏是一脉相承的思路,单个防线不够,得叠。
小结
这篇讲的不是科幻意义上的 AI 自主变强,而是工程意义上的一套显式设计的学习机制,让 Agent 在运行时把经验固化为可复用能力。不改权重,不重训模型,靠的是从失败反思、工作流录制与回放、自造 Skill、睡眠学习、提示词自动优化、主动工具发现、工具创造这一整套。
判别法则再强调一遍:纯事实存知识库,复杂流程写成代码工具,常变策略写成 Skill 文档。这条法则决定了经验往哪个载体沉淀。
把这几篇连起来看,逻辑是完整的。上下文工程让 Agent 看得清,记忆与 MCP 让 Agent 记得住连得上,Harness 让 Agent 不闯祸,代码作为元能力让 Agent 当场长出新本事,评估让 Agent 知道自己行不行,后训练把策略写进权重,自我进化让 Agent 不改权重也能越用越强。模型会迭代,名词会流行,但这一套从能跑的 Demo 到可靠又进化的生产系统的工程闭环,会穿越模型的迭代周期。下一篇离开文本这个舒适区,讲 Agent 怎么和语音、屏幕、机械臂这些实时多模态的物理世界正面对上。
参考资料
- Voyager: An Open-Ended Embodied Agent with Large Language Models - Minecraft 中持续学习的 Agent,自动课程生成器、技能库、迭代提示三要素的出处
- Reflexion: Language Agents with Verbal Reinforcement Learning - 失败反思机制的提出,自然语言反思存入情景记忆的范式
- MCP-Zero - 不预置工具 schema、Agent 动态拉取工具的实践,2800 工具节省 98% token 的案例
- Alita: Self-Evolution with Minimal Predefinition - 最小预定义、最大自我进化原则的提出
支持与分享
如果这篇文章对你有帮助,欢迎支持作者或分享给更多人
部分信息可能已经过时






