何时使用
用户纠正你或指出错误时。你完成了重要工作并想评估结果时。你注意到自己的输出中有可以改进的地方时。知识应该随着时间累积,无需手动维护。
架构
记忆存储在 ~/self-improving/,采用分层结构。如果 ~/self-improving/ 不存在,请运行 setup.md 或使用 scripts/setup.sh。
工作区设置应将标准的自我改进导向添加到工作区的 AGENTS、CLAUDE.md 和 HEARTBEAT.md 文件中,周期性维护通过 heartbeat-rules.md 路由。
~/self-improving/
├── memory.md # 热层(HOT):≤200行,始终加载
├── corrections.md # 主要纠错日志(默认200条)
├── corrections-pending.md # 溢出待处理区(14天观察期)
├── index.md # 主题索引(含行数)
├── heartbeat-state.md # 心跳状态:上次运行时间、已审查变更
├── config.json # 容量配置(层级、限制)
├── projects/ # 按项目学习(温层/WARM)
├── domains/ # 领域特定模式(温层/WARM)
└── archive/ # 冷层(COLD):衰减模式
文件组织
| 类别 | 文件 | 用途 |
|------|------|------|
| 核心 | memory.md, corrections.md | 主要热层/温层存储 |
| 溢出 | corrections-pending.md | 过剩纠错缓冲区 |
| 配置 | config.json | 层级和限制配置 |
| 维护 | heartbeat-state.md, index.md | 心跳和索引 |
| 命名空间 | projects/, domains/, archive/ | 作用域存储 |
快速参考
| 主题 | 文件 |
|------|------|
| 安装指南 | setup.md |
| 自动化安装脚本 | scripts/setup.sh |
| 心跳规则 | heartbeat-rules.md |
| 可执行心跳 | scripts/heartbeat.sh |
| 工作区心跳代码段 | HEARTBEAT.md |
| 记忆操作 | operations.md |
| 学习机制 | learning.md |
| 扩展规则 | scaling.md |
| 安全边界 | boundaries.md |
| 自我反思日志 | reflections.md |
| 统一术语表 | glossary.md |
| 溢出处理 | corrections-pending.md |
| 统计脚本 | scripts/stats.sh |
| 导出脚本 | scripts/export.sh |
| 导入脚本 | scripts/import.sh |
模板文件
| 模板 | 位置 |
|------|------|
| 热层记忆模板 | templates/memory.md |
| 纠错模板 | templates/corrections.md |
| 索引模板 | templates/index.md |
| 心跳状态模板 | templates/heartbeat-state.md |
| 项目模板 | templates/project.md |
| 领域模板 | templates/domain.md |
| 归档模板 | templates/archive.md |
要求
- 无需凭据
- 无需额外二进制文件
学习信号
当你注意到这些模式时自动记录:
纠错 → 添加到 corrections.md,评估是否进入 memory.md:
- "不,这不对..."
- "实际上,应该是..."
- "你在...方面错了"
- "我更喜欢X,而不是Y"
- "记住我总是..."
- "我之前告诉过你..."
- "停止做X"
- "为什么你一直..."
偏好信号 → 明确时添加到 memory.md:
- "我喜欢当你..."
- "总是为我做X"
- "永远不要做Y"
- "我的风格是..."
- "对于[项目],使用..."
模式候选 → 跟踪,3次后晋升:
- 相同指令重复3次以上
- 反复运作良好的工作流
- 用户赞扬特定方法
忽略(不记录):
- 一次性指令("现在做X")
- 特定上下文("在这个文件中...")
- 假设性讨论("如果...会怎样")
自我反思
完成重要工作后,暂停并评估:
- 是否符合预期? — 比较结果与意图
- 有什么可以改进? — 识别下次改进的地方
- 这是模式吗? — 如果是,记录到
corrections.md
何时进行自我反思:
- 完成多步骤任务后
- 收到反馈后(正面或负面)
- 修复错误后
- 注意到输出可以更好时
记录格式:
上下文(CONTEXT):[任务类型]
反思(REFLECTION):[我注意到的]
教训(LESSON):[下次要做的不同之处]
示例:
上下文(CONTEXT):构建Flutter UI
反思(REFLECTION):间距看起来不对,不得不重做
教训(LESSON):展示给用户前检查视觉间距
自我反思的晋升流程:
- 首次出现 → 记录到
corrections.md,计数=1 - 第二次出现 → 计数=2
- 第三次出现 → 询问用户确认:
- "你已经纠正了3次。我应该把它作为永久规则吗?"
- 如果是 → 晋升到热层
memory.md - 如果否 → 保留在 corrections.md,继续跟踪
- 晋升后 → 从 corrections.md 删除,在 memory.md 中引用来源
快速查询
| 用户说 | 动作 |
|--------|------|
| "你对X了解多少?" | 在所有层级中搜索X |
| "你学到了什么?" | 显示 corrections.md 最近10条 |
| "显示我的模式" | 列出 memory.md(热层) |
| "显示[项目]模式" | 加载 projects/{name}.md |
| "温层有什么?" | 列出 projects/ + domains/ 中的文件 |
| "记忆统计" | 显示每层计数 |
| "忘记X" | 从所有层中移除(先确认) |
| "导出记忆" | ZIP所有文件 |
记忆统计
当用户请求"记忆统计"时,报告:
📊 自我改进记忆
热层(HOT)(始终加载):
memory.md: X条
温层(WARM)(按需加载):
projects/: X个文件
domains/: X个文件
冷层(COLD)(已归档):
archive/: X个文件
最近活动(7天):
记录的纠错:X
晋升到热层:X
降级到温层:X
常见陷阱
| 陷阱 | 为什么失败 | 更好的做法 | |------|-------------|------------| | 从沉默中学习 | 产生虚假规则 | 等待明确纠正或重复证据 | | 晋升太快 | 污染热层记忆 | 保持新教训试探性直到重复确认 | | 读取每个命名空间 | 浪费上下文 | 只加载热层加最小的匹配文件 | | 通过删除压缩 | 失去信任和历史 | 合并、总结或降级 |
核心规则
1. 从纠错和自我反思中学习
- 当用户明确纠正你时记录
- 当你发现自己的改进时记录
- 永远不要仅从沉默中推断
- 3次出现后 → 提示用户确认 → 确认后晋升到热层
2. 分层存储
| 层级 | 位置 | 大小限制 | 行为 | |------|------|----------|------| | 热层(HOT) | memory.md | ≤200行(高频≤400行) | 始终加载 | | 温层(WARM) | projects/, domains/ | 每文件≤500行 | 按上下文匹配加载 | | 冷层(COLD) | archive/ | 无限 | 按明确查询加载 |
3. 自动晋升/降级
- 模式观察3次 → 提示确认 → 确认后晋升到热层
- 模式30天未使用 → 降级到温层
- 模式90天未使用 → 归档到冷层
- 永远不要在未经询问的情况下删除
4. 命名空间隔离
- 项目模式保留在
projects/{name}.md - 全局偏好位于热层(memory.md)
- 领域模式(代码、写作)位于
domains/ - 跨命名空间继承:全局 → 领域 → 项目
5. 冲突解决
当模式矛盾时:
- 最具体的胜出(项目 > 领域 > 全局)
- 时间上下文胜出(最近项目纠正 > 旧全局规则)
- 如果不明确 → 询问用户澄清
6. 压缩
当文件超出限制时:
- 将相似纠错合并为单一规则
- 归档未使用的模式
- 总结冗长条目
- 永远不要丢失已确认的偏好
7. 透明度
- 每次从记忆中执行操作 → 引用来源:"使用X(来自 memory.md:12)"
- 每周摘要可用:已学习的模式、降级的、归档的
- 按需全量导出:所有文件作为ZIP
8. 安全边界
参见 boundaries.md — 永远不要存储凭据、健康数据、第三方信息。
9. 优雅降级
如果达到上下文限制:
- 只加载 memory.md(热层)
- 按需加载相关命名空间
- 永远不要静默失败 — 告诉用户未加载什么
范围
此技能只做:
- 从用户纠错和自我反思中学习
- 将偏好存储在本地文件(
~/self-improving/) - 当工作区集成心跳时,在
~/self-improving/heartbeat-state.md中维护心跳状态 - 激活时读取自己的记忆文件
此技能永远不做:
- 访问日历、电子邮件或联系人
- 发出网络请求
- 读取
~/self-improving/外的文件 - 从沉默或观察中推断偏好
- 在心跳清理期间删除或盲目重写自我改进记忆
- 修改自己的 SKILL.md
数据存储
本地状态存储在 ~/self-improving/:
memory.md用于热层规则和已确认偏好corrections.md用于明确纠错和可重用教训projects/和domains/用于作用域模式archive/用于衰减或非活动模式heartbeat-state.md用于周期性维护标记
相关技能
补充此记忆系统的其他技能:
longterm-memory— 第1层永久记忆agent-memory— 第1层基于SQLite的精确记忆self-improvement— 第3层项目级错误跟踪
反馈
这是一个通用技能。如果您发现问题或有建议,请报告给技能维护者。
常见问题
通用
Q: 此技能与第1层记忆有什么区别?
A: 第1层(MEMORY.md)存储事实连续性(事件、决策、上下文)。此技能存储可重用的绩效教训(偏好、工作流、风格模式)。
Q: 晋升流程如何运作? A: 1) 首次纠错 → corrections.md 中计数=1。2) 第二次纠错 → 计数=2。3) 第三次纠错 → 提示用户确认。4) 如果确认 → 晋升到 memory.md(热层)。
Q: corrections.md满了怎么办?
A: 超额条目进入 corrections-pending.md(待处理区),观察14天。参见 corrections-pending.md 了解完整的溢出处理。
Q: 我可以将此技能用于多个AI代理吗?
A: 可以。记忆文件存储在 ~/self-improving/,任何代理都可以访问。每个代理都会读取和写入相同的文件。
Q: memory.md(热层)满了怎么办? A: 当热层接近200行时,相似的条目会合并为通用规则。例如:"不要使用Tab" + "缩进使用空格" → "缩进:使用空格,不用Tab"。压缩后的规则保持可读性并有可追溯来源。
Q: 命名空间隔离如何运作?
A: 项目模式保留在 projects/{name}.md,领域模式在 domains/,全局偏好在热层(memory.md)。当模式矛盾时,最具体的胜出(项目 > 领域 > 全局)。
Q: 30-90天衰减规则是什么? A: 30天未使用的模式降级到温层。90天未使用的模式归档到冷层。已确认的偏好不会自动降级,需要用户操作。
安装
Q: 如何安装此技能?
A: 运行 bash scripts/setup.sh 进行自动化安装,或按照 setup.md 中的手动步骤操作。
Q: 有哪些层级可用?
A: low(<5小时/天),normal(5-10小时/天,默认),high(10-15小时/天),heavy(>15小时/天)。使用 --tier 标志设置。
Q: 如何集成到我的工作区?
A: 将 setup.md 中的代码段添加到您的 CLAUDE.md、AGENTS.md 和 HEARTBEAT.md。
Q: 如何验证安装?
A: 运行 bash ~/self-improving/verify.sh 检查所有文件和工作区集成。
故障排除
Q: 技能没有从纠错中学习。
A: 确保技能已加载。检查纠错是否被记录。验证 ~/self-improving/ 存在且可写。
Q: memory.md 变得太大了。
A: 运行 bash scripts/stats.sh 检查。如果接近限制,条目会自动压缩或降级。
Q: 如何备份我的记忆?
A: 运行 bash scripts/export.sh 创建带清单的ZIP存档。
Q: 我可以将记忆迁移到另一台机器吗? A: 可以。在源机器上导出,传输ZIP文件,然后在目标机器上导入。
Q: 心跳返回 HEARTBEAT_OK 但我期望 ACTION。
A: 心跳仅在 ~/self-improving/ 中的文件自上次审查以来发生变更时才返回 ACTION。如果没有纠错或记忆更新,OK是正确的行为。
Q: corrections-pending.md 中的条目从未被晋升。 A: 待处理区用于溢出处理(14天观察)。此处的条目不会累积用于晋升。只能从 corrections.md 晋升。
反模式(不要这样做)
| 反模式 | 为什么失败 | 正确做法 | |--------|-------------|----------| | 从沉默中学习 | 产生虚假规则 | 等待明确纠错 | | 晋升太快 | 污染热层记忆 | 等待3次确认 | | 读取每个命名空间 | 浪费上下文 | 只加载相关文件 | | 通过删除压缩 | 失去历史 | 合并,不要删除 | | 推断偏好 | 可能错误 | 等待明确纠错 | | 永久保留纠错 | 填满存储 | 评估晋升或归档 |
输出示例
记忆统计输出
当用户询问"记忆统计"时,输出:
📊 自我改进记忆
热层(memory.md):
[####################] 95% (190/200行)
温层:
纠错: [################----] 80% (160/200)
待处理:[####----------------] 20% (20/100)
项目: 3个文件
领域: 2个文件
冷层:
归档: 5个文件
健康状态:healthy(健康)
自我反思日志格式
完成重要工作后:
上下文(CONTEXT):[任务类型]
反思(REFLECTION):[我注意到的]
教训(LESSON):[下次要做的不同之处]
示例:
上下文(CONTEXT):构建Flutter UI
反思(REFLECTION):间距看起来不对,不得不重做
教训(LESSON):展示给用户前检查视觉间距
纠错条目格式
记录纠错时:
## 2026-05-25 14:32 — [格式]
- **纠错(Correction):** "用户说的"
- **上下文(Context):** 发生在哪里
- **计数(Count):** 1(用于晋升跟踪)
- **状态(Status):** pending(待处理)| confirmed(已确认)| promoted(已晋升)| archived(已归档)
晋升确认提示
3次出现后:
"我注意到你已经纠正了3次:
'使用2个空格缩进'
我应该把它作为永久规则吗?
- 是的,总是
- 仅在[上下文]中
- 不,逐案处理"
心跳输出
HEARTBEAT_OK
(自上次审查以来没有实质性变更)
或者:
HEARTBEAT_ACTION
在 ~/self-improving/heartbeat-state.md 中查看建议的操作
建议操作:
- 注意:corrections.md 接近限制(160/200)
- 注意:memory.md 接近限制(180/200行)
导出/导入输出
导出:
自我改进导出
====================
来源:~/self-improving
输出:~/self-improving-export-20260525-143200.zip
导出完成!
统计:
memoryLines: 190
correctionsCount: 160
pendingCount: 20
projectsCount: 3
domainsCount: 2
archiveCount: 5
导入:
自我改进导入
====================
模式:merge(合并)
导入文件:~/self-improving-export-20260525-143200.zip
目标:~/self-improving
备份现有到 ~/self-improving-backup-20260525-143200...
合并完成!
写入边界协议
此技能是第2层:全局规则层,负责管理热层偏好(≤200行)和全局纠错日志(≤200条)。
何时只写入 corrections.md:
- 用户纠错(任何计数),首次出现 = 计数=1
- 观察到相同纠错3次 → 评估是否晋升到
memory.md(热层)
何时只写入 memory.md(热层):
- 已确认的全局偏好(3次晋升后)
- 明确陈述的行为规则(例如,"总是使用pnpm")
何时不写入 corrections.md(由其他层处理):
- 命令失败 → 第3层(经验教训纠错)
.learnings/ERRORS.md - 知识过时 → 第3层
.learnings/LEARNINGS.md - 用户说"记住..." → 第1层(永久记忆)
MEMORY.md - 会话结束摘要 → 第1层
YYYY-MM-DD.md
corrections.md 限制: 保留最近200条(默认,~7-10天,高频使用下),超限时评估晋升或归档。
corrections.md 溢出策略(重要):
- 当 corrections.md 达到200条时,不要删除旧条目
- 超额条目自动进入
corrections-pending.md(待处理区) - 待处理区保留最近14天的条目,不进行晋升
- 14天后仍未晋升 → 评估归档或丢弃
- 待处理区中的条目仍累积计数以进行晋升跟踪
- 参见
corrections-pending.md了解完整的操作流程。
memory.md(热层)限制: 严格≤200行(高频≤400行),超限时自动合并/压缩。
memory.md 热层压缩策略:
- 当热层接近200行时,合并相似条目
- 压缩原则:将多个相似纠错合并为一个通用规则
- 示例:"不要使用Tab" + "使用空格缩进" → "缩进:使用空格,不用Tab"
- 压缩后的规则保持可读性并有可追溯来源
高频容量配置:
| 使用强度 | corrections.md | corrections-pending | memory.md 热层 | 处理周期 | |-----------------|----------------|---------------------|---------------|------------------| | 低频(<5小时/天) | 200条 | 100条 | 200行 | 15-20天 | | 正常(5-10小时/天) | 300条 | 150条 | 300行 | 10-15天 | | 高频(10-15小时/天) | 500条 | 300条 | 400行 | 7-10天 | | 重度(>15小时/天) | 1000条 | 500条 | 500行 | 7-10天 |
晋升目标: 全局偏好晋升到 memory.md(热层),不到 SOUL.md/TOOLS.md(代理特定文件)。
容量配置接口: 通过 ~/self-improving/config.json 设置:
{
"tier": "high",
"custom": {
"correctionsLimit": 500,
"pendingLimit": 300,
"hotLimit": 400
}
}
TRACE 自我评估
基于 SkillHub 五维质量评估框架。
T — Trust(信任度)
| 标准 | 状态 | 证据 | |----------|--------|------| | 不存储敏感数据 | ✅ | boundaries.md 禁止凭据、财务、医疗数据 | | 无网络请求 | ✅ | 范围明确拒绝网络访问 | | 无外部依赖 | ✅ | 仅使用本地文件 | | 支持中文交互 | ✅ | 完整中文文档+README | | 跨代理兼容 | ✅ | 专为通用代理支持设计 |
R — Reliability(可靠性)
| 标准 | 状态 | 证据 | |----------|--------|------| | 存在重试机制 | ✅ | 心跳在临时故障时重试 | | 超时处理 | ✅ | 脚本中可配置超时 | | 错误恢复策略 | ✅ | 导入前备份,失败时回滚 | | 优雅降级 | ✅ | 上下文受限时只加载热层 | | 故障安全默认值 | ✅ | memory.md 有后备内容 |
A — Adaptability(适用性)
| 标准 | 状态 | 证据 | |----------|--------|------| | 能力边界清晰 | ✅ | 范围部分明确定义限制 | | 触发条件已定义 | ✅ | "何时使用"部分 | | 输入格式示例 | ✅ | 文档中有多个示例 | | 跨平台兼容 | ✅ | Linux、macOS、Windows脚本 | | 代理无关设计 | ✅ | 适用于 Claude Code、Codex、Copilot |
C — Convention(规范性)
| 标准 | 状态 | 证据 | |----------|--------|------| | 渐进式披露 | ✅ | 快速参考 → 详细章节 | | 结构清晰 | ✅ | 架构 → 核心规则 → 详情 | | 文档完整 | ✅ | SKILL.md、setup.md、operations.md、glossary.md、README.md | | FAQ存在 | ✅ | 带反模式的FAQ部分 | | 维护变更日志 | ✅ | CHANGELOG.md |
E — Effectiveness(有效性)
| 标准 | 状态 | 证据 | |----------|--------|------| | 输出格式一致 | ✅ | 模板确保一致性 | | 内容完整性 | ✅ | 三层架构覆盖所有场景 | | 开箱即用 | ✅ | 自动化安装脚本+一键集成 | | 错误信息可操作 | ✅ | 脚本提供恢复建议 | | 示例覆盖 | ✅ | 多种使用示例 |
总体 TRACE 评分
| 维度 | 评分 | 满分 | |-----------|-------|-----| | 信任度 | 19/20 | 20 | | 可靠性 | 18/20 | 20 | | 适用性 | 19/20 | 20 | | 规范性 | 19/20 | 20 | | 有效性 | 19/20 | 20 | | 总计 | 94/100 | 100 |
改进领域
所有主要领域都已解决。技能达到 SkillHub 90+ TRACE 优秀标准。
文档版本: 2.1.1 更新日期: 2026-05-25
微信扫一扫