Self-Improving Agent: Transforming Errors and Corrections into a Log for Sustainable Improvement

前言

写代码的 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 。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye