self-improving-agent 技能解析

每次对话结束,AI 的记忆清零。self-improving-agent 用一套精巧的机制,在这个硬约束下构建出了持续学习的闭环。


它解决什么问题

使用 AI 编程助手时,有一类痛点几乎人人都踩过:

  • 重复踩坑:上周调试了半天的报错,AI 这次还是不会处理;你告诉它"这个项目用 pnpm,不要用 npm",下次开新对话又回到原点
  • 纠正白费:你花时间纠正了 AI 的一个错误认知,但这个纠正只活在这一次对话里,下次从零开始
  • 约定失忆:团队有特定的代码规范、项目有特殊的目录结构,每次对话都要重新交代一遍
  • 错误重演:AI 在某个工具调用上失败了,但没有任何记录,下次遇到同样情况还会以同样方式失败

这些问题都指向同一个根本原因:AI 没有跨会话的持久记忆,每次对话都是白板重启。

self-improving-agent 就是专门解决这个问题的。它的核心理念是:

与其每次都从头教 AI,不如让 AI 自己把学到的东西记下来,逐渐积累成不会丢失的"项目经验库"。


主要功能

1. 自动捕获学习时机

通过 Hook 机制,AI 在每次完成任务后会被自动提醒进行自我评估。以下四类情况会触发记录:

① 被用户纠正时
当用户说出"不对"、“应该是…”、“你理解错了”、"这个方法已经废弃了"这类话时,AI 会将这次纠正完整记录下来,包括错误的认知、正确的做法以及适用范围。

② 命令或工具执行失败时
error-detector.sh 脚本会在每次 Bash 命令执行后自动检查输出,匹配 16 种错误模式(npm ERR!Permission deniedTracebackfatal: 等)。只要检测到报错,就立即提示 AI 记录错误现象、上下文和修复方案。

③ 发现更好的解决方案时
调试过程中找到了一个非显而易见的解法、发现了某个 API 的特殊用法、总结出了一套处理某类问题的模式——这些"经验"都会被记录为 best_practice,供下次直接复用。

④ 用户要求不存在的能力时
用户问"你能不能帮我做 X",而 AI 当前做不到,这个需求会被记录到功能请求日志,方便后续跟踪和实现。

2. 结构化三类日志

所有经验按性质分别存入 .learnings/ 目录下的三个文件:

文件 记录内容 条目格式
LEARNINGS.md 纠正、知识缺口、最佳实践 LRN-YYYYMMDD-XXX
ERRORS.md 命令失败、工具报错、API 异常 ERR-YYYYMMDD-XXX
FEATURE_REQUESTS.md 用户期望但尚不具备的能力 FEAT-YYYYMMDD-XXX

每条记录都包含:时间戳、优先级(critical/high/medium/low)、状态、所属区域(frontend/backend/infra…)、详细上下文和建议操作,方便后续检索和处理。

3. 知识晋升机制(最核心的设计)

日志里的条目不是一次性记录,而是有完整的生命周期管理。当某条经验反复被验证、价值被确认后,会逐层"晋升":

.learnings/(临时日志,随项目走)
    ↓ 条件:重复出现 3 次以上 + 跨越 2 个不同任务 + 30 天内发生
CLAUDE.md / AGENTS.md(项目永久规范,每次新会话自动加载)
    ↓ 条件:通用性强,对其他项目同样有价值
独立 SKILL.md(发布到 ClawdHub,供所有项目安装复用)

晋升后的效果:

晋升到 CLAUDE.md 的内容,Claude 每次开新对话都会自动读取。比如:

## 构建 & 依赖管理
- 包管理器:pnpm(非 npm)- 使用 `pnpm install`
- API 变更后必须执行:pnpm run generate:api

从此以后,AI 不会再犯用错包管理器或漏掉 API 重新生成这类错误——不需要每次提醒,它自己就知道。

晋升目标一览:

目标文件 写入内容 生效范围
CLAUDE.md 项目约定、注意事项、踩坑记录 当前项目所有 Claude 会话
AGENTS.md 工作流规则、自动化步骤 当前项目所有 Agent 会话
SOUL.md AI 行为准则、沟通风格 OpenClaw 工作区全局
TOOLS.md 工具使用陷阱、正确用法 OpenClaw 工作区全局

4. 重复模式检测

每次记录新条目时,会先检索是否已有类似记录。若有:

  • 追加 See Also 关联链接
  • Recurrence-Count 计数累加
  • 当计数达到阈值,自动触发晋升建议

这确保了"同一个坑踩三次"不会被当作三个独立事件处理,而是被识别为需要系统性解决的问题。

5. 技能提取

当某条学习足够通用、价值足够高,可以一键打包为独立技能:

./scripts/extract-skill.sh docker-m1-fixes --dry-run  # 预览
./scripts/extract-skill.sh docker-m1-fixes            # 创建

脚本生成标准结构的 SKILL.md 脚手架,填充内容后可发布到 ClawdHub,供其他项目一键安装,实现知识的跨项目流通。


自动化触发方式

Claude Code / Codex:在 .claude/settings.json 配置两个 Hook:

{
  "hooks": {
    "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "./scripts/activator.sh" }] }],
    "PostToolUse":      [{ "matcher": "Bash", "hooks": [{ "type": "command", "command": "./scripts/error-detector.sh" }] }]
  }
}

OpenClaw:会话启动时自动注入提醒,子 Agent 会话自动跳过,支持跨会话传递学习成果(sessions_send)。

GitHub Copilot:无 Hook 支持,手动在 .github/copilot-instructions.md 中添加提醒。


安装

# OpenClaw(推荐)
clawdhub install self-improving-agent

# 手动安装
git clone https://github.com/peterskoett/self-improving-agent.git ~/.openclaw/skills/self-improving-agent

总结

self-improving-agent 本质上是在 AI 没有长期记忆的硬约束下,通过"自动记录 → 结构化存储 → 渐进晋升"三步,模拟出了人类工程师积累经验的过程。

没有它:AI 每次从零开始,同样的坑反复踩,纠正全部白费
有了它:错误被记录 → 经验被沉淀 → 规范被固化 → 知识被复用
        一个持续运转的学习飞轮,越用越顺

作者:pskoett | 参考:W3CSchool OpenClaw Skills 手册

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐