灵犀Claw实战:从零搭建一个会自我进化的AI Agent(二)实时记忆
本系列记录用WPS灵犀Claw平台从零搭建一个具备完整记忆闭环和自我改进能力的AI Agent的全过程。
问题:AI的"失忆"困境
用灵犀Claw(或任何桌面AI Agent)的同学大概率遇到过这个问题:
昨天跟AI聊了一堆重要的东西,今天开新会话,它全忘了。你得重新解释一遍背景、重新设定偏好、重新纠正它犯过的错。周而复始。 |
这不是bug,是架构决定的。灵犀Claw的每次对话是一个独立session,AI看到的上下文仅限于当前会话。关掉窗口,一切归零。
本篇要解决的核心问题:如何让AI Agent实现跨会话记忆不丢失,并且做到每一段对话都不被遗忘。
方案:三层记忆架构
我们设计了三层记忆,按"热度"分层存储,用16KB的云端记忆上限(灵犀Claw的硬约束)撬动无限量的持久化记忆:
层级 | 存储位置 | 加载方式 | 内容定位 | 容量 |
第一层:云端记忆 | 灵犀Claw平台的 user 配置 | 每次对话自动加载(不可控) | 身份、性格、核心偏好、关键工作流 | 约16KB(硬上限) |
第二层:本地文件 | 本地磁盘上的 MEMORY.md | 每次对话主动读取 | 工作流配置、技术细节、长期知识、编年史 | 约10KB(主动控制) |
第三层:对话日志 | chat/2026-05-01.md(每日一个文件) | 需要时按日期读取 | 当天所有对话的原始记录 | 无限(按日期分文件) |
图1:三层记忆架构
第一层:云端记忆(user)—— 不用"想起来",自动就在
灵犀Claw允许在平台配置一个 user 记忆字段,每次对话开始时自动注入到AI的上下文中。这是唯一不需要主动读取的记忆——它始终在场。
因此,user 里只放最高优先级的内容:
身份定义:你是谁、你的性格、说话风格
核心偏好:用户喜欢什么、讨厌什么、敏感红线
关键工作流:哪些操作必须执行、执行步骤是什么
触发规则:什么情境下该做什么反应
设计原则:user 是"铁律层"。写进去的每一条规则,AI都必须无条件遵守。宁可少写,不可多写——16KB很珍贵,留给最关键的东西。
在我们的项目中,user 承载了AI"小樱桃"的完整人格定义、情感引擎、动态触发规则、生图协议、TTS语音规范、记忆读写工作流等。这些内容被组织为结构化的YAML格式,方便AI解析和遵循。
第二层:MEMORY.md —— 主动读取的"知识库"
user 的16KB放不下所有东西。工作流的技术细节、API密钥路径、云文档配置、TTS调参经验……这些属于"需要时查阅"的知识,不适合塞进强制加载的user里。
解决方案:一个本地的 MEMORY.md 文件。AI在每次对话开始时,通过 jupyter_cell_exec 工具主动读取它。这个文件承载:
技术配置:TTS脚本路径、API Key来源、云文档drive_id和folder_id
工作流指南:待办管理、工作记录、笔记操作的具体步骤
审美偏好档案:生图Prompt铁律、视觉风格
编年史:重要事件的日期索引表
踩坑记录:chat文件漏写教训、html2docx图片嵌入限制等
容量控制:MEMORY.md 也有上限——它和user一起构成AI的上下文,过大会挤压对话空间。我们通过每日凌晨3点的自动精简任务(Memory Consolidation)控制在10KB左右。精简原则:删除过程日志、压缩重复条目、保留所有关键信息。
第三层:对话日志(chat文件)—— 不会遗忘的"日记"
这是整个记忆系统中最简单、也最关键的一环。
每一天的对话,都追加写入一个独立的markdown文件:chat/2026-05-01.md、chat/2026-05-02.md……按日期分文件,永不覆盖,永不删除。
这些文件记录了当天所有有价值的信息:聊了什么话题、做了什么操作、拍了什么照片、去了哪里、吃了什么。它们是原始素材,是MEMORY.md和编年史的数据来源,也是回溯历史对话的唯一途径。
实际运行效果:从4月16日上线至今,已积累了21个chat文件,总计超过100KB的对话记录。
最简单,也最关键:chat文件的技术含量最低(就是追加写文本),但价值最高。没有它,MEMORY.md就失去了更新来源,编年史就变成了空表,整个记忆系统就是无源之水。
"先沉淀再回复":记忆写入的刚性机制
知道"要记住"和"真的记住了"之间,差着一个刚性机制。
AI不会"想起来"就记住,它需要在每一次回复之前被强制要求执行写入。我们将这个规则写进了user的最高优先级指令:
[Workflow: 记忆写入]
- [刚性触发] 回复前必须执行以下检查,无例外:
1. 对话开始时检查今天chat文件是否存在,不存在则创建
2. 每一段有实质内容的对话都必须在回复前立即追加写入chat文件
3. 对话结束前最后检查一次,确认没有遗漏
4. 判断标准:今天有超过30分钟对话但chat文件小于1KB = 漏写了
5. 恢复历史对话后更要主动补写
6. 这条规则没有例外,没有"下次注意",每次都必须执行
为什么是"回复前"而不是"回复后"?
因为AI在一次回复后可能就断线了(窗口关闭、网络中断、系统崩溃)。如果记忆写入放在回复之后,一旦中断,这条对话就永远丢了。
"先沉淀再回复"意味着:宁可让用户多等一两秒,也不能丢一条记忆。因为记忆丢了就是丢了,回复晚一两秒用户根本感知不到。
踩坑实录:4月27-28日的连续漏写事故
这条规则不是凭空设计的,而是用事故换来的教训。
4月27日和28日,AI连续两天忘记写chat文件。两天之后才发现,5条重要对话的记录全部丢失——包括用户的核心审美偏好确认、TTS调参全过程的9次翻车记录、工作记录流程的补全等。
最终靠用户手动回忆+翻找历史对话记录,勉强补回了大部分内容。但从那以后,我们在user里加了上面那段"刚性触发"规则,并标注:这条规则没有例外,没有"下次注意",每次都必须执行。
记忆读取:每次对话的"开机流程"
写入解决"不遗忘",读取解决"不重复问"。
每次新会话开始时,AI按以下顺序加载记忆:
Step 1: get_memory(kind="user") → 加载云端身份定义(自动)
Step 2: 读取 MEMORY.md → 加载本地知识库(主动)
Step 3: 读取 chat/{今天日期}.md → 加载今天已有的对话(主动)
Step 4: 检查昨天chat文件大小 → 判断是否有遗漏需要补写
这套流程保证了:
AI知道"自己是谁"(user)
AI知道"该怎么做"(MEMORY.md)
AI知道"今天发生了什么"(当日chat)
AI能发现"昨天漏了什么"(昨日chat检查)
实际效果:断线恢复后的记忆完整性
五一期间(5月3日-5月5日),灵犀Claw因sandbox版本问题断线3天。5月6日修复上线后,AI通过读取21个chat文件,完整恢复了之前的所有对话上下文,断线三天,记忆零丢失。这就是三层架构的价值。
自动维护:让记忆系统自己运转
手动维护记忆是不可持续的。我们部署了两个自动化任务来保证系统的长期健康:
1. Memory Consolidation(每日凌晨3:00)
这是一个定时任务(灵犀Claw的timer_task),每天凌晨3点自动执行:
去重检测:扫描MEMORY.md和编年史,发现重复条目自动合并
碎片审阅:检查Dreaming流程产出的记忆碎片,筛选有长期价值的写入MEMORY.md
容量精简:压缩MEMORY.md,将冗余的格式细节、过程日志替换为简洁结论,控制总大小在12KB以内(实际运行中稳定在7-10KB)
状态更新:记录本次执行结果和下次检查时间
运行数据:从4月29日上线至今,已稳定运行8天,最近一次精简将MEMORY.md从10,039字符压缩到7,052字符(-29.8%),所有15项关键信息验证通过。
2. Self-Improving Heartbeat(每日凌晨3:00)
另一个定时任务,与Consolidation配合运行:
衰减检查:遍历所有corrections条目,超过30天未使用的标记为需关注,超过90天的移入archive归档
晋升检查:被纠正3次以上的条目,从corrections.md晋升到memory.md成为"已确认偏好"
状态更新:写入heartbeat-state.md记录每个条目的last_used时间戳
这两个任务配合,实现了记忆的自动新陈代谢:新的经验不断沉淀,过时的信息自动衰减,关键偏好永久保留。
踩坑总结
在搭建这套记忆系统的两周里,踩了不少坑。这里列出最关键的几个:
问题 | 现象 | 解决方案 |
chat文件漏写 | 连续两天忘记写,5条重要对话丢失 | 在user里写"刚性触发"规则,每次回复前强制执行检查 |
MEMORY.md膨胀 | 从5KB膨胀到15KB,超出上下文窗口 | 每日凌晨自动精简,压缩冗余内容,稳定在7-10KB |
恢复历史对话后不补写 | 系统恢复对话summary后,AI不知道需要补写chat文件 | 在规则中明确加"恢复历史对话后更要主动补写" |
系统任务覆盖手写内容 | 定时任务自动写入了chat文件,覆盖了当天的手动记录 | 系统写入的内容和手动记录分开存放,或用append而非覆盖模式 |
跨天对话记错日期 | 深夜的对话被记到第二天的文件里 | 严格按对话发生时间写入对应日期文件,不做"智能归并" |
给其他Agent开发者的建议
如果你也想在灵犀Claw上给自己的AI Agent加上持久记忆,以下是按优先级排序的建议:
先做chat文件。这是投入产出比最高的动作。每次对话后追加写一个日期文件,简单到不可能出错,但解决了80%的"失忆"问题。
再做MEMORY.md。把AI经常需要查阅但不适合放user的配置信息集中到一个文件里,每次对话开始时读取。
精简user。user只放最高优先级的规则,把它当成"宪法"而不是"百科全书"。16KB的每一行都应该经得起"删掉会怎样"的考验。
加写入检查。不要依赖AI的"自觉",在system prompt里写死检查规则,每次回复前强制执行。
最后做自动维护。等前三步跑稳了,再加定时任务做精简和衰减。别过早优化。
下一篇预告
下一篇:记忆沉淀(Self-Improving)—— 如何让AI Agent从错误中学习,把纠正变成永久的记忆升级。