153 lines
8.4 KiB
Markdown
153 lines
8.4 KiB
Markdown
# 让AI拥有"记忆":OpenClaw + Self-Improving 每日复盘实战
|
||
|
||
## AI记不住,才是最大的问题
|
||
|
||
我用AI agent已经有一段时间了。一个最让我头疼的问题不是"AI回答质量差",而是:**AI每次对话都是一张白纸**。
|
||
|
||
昨天我跟它说过"这个问题不要用A方法",今天它照常用。上一周我教会它的一个工作流,下周一它完全忘了。听起来很蠢对吧?但这就是大多数AI agent的现状——**没有记忆,只有上下文窗口**。
|
||
|
||
所以我花了点时间,给我的AI agent搭了一套"记忆系统"。用了两个月,效果超出预期。今天分享一下我的做法。
|
||
|
||
---
|
||
|
||
## 核心思路:双层记忆架构
|
||
|
||
我的方案不是什么黑科技,思路很简单:**短期记忆 + 长期记忆**。
|
||
|
||
**短期记忆层**是每天的对话记录文件(`memory/YYYY-MM-DD.md`)。每天结束,agent自动把当天的操作、遇到的问题、未完成的事项写进这个文件。第二天启动时,agent先读这个文件,接上昨天的工作。
|
||
|
||
**长期记忆层**是 `memory-lancedb-pro`(基于 LanceDB 的向量数据库)。重要的决策、用户偏好、反复使用的流程,直接存进去。下次需要的时候,agent通过语义搜索找回来,而不是靠"记性好不好"。
|
||
|
||
两层各司其职:**每日文件管"上下文",向量数据库管"知识"**。
|
||
|
||
---
|
||
|
||
## 每日复盘:23:00的定时任务
|
||
|
||
我给每个agent都设置了每天23:00(北京时间)自动执行复盘。通过 OpenClaw 的 cron 任务实现,每个agent独立运行自己的复盘流程。
|
||
|
||
复盘做的事情很直接:
|
||
|
||
1. 读取当天的 memory 文件
|
||
2. 回顾当天的对话记录
|
||
3. 提炼 learnings(学到了什么、踩了什么坑、下一步怎么做)
|
||
4. 把有价值的经验更新到长期记忆(LanceDB)
|
||
|
||
---
|
||
|
||
## 从AGENTS.md设计一个"懂行"的agent
|
||
|
||
光有记忆系统不够,agent的行为规范也很重要。我在每个agent的 `AGENTS.md` 里定义了几件事:
|
||
|
||
**角色定位**:每个agent是干什么的。比如星辉负责日程、邮件、提醒、任务管理;星曜负责基础设施和服务器运维。职责清晰,边界明确。
|
||
|
||
**行为准则**:优先级、确认流程、什么不该做。比如所有外部操作(发邮件、对外通信)必须经过用户确认才能执行;收到心跳(heartbeat)时不要每次都回复"HEARTBEAT_OK",而是真正去做检查。
|
||
|
||
**工具映射**:用户说"帮我发邮件",agent知道调用 `agentmail` 而不是瞎猜。这个映射表让我可以随时调整工具实现,而不需要改agent的行为描述。
|
||
|
||
有了这份文档,新agent启动时就能快速了解"我是谁"、"我该做什么"、"我用什么工具"。
|
||
|
||
---
|
||
|
||
## 真实案例:记忆如何改变了agent的行为
|
||
|
||
下面从我真实的使用日志里摘几个例子,来看记忆系统到底怎么work的。
|
||
|
||
---
|
||
|
||
### 案例一:同一个坑踩了两次,但第二次快速修好了
|
||
|
||
我给所有agent配置了Telegram通知。创建cron任务时,需要指定 `--to 5038825565`(我的chat ID)。
|
||
|
||
第一次,星辉踩坑了:我在delivery配置里用了 `--to user:5038825565`,结果Telegram报错"chat ID must be numeric"。当时我不知道为什么,折腾了一阵才找到原因。
|
||
|
||
**如果没有记忆**:一周后我再创建另一个cron任务,大概率会再踩一次同样的坑。
|
||
|
||
**有了记忆之后**:我把这个错误记进了LEARNINGS.md,标注了正确写法"用纯数字,不用user:前缀"。一周后我让星辉再建一个cron任务,它直接去记忆里查,一分钟搞定,没有再踩坑。
|
||
|
||
这就是"fact层记忆"的作用——**存住事实,下次遇到秒级解决**。
|
||
|
||
---
|
||
|
||
### 案例二:装了一个工具,但OAuth还没授权完成
|
||
|
||
3月27日,星辉安装了 `gog`(Google Workspace CLI)这个技能。装完了我让它去查日历,它说还没授权。
|
||
|
||
**如果没有记忆**:下次我让它用gog,它可能再次尝试直接使用,然后再次失败,我再去找解决方法。一来一回好几次。
|
||
|
||
**有了记忆之后**:星辉把"gog已安装,OAuth未完成授权"记进了当天的复盘笔记。第二天我让它用gog,它直接说"gog需要先完成OAuth授权,请执行 `gog auth add`"——不需要我重新解释背景。
|
||
|
||
这就是"workflow记忆"的作用——**记住当前状态,避免重复确认**。
|
||
|
||
---
|
||
|
||
### 案例三:所有cron任务加前缀,改了一次,全部生效
|
||
|
||
3月26日,我决定给所有cron任务名称加上agent的中文名作为前缀,比如`[星辉]每日复盘`、`[星曜]服务检查`,这样在日历里一眼就能区分是谁的任务。
|
||
|
||
手动一个个改太麻烦了。我让星辉去批量更新。
|
||
|
||
**如果没有记忆**:下次新建cron任务时,它可能又忘了加前缀,我需要再次提醒。
|
||
|
||
**有了记忆之后**:星辉把"cron任务命名规范:加[]中文前缀"记进了LEARNINGS.md。之后所有新建的任务,星辉自动遵循这个规范,不需要我再说一遍。
|
||
|
||
这就是"decision层记忆"的作用——**记住决策原则,让规范自动执行**。
|
||
|
||
---
|
||
|
||
### 案例四:备份脚本跑成功了,但传输到NAS那步忘了
|
||
|
||
3月27日,星辉执行每日Obsidian备份。它成功打包了文件,但传输到NAS那步忘了——因为那步是手动执行的,不在脚本里。
|
||
|
||
**如果没有记忆**:第二天它继续跑备份,打包继续成功,传输继续忘。周而复始。
|
||
|
||
**有了记忆之后**:星辉在复盘里记录了这次执行结果。第二天它跑备份时,主动检查了上一条记录,发现"传输那步容易漏",这次就记住了。
|
||
|
||
这就是**每日复盘的价值**——不是记流水账,而是**主动发现流程漏洞并修复**。
|
||
|
||
---
|
||
|
||
### 案例五:密码存在哪了?
|
||
|
||
3月31日,星辉需要用 `gog` 访问Google Calendar。但gog的认证信息存在Macmini的Keychain里,需要先解锁。我把密码存在了记忆里。
|
||
|
||
之后任何需要用到这个密码的场景,星辉直接去记忆里查,不再需要我问"那个Keychain密码是什么来着"。
|
||
|
||
这就是**长期记忆的作用**——存住那些不常用但重要的信息。
|
||
|
||
---
|
||
|
||
## 实战技巧:让这套系统真正work
|
||
|
||
说几个真正管用的经验:
|
||
|
||
**定时任务一定要配置Telegram通知**。OpenClaw cron任务的 `delivery.channel` 必须设为 `"telegram"`,这样任务执行完了我能在Telegram收到通知,知道哪个任务成功了、哪个出了问题。之前没配这个,有几个任务失败了半个月我都不知道。
|
||
|
||
**每天第一次对话时检查记忆文件**。Session启动时,agent自动检查今天的memory文件是否存在,不存在就创建一个。这个小小的routine省去了很多"你还记得上周说的那件事吗"的尴尬。
|
||
|
||
**遇到工具失败先查记忆再重试**。这是agent行为准则里的一条铁律:任何工具失败,先用 `memory_recall` 搜一下之前有没有遇到过、怎么解决的,再决定要不要重试。减少重复踩坑。
|
||
|
||
**经验要存两条**:一条存"事实层"(问题原因是什么、怎么修复),一条存"决策层"(以后遇到什么情况该怎么做)。前者帮我快速定位问题,后者帮我做出更好的选择。
|
||
|
||
---
|
||
|
||
## 效果如何?
|
||
|
||
用了两个月,我最直接的感受是:**agent真正开始"认识"我了**。
|
||
|
||
它知道我默认用163邮箱发件、知道遇到服务器问题先SSH进服务器看看日志而不是慌、知道每次创建cron任务要加agent中文名前缀、知道gog需要OAuth授权才能用。它不再每次都问我重复的问题,也不再在我提到"那个任务"时一脸茫然。
|
||
|
||
错误率也下来了。以前同一个坑踩两三次是常态,现在agent能从记忆里找到之前的解决方案,第一次就能做对。
|
||
|
||
---
|
||
|
||
## 这套方案适合你吗?
|
||
|
||
说实话,如果你只是偶尔用一下AI聊天,这套系统 overkill。但如果你像我一样,**同时运行多个agent、有固定的日常工作流、需要AI真正帮你做事情**,这套双层记忆 + 每日复盘的方案值得一试。
|
||
|
||
核心不是技术有多复杂,而是**习惯**:每天复盘、每次踩坑都记录、重要决策同步到长期记忆。做到了这些,AI agent就不再是"每次都要重新教"的工具,而是真正有记忆的助手。
|
||
|
||
---
|
||
|
||
*这套系统运行在我的 Mac Mini(中央控制节点)上,通过 OpenClaw 管理多个agent协同工作。如果你也在用OpenClaw,欢迎交流。*
|