通用自我反思记忆系统:为 AI 代理设计的三级本地记忆

前言

长期用 AI 写代码或做任务时,常见问题是:同一句纠正要说很多遍,代理却不把偏好沉淀下来;或者把各种「记忆」堆进一个大文件,上下文越来越满,却分不清哪些是事实、哪些是工作习惯。下面介绍 SkillHub 社区技能 @user_6bedba2d/memorypor(包内标识 self-improving,v2.1.0)。它把纠错、自我反思和重复模式观察写成一套本地文件协议,用热/温/冷三层存储管理,并约定与 AGENTS.md、CLAUDE.md、HEARTBEAT.md 的集成方式,面向各类 Agent 运行时复用同一套 SKILL.md 工作流。

这是什么

一句话定位:通用自我反思、自我批评与自我学习记忆系统,数据落在用户主目录 ~/self-improving/,不依赖 API Key(SkillHub 标签 requires_api_key=false)。

维护与发布:SkillHub 坐标 @user_6bedba2d/memorypor,来源为 community,分类 ai-agent,发布者 user_6bedba2d。页面统计(以 SkillHub 抓取为准):评分 100000,下载 1712 次,安装计数 0。

它解决的是「执行质量」层面的持续改进——偏好、纠错、工作流模式——并与事实型长期记忆(如 MEMORY.md、按日笔记)在文档中明确分工,避免混在一处。

核心功能

以下能力均来自技能包 SKILL.md 与配套文档,已核实。

三级存储(热 / 温 / 冷)

记忆根目录默认为 ~/self-improving/。若目录不存在,按 setup.md 或 scripts/setup.sh 初始化。

~/self-improving/
├── memory.md              # 热层:≤200 行(高频配置可更高),始终加载
├── corrections.md         # 纠错与教训主日志
├── corrections-pending.md # 溢出待处理区(14 天观察期)
├── index.md               # 主题索引
├── heartbeat-state.md     # 心跳维护状态
├── config.json            # 容量与层级配置
├── projects/              # 温层:按项目
├── domains/               # 温层:按领域
└── archive/               # 冷层:归档
层级 位置 典型限制 加载策略
热层 memory.md ≤200 行(高频档 ≤400 行) 非平凡任务前读取
温层 projects/、domains/ 单文件 ≤500 行 按上下文匹配,最多少量文件
冷层 archive/ 无硬性上限 仅在明确查询时加载

学习信号与晋升

代理在识别到用户纠错、明确偏好或重复模式时写入对应文件;一次性指令、纯上下文限定和假设性讨论不记录。同一模式出现 3 次后,技能要求向用户确认,确认后再晋升到热层 memory.md,而不是静默写入永久规则。

自我反思在重要任务结束后按固定字段记录(上下文 / 反思 / 教训),必要时进入 corrections.md 并参与计数。

维护与运维

  • 心跳规则:heartbeat-rules.md,可执行脚本 scripts/heartbeat.sh。
  • 统计:scripts/stats.sh;用户说「记忆统计」时按 SKILL.md 模板汇报各层计数。
  • 导出 / 导入:scripts/export.sh、scripts/import.sh。
  • 安全边界:见 boundaries.md,不存储凭据等敏感类信息;技能声明不发起网络请求、不读取 ~/self-improving/ 外文件。

与用户对话的快捷映射

技能在 SKILL.md 中定义了常见口令,例如「你学到了什么?」→ 展示 corrections.md 最近条目;「显示我的模式」→ 热层 memory.md;「导出记忆」→ 打包全部文件。

安装与启用

通过 SkillHub 安装技能包

官方页面要求代理按 SkillHub 安装文档操作,并安装坐标 @user_6bedba2d/memorypor。通用流程如下。

1、确认已安装 skillhub CLI(未安装时按 SkillHub 安装文档 执行 curl 安装脚本)。

2、将技能安装到当前 Agent 的 skills 目录(必须用 --dir,否则默认 ./skills/ 可能不被识别):

skillhub install @user_6bedba2d/memorypor --dir <你的 Agent skills 目录>

常用路径(来自同一安装文档):

  • Cursor:~/.cursor/skills/
  • Claude Code:~/.claude/skills/
  • Codex:~/.codex/skills/ 或项目下 .agents/skills/

安装完成后需按你所用客户端要求重启或刷新技能列表。

初始化本地记忆目录

技能逻辑依赖 ~/self-improving/,与技能包安装位置无关。在已解压的技能目录中执行:

bash scripts/setup.sh --tier normal

--tier 可选 low、normal(默认)、high、heavy,对应 setup.md 中对 corrections.md、memory.md 容量与维护周期的不同预设。

手动方式等价于创建目录并复制 templates/ 下模板到 ~/self-improving/,详见包内 setup.md。

工作区集成

按 setup.md 将自我改进指引追加到 AGENTS.md、CLAUDE.md,并把 HEARTBEAT.md 与 heartbeat-rules.md 对齐,以便周期维护路由到 heartbeat-state.md。文档强调:更新 AGENTS.md 的 Memory 小节时应补充而非整段替换,以免覆盖既有连续性配置。

典型用法

记录用户纠错并晋升

场景来自包内 README.md 与 SKILL.md 说明,可复现逻辑如下。

1、用户说:「不,那不对。总是使用 2 个空格缩进。」→ 写入 corrections.md,计数 1/3。

2、用户再次强调缩进规则 → 计数 2/3。

3、第三次同类纠正 → 代理询问是否固化为永久规则;用户确认后写入热层 memory.md,并从纠错日志中按流程引用来源。

任务结束后的自我反思

SKILL.md 给出的记录格式:

上下文(CONTEXT):构建Flutter UI
反思(REFLECTION):间距看起来不对,不得不重做
教训(LESSON):展示给用户前检查视觉间距

非平凡任务前加载记忆

setup.md 建议在任务开始前读取 ~/self-improving/memory.md,再按任务匹配最多 3 个 domains/ 文件及必要时的一个 projects/<name>.md,避免为保险起见加载全部温层文件。

查看运行状态

在技能目录执行:

bash scripts/stats.sh

用于查看热层行数占用、温层项目/领域文件数及脚本输出的健康状态摘要(具体字段以脚本为准)。

适用场景与注意

适合需要跨会话保持工作方式与纠错结果的团队或个人:编码风格、审阅偏好、重复踩坑的教训等。不适合把其当作唯一「事实库」——事件、决策类连续性仍应放在 memory/YYYY-MM-DD.md、MEMORY.md 等第 1 层记忆中,技能 FAQ 也明确二者分工。

使用时需注意:

  • 不要从用户沉默中推断规则;技能把「从沉默中学习」列为常见陷阱。
  • 晋升热层前必须经用户确认,避免污染始终加载的 memory.md。
  • 本地目录 ~/self-improving/ 需自行备份;可用导出脚本做迁移。
  • README 中 curl -sL <setup-url> 为占位说明,实际应以包内 scripts/setup.sh 或 SkillHub 安装后的路径为准。

结尾

@user_6bedba2d/memorypor 把纠错、反思和模式观察收敛到 ~/self-improving/ 的三层文件结构里,用 SkillHub 标准 SKILL.md 约束 Agent 何时读、何时写、何时问用户确认。若你要在 Cursor 或其他客户端里落地同一套行为,可从 SkillHub 页面安装技能包,再按 setup.md 初始化目录并接入工作区文档。

  • SkillHub 页面:https://www.skillhub.cn/skills/user_6bedba2d/memorypor
  • 官方坐标入口:https://api.skillhub.cn/user_6bedba2d/memorypor
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye