codecamp

OpenClaw Skills 自我改进技能(Self-Improvement Skill)

将经验教训和错误记录到 Markdown 文件中,以实现持续改进。编码代理可后续将这些内容处理为修复方案,重要的经验教训会升级到项目记忆中。

👤 作者:pskoett

👉 Skills 下载地址:self-improving-agent-1.0.11.zip

快速参考

场景 操作
命令/操作执行失败 记录到 .learnings/ERRORS.md
用户纠正你的错误 记录到 .learnings/LEARNINGS.md,分类标注为 correction(纠正)
用户需要缺失的功能 记录到 .learnings/FEATURE_REQUESTS.md
API/外部工具调用失败 记录到 .learnings/ERRORS.md,并附带集成相关细节
发现自身知识过时 记录到 .learnings/LEARNINGS.md,分类标注为 knowledge_gap(知识缺口)
发现更优实现方案 记录到 .learnings/LEARNINGS.md,分类标注为 best_practice(最佳实践)
简化/强化重复出现的模式 记录/更新 .learnings/LEARNINGS.md,标注 Source: simplify-and-harden 及稳定的 Pattern-Key
与已有记录相似 通过 **另请参见** 关联,考虑提升优先级
具有广泛适用性的经验 升级到 CLAUDE.mdAGENTS.md 和/或 .github/copilot-instructions.md
工作流改进 升级到 AGENTS.md(OpenClaw 工作区)
工具使用陷阱 升级到 TOOLS.md(OpenClaw 工作区)
行为模式 升级到 SOUL.md(OpenClaw 工作区)

OpenClaw 配置(推荐)

OpenClaw 是此技能的主要运行平台,它基于工作区实现提示词注入,并支持技能自动加载。

安装方式

通过 ClawdHub 安装(推荐):

## 安装自改进代理技能
clawdhub install self-improving-agent

手动安装:

## 克隆自改进代理仓库到 OpenClaw 技能目录
git clone https://github.com/peterskoett/self-improving-agent.git ~/.openclaw/skills/self-improving-agent

该技能基于以下原始仓库适配 OpenClaw:

  • https://github.com/pskoett/pskoett-ai-skills
  • https://github.com/pskoett/pskoett-ai-skills/tree/main/skills/self-improvement

工作区结构

OpenClaw 会将以下文件注入到每个会话中:

~/.openclaw/workspace/
├── AGENTS.md          # 多代理工作流、任务委派模式
├── SOUL.md            # 行为准则、个性设定、核心原则
├── TOOLS.md           # 工具能力、集成陷阱说明
├── MEMORY.md          # 长期记忆(仅主会话)
├── memory/            # 每日记忆文件目录
│   └── YYYY-MM-DD.md  # 按日期命名的每日记忆文件
└── .learnings/        # 本技能的日志文件目录
    ├── LEARNINGS.md   # 经验教训日志
    ├── ERRORS.md      # 错误日志
    └── FEATURE_REQUESTS.md  # 功能请求日志

创建学习日志文件

## 创建 .learnings 目录(若不存在)
mkdir -p ~/.openclaw/workspace/.learnings

然后创建日志文件(或从 assets/ 目录复制):

  • LEARNINGS.md — 记录纠正内容、知识缺口、最佳实践
  • ERRORS.md — 记录命令执行失败、异常信息
  • FEATURE_REQUESTS.md — 记录用户请求的功能

内容升级目标

当经验教训被验证具有广泛适用性时,需将其升级到工作区文件中:

经验类型 升级目标文件 示例
行为模式 SOUL.md "保持简洁,避免不必要的免责声明"
工作流改进 AGENTS.md "针对长时任务创建子代理"
工具使用陷阱 TOOLS.md "执行 Git push 前需先配置认证信息"

跨会话通信

OpenClaw 提供了跨会话共享经验的工具:

  • sessions_list — 查看活跃/最近的会话
  • sessions_history — 读取其他会话的记录
  • sessions_send — 将经验发送到其他会话
  • sessions_spawn — 创建子代理处理后台任务

可选:启用钩子

如需在会话启动时自动触发提醒:

## 将钩子文件复制到 OpenClaw 钩子目录
cp -r hooks/openclaw ~/.openclaw/hooks/self-improvement


## 启用该钩子
openclaw hooks enable self-improvement

完整配置细节请参考 references/openclaw-integration.md

通用配置(其他代理)

对于 Claude Code、Codex、Copilot 或其他代理,在项目中创建 .learnings/ 目录:

## 在当前项目创建 .learnings 目录
mkdir -p .learnings

assets/ 目录复制模板文件,或手动创建带头部的日志文件。

在代理配置文件中添加引用

AGENTS.mdCLAUDE.md.github/copilot-instructions.md 中添加引用,提醒自己记录经验教训(作为钩子提醒的替代方案)。

自我改进工作流

当发生错误或收到纠正时:

  1. 将内容记录到 .learnings/ERRORS.mdLEARNINGS.mdFEATURE_REQUESTS.md
  2. 审核并将具有广泛适用性的经验升级到:
    • CLAUDE.md - 项目事实和约定
    • AGENTS.md - 工作流和自动化规则
    • .github/copilot-instructions.md - Copilot 上下文配置

日志格式

经验记录条目

追加到 .learnings/LEARNINGS.md

## [LRN-年月日-序号] 分类


**记录时间**:ISO-8601 时间戳
**优先级**:低 | 中 | 高 | 紧急
**状态**:待处理
**领域**:前端 | 后端 | 基础设施 | 测试 | 文档 | 配置


### 摘要
一句话描述学到的内容


### 详细信息
完整上下文:发生了什么、哪里出错了、正确的做法是什么


### 建议操作
具体的修复或改进方案


### 元数据
- 来源:对话 | 错误 | 用户反馈
- 相关文件:path/to/file.ext
- 标签:tag1, tag2
- 另请参见:LRN-20250110-001(如果与已有条目相关)
- 模式标识:simplify.dead_code | harden.input_validation(可选,用于重复模式跟踪)
- 重复次数:1(可选)
- 首次出现:2025-01-15(可选)
- 最后出现:2025-01-15(可选)


---

错误记录条目

追加到 .learnings/ERRORS.md

## [ERR-年月日-序号] 技能或命令名称


**记录时间**:ISO-8601 时间戳
**优先级**:高
**状态**:待处理
**领域**:前端 | 后端 | 基础设施 | 测试 | 文档 | 配置


### 摘要
错误的简要描述


### 错误详情

实际的错误信息或输出内容



### 上下文
- 尝试执行的命令/操作
- 使用的输入或参数
- 相关的环境信息(如有)


### 建议修复方案
如果可识别,填写可能解决该问题的方案


### 元数据
- 可复现性:是 | 否 | 未知
- 相关文件:path/to/file.ext
- 另请参见:ERR-20250110-001(如果是重复出现的错误)


---

功能请求条目

追加到 .learnings/FEATURE_REQUESTS.md

## [FEAT-年月日-序号] 功能名称


**记录时间**:ISO-8601 时间戳
**优先级**:中
**状态**:待处理
**领域**:前端 | 后端 | 基础设施 | 测试 | 文档 | 配置


### 请求的功能
用户想要实现的功能


### 用户上下文
用户需要该功能的原因、试图解决的问题


### 复杂度评估
简单 | 中等 | 复杂


### 建议实现方案
该功能的构建方式、可扩展的现有功能


### 元数据
- 出现频率:首次 | 重复出现
- 相关功能:已有功能名称


---

ID 生成规则

格式:类型-年月日-序号

  • 类型:LRN(经验)、ERR(错误)、FEAT(功能)
  • 年月日:当前日期(格式:YYYYMMDD)
  • 序号:连续数字或3位随机字符(例如:001A7B

示例:LRN-20250115-001ERR-20250115-A3FFEAT-20250115-002

条目状态更新

当问题修复后,更新对应条目:

  1. **状态**:待处理 修改为 **状态**:已解决
  2. 在元数据后添加解决信息块:

### 解决信息
- **解决时间**:2025-01-16T09:00:00Z
- **提交记录/PR**:abc123 或 #42
- **备注**:解决方式的简要描述

其他状态值:

  • 进行中 - 正在处理该问题
  • 暂不修复 - 决定不处理(在解决信息备注中说明原因)
  • 已升级 - 已升级到 CLAUDE.md、AGENTS.md 或 .github/copilot-instructions.md

升级到项目记忆

当某条经验被验证具有广泛适用性(非一次性修复)时,需将其升级到项目的永久记忆中。

升级时机

  • 经验适用于多个文件/功能
  • 所有贡献者(人工或AI)都应知晓的知识
  • 可预防重复错误
  • 记录项目特定的约定

升级目标文件

目标文件 适用内容
CLAUDE.md 所有 Claude 交互相关的项目事实、约定、注意事项
AGENTS.md 代理特定的工作流、工具使用模式、自动化规则
.github/copilot-instructions.md GitHub Copilot 所需的项目上下文和约定
SOUL.md 行为准则、沟通风格、核心原则(OpenClaw 工作区)
TOOLS.md 工具能力、使用模式、集成陷阱(OpenClaw 工作区)

升级流程

  1. 提炼:将经验浓缩为简洁的规则或事实
  2. 添加:将内容添加到目标文件的对应章节(文件不存在则创建)
  3. 更新原始条目:
    • **状态**:待处理 修改为 **状态**:已升级
    • 添加 **升级至**:CLAUDE.md / AGENTS.md / .github/copilot-instructions.md

升级示例

原始经验(详细版):

项目使用 pnpm 工作区。尝试执行 npm install 失败,
项目的锁文件是 pnpm-lock.yaml,必须使用 pnpm install

升级到 CLAUDE.md(简洁版):

## 构建 & 依赖管理
- 包管理器:pnpm(非 npm)- 使用 `pnpm install` 命令

原始经验(详细版):

修改 API 端点后必须重新生成 TypeScript 客户端,
忽略此步骤会导致运行时类型不匹配。

升级到 AGENTS.md(可操作版):

## API 变更后操作步骤
1. 重新生成客户端:`pnpm run generate:api`
2. 检查类型错误:`pnpm tsc --noEmit`

重复模式检测

如果记录的内容与已有条目相似:

  1. 先检索grep -r "关键词" .learnings/
  2. 关联条目:在元数据中添加 **另请参见**:ERR-20250110-001
  3. 提升优先级:如果问题重复出现,提高条目的优先级
  4. 考虑系统性修复:重复出现的问题通常表明:
    • 缺少文档(→ 升级到 CLAUDE.md 或 .github/copilot-instructions.md)
    • 缺少自动化(→ 添加到 AGENTS.md)
    • 架构问题(→ 创建技术债务工单)

简化 & 强化反馈流

通过此工作流从 simplify-and-harden 技能中提取重复模式,并将其转化为持久的提示词指导。

提取工作流

  1. 从任务摘要中读取 simplify_and_harden.learning_loop.candidates
  2. 对每个候选项,使用 pattern_key 作为稳定的去重标识
  3. .learnings/LEARNINGS.md 中检索是否存在该标识的条目:
    • grep -n "Pattern-Key: <pattern_key>" .learnings/LEARNINGS.md
  4. 如果找到:
    • 增加 重复次数
    • 更新 最后出现 时间
    • 添加指向相关条目/任务的 另请参见 链接
  5. 如果未找到:
    • 创建新的 LRN-... 条目
    • 设置 来源: simplify-and-harden
    • 设置 模式标识重复次数: 1 以及 首次出现/最后出现 时间

升级规则(系统提示词反馈)

当满足以下所有条件时,将重复模式升级到代理上下文/系统提示词文件:

  • 重复次数 >= 3
  • 至少出现在 2 个不同任务中
  • 发生在 30 天内

升级目标:

  • CLAUDE.md
  • AGENTS.md
  • .github/copilot-instructions.md
  • SOUL.md / TOOLS.md(适用于 OpenClaw 工作区级别的指导)

升级后的规则应编写为简短的预防规则(编码前/编码中应做什么), 而非冗长的事件记录。

定期审核

在合适的节点审核 .learnings/ 目录:

审核时机

  • 开始新的重大任务前
  • 完成某个功能后
  • 处理有历史经验记录的领域时
  • 活跃开发期间每周一次

快速状态检查

## 统计待处理条目数量
grep -h "Status**: pending" .learnings/*.md | wc -l


## 列出待处理的高优先级条目
grep -B5 "Priority**: high" .learnings/*.md | grep "^## \["


## 查找特定领域的经验记录
grep -l "Area**: backend" .learnings/*.md

审核操作

  • 标记已修复的条目为已解决
  • 升级适用的经验记录
  • 关联相关条目
  • 升级重复出现的问题

检测触发条件

当发现以下情况时自动记录:

纠正内容(→ 分类为 correction 的经验记录):

  • "不,那不对..."
  • "实际上,应该是..."
  • "你错了..."
  • "这已经过时了..."

功能请求(→ 功能请求记录):

  • "你还能..."
  • "我希望你能..."
  • "有没有办法..."
  • "为什么你不能..."

知识缺口(→ 分类为 knowledge_gap 的经验记录):

  • 用户提供了你不知道的信息
  • 引用的文档已过时
  • API 行为与你的理解不符

错误(→ 错误记录):

  • 命令返回非零退出码
  • 异常或堆栈跟踪
  • 意外输出或行为
  • 超时或连接失败

优先级指南

优先级 使用场景
紧急 阻塞核心功能、有数据丢失风险、安全问题
影响重大、影响通用工作流、重复出现的问题
影响中等、有替代方案
轻微不便、边缘场景、锦上添花的功能

领域标签

用于按代码库区域筛选经验记录:

领域 范围
前端 UI、组件、客户端代码
后端 API、服务、服务端代码
基础设施 CI/CD、部署、Docker、云服务
测试 测试文件、测试工具、测试覆盖率
文档 文档、注释、README
配置 配置文件、环境、设置

最佳实践

  1. 立即记录 - 问题发生后立即记录,上下文最清晰
  2. 具体详细 - 确保后续代理能快速理解
  3. 包含复现步骤 - 尤其是错误记录
  4. 关联相关文件 - 便于后续修复
  5. 提出具体修复方案 - 而非仅写"调查原因"
  6. 使用一致的分类 - 便于筛选
  7. 积极升级 - 如有疑问,优先添加到 CLAUDE.md.github/copilot-instructions.md
  8. 定期审核 - 过时的经验记录会失去价值

Gitignore 配置选项

仅本地保留经验记录(每个开发者独立):

.learnings/

在仓库中跟踪经验记录(团队共享): 不添加到 .gitignore - 经验记录成为团队共享知识

混合模式(跟踪模板,忽略条目):

.learnings/*.md
!.learnings/.gitkeep

钩子集成

通过代理钩子启用自动提醒。此功能为可选开启 - 需显式配置钩子。

快速配置(Claude Code / Codex)

在项目中创建 .claude/settings.json

{
  "hooks": {
    "UserPromptSubmit": [{
      "matcher": "",
      "hooks": [{
        "type": "command",
        "command": "./skills/self-improvement/scripts/activator.sh"
      }]
    }]
  }
}

此配置会在每次提交提示词后注入经验评估提醒(约 50-100 个 token 开销)。

完整配置(含错误检测)

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

可用钩子脚本

脚本 钩子类型 用途
scripts/activator.sh UserPromptSubmit 任务完成后提醒评估经验记录
scripts/error-detector.sh PostToolUse (Bash) 检测命令执行错误并触发记录

详细配置和故障排除请参考 references/hooks-setup.md

自动技能提取

当某条经验足够有价值、可转化为可复用技能时,使用提供的工具提取。

技能提取标准

满足以下任一条件即可提取为技能:

标准 说明
重复出现 有 另请参见 链接指向 2 个以上相似问题
已验证 状态为 已解决 且修复方案有效
非显而易见 需实际调试/调查才能发现的问题
广泛适用 非项目专属,适用于多个代码库
用户标记 用户明确要求"保存为技能"等

提取工作流

  1. 确定候选项:找到符合提取标准的经验记录
  2. 运行工具(或手动创建):
    # 试运行(仅预览,不实际创建)
    ./skills/self-improvement/scripts/extract-skill.sh 技能名称 --dry-run
    # 正式提取
    ./skills/self-improvement/scripts/extract-skill.sh 技能名称
  3. 自定义 SKILL.md:使用经验内容填充模板
  4. 更新经验记录:将状态设为 已升级为技能,添加 技能路径
  5. 验证:在新会话中读取技能,确保内容独立完整

手动提取

如偏好手动创建:

  1. 创建 skills/<技能名称>/SKILL.md
  2. 使用 assets/SKILL-TEMPLATE.md 模板
  3. 遵循 Agent Skills 规范
    • 包含 namedescription 的 YAML 前置信息
    • 名称需与文件夹名称一致
    • 技能文件夹内不存放 README.md

提取检测触发条件

发现以下信号时,应将经验提取为技能:

对话中

  • "将此保存为技能"
  • "我总是遇到这个问题"
  • "这对其他项目也有用"
  • "记住这个模式"

经验记录中

  • 多个 另请参见 链接(重复问题)
  • 高优先级 + 已解决状态
  • 分类为 best_practice 且适用范围广
  • 用户反馈称赞该解决方案

技能质量校验

提取前需验证:

  • [ ] 解决方案已测试且有效
  • [ ] 描述清晰,无需依赖原始上下文
  • [ ] 代码示例独立可运行
  • [ ] 无项目专属的硬编码值
  • [ ] 遵循技能命名规范(小写、连字符分隔)

多代理支持

该技能可在不同 AI 编码代理中运行,且支持代理专属的激活方式。

Claude Code

激活方式:钩子(UserPromptSubmit、PostToolUse) 配置:在 .claude/settings.json 中配置钩子 检测方式:通过钩子脚本自动检测

Codex CLI

激活方式:钩子(与 Claude Code 相同模式) 配置:在 .codex/settings.json 中配置钩子 检测方式:通过钩子脚本自动检测

GitHub Copilot

激活方式:手动(无钩子支持) 配置:添加以下内容到 .github/copilot-instructions.md

## 自我改进


解决非显而易见的问题后,考虑将其记录到 `.learnings/` 目录:
1. 使用自我改进技能的格式记录
2. 通过「另请参见」关联相关条目
3. 将高价值经验升级为技能


可在聊天中询问:"是否应将此记录为经验?"

检测方式:会话结束时手动审核

OpenClaw

激活方式:工作区注入 + 代理间消息传递 配置:参考上文「OpenClaw 配置」章节 检测方式:通过会话工具和工作区文件检测

代理无关指导原则

无论使用何种代理,遇到以下情况时应应用自我改进技能:

  1. 发现非显而易见的内容 - 解决方案并非立即可知
  2. 纠正自身错误 - 初始方案有误
  3. 学习项目约定 - 发现未文档化的模式
  4. 遇到意外错误 - 尤其是诊断难度大的错误
  5. 找到更优方案 - 改进了原始解决方案

Copilot 聊天集成

Copilot 用户可在相关提示词中添加以下内容:

完成此任务后,评估是否有需要按照自我改进技能格式记录到 .learnings/ 目录的经验。

或使用快捷提示词:

  • "将此记录到经验中"
  • "基于此解决方案创建技能"
  • "检查 .learnings/ 中的相关问题"
OpenClaw Skills Gog 命令行工具技能
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }