Memory + Skills + 自我改进工程
会话一结束,模型就忘光了。这一章在不改权重的前提下,给这个失忆的函数装三样东西:跨会话的记忆(窗外持久存储 + 写 / 读 / 更新 / 遗忘四操作)、可复用的技能(SKILL.md + skill / tool / subagent 边界),以及让两者从自己轨迹里越攒越好的自我改进闭环(Reflexion → ACE)。无梯度的自演化归这里,更新权重的训练归 #6。前置:Ch6;#1 Ch4。
这是 Agent 工程路书的第 7 章,约 2.5 小时,纯 Mode A,第三站的第二块。上一章你学会了管理单次会话内的工作记忆。但会话一结束,那块工作记忆就清空了,模型本身什么都不记得。这一章讲怎么在不改模型权重的前提下,给这个健忘的函数装上三样东西:跨会话的记忆、可复用的技能,以及让这两样从经验里自己越攒越好的自我改进闭环。
读完后,你能用"窗口内工作记忆 vs 窗口外持久记忆"这条线设计 memory 层级、定四个核心操作(写/读/更新/遗忘),能在 Letta、mem0、Zep 这些具名架构里按选型轴挑一个,能讲清 skill、tool、subagent 三者的边界并知道何时用哪个,最重要的,你能搭一个不更新权重、纯靠 harness 让 agent 从自己轨迹里变好的闭环,并理解它和后训练的权重更新式改进在哪里交接。
7 节:0 LLM 是个失忆的函数 · 1 Memory 工程 · 2 具名 memory 架构 · 3 Skills 工程 · 4 Harness 级自我改进(本章头条)· 5 边界。
边界 hard line:#1 基础 Ch4 已教 memory 五型、skills 这些词汇,这一章不重教,只教工程(怎么设计、何时触发、怎么组织)。上一章 Ch6 管窗口内的工作记忆,这一章管窗口外的持久记忆,第 1.5 节 显式划这条线。embedding、向量库、RAG pipeline 的内部机制归 #1 / #3。最关键的一条:这一章只讲不改权重的运行时自我改进;更新模型参数的强化学习(SFT / RLHF / RLVR)归后训练 #6,第 4.1 节 把这条硬线钉死。
0. LLM 是个失忆的函数
先认清一个事实,它是这一章存在的全部理由。大语言模型是个无状态函数:权重在推理时是冻结的,所以它不会随时间学习;它对你的项目唯一知道的,就是你这次塞进去的那些 token。每开一个新会话,它都从零开始。它聪明,但彻底健忘。
这一章要做的,是在不动权重的前提下,给这个失忆的函数装三样外挂:记忆(把该留的事实和经历跨会话留住)、技能(把"怎么做"沉淀成可复用的过程知识)、自我改进(让记忆和技能从跑过的轨迹里自己长好)。表面上是三个话题,但它们共享同一条暗线,也是这一章真正想让你记住的一句话,状态活在 agent 的上下文之外。Anthropic 在讲长程 harness 时把这句话说得最透:agent 自己是失忆的,但文件系统不是。记忆是在外部存事实和经历,技能是在外部存怎么做,自我改进是让这两个外部存储从经验里自动变好。三者不是孤立的三块,而是"外部状态加按需召回"这同一条主轴的三个切面。
这条暗线也接上了它的 why-now:为什么 2025 到 2026 年,自我改进会从一个边缘话题变成主线?因为静态的记忆和技能撞了墙,你给 agent 配好记忆库和技能库,它能用,但不会变好;同一个错误它会犯第二次、第三次。于是人们开始追问:能不能让 agent 不重新训练,就从自己的失败里学到东西、把它写进下次会用到的上下文?这就是运行时自我演化。它和 #1 基础的分工很清楚:#1 Ch4 教过 memory 的五种类型 和 skills 这些词汇,这一章不重讲词汇,只讲工程,怎么设计层级、何时召回、怎么定技能粒度,以及怎么把记忆和技能从静态构件,升级成一块会自己变好的学习基质。
1. Memory 工程
1.1 一条二分线:窗口内的工作记忆 vs 窗口外的持久记忆
所有 memory 工程的地基,是一条二分线。工作记忆,是模型窗口内当前能看见的 token(system prompt、当前对话、刚拉回的检索结果),容量等于 context window,易失,会话或窗口一过就没,这是上一章 Ch6 的地盘。长期记忆,是模型窗口外的持久存储(文件、数据库、向量库、知识图谱),容量近乎无限,跨步、跨会话、跨任务存活,这是这一章的地盘。agent 通过工具调用,在这两者之间搬运信息。
MemGPT(也就是后来的 Letta)把这条二分讲到了极致,用了一个极强的统一隐喻:把 LLM 当成跑在内存受限的操作系统上的一个进程。context window 就是 RAM,外部存储就是磁盘。agent 用工具在 RAM 和磁盘之间分页,从而制造出"无限记忆"的错觉,同时仍然活在固定的 context 限制里。这个"虚拟内存"心智模型,是理解 memory 工程最有力的一把钥匙。
1.2 四个核心操作:记忆工程的动词
任何记忆系统,本质上都在做四件事。按操作来理解,比按系统来理解更通透。第一是写入,也就是何时记。关键是别什么都记:每轮都记又贵又吵,成熟做法是在任务里程碑记,或者让模型自己在 loop 里判断这值得记再调记忆工具。反面教材是全量记录原始轨迹,结果存储爆炸、召回被噪声淹没。第二是读取,也就是何时调回、调什么。主范式是上一章讲过的按需检索,不预加载全部,需要时才用工具拉回。召回该按什么打分,最经典的三个轴来自 Generative Agents:最近性、重要性、相关性,这是"召回评分"的鼻祖。
第三是更新,也就是处理过时和冲突。记忆会过时:代码重构了,但旧架构还留在记忆里,agent 会自信地建议一个已经失效的模式,这就是记忆陈旧(staleness)问题。冲突则要分清状态变更和并存事实:用户说"我从伦敦搬到了东京",系统要理解这是一次状态变更,而不是两条并存的事实(这正是后面 Zep 时序图谱的卖点)。这里有一个该诚实标注的治理缺口:到 2026 年,几乎没有一个生产系统原生做"人工审核晋升门",全都默认 agent 有权直接改自己的记忆。第四是遗忘和压缩,因为容量有限必须删。手段有递归摘要、按重要性淘汰、用 embedding 去重。但这里有个最生动的陷阱,可以叫它"脑叶切除"事故:为了省 token 去优化记忆,结果把 agent 优化傻了,有个真实项目里,管理记忆的文件被"token 效率"优化之后,agent 重启后连"自己是谁"都不知道了。压缩过度会抹掉身份和关键状态。
1.3 五种记忆类型,落到三种存储
#1 Ch4 教的五种记忆类型 不是学术分类,在工程上各自对应不同的存储和操作策略。经历记忆(episodic),是跑过的轨迹和对话史,放召回存储,用相关性加最近性召回,后面要讲的 Reflexion 的反思缓冲区,就是经历记忆的工程化。事实记忆(semantic),是用户偏好、项目约束、世界知识,放结构化存储或知识图谱。过程记忆(procedural),也就是"怎么做",这其实就是技能(Skills),是这一章 第 3 节 的主题。工作记忆,在窗口内,归 Ch6。画像记忆(profile),是用户个性化数据,是 mem0 的主战场。一句话,五种类型落到三种持久存储形态(向量、键值或文件、图),外加技能作为过程记忆的特例,这把 #1 的词汇接到了 #8 的工程。
1.4 一个前沿转向:检索已基本解决,有用性才是开放问题
2025 到 2026 年,记忆研究有一个核心的视角转变,值得你记住。重点已经从"能存多少、能不能检索到"转向了"存什么才有用、怎么把经历转成更好的行为"。检索容量基本上是解决了的问题;真正开放的问题是,哪些 pattern 值得信、怎么把一堆经历蒸馏成更好的行为。一句话:记忆是蒸馏,不是囤积。别囤原始的 episode,要把它蒸馏成可迁移的声明式知识,这条直接通向 第 4 节 的"轨迹蒸馏成技能"。还有一个连带的发现:记忆和动作解耦的旧评测正在被质疑。有 benchmark 发现,在长上下文记忆测试上拿了接近满分的 agent,在真正需要"记住然后据此行动"的设定里表现很差,记忆的真本事是支撑后续动作,不是答检索题。这条留到第九章细讲。
1.5 Memory 与 Context 的边界:一对 API 把它演活
这一章和上一章的边界,值得专门钉死,因为有一对 Anthropic 的 API 把它演示得极其干净。上下文编辑(context editing),属于 Ch6 一侧:窗口快满时,自动清掉陈旧的工具调用和结果,腾出窗口。记忆工具(memory tool),属于 Ch7 一侧:把要长期留的东西写进一个 /memories 文件目录,跨会话存活。两者怎么咬合?上下文编辑在触发清理之前会发个警告,Claude 趁这个机会,把重要信息从"即将被清掉的工具结果"里抢救出来、存进记忆文件;清理之后,再按需从记忆读回来。记忆于是成了工作上下文的延伸。Anthropic 的内部 benchmark 里,这一对合用,在百轮的网络搜索任务上省了大约 84% 的 token、性能提升约 39%。
这套机制里有一句写进 agent 行为契约的话,堪称教学金句。记忆工具的系统提示里直接写着:你的上下文窗口随时可能被重置,所以任何没有记进记忆目录的进展,你都有丢失的风险。这把"窗口易失、外部持久"这条边界,变成了 agent 必须遵守的纪律。还有一个工程要点连向安全:记忆工具是 agent 发出调用、你的应用在本地执行的,所以存到哪由你控制;多租户场景下,必须按用户 id 隔离记忆根目录,模型绝不可跨用户读到别人的记忆,一旦没隔离好,就是 Ch5 那条致命三连里"访问私有数据"那条腿 在记忆层的复活。
2. 具名 memory 架构:认识菜单 + 知道选型轴
把记忆工程落到产品,2026 年有一批具名架构。这一节的定位是认识菜单、知道选型轴,不逐个深挖,这是 harness 工程师该有的素养。
最深、托管最重的是 MemGPT / Letta。它就是前面那个操作系统隐喻的参考实现,把记忆分成三层:核心记忆(窗口内)、召回存储(对话史)、归档存储(embedding 外存),agent 用一套工具自己管这些记忆,记忆是 agent 可编辑的状态,不是被动的库。它 2026 年有一个重要演进值得记:睡眠期计算(sleep-time compute),把 agent 拆成两个。主 agent 只管对话和搜外存,不给它编辑核心记忆的权力;另一个"睡眠期 agent"在空闲时(没有用户输入的自主轮次)异步地整理记忆,合并归档、重写乱掉的记忆块、把近期对话总结成稳定的笔记。这解决了原来单 agent 把"记忆管理、对话、任务"全揉在一起导致的又慢又不可靠,本质是"让 agent 在闲时做家务"。要注意 Letta 在高频演进,引用它的具体架构前务必确认版本。
轻一些的是几个生产记忆服务,可以放在一条"集成速度对架构深度"的光谱上看。
| 系统 | 架构 | 强项 | 集成 |
|---|---|---|---|
| mem0 | 轻量记忆服务,向量 + 可选图 | 个性化、自托管全开源 | 最快(库式,约几行接入,自动抽取+压缩) |
| Zep | 全功能记忆 server,底座是时序知识图谱 Graphiti | 时序推理(理解状态变更,如"伦敦→东京") | server 式,异步做摘要+实体抽取 |
| Cognee | 文档优先,查询前先把数据建成知识图谱 | 深度知识检索、非结构化文档摄入 | 较重(先建图),但可全本地部署(合规差异化) |
选型轴大致是:集成速度对架构深度(mem0 快而浅,Letta 深而托管,Zep/Cognee 走图结构);要不要时序推理(状态随时间变,选 Zep);要不要全语料的主题性理解(选 GraphRAG 家族);要不要数据驻留、离网部署(选 Cognee 本地)。图结构记忆这一类(Microsoft GraphRAG 做全语料主题摘要、RAPTOR 做多粒度检索、HippoRAG 用类海马体索引做低成本多跳),内部更偏检索 pipeline,归 #1 / #3,这里给一句话定位即可。
最后必须教一个 benchmark 素养。记忆系统的对比数字极不可信:同一个 LOCOMO 测试,Zep 自报 84%,mem0 更正为 58%(并指控有对抗类目错误),Zep 又反驳成 75%,双方互相质疑方法学。任何单一的记忆 benchmark 数字都该打折,它只能当方向信号。选型的唯一靠谱办法,是拿你自己的数据跑两三个对比。
3. Skills 工程
3.1 Agent Skills 的具体模型
#1 Ch4 讲过 skills 这个词,这里讲它的工程模型,以 Anthropic 的 Agent Skills 做主锚。一个 skill 就是一个目录,里面有一个 SKILL.md 文件,外加可选的脚本和资源。SKILL.md 以 YAML frontmatter 开头,必填 name 和 description,正文是核心指令。
它最核心的机制叫三级渐进披露,这是整个 skills 范式的灵魂。第一级,agent 启动时只把每个已装 skill 的 name 和 description 预载进 system prompt,很便宜,常驻。第二级,当 Claude 判断某个 skill 和当前任务相关,才把完整的 SKILL.md 正文读进 context。第三级及以上,skill 目录里那些额外的文件(参考文档、脚本),只在真正需要时才被导航发现、读取。看出来了吗?这跟上一章的代码执行式 MCP、工具搜索是同一个按需加载原则,渐进披露其实是 skills 和 context engineering 共享的底层机制,都是为了不一开始就撑爆窗口。skill 里也可以含可执行代码,让 Claude 在需要时当工具来跑;skill 是组织外壳,tool 是其中的可执行组件。Agent Skills 在 2025 年底已成为跨平台的开放标准。
3.2 skill、tool、subagent:三方边界
到 2026 年,一个高频的实战困惑是:skill、tool、subagent 到底怎么分?把这三条线讲透。
第一条线,skill 对 tool,是知识对访问。tool 是原子原语(网络搜索 API、写文件),固定接口,没有内部决策。skill 可以调用 tool,但多了适用性逻辑、多步序列、明确的终止条件。有句话点得很准:MCP 负责访问,Skills 负责工作流,把它们分开。一个 MCP server 能暴露一个搜文档的工具,但它没法教 agent"什么时候搜比读整个文件更好、怎么写出能返回相关结果的查询",那是知识,是 skill 的地盘。
第二条线更微妙,skill 对 subagent,是"内联知识对隔离 worker"。区别在起点和意图:skill 起于知识("这件事该这么想"),既能内联跑也能 fork;subagent 起于隔离("去把活干完、带个报告回来"),生而带独立的 context。subagent 的定义性属性就是 context 隔离,它有干净的 context 窗口、自己的 system prompt、限定的工具,做完之后整个 context 被丢弃,主 agent 只看到最终结果。一个好用的软件类比:subagent 就是一个函数(输入任务、内部状态是它的 context、返回输出、可复用可组合、隔离限制了爆炸半径)。
怎么选?有几条启发式。一个常用的经验法则是按 token 消耗:高 token 消耗的中间工作用 subagent(那些大量中间过程对主对话没有持久价值),低的用 skill。但有两个例外。一是权限:任务很轻但需要限权(比如一个只读不可写的代码评审),用 subagent,因为它能隔离加限权。二是可靠性和结构:真正的信号不是 token 量,而是结构契合,你是在让一个通用推理器跟着指令走,还是在把一个范围明确的目标委托给一个专精的 specialist?有个重构嗅觉:当你发现自己想把两个很重的 skill 合并成一个,系统其实在告诉你,这个任务该独立成一个 agent 了。这三者不是三选一,而是三层协同:skill 告诉它怎么做,MCP 给它工具去执行,subagent 在 skill 定义的护栏内并行探索。
3.3 粒度:原子化,但有选择成本的上限
关于技能粒度,有一条强共识:原子的、窄范围的、可组合的技能,远胜过一个什么都干的单体技能。有实证支持:把编码 agent 拆成五个原子技能(代码定位、代码编辑、单测生成、问题复现、代码评审)当基向量,比起直接在复合任务(修 bug)上训练,原子技能更可泛化、可组合,增益能一致地迁移到各种没见过的 benchmark 上。配套的复用机制是技能库:一个不断增长的、已验证可复用的技能库,后续任务检索复用,替代低层的工具探索,这直接连向 第 4 节 的 Voyager 谱系。
但原子化有个上限,这是个精细的权衡。skill 带着丰富的描述符,所以选择是有成本的:agent 要从一堆 skill 里路由到对的那个,skill 切得越碎,这个路由能力反而会退化。所以你不能无限地把能力切成微 skill,description 的质量(能不能让 agent 准确发现该用哪个)是关键。最后一条安全注,连向 Ch5:skill 吸收的逻辑越多、越是作为可安装的 bundle 发布,它的攻击面就越独特。研究指出,基于 skill 的提示注入比常规的间接注入更难防,因为 SKILL.md 通篇都是指令,没有数据和指令的边界。一个 skill 能"做"的越多(而不只是"建议"),就越该被纳入工具式的权限治理。
4. Harness 级自我改进
这是这一章的头条,也是 2025 到 2026 年"自我改进 agent"思潮的核心。前面的 memory 和 skills,多数教程把它们教成静态构件,存、召回、组合,但从不闭合成"agent 在运行时从自己的轨迹里改进自己"。这一节就把这个闭环搭起来。
4.1 先划一条硬线:无梯度(#8)对权重更新(#6)
动手之前先划清这条线,它是这一节的命根子。自我改进有两个正交的分支。一个是无梯度的:agent 靠语言反馈改进,policy 是 context 里的文本,模型权重一动不动,这归 #8,是这一章教的。另一个是权重更新式的:用强化学习把改进烤进模型参数,这归后训练 #6。一句话硬线:不改权重的自我改进是 #8,更新权重的微调是 #6。两者在哪里交接?#8 产出的轨迹、反思、验证过的技能,正是 #6 训练循环的数据和信号源,这是 #8 和 #6 的接口,留到 Ch12 收口。还有个漂亮的分工示例:有些工作用强化学习去学"什么时候增删改记忆"这个策略,那么"设计有哪些记忆操作"这半归 #8,"学这个空间上的策略"那半归 #6,#8 设计动作空间,#6 学这个空间上的策略。
4.2 根:Reflexion 的"口头强化学习"
无梯度自我改进的概念原点是 Reflexion。它是一个三组件的循环:行动者跑任务产生轨迹,评估者判断这条轨迹好坏,自我反思模型把失败的轨迹用语言反思成一条文本教训,存进一个经历记忆缓冲区;下次重试时,这段反思进 context。它管这叫"口头强化学习",强化 agent 不靠更新权重,靠语言反馈。关键在于,这里的 policy 是经历缓冲区里累积的反思文本,是一种跨多次尝试持续的上下文学习,而不是模型参数。这就是无梯度自我改进的第一性原理,免去了昂贵的微调。它在 HumanEval 上把通过率做到了 91%,超过当时 GPT-4 的 80%。Reflexion 有双重身份:它既是 第 1 节 经历记忆的工程化,又是整条自我改进闭环的概念原点。
4.3 演化的 playbook:ACE 的生成-反思-策展
Reflexion 之后,旗舰是 ACE(Agentic Context Engineering)。它把 context 当成一份会演化的 playbook,通过三个角色的循环不断累积、精炼、组织策略,全程不改权重。生成器对新问题产出推理轨迹,顺带标出 playbook 里哪些条目有用、哪些误导。反思器批判这条轨迹,从成功和错误里蒸馏出具体的洞察,这是 ACE 超越前作的关键,它专门用一个角色把评估加抽取洞察从"策展"里分出来(注意,这个反思器本质上就是个评估者,直接连向第九章)。策展器把洞察整合进 playbook,用轻量的、非大模型的确定性逻辑来合并。
ACE 的机制核心是增量的 delta 更新:context 是一组结构化、条目化的 bullet,每条带元数据(唯一 id、有用或有害的计数)和内容(可复用策略、领域概念、常见失败模式)。它只更新相关的条目,不做全量重写,新条目追加、旧条目原地更新计数,去重时用语义 embedding 比对裁掉冗余。它为什么这么设计?因为它在打两个有名字的失败模式。一个是简洁偏见:优化器偏好简短通用的指令,把领域里要紧的启发式和失败模式都丢了。另一个就是上一章讲过的上下文坍缩,靠大模型单体重写来累积 context,会退化成越来越短、信息越来越少的摘要。ACE 论文里有一张极强的教学图:在 AppWorld 任务上,第 60 步时 context 还有 18282 token、准确率 66.7,下一步被单体重写一压,塌成了 122 token、准确率掉到 57.1,比完全没有 context 的基线还差,积累的知识不是被保住,而是被猛地抹掉了。
ACE 的战绩是这一节最强的论据:它带来约 10 个百分点的提升,而且无需任何标签也能改进(靠代码跑成功或失败这类自然执行反馈)。最震撼的一条:在 AppWorld 排行榜上,用开源的、相对小的模型加上 ACE 这套会演化的 context,追平了用顶级大模型驱动的生产级 agent。小模型加会演化的 context,约等于大模型生产 agent,这是"靠 context 工程而非靠权重"的最强证据。但要诚实标注它的边界:当没有可靠的反馈信号时(没有标准答案、没有执行结果),ACE 这类方法会退化,因为 context 会被噪声和误导信号污染。自我改进的质量,依赖反馈的质量。
4.4 把轨迹蒸馏成技能
自我改进的第三支,是把经历蒸馏成可复用的技能,和 第 3 节 的 Skills 闭环。这条线有个谱系。Voyager 在 Minecraft 里维护一个不断增长的可执行技能库,开放式交互中累积可复用 skill,不微调,它是今天 Agent Skills 的祖先。ExpeL 从一批训练任务里自主试错攒经验,抽出自然语言洞察,关键贡献是跨任务学习(Reflexion 是同一任务内改进,ExpeL 跨任务、领域无关),而且因为经验和轨迹都是自然语言,可以人工查看、修改、删除。
2026 年有两个更新的工作把这条线推得更远。Trace2Skill 镜像人类专家写 skill 的方式:不逐条对轨迹做反应(那样容易过拟合到某条轨迹的局部教训),而是派一群并行的 sub-agent 去分析一大池多样的执行经验,再层次化地合并成一个统一无冲突的技能目录,而且它直接产出 Anthropic SKILL.md 格式,这是"蒸馏研究"和"Skills 产品形态"的会合点。ProcMEM 则学可执行的过程记忆,把被动的经历叙事转成带激活、执行、终止条件的可执行技能,全程无参数更新。这里有个反直觉的发现值得点出:蒸馏出来的 skill 能跨模型迁移,记忆是蒸馏而非囤积,交付是指令重写而非上下文注入,这挑战了"经验是某个模型专属"的假设。
4.5 落到手边:CLAUDE.md 与 AGENTS.md
研究谱系讲完,最该让你亲手体会的是它的国民版。Claude Code 和 Codex 默认没有跨会话记忆,新会话冷启动。CLAUDE.md 或 AGENTS.md 就是每次新会话开头会读的一个 markdown 文件。Claude Code 的自动记忆会边干边把学到的东西(构建命令、调试洞察)写回去。读文件、干活、学到东西、更新文件、下次会话从更好的信息起步,这就是复利知识循环的实践版,是 Reflexion 闭环最朴素的体现,只不过反思是由人或 plan 模式触发、写进文件而不是经历缓冲区。Codex 的变体是在 plan 模式里交互式地浮现约束,让它把学到的更新进 AGENTS.md,文件从真实 session 有机生长,而不是预先空想。AGENTS.md 已经成了一个被几万个项目采用的开放标准。
但这里必须教它诚实的失败,正好和 ACE 的坍缩呼应。一是膨胀:学到的东西累积起来会撑爆 context(有项目报告 CLAUDE.md 在两百多条观察时灌进两万多 token)。二是陈旧:重构之后旧架构还在记忆里,agent 自信地建议失效的模式,而 TTL 和覆盖机制还不成熟。三是指令稀释:模型的系统提示本就含几十条指令,CLAUDE.md 越大、越可能被忽略,一个聚焦的五十行文件,远胜一个一千行的文件,超长了甚至会被静默截断。这正是 ACE 想用"条目化加增量去重"解决的问题,在国民工具里的真实版:自我改进的记忆必须自己治理,否则就塌。
5. 边界
最硬的一条线 · #8 对 #6:这一章只教不改权重的运行时自我改进(靠语言反馈、攒记忆和技能)。更新模型参数的强化学习,SFT / RLHF / RLVR / DPO / reward modeling,归后训练 #6。判据很简单:动权重了吗?动了归 #6,没动归 #8。#8 产出的轨迹和验证过的技能,是 #6 训练的数据源,这个交接口在 Ch12 收口。
另外三条:记忆存储的内部机制(embedding 怎么算、向量库怎么索引、RAG pipeline 怎么建)归 #1 / #3,这一章只教"设计什么记忆操作、何时触发、怎么组织"。评测本身(怎么判一条轨迹好坏、记忆专属的 benchmark)归 Ch9,这一章的自我改进闭环消费 eval 信号(ACE 的反思器本质就是个评估者),但怎么造可靠信号是 Ch9 的事。多 agent 怎么协同、subagent 之间怎么通信归下一章 Ch8,这一章只把 subagent 当作 skill 的边界对照来讲。
综合 · 给失忆的函数装上了会长大的记忆
回头看这一章。你接受了一个出发点:LLM 是个失忆的函数,每次从零开始,所以记忆、技能、自我改进这三件外挂,本质都是"把状态放窗口外、按需调回",agent 健忘,文件系统不健忘。你拿到了 memory 工程的地基(窗口内对窗口外的二分、虚拟内存隐喻)和四个操作(写、读、更新、遗忘),知道了陈旧和过度压缩是它最真实的两个坑。你认识了具名架构的菜单(Letta 的深托管和睡眠期计算、mem0/Zep/Cognee 的光谱)和那条"benchmark 只作方向、拿自己数据跑"的素养。你把 skill、tool、subagent 三条边界划清了,也知道了原子化的好处和它的选择成本上限。最后,也是最重要的,你搭起了无梯度自我改进的闭环,从 Reflexion 的口头强化学习,到 ACE 的生成-反思-策展演化 playbook,到把轨迹蒸馏成可迁移的技能,再到你手边的 CLAUDE.md,并且始终守着那条"不改权重是 #8、改权重是 #6"的硬线。
把这一章接到前面,你那台 harness 又长出了关键的一层。它本来能跑、安全、还能管好单次会话的工作记忆;现在它有了跨会话的持久记忆、可复用的技能,以及一个能让这两样从经验里自己变好的闭环,它不只是能干活,还能越干越好。
但到目前为止,这台 harness 始终是一个 agent 在干活。有些任务,一个 agent 扛不动:要么需要并行探索、要么需要把上下文隔离开、要么需要不同的专精分工。这时候,多个 agent 怎么协同,什么时候多 agent 真的更好、什么时候反而更糟,就是下一章的主题。合上书,去动手:给你前几章那个 agent 配一个 CLAUDE.md,让它每次跑完把学到的一条教训写回去,跑个三五次,看它会不会因为记得上次的坑而少犯一次错,这就是你亲手搭的、最小的 Reflexion 闭环;然后故意让它的记忆文件膨胀到很大,看它的指令遵循怎么开始稀释。带着"自我改进的记忆必须自治"这个认识,进 Ch8。
本章关键术语
下面按本章顺序复习。加粗是术语,后面是一句话解释;带链接的词可点进术语表看更完整的解释。
记忆
- 长期记忆(long-term memory) 模型窗口外的持久存储(文件/DB/向量库/图),跨会话存活;对应窗口内易失的 working memory(Ch6);MemGPT 的虚拟内存隐喻:context = RAM,外存 = disk
- 记忆四操作(memory ops) write(何时记)/ read(按需召回,recency·importance·relevance 打分)/ update(处理 staleness 与状态变更冲突)/ forget·compress(去重摘要,警惕过度压缩"脑叶切除")
- 经历记忆(episodic memory) 跑过的轨迹/对话史;Reflexion 的反思缓冲区是它的工程化
- 事实记忆(semantic memory) 用户偏好/项目约束/世界知识;放结构化 store 或知识图谱(Zep)
- 过程记忆(procedural memory) 「怎么做」的知识 = Skills;ProcMEM 把被动经历转成可执行技能
- 记忆存储形态(memory store) 五型记忆落到三种持久存储:向量 / 键值或文件 / 知识图谱
- 睡眠期计算(sleep-time compute) Letta:拆出一个 agent 在空闲期异步整理记忆(合并/重写/总结),对话不被拖慢
技能
- Agent Skills 一个目录 +
SKILL.md(YAML name/desc + 正文);三级渐进披露(name 常驻→正文按需→附件深挖)= 与 Ch6 共享的 load-on-demand 机制 - skill / tool / subagent 三边界 tool 提供访问(原子原语)· skill 封装怎么做(可复用 workflow)· subagent 生而隔离(干净 context、限权、只回结果);三层协同非三选一
自我改进(无梯度)
- 无梯度自我改进(gradient-free self-improvement) 靠语言反馈 + 攒记忆/技能改进,policy = context 文本、权重不动 = #8;更新权重的 RL = #6;#8 产 trajectory 喂 #6
- Reflexion 口头强化学习的根:Actor→Evaluator→Self-Reflection→经历缓冲区;policy 是反思文本不是参数;HumanEval 91%
- 轨迹蒸馏(trajectory distillation) 把经历蒸馏成可复用技能:Voyager→ExpeL(跨任务)→Trace2Skill(产无冲突 SKILL.md,跨模型迁移)→ProcMEM;记忆是蒸馏不是囤积
- CLAUDE.md / AGENTS.md auto-memory 自我改进的国民版:读文件→干活→学到→写回→下次更好;诚实失败:bloat / staleness / 指令稀释 → 记忆必须自治
进阶词汇(multi-agent 协同 / trajectory eval / 训练环境等)归后续章节,完整术语见术语表 /glossary。
参考文献
Mode A · 引用出处(正文 inline,集中列在此)
- Agentic Context Engineering (ACE)(Stanford / SambaNova / UC Berkeley · ICLR 2026)· 第 4.3 节 旗舰 , Generator-Reflector-Curator + 增量 delta + context collapse(18282→122)+ 追平生产 agent + 反馈依赖边界
- Reflexion(Shinn et al. · NeurIPS 2023)· 第 4.2 节 无梯度自我改进的根 , verbal RL + Actor/Evaluator/Self-Reflection + episodic buffer + HumanEval 91%
- Equipping agents for the real world with Agent Skills(Anthropic)· 第 3.1 节 SKILL.md + 三级渐进披露 + 开放标准
- Memory tool + Context management(Anthropic)· 第 1.5 节 memory tool × context editing 咬合 + ASSUME INTERRUPTION + 100 轮省 84% token/+39% + 多租户隔离
- MemGPT: Towards LLMs as Operating Systems + Letta · Sleep-time Compute· 第 1.1 节 / 第 2 节 虚拟内存三层 + agent 自管记忆 + 睡眠期双 agent 拆分(pin 版本,高频演进)
- Voyager + ExpeL(AAAI 2024)· 第 4.4 节 技能库祖先 + 跨任务自然语言 insight
- Effective harnesses for long-running agents(Anthropic)· 第 0 节 / 第 5 节 暗线金句"filesystem isn't amnesiac" + artifacts-as-memory(→ Ch12)
深 dive 资源(可选 · 想往下走再看)
- Trace2Skill(2026-03)+ ProcMEM(ICML 2026)· 第 4.4 节 并行分析→无冲突 SKILL.md / 可执行 procedural memory(非参数验证)· arXiv 新投,pin 版本
- The Landscape of Agentic RL for LLMs· 第 4.1 节 self-improvement 三分法,划 #8(无梯度)/ #6(权重更新)线
- mem0 / Zep(Graphiti)/ Cognee 官方文档 · 第 2 节 具名架构一手;LOCOMO 厂商分数互撕(Zep 84%→mem0 58%→Zep 75%)按自己数据复核
说明:本章纯 Mode A,由 ACE / Reflexion / Voyager 等论文 + Anthropic Agent Skills / memory tool / long-running-harness 官方 + Letta/mem0/Zep 实践扛起。memory benchmark 数字(LOCOMO 尤甚)跨源剧烈冲突、Letta 架构高频演进、2026 arXiv 新投 id 在投稿期,具体数字与版本引用前务必 pin。
下一章
下一章(Ch8)是第三站的最后一块 · Multi-agent 协同。这一章你的 harness 始终是单个 agent;但有些任务一个 agent 扛不动,需要并行探索、需要隔离上下文、需要专精分工。Ch8 会讲一个有争议的核心问题:multi-agent 到底什么时候真的更好(Anthropic 报告 orchestrator-worker 比单 agent 提升 90%),什么时候反而更糟(Cognition 那篇"别造多 agent",上下文碎片化、协同成本)。它会讲拓扑阶梯、协同机制,以及那条"可并行度乘以共享上下文需求"的决策矩阵,让你不被"多 agent 总更好"的炒作带跑。