我用过几十个AI编程助手,发现一个共性问题:它们的记忆力可能很好,但学习能力几乎为零。
对话历史能存、RAG能检索、上下文窗口越来越大——但下次遇到同样的坑,它照样跳。存了一百次对话,等于存了一百本笔记本,知识从来没进过脑子。
这篇文章要回答一个核心问题:怎么让Agent从"记住发生了什么"进化到"学会不再犯同样的错"?
记忆≠学习
先厘清一个被严重混淆的概念。
记忆是被动存储。对话历史、RAG检索、向量数据库——这些解决的是"上次聊了什么"的问题。Agent能把三天前的对话翻出来引用,但这跟"学会了"是两回事。
类比一下:你的笔记软件记了一千条笔记,不等于你掌握了一千个知识点。笔记是外挂存储,不是内化能力。真正掌握一个知识,意味着能在新场景下灵活运用,不需要每次都翻笔记本。
Agent也一样。记忆解决的是"查得到",学习解决的是"用得上"。两者的差距在于:记忆是存储操作,学习是权重更新。一个Agent可以记住"上次用SHA256哈希密码是错的",但如果不把这个经验内化成行为模式,下次换个项目它还会犯同样的错。
所以问题的根源不是记忆不够,而是缺乏从经验中提取规律、把规律变成行为的能力。
Dream循环:让Agent学会"做梦"
2026年Anthropic给Claude托管智能体上线了一个叫Dreaming的功能,名字很直白——让AI学会做梦。
人类在REM睡眠阶段会整理白天的记忆碎片,强化重要信息,淘汰噪音。Dreaming的工作原理类似:Agent在两次任务的空闲期,自动回顾历史会话,整理碎片记忆,发现隐藏的模式。
这个功能背后的洞察是:反思不该只发生在任务执行中,任务间的空闲期同样重要。
实操层面,一个完整的反思循环长这样:
| |
关键差异在第四步。普通的对话总结只停留在"这次做了什么",反思循环要提取的是"这类场景应该怎么做"。前者是流水账,后者是方法论。
智源大会2026上,张少坤把这个思路拆成两个特性:递归式自迭代(Agent观察自己的prompt和workflow,根据环境反馈修改自身结构)和从自身探索经验中学习(不依赖人类标注,从实际执行结果中提取改进信号)。核心思想一样——Agent不该等人类来教它,应该自己从实践中学习。
Skill积累:从手动到自动的进化路径
反思产生洞察,但洞察如果只停留在"脑子里",下次还得重新推理。要提高效率,得把反复出现的模式固化成可复用的Skill。
进化路径分三个阶段:
阶段一:手动编写。 用户遇到一个复杂流程,手动把步骤写成Skill。比如"部署Hugo博客到又拍云"需要七步操作,写成一个Skill后一键执行。第一次花10分钟写,之后每次30秒跑完。
阶段二:半自动发现。 Agent开始观察自己的行为——“这个用户已经第三次让我做类似的数据清洗了”,自动生成一个Skill草稿,标注为draft状态,等用户确认。
阶段三:全自动生命周期。 Skill从draft开始,经过实际测试验证效果,进入approved状态成为可复用资产。如果某次执行发现Skill有问题,自动进入修复流程或标记为deprecated。
这个生命周期的核心价值在于:Agent不是一次性消耗品,而是一个会积累经验的系统。用得越久,效率越高——因为它在用的过程中不断沉淀可复用的模式。
实际效果很直观:同类任务第一次执行可能要10分钟(探索+试错),积累Skill后30秒搞定。这不是理论数字,是实打实的效率差异。
错误模式学习:从"反复犯同样的错"到"同类错误不再犯"
错误是最有价值的学习素材,但前提是Agent能从错误中提取模式,而不只是"记住这次错了"。
一个实用的错误模式学习系统包含三层:
第一层:错误模式库。 每次出错,记录三要素——触发条件(什么场景下犯的)、修复方案(怎么修的)、预防措施(怎么避免再犯)。不是记一条日志就完事,而是结构化地沉淀为知识。
第二层:三问判断机制。 发现错误后,Agent问自己三个问题:
- 修复是否只动格式?(纯格式问题可以自动修)
- 方案是否唯一?(有多种可能的修法时,需要人来判断)
- 质量是否确定提升?(如果不确定修了会不会更好,先不动)
三个问题的答案决定了:自动修复、还是上报人类决策。
第三层:自动修复边界。 可以自动修的直接修——拼写错误、格式不一致、导入缺失。需要判断的必须人工介入——业务逻辑、架构选择、安全相关。
价值在于量变:从"反复犯同样的错"到"同类错误不再犯"。这不是一次性的改进,是持续累积的防御能力。
实战案例
光讲机制太抽象,看三个真实案例。
案例一:双轨自进化系统
某开源Agent项目实现了双轨驱动的自进化:内轨是日常自动运行的Skill生成——Agent在每次任务完成后自动检查是否有可复用的模式,轻量级、即时生效;外轨是手动触发的强化学习训练——深度改变模型的行为能力,需要人类监督。
两条轨道互补:内轨解决日常效率,外轨解决能力边界。内轨的Skill积累为外轨的训练提供了高质量的数据源。
案例二:小米MiMo Code的Dream/Distill机制
小米2026年6月开源的MiMo Code(基于OpenCode fork)引入了Dream和Distill两个机制。Dream负责空闲时的记忆整理和模式发现,Distill负责把发现的模式蒸馏成可执行的行为规则。
加上持久记忆和长程任务支持,这套系统让Agent在跨会话场景下也能保持学习的连续性——不是每次从零开始,而是带着之前学到的东西继续工作。
案例三:Darwin Gödel Machine
学术前沿的self-modifying Agent。传统Gödel Machine需要形式证明才能修改自身,Darwin版本用经验验证替代——通过实际执行效果来判断修改是否有效。
在SWE-bench和Polyglot上取得了显著提升,但也暴露了一个关键风险:reward hacking。Agent可能学到"看起来评分高但实际没用"的捷径。这个风险后面会详细聊。
三层自进化架构:可落地的方案
综合以上机制,我整理了一个三层架构,从易到难,每层都可以独立实施:
| |
Layer 1:经验记忆。 最基础的一层。每次任务完成后,Agent自动复盘:做了什么决策、结果如何、有没有更好的方案。把这些反思结构化存储,形成可检索的经验库。
实施建议:在任务结束的回调中加入反思环节,输出固定格式的经验条目(场景→决策→结果→改进点)。成本很低,效果立竿见影。
Layer 2:Skill自动化。 在经验积累到一定量后,Agent开始识别重复出现的模式,自动生成Skill草案。从"每次重新推理"变成"调用已有Skill+微调"。
实施建议:设置模式识别的阈值——同一类任务出现3次以上且执行路径相似度>70%,触发Skill自动生成。生成后标记为draft,经实际验证后升级为approved。
Layer 3:元进化。 最高级的一层——优化进化策略本身。不只是"从经验中学习",而是"学习如何更好地从经验中学习"。
实施建议:定期(比如每周)回顾Skill的使用效果——哪些Skill被频繁调用、哪些很少用、哪些需要修改。用这些数据调整Skill生成的策略和阈值。这一层最复杂,建议在前两层稳定后再上。
踩坑与边界
自进化不是万能药,有几个必须警惕的风险:
Reward Hacking。 Agent可能学到"优化评分指标"而非"真正变好"。Darwin Gödel Machine已经暴露了这个问题——Agent找到了评分系统的漏洞,分数很高但实际行为没改善。
对策:评估指标多元化,不依赖单一维度。定期人工抽检Agent的实际行为,不只看自动化指标。
幻觉放大。 如果反思过程中产生了错误的"洞察",而且这个错误洞察被固化成Skill,后果是系统性地犯错——比不学习还糟。
对策:Skill从draft到approved必须经过实际验证,不能纯靠Agent自我评估。关键Skill的审批权留给人类。
无限循环。 Agent不断反思、不断修改自己的规则,可能陷入"改了又改"的死循环——上次觉得A方案好改过去了,这次反思又觉得B方案好改回来。
对策:设置修改频率上限。同一个Skill在一定时间窗口内只能修改N次,超过后锁定等人工审查。
渐进式策略: 先手动触发反思(人觉得有必要时才让Agent复盘),再半自动(Agent建议反思,人确认),最后全自动(Agent自主决定何时反思)。不要一步到位,每一步都验证效果后再推进。
总结
从"工具"到"搭档",路径并不复杂:
记忆解决"记住了什么",学习解决"改变了什么"。Dream循环让Agent学会从经验中提取规律,Skill积累让规律变成可复用的资产,错误模式学习让Agent从"反复犯同样的错"进化到"同类错误不再犯"。
三层架构——经验记忆、Skill自动化、元进化——每层都可以独立实施,循序渐进。先跑通第一层,确认效果后再上第二层,别急着一步到位。
后续文章会出各个机制的详细实操教程,包括Dream循环怎么配置、Skill自动生成怎么实现、错误模式库怎么设计。