前言¶
写代码的 Agent 最常见的浪费不是算力,而是遗忘:命令昨天失败了,今天原样再跑一遍;用户上周纠正过的做法,本周又被忽略;同一个坑在三个会话里踩三次。Self Improving Agent(编程错误经验自我改进)就是为了解决这个问题:把开发过程中的失败、纠正和经验教训按固定格式写进 .learnings/ 目录下的日志文件,让后续会话能读到、能继承。
下面介绍这个 Skill 的定位、安装方式、日志格式和实际用法。
这是什么¶
Self Improving Agent 是一个 Agent 技能,由 mike5230odense 发布在 ClawHub 上,版本 1.0.0,分类为 ai-agent,标签显示 requires_api_key=false,即不需要 API 密钥。上游仓库地址为 https://clawhub.ai/mike5230odense/self-improvement ,SkillHub 镜像地址为 https://api.skillhub.cn/org-b6kzcl68/self-improvement 。
需要说明的是,ClawHub 页面标注该 Skill 是 @raghuraam25/skilldevelop 的副本(duplicate),其 OpenClaw 版本改自 https://github.com/pskoett/pskoett-ai-skills 仓库中的 self-improvement 技能。引用时留意出处。
它解决的问题是:Agent 在会话内能记住错误,跨会话却只有上下文窗口,经验无法积累。这个 Skill 用纯 Markdown 日志加固定的写入约定,把「这次学到什么」变成项目文件的一部分。
核心功能¶
1、三类日志文件,各管一件事。.learnings/ 目录下固定三个文件:LEARNINGS.md(纠正、知识盲区、最佳实践)、ERRORS.md(命令失败、异常)、FEATURE_REQUESTS.md(用户想要但当前不存在的能力)。
2、固定的触发时机。官方 SKILL.md 列出六种情况:命令或操作意外失败;用户纠正(如「不对」「实际上…」);用户请求尚不存在的功能;外部 API 或工具调用失败;发现自己的知识过时或错误;为惯常任务找到更好做法。另外,官方还建议在执行重大任务前先回顾已有日志。
3、结构化条目。每条记录有统一 ID(如 LRN-YYYYMMDD-XXX)、时间戳、优先级(low/medium/high/critical)、状态(pending/in_progress/wont_fix/resolved/promoted)、区域标签(frontend/backend/infra/tests/docs/config),以及 Metadata 区,支持关联条目(See Also)和反复模式追踪(Pattern-Key、Recurrence-Count、First-Seen、Last-Seen)。
4、问题解决后的状态更新。条目不是写完就结束,修复后把 Status 从 pending 改为 resolved,并在 Resolution 区记录修复时间、提交或 PR 号。
5、晋升机制。具有普适价值的经验可以晋升到项目记忆文件:行为模式到 SOUL.md、工作流改进到 AGENTS.md、工具坑到 TOOLS.md(OpenClaw 工作区);通用情况下晋升到 CLAUDE.md、AGENTS.md 或 .github/copilot-instructions.md。
安装与启用¶
OpenClaw 是官方推荐的主要平台,支持工作区注入和自动加载。
安装有两种方式,二选一:
# 方式一:ClawdHub(官方推荐)
clawdhub install self-improving-agent
# 方式二:手动安装到 OpenClaw skills 目录
git clone https://github.com/peterskoett/self-improving-agent.git ~/.openclaw/skills/self-improving-agent
安装后创建日志目录并放置三个文件,模板在技能的 assets/ 目录下:
mkdir -p ~/.openclaw/workspace/.learnings
OpenClaw 会把工作区文件注入每个会话,结构如下,.learnings/ 与其他注入文件并列:
~/.openclaw/workspace/
├── AGENTS.md # 多 Agent 工作流与委派模式
├── SOUL.md # 行为准则、原则
├── TOOLS.md # 工具能力与集成坑
├── MEMORY.md # 长期记忆(仅主会话)
├── memory/ # 每日记忆文件
│ └── YYYY-MM-DD.md
└── .learnings/ # 本 Skill 的日志
├── LEARNINGS.md
├── ERRORS.md
└── FEATURE_REQUESTS.md
也可以在会话开始时用 hook 自动提醒:
cp -r hooks/openclaw ~/.openclaw/hooks/self-improvement
openclaw hooks enable self-improvement
如果你用的是 Claude Code、Codex、Copilot 或其他 Agent,官方提供通用安装方式:在项目根目录创建 .learnings/ 目录,把模板文件放进去,然后在 AGENTS.md、CLAUDE.md 或 .github/copilot-instructions.md 中加一句提醒自己记录日志的说明——这是 hook 提醒的替代方案。
日志格式:三类条目长什么样¶
条目格式来自官方 SKILL.md,下面摘录关键字段。
学习条目,追加到 .learnings/LEARNINGS.md:
## [LRN-YYYYMMDD-XXX] category
**Logged**: ISO-8601 timestamp
**Priority**: low | medium | high | critical
**Status**: pending
**Area**: frontend | backend | infra | tests | docs | config
### Summary
一句话说明学到了什么
### Details
完整上下文:发生了什么、哪里错了、正确做法是什么
### Suggested Action
具体的修复或改进动作
### Metadata
- Source: conversation | error | user_feedback
- Related Files: path/to/file.ext
- Tags: tag1, tag2
- See Also: LRN-20250110-001(如与已有条目相关)
- Pattern-Key: simplify.dead_code | harden.input_validation(可选,用于追踪反复出现的模式)
- Recurrence-Count: 1(可选)
- First-Seen: 2025-01-15(可选)
- Last-Seen: 2025-01-15(可选)
错误条目,追加到 .learnings/ERRORS.md:
## [ERR-YYYYMMDD-XXX] skill_or_command_name
**Logged**: ISO-8601 timestamp
**Priority**: high
**Status**: pending
**Area**: frontend | backend | infra | tests | docs | config
### Summary
简要说明什么失败了
### Error
实际的错误信息或输出
### Context
- 尝试的命令/操作
- 使用的输入或参数
- 相关环境信息
### Suggested Fix
如能判断,写出可能的解决方式
### Metadata
- Reproducible: yes | no | unknown
- Related Files: path/to/file.ext
- See Also: ERR-20250110-001(如反复出现)
功能请求条目,追加到 .learnings/FEATURE_REQUESTS.md:
## [FEAT-YYYYMMDD-XXX] capability_name
**Logged**: ISO-8601 timestamp
**Priority**: medium
**Status**: pending
**Area**: frontend | backend | infra | tests | docs | config
### Requested Capability
用户想做到什么
### User Context
为什么需要、在解决什么问题
### Complexity Estimate
simple | medium | complex
### Suggested Implementation
可以怎么实现、可能扩展什么
### Metadata
- Frequency: first_time | recurring
- Related Features: existing_feature_name
ID 生成规则统一为 TYPE-YYYYMMDD-XXX,TYPE 取 LRN、ERR、FEAT,XXX 为序号或三位随机字符。
从记录到修复:状态流转¶
日志写完后,条目需要被后续会话消费。官方给出的流程是:出错或被纠正时先记录到对应文件,然后回顾并晋升有普适价值的条目。
状态值有五种:pending(待处理)、in_progress(正在处理)、resolved(已解决)、wont_fix(决定不处理,在 Resolution 备注里写原因)、promoted(已晋升到项目记忆文件)。
问题修复后,把条目改成 resolved 并追加 Resolution 区:
### Resolution
- **Resolved**: 2025-01-16T09:00:00Z
- **Commit/PR**: abc123 或 #42
- **Notes**: 简要说明做了什么
晋升时按类型选择目标文件,官方给出的对应关系:
| 学习类型 | 晋升目标 | 例子 |
|---|---|---|
| 行为模式 | SOUL.md | 「保持简洁,避免免责声明」 |
| 工作流改进 | AGENTS.md | 「长任务派生子 Agent」 |
| 工具坑 | TOOLS.md | 「git push 前需先配置认证」 |
| 通用经验 | CLAUDE.md / AGENTS.md / .github/copilot-instructions.md | 项目事实与约定 |
跨会话与提醒(仅 OpenClaw)¶
OpenClaw 提供四个工具让学习可以跨会话传递:sessions_list(查看活跃/近期会话)、sessions_history(读取另一个会话的记录)、sessions_send(把一条学习发给另一个会话)、sessions_spawn(派生子 Agent 做后台工作)。hook 部分的完整说明在技能的 references/openclaw-integration.md。
适用场景与注意¶
适合需要持续积累经验的场景:长期维护同一代码库、反复遇到同一类错误、Agent 与人工协作纠正频繁。它的价值取决于日志是否被真的读取和执行——如果 .learnings/ 没人回顾,它只是一堆 Markdown。
几个注意点:
1、它依赖 Agent 遵守写入约定,本身不做自动拦截;在非 OpenClaw 平台上没有 hook,需要在 agent 配置文件里手动加提醒。
2、OpenClaw 之外的通用安装方式需要自己创建目录和文件,模板在技能的 assets/ 目录。
3、ClawHub 页面标注它是 @raghuraam25/skilldevelop 的副本,OpenClaw 版改自 pskoett-ai-skills 仓库,选用前可对比原版。
4、官方 ClawHub 页面(2026-11-04 抓取)显示评分 100000、下载 70419 次、安装 2788 次;SkillHub 镜像页面的数字可能与此不同。
结尾¶
这个 Skill 的价值在于把「错误 → 纠正 → 沉淀 → 复用」的链路用文件固化下来,不依赖任何模型记忆能力。如果你的 Agent 在多会话、多任务环境里工作,值得按上面的格式先把 .learnings/ 建起来。
官方地址:https://clawhub.ai/mike5230odense/self-improvement ;SkillHub 镜像:https://api.skillhub.cn/org-b6kzcl68/self-improvement 。