一句话说清楚
给AI Agent加了一套记忆系统,5个核心痛点全部解决。以下是改造前后的真实数据对比。
我用的是OpenClaw——一个开源的AI Agent框架,可以让大模型以Agent的方式持续运行,拥有自己的workspace、记忆系统和工具调用能力。你可以理解为"给AI配了一台自己的电脑"。本文所有的配置和操作都基于OpenClaw,但思路对其他Agent框架同样适用。
改造前的5个问题
问题1:频繁切session,一天5-10次
上下文token用完就得开新会话。一天下来,平均要切5-10次session。每次切完,之前聊的架构方案、讨论了一半的重构计划、待确认的决策——全丢了。
不是偶尔丢,是每天都在丢。你上午和AI讨论了半天数据库表结构,下午session切了,它连你用的是PostgreSQL还是MySQL都不知道了。
问题2:新session要花10-15分钟交代背景
每次新会话,AI对之前的一切一无所知。你得从头说起:项目结构、技术选型、上次改到哪了、哪些坑不能踩。
实测下来,每次交代背景要10-15分钟。一天切5次session,光"入职培训"就要花掉一个多小时。你用AI是为了提效,结果倒贴时间当人肉文档。
问题3:6人代码审查,漏掉P0级bug
让6个agent交叉做代码审查,结果一个P0级bug都没发现。
具体的坑:XSS防护把URL里的斜杠/也转义了,导致第三方API返回的图片链接全废——https%3A%2F%2F...,浏览器不认。代码本身没语法错误,逻辑看起来也对,6个agent看了一圈全说"没问题"。最后我自己跑了一遍,页面直接白屏。
更离谱的是,这个问题上个月出现过一次,当时纠正了。但那是上个session的事。新session里,没有任何agent记得这段历史。这就是没有记忆的代价——不仅仅是效率低,而是同样的错误会无限循环。
问题4:子Agent返回几千行,撑爆上下文
一个子agent跑完任务,返回结果动不动就几千行。主agent的上下文直接被撑满,后面的回答就不能看了,或者直接触发session切换。
子agent不知道主agent的上下文有多紧张,它只管把所有细节一股脑吐出来。比如你让它分析一个200行的文件,它会把每一行的分析都写出来,返回的结果比源文件还长。结果就是:你让它干活是为了省事,它干完活反而给你制造了新麻烦。
问题5:记忆整理全靠手动,Dreaming零输出
OpenClaw有一个叫Dreaming的功能——理论上可以在空闲时自动回顾日记、提炼长期记忆。
实际情况:0条自动promote。配置没调对,触发条件不满足,这个功能跟没有一样。所有记忆整理全靠手动——你得自己提醒AI"把今天的重要事项记下来",它才会写。忘了提醒,那天的经验就随着session消失了。

我们做了什么:5步改造
第1步:配置Compaction——上下文自动压缩
解决的问题:频繁切session
Compaction是OpenClaw的上下文压缩机制。当对话快要撑满上下文窗口时,它会自动把早期对话压缩成摘要,腾出空间给新内容。而且在压缩之前,它会先触发Memory Flush——让agent把当前重要信息主动写入文件,确保不会"压缩=遗忘"。
OpenClaw默认就会开启Compaction,但默认参数偏保守。我们在openclaw.json的agents.defaults.compaction里做了调整:
{ "agents": { "defaults": { "compaction": { "model": "qwen/qwen3.6-plus", "reserveTokensFloor": 50000, "recentTurnsPreserve": 5, "notifyUser": true, "customInstructions": "保留所有技术决策、架构方案和待办事项的关键信息,确保压缩后不丢失项目上下文", "memoryFlush": { "enabled": true } }, "contextPruning": { "mode": "cache-ttl", "ttl": "5m" } } } }几个关键参数说一下:
reserveTokensFloor: 50000——给新内容保留至少50000 token的空间。这个值越大,压缩触发越早,但留给新对话的空间越充裕。根据你的模型上下文窗口大小调整,我们用的是128k窗口的模型,留50k比较合适。 recentTurnsPreserve: 5——保留最近5轮对话不压缩(一轮=你说一句+AI回一句)。这个值最大只能设12,确保正在讨论的内容不被压掉。 memoryFlush.enabled: true——压缩前自动触发记忆刷写,让agent把重要信息存到文件里再压缩。这是防止信息丢失的关键一环。 customInstructions——告诉压缩模型哪些信息必须保留。比如我们要求保留所有技术决策和架构方案,这样压缩后的摘要不会变成一句"讨论了一些技术问题"。 contextPruning——配合Compaction使用,自动清理5分钟前的工具调用缓存输出,进一步节省上下文空间。
配置改完重启OpenClaw就生效。效果很直接:以前一天切5-10次session,现在大部分时候一个session用一整天。

第2步:建TOOLS.md——环境信息一次写入,永久生效
解决的问题:新session要重新交代背景
OpenClaw的每个agent都有自己的workspace目录(通常在~/.openclaw/agents/<agent-name>/workspace/)。agent每次启动session会自动加载workspace根目录下的几个关键文件,其中就包括TOOLS.md。
把那些"忘了会出事"的信息写在这里:
# TOOLS.md - 环境信息(以下为示例) ## 开发环境 - 前端项目端口:5173(不是8080!) - 后端API端口:3000 - 数据库:PostgreSQL,端口5432 ## 注意事项(血泪教训) - 改完代码必须实际运行验证,不能只看逻辑 - XSS防护不要转义URL中的斜杠 - bash脚本里自增用 PASSED=$((PASSED + 1)),不要用 ((PASSED++))写的原则:只写反复被遗忘、反复导致问题的东西。几十行就够,不写成百科全书。你在日常使用中发现AI又犯了老错误,就往这里加一条。积累几周之后,这个文件会变成一份非常精准的"避坑手册"。
以我们的经验,TOOLS.md解决了大概80%的"重复交代背景"问题。以前每次新session要花10-15分钟解释环境,现在AI醒来直接就知道。而且这个文件是活的——你在使用过程中发现新的坑,随手加一行就好。三个月下来,我们的TOOLS.md从最初的10行长到了50多行,覆盖了开发中几乎所有常犯的错误。
第3步:日记+MEMORY.md——短期记录+长期提炼
解决的问题:重复犯错、经验随session消失
两层结构:
- 日记
( memory/YYYY-MM-DD.md):每天记录关键决策、踩过的坑、确立的规则。做完重要的事当场就记,不等session结束。怎么做到"当场就记"?配合上面说的Memory Flush机制——Compaction压缩前会自动让agent把重要信息写入日记文件。另外,你也可以在AGENTS.md里加一条规则,让agent在完成重要任务后主动记录。 - MEMORY.md
:定期从日记里提炼精华。日记是原始素材,MEMORY.md是浓缩后的长期记忆。这个文件也在workspace根目录下,每次session启动自动加载。
# MEMORY.md - 长期记忆 ## 铁律(血泪教训) 1. 改完代码必须实际运行,不能只看逻辑 2. 一条路走不通别钻,换路试 3. 一个人的检测不可信,必须交叉验证 4. bash自增用 $((VAR + 1)),不用 ((VAR++)) 5. XSS防护别动URL里的斜杠,上次转义了导致第三方图片全废日记可以丢,MEMORY.md不能丢。日记是流水账,MEMORY.md是从流水账里提炼出来的规则和教训。
一个实际效果:那个XSS转义斜杠的bug,改造前出现过两次(因为第二次的session不知道第一次的修复)。写进MEMORY.md之后,再也没出现过。agent每次启动都会读到这条铁律,根本不会再犯。
日记和MEMORY.md的关系就像工作日志和个人知识库:日记记录每天发生了什么,MEMORY.md提炼出"以后遇到类似情况该怎么办"。日记可以越积越多不用管,MEMORY.md要保持精炼,只留真正重要的规则和教训。
第4步:配置子Agent摘要规则——返回5-10行,不是几千行
解决的问题:子Agent返回撑爆上下文
这个改动不是改OpenClaw的配置文件,而是在workspace的AGENTS.md里写规则。OpenClaw在生成子agent时会自动加载这些规则作为子agent的行为约束:
## Subagent Output Rules - 返回结果不超过10行 - 只包含:结论、关键数据、需要主agent决策的问题 - 完整细节写到workspace文件里,主agent按需读取把这段规则加到AGENTS.md文件的合适位置就行。所有从这个workspace产生的子agent都会自动遵守。
核心思路:子agent把详细结果写文件,只给主agent返回摘要。主agent需要细节时自己去读文件,不需要时不占上下文。
举个实际的例子:改造前,让子agent做一次代码审查,它会把整个文件的逐行分析全部返回,动不动2000-3000行。改造后,它返回的是这样的摘要:
审查完成。发现2个问题: 1. P0:login接口缺少rate limiting,可被暴力破解 2. P1:错误日志打印了完整request body,可能泄露敏感信息 详细分析已写入 workspace/review-auth-module.md主agent上下文只多了5行,但关键信息一个没丢。需要看完整分析的时候,主agent自己读那个文件就行。
第5步:建立质量保障机制——对撞评审
解决的问题:单人审查漏P0
前4步都是配置和文件层面的改动,这一步是建立工作规范。但重点是:把规范写进MEMORY.md,让agent自动遵守,而不是靠人每次提醒。
对撞评审的做法: 同一份代码,至少两个agent独立审查。一个agent看完给意见,然后把代码(不带第一个agent的意见)交给另一个agent再审一遍。两份结果放一起对比:都说没问题,大概率真没问题;意见冲突,值得仔细看。
这条规则写在MEMORY.md的"铁律"里,每次session自动加载。不是靠人记,是靠系统保证。
实际效果有多明显? 对撞评审上线后第一次使用,就从一个之前6人审查通过的模块里揪出了4个P0级问题:
- 前端没传version字段
——接口要求必传,但前端漏了,测试环境没报错因为后端有默认值,上线后默认值逻辑变了就崩了 - 积分审计接口越权
——普通用户能查到其他用户的积分变动记录,权限校验只检查了登录态没检查数据归属 - 调了一个不存在的API
——前端调的接口路径在上次重构时改了,但前端没同步更新,本地mock数据掩盖了问题 - CSS类名冲突
——两个组件用了同名的CSS class,在单独测试时各自正常,放到同一个页面就互相覆盖样式错乱
这4个问题,之前6个agent单独审查时一个都没发现。其中前端没传version和CSS冲突是历史遗留问题——之前修过但记忆丢失后又回归了。写进MEMORY.md之后,agent每次审查都会特别注意这几类问题。
为什么单人审查会漏?因为每个agent都有自己的盲区。第一个agent可能更关注逻辑正确性,忽略了权限校验;第二个agent可能更关注安全性,反而能发现越权问题。对撞评审的本质就是用多个视角覆盖单一视角的盲区。

改造后的效果:逐项对比
对应问题1:session切换频率
改造前:一天切5-10次session。
改造后:Compaction自动压缩+contextPruning清理缓存,session切换频率降低了80%以上。偶尔一天切1次,大部分时候一个session聊到底。
对应问题2:新session启动时间
改造前:每次新session交代背景10-15分钟。
改造后:TOOLS.md + MEMORY.md自动加载,AI醒来就知道项目环境和历史教训。新session启动后直接干活,不需要"入职培训"。
对应问题3:代码审查质量
改造前:6人审查,0个P0被发现,同样的bug反复出现。
改造后:对撞评审制度上线,首次使用就发现了4个P0级问题(前端漏传字段、接口越权、API路径过期、CSS冲突),其中2个是历史遗留的回归bug。历史教训写在MEMORY.md里,不再重复踩坑。
对应问题4:子Agent输出控制
改造前:子agent返回几千行,撑爆主agent上下文。
改造后:AGENTS.md里配置输出规则后,子agent返回5-10行摘要,详细结果写文件。主agent上下文干净,后续对话质量稳定。
对应问题5:记忆整理自动化
改造前:Dreaming功能0条自动promote,全靠手动。
改造后:开启memoryFlush配合Compaction的customInstructions,系统在压缩上下文前自动把关键信息写入日记文件。再结合memory-wiki插件的dreaming功能,定期从日记提炼长期记忆。不再完全依赖人工提醒,记忆整理流程大部分自动运转。
总结对比表

你也可以这样做
不需要改模型,不需要训练数据,不需要搞RAG。全是文件和配置层面的事。以下每步都基于OpenClaw,但核心思路——用文件给AI建记忆——在任何Agent框架里都适用。
- 配置Compaction
:在 openclaw.json的agents.defaults.compaction里加上面那段配置,重启OpenClaw生效。关键是开启memoryFlush并写好customInstructions,告诉它哪些信息压缩时必须保留。 - 写TOOLS.md
:在你的agent workspace根目录( ~/.openclaw/agents/<agent-name>/workspace/)下创建TOOLS.md,把反复跟AI强调的环境信息写成文件。5分钟搞定,立竿见影。 - 建日记目录
: mkdir -p memory/,在AGENTS.md里约定agent完成重要任务后主动写日记到memory/YYYY-MM-DD.md。配合memoryFlush,Compaction压缩前也会自动触发写入。 - 维护MEMORY.md
:定期从日记提炼精华,写入workspace根目录的 MEMORY.md。这个文件每次session启动自动加载,是AI的"长期记忆"。 - 上对撞评审
:关键代码至少两个agent独立审查,规则写进MEMORY.md的"铁律"部分。agent每次启动都会读到,不需要人来提醒。
最简单的起步:从TOOLS.md开始。 把那些你反复跟AI说的东西写成文件,让它每次醒来自己看。五分钟,立竿见影。
整套改造投入大概半天时间,但回报是每天省下至少30分钟的重复劳动,而且随着MEMORY.md和TOOLS.md的积累,AI会越来越懂你的项目,犯的错越来越少。这可能是投入产出比最高的AI提效方案了——不用换模型,不用买更贵的API,改几个文件就行。
夜雨聆风