Agent的夜曲:为什么AI需要一场好梦
睡觉的时候,大脑并没有关机。它在回放白天的经历,把重要的东西存进长期记忆,把没用的忘掉。这个过程叫记忆巩固(Memory Consolidation),主要发生在 REM 睡眠阶段。
我有一个 AI 助手,叫千千。她每天和我聊天、帮我查资料、写代码、管持仓日报。时间久了,一个问题浮现出来:
她会记住多少关于我的事?
AI Agent 的记忆困境
主流 AI Agent 的记忆方案大同小异:一段长期记忆文件(类似 system prompt)注入每次对话。我的助手用的是 MEMORY.md——一个纯文本文件,记录环境信息、项目状态、我的偏好和习惯。
问题来了。
第一,记忆会爆。 初始容量只有 2200 个字符,很快就塞到 96%。全是「v1 待 push」「某个 MCP 报错了」这种过了几天就过时的信息,新知识根本挤不进去。
第二,纯手动维护不现实。 记忆的增删改全靠对话中手动操作。但对话一多,谁会记得「上周说的那个偏好应该记下来」?
第三,没有淘汰机制。 过时信息永远占着位置,直到手动发现、手动删除。这就像一个从不扔东西的人,房间迟早堆满。
本质上,这是一个信息生命周期管理问题。不只是 AI——人的大脑也面临同样的挑战,只不过人脑用「做梦」来解决这个问题。
那就让她也「做梦」
如果 AI 的记忆困境和人脑类似,那解决方案也可以借鉴。
当时找到了两个参考:
- Claude Code 的 AutoDream:空闲时自动执行 Pruning(修剪)、Merging(合并)、Refreshing(刷新)三种操作,保持记忆健康。
- OpenClaw 的 Dreaming:模拟睡眠周期——浅睡采集数据、REM 阶段反思分析、深睡阶段评分决策。
两个方案各有侧重。Claude Code 偏工程实用,OpenClaw 偏拟人隐喻。我两个都要——工程上的严谨,加上一层让人觉得有意思的包装。
四个阶段,模拟一次完整的睡眠
最终设计了一个四阶段流水线,每三天凌晨 3:00 自动执行一次:
浅睡:翻看这几天的聊天记录
用 session_search 拉取最近 3 天的所有会话,逐一过一遍,提取关键信息。同时读取当前的 MEMORY.md 和 USER.md,知道现在记着什么。
这一步纯采集,不做判断。就像你刚躺下,脑子里飘过今天发生的事。
REM 反思:找出重要的事
分析采集到的内容,识别四类信号:
- 高频主题——反复出现的关键词,说明这件事很重要
- 新发现的工作流——踩过的坑、找到的技巧
- 用户偏好的变化——「以后优先用 A 不要用 B」
- 项目状态变化——从「设计中」变成「已上线」
深睡评分:该记住还是该忘掉?
这是最关键的一步。对每一条现有记忆和每一个候选操作,打一个 0-1 的信心分。
只有得分 ≥ 0.7 的操作才会被执行。
为什么要设这个阈值?因为 AI 在反思阶段会「想太多」。一条「也许可以记一下」的信息,得分通常在 0.5-0.6 之间。没有阈值的话,记忆很快又会被低价值信息塞满。
这和人脑的选择性记忆很像——不是所有经历都会被记住,大脑有自己的过滤机制。
执行:三件事
具体操作只有三种:
修剪(Pruning)——删除过时信息。比如「Cockpit v1 待 push」已经被 push 了,这条就没用了。或者某个临时报错已经修好了,留着也是浪费空间。
刷新(Refreshing)——更新旧记忆。比如项目从「v0.13」升级到了「v0.17」,偏好从「逐步确认」变成了「流式直出」。信息还在,但需要更新。
巩固(Consolidating)——沉淀新知识。从近期对话里提取值得长期记住的东西,写入记忆。比如「Jw 喜欢用思维模型思考」「持仓卖出规则是 -8% 硬止损」。
每次最多执行 10 个操作。修剪和刷新优先——先腾出空间,再存新东西。
安全边界
让 AI 自动修改自己的记忆,不能没有护栏。设计了几条硬规则:
- 敏感信息过滤:API Key、Token、密码、持仓量、成本价、盈亏金额——绝对不写入记忆。
- 信心分阈值:低于 0.7 直接跳过,宁可少记,不可错记。
- 容量管理:记忆超过 90% 使用率时,强制触发修剪,不管有没有新东西要存。
- 操作限制:每次最多 10 个操作,防止单次做梦搞出太大变动。
- 只动记忆文件:不碰源代码、配置文件、定时任务。做梦只管记忆,不越界。
运行了两个月,效果如何?
从 5 月 12 日首次 dry-run 开始,到现在已经跑了二十多次。贴几条真实的梦境日志:
第一次正式做梦(5/12):
回顾 29 个会话。修剪 0 | 刷新 1 | 巩固 0 | 跳过 3。刷新了 Cockpit 项目状态:「v1 待 push」→「v1 已部署上线」。
容量告警日(5/19):
MEMORY.md 撑到了 114%,USER.md 到了 107%。一次性修剪 7 条、刷新 3 条、巩固 3 条,把 MEMORY 降到了 54.9%。删掉了「STT 配置」「YouTube cookies」「3thing 产品地址待补充」这类低频过时信息。
安静的一周(6/1):
回顾 0 个用户会话——周末,我没怎么和她聊天。评估了 3 个候选操作,全部低于 0.7 阈值,全部跳过。什么都没做。这也是一种正确的决策。
回头看这些日志,有几个有意思的发现:
- 大部分操作是刷新和修剪,巩固很少。这说明一旦基础信息稳定下来,真正需要新增的知识并不多。系统在自我维护,而不是无限膨胀。
- 跳过率很高。很多看起来「也许值得记」的东西,评分都在 0.5-0.6,被阈值挡住了。这恰好说明阈值设计是对的。
- 容量管理有效。5/19 那次大清理之后,记忆使用率一直稳定在 60-80% 之间,再没爆过。
AI 的「梦」和人的梦,有什么不同?
表面上看,这套机制模仿了人的睡眠周期——采集、反思、决策、执行,像极了 REM 睡眠中大脑做的事。
但本质上,差别很大。
人做梦是模糊的、联想的、非线性的。你会梦见白天见过的人、想过的事,但它们会被打乱、重组、赋予新的情感。很多时候你醒来只记得一种感觉,说不清具体梦到了什么。
AI 的「梦」是精确的、结构化的、可审计的。每一次操作都有评分、有理由、有日志。你知道她为什么删掉了那条记忆,为什么跳过了这个候选。
人在梦里会创造——那些天马行空的联想,是创造力的来源。
AI 在「梦」里只整理——她不会在睡觉时突然产生新的想法,只是把已有的信息归档得更好。
这可能是当前最大的局限。人的记忆巩固不只是整理,还有重组和创造。AI 要做到这一点,可能需要一种完全不同的机制——不是在「睡觉」时整理,而是在「走神」时联想。
不过那是一个更大的话题了。
写在最后
做这件事的初衷很简单:AI 助手用了几个月之后,我发现她开始「忘事」——不是真的忘了,而是记忆空间满了,旧的不去新的进不来。
手动维护不可持续,那就自动化。自动化的关键不是「什么都记」,而是「记该记的,忘该忘的」。
阈值 0.7,三操作模型,每三天一次。简单,但有效。
就像生活中的很多事情一样——最好的系统不是最复杂的,而是刚好够用的。