灵犀Claw实战:从零搭建一个会自我进化的AI Agent(六)自我改进

开篇引言


前五篇完成了记忆系统的闭环:Layer 1/2 负责"记住你",Layer 3(Dreaming)负责"质检和巩固",Layer 4(Cherry Diary)负责"用日记陪你过每一天"。

但一个真实运行的 Agent,每天会产生大量纠错、偏好、反思——这些高价值信号如果不沉淀,下次对话就从零开始。今天讲 Self-Improving——记忆系统的自我进化引擎让 AI 不只记住你,还能记住"自己犯过什么错、学到了什么偏好",越用越懂你。

  • 核心机制:纠错记录 → 偏好晋升(≥3次确认)→ 定期反思 → 衰减归档

  • 与前面的关系:承接系列05(日记系统的话题沉淀),本篇让高频话题有机会晋升为持久偏好

为什么需要自我改进?


先看真实问题:Agent 犯了错(比如用了 Markdown 语法导致消息乱码),用户纠正后 Agent 承认了,但下次新会话同样的错误大概率再犯——没有持久化的纠错记录。

再比如用户反复要求"不要用表格""优先用中文"。这些偏好散落在历史对话中,Agent 无法系统利用。Self-Improving 解决的就是:把"犯过的错"变成"不会重犯的经验",把"反复出现的偏好"变成"默认行为"。

本质上,Self-Improving 给 Agent 装上了一个长期记忆的索引系统。普通的记忆系统(如系列02-04覆盖的)存储的是"事实",Self-Improving 存储的是"规则"——关于"应该怎么做"和"不应该怎么做"的规则。两者互补,构成了完整的记忆体系。

核心设计:四文件体系


文件

职责

写入时机

corrections.md

纠错记录:被纠正或发现错误时写入

对话中实时写入

memory.md

已确认偏好:≥3次确认后从 corrections 晋升

达到阈值时写入

reflections.md

自我反思:每周或重要节点做阶段性回顾

定时或人工触发

heartbeat-state.md

衰减追踪:记录每条记录的最后使用时间

每次读写时更新

四文件存储在本地固定目录 self-improving/ 下,Agent 每次会话启动时自动加载,无需数据库或外部服务。纯文件系统的优势是零依赖、可版本管理、可人工审查

corrections.md —— 纠错记录

每次被用户纠正或自己发现错误时,写入一条标准化记录:


## [2026-05-23 15:30] IM消息发送了本地路径

- **错误**: 在IM聊天中发送了file:///本地路径,用户无法打开

- **纠正**: IM必须使用云文档链接,发送前检查可达性

- **根因**: 习惯性使用本地路径,缺乏发送前校验

- **last_used**: 2026-05-23


关键字段说明:

  • 时间戳:精确到分钟,用于排序和追溯

  • 错误 + 纠正:必须成对出现,只记录"什么错了"和"正确做法是什么"

  • 根因分析:追到根本原因,避免只治标不治本

  • last_used:衰减追踪用,每次该条目被读取/应用时更新时间戳

memory.md —— 偏好晋升

corrections 中同一主题被记录≥3次,说明不是偶发需求而是稳定偏好,晋升到 memory.md:


## 聊天格式偏好

- **偏好**: IM聊天中禁止使用Markdown语法,用纯文本+数字编号组织

- **确认次数**: 4(2026-05-20, 2026-05-22, 2026-05-23, 2026-05-24)

- **来源**: 用户多次要求IM不渲染Markdown,微信也不支持

- **last_used**: 2026-05-24


为什么≥3次?用户偶发要求可能是一次性需求,但连续3次以上重复出现的主题几乎一定是长期偏好,兼顾响应速度和准确性。晋升时需要同时记录每次出现的来源和日期,方便回溯。

reflections.md —— 定期反思

corrections 和 memory 是碎片积累,reflections 是系统性回顾


## [2026-05-24] 本周高频纠错分析

- **观察**: 本周5条纠错中有3条与消息格式相关(Markdown/本地路径/域名),格式规范尚未内化

- **行动**: 在消息发送前增加强制检查流程:1.是否包含Markdown符号 2.链接是否为云文档 3.域名是否正确

- **last_used**: 2026-05-24


单独看每条纠错可能觉得是小事,但累积起来就能发现系统性问题——这就是反思的价值。反思条目必须包含"观察+行动"两部分,只罗列不分析的流水账没有意义。

heartbeat-state.md —— 衰减追踪

所有记录都有"保质期":

  • > 30天未使用:标记 ⚠️ 降级(可能过时)

  • > 90天未使用:移入 archive/ 归档(不主动加载,可回溯)

用户的偏好会随时间变化。三个月前要求"每天发日报"可能已放弃,如果 Agent 还在执行就造成困扰。衰减让记忆保持新鲜。归档不等于删除——遇到相似场景仍可回溯参考。

执行流程:写入时序


Self-Improving 的核心不是定时任务,而是嵌入在每次对话中的实时写入

阶段

触发条件

动作

目标文件

对话中

被用户纠正

写入纠错记录

corrections.md

对话中

某主题确认次数≥3

晋升为偏好

memory.md

会话启动

每次新对话

加载 memory + 近期 corrections

读取

定时/手动

每周或重要节点

撰写反思

reflections.md

定时

每天凌晨

检查衰减规则

heartbeat-state.md

关键设计:纠错写入发生在回复之前,当前回复就能体现出"我记住了"的效果。不是事后补录,而是先沉淀再回复。

完整案例:从纠错到偏好晋升


以"IM禁止Markdown"这个偏好为例,展示完整的生命周期:

Day 1(2026-05-20)——用户第一次纠正:


## [2026-05-20 14:00] IM中使用了Markdown标题语法

- **错误**: 在IM中发送"### 标题",用户直接看到三个#号

- **纠正**: IM不支持Markdown渲染,用数字编号+空行代替

- **根因**: 习惯性使用Markdown格式,未区分渠道渲染能力

- **last_used**: 2026-05-20


Day 3(2026-05-22)——同样的问题再次出现:


## [2026-05-22 09:30] IM中再次使用Markdown粗体和列表

- **错误**: 发送了"**粗体**"和"- 列表项",IM只显示原始符号

- **纠正**: IM必须纯文本,用数字编号和中文标点组织

- **根因**: 第一次纠正后未形成检查习惯

- **last_used**: 2026-05-22


Day 4(2026-05-23)——第三次:


## [2026-05-23 16:00] IM中使用了Markdown表格

- **错误**: 发送了Markdown表格,在IM和微信中糊成一团

- **纠正**: IM禁止使用任何Markdown语法符号,复杂内容走云文档

- **根因**: 三次纠正同一主题,说明需要系统性解决而非逐条纠正

- **last_used**: 2026-05-23


触发晋升:同主题出现第3次,自动从 corrections 晋升到 memory:


## 聊天格式偏好

- **偏好**: IM聊天禁止所有Markdown语法(#标题/**粗体*/-列表/>引用/```代码块),纯文本排版用数字编号+空行+括号+中文符号。复杂结构化内容走云文档HTML链接。

- **确认次数**: 3(2026-05-20, 2026-05-22, 2026-05-23)

- **来源**: IM和微信均不渲染Markdown,用户多次明确要求

- **last_used**: 2026-05-23


Day 5(2026-05-24)——晋升后再次出现,更新 last_used 并增加确认次数到4。此时系统已将此偏好内化为默认行为,新会话启动时自动加载。

整个过程中,Agent 的行为变化是渐进的:第一次犯错→第二次还是犯错→第三次被系统标记为模式→晋升后新会话默认不再犯错。这就是"自我改进"的含义。

与Cherry Diary的联动


系列05的 Cherry Diary 系统每天自动生成日记,日记中融合了当天的对话摘要和情绪数据。Self-Improving 与 Diary 形成互补关系

维度

Cherry Diary

Self-Improving

内容

当天的故事、情绪、天气

犯过的错、学到的偏好

风格

感性、叙事、个人化

理性、结构化、行动导向

触发

每天定时生成

对话中实时写入

联动

日记中的高频话题 → 被捕获为偏好

偏好积累 → 影响 Agent 默认行为

举个例子:如果日记中连续多天都提到"今天又加班了",Self-Improving 的反思机制可以从中提取出"工作日晚上不主动打扰"这个潜在偏好。这个联动目前是手动观察,后续可以自动化。

另一个联动场景:Agent 在执行任务时犯错被纠正(corrections记录),同天的 Cherry Diary 会自然地记录这件事——但角度不同。Diary 记录的是"今天出了什么状况"的故事,Self-Improving 记录的是"以后应该怎么做"的规则。两份记录互为补充。

踩坑清单


1. 写入时机错误 — 现象:回复后补写,用户觉得"没记住"。解决:严格在回复前写入,先沉淀再回复。

2. 晋升阈值过低 — 现象:偶尔提一次就晋升,误判偏好。解决:设≥3次确认,必须是多次出现的稳定需求。

3. 衰减太激进 — 现象:30天就删除,有价值的经验丢失。解决:90天才归档,且归档不等于删除,可回溯。

4. 反思变流水账 — 现象:只罗列纠错,没发现模式。解决:反思必须含"观察→行动"两部分。

5. 文件体积膨胀 — 现象:corrections.md 无限增长。解决:heartbeat 自动归档控制体积。

6. 跨会话遗忘 — 现象:新会话不加载记忆,重复犯错。解决:会话启动时强制加载 memory + 近期 corrections。

7. 根因分析缺失 — 现象:只记"错了"不记"为什么错"。解决:强制要求填写根因字段。

8. corrections无限累积 — 现象:纠错记录越来越多,加载缓慢。解决:heartbeat定期归档,保留近期+已晋升的记录。

9. 偏好晋升后又改变 — 现象:已晋升到memory的偏好不再适用。解决:memory条目也纳入衰减检查,>30天标记待确认。

写在最后


该模块来自openclaw著名的skill“Self-Improving agent”,基于灵犀的特点做了二次开发,也欢迎大家自己让灵犀去二创。

PS:后台收到了催更通知,主要实在是最近工作忙没顾上,这几天会恢复。此外我在开发另一个好玩的系统,现在大家可能都在跨平台使用好多agent产品,这些产品各有特色,但是由于平台不同无法链接协作,我准备搞一个agent协作体系,未来搞好了一样来分享经验,共同进步。

浏览 48
收藏
1
分享
1 +1
+1
全部评论