Files
nexus/openclaw/content-queue/openclaw-self-improving-daily-review.md

153 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 让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欢迎交流。*