自我改进技能 是做什么的?
将经验教训和错误记录到 Markdown 文件中,以实现持续改进。编码 Agent 可以后续处理这些记录,修复问题,重要的经验教训会提升到项目记忆中。
快速参考
| 情况 | 操作 |
|---|---|
| 命令/操作失败 | 记录到 .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 |
| 类似现有条目 | 链接时使用 **See Also**,考虑提升优先级 |
| 广泛适用的经验教训 | 提升到 CLAUDE.md、AGENTS.md 和/或 .github/copilot-instructions.md |
| 工作流改进 | 提升到 AGENTS.md(OpenClaw 工作区) |
| 工具注意事项 | 提升到 TOOLS.md(OpenClaw 工作区) |
| 行为模式 | 提升到 SOUL.md(OpenClaw 工作区) |
OpenClaw 设置(推荐)
OpenClaw 是本技能的主要平台。它使用基于工作区的提示注入,并自动加载技能。
安装
通过 ClawdHub(推荐):
clawdhub install self-improving-agent
手动安装:
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 # 多 Agent 工作流,委派模式
├── SOUL.md # 行为指南,人格,原则
├── TOOLS.md # 工具能力,集成注意事项
├── MEMORY.md # 长期记忆(仅限主会话)
├── memory/ # 每日记忆文件
│ └── YYYY-MM-DD.md
└── .learnings/ # 本技能的日志文件
├── LEARNINGS.md
├── ERRORS.md
└── FEATURE_REQUESTS.md
创建学习文件
mkdir -p ~/.openclaw/workspace/.learnings
然后创建日志文件(或从 assets/ 复制):
LEARNINGS.md— 纠正、知识差距、最佳实践ERRORS.md— 命令失败、异常FEATURE_REQUESTS.md— 用户请求的功能
提升目标
当经验教训被证明广泛适用时,提升到工作区文件:
| 学习类型 | 提升到 | 示例 |
|---|---|---|
| 行为模式 | SOUL.md | "保持简洁,避免免责声明" |
| 工作流改进 | AGENTS.md | "为长任务派生子 Agent" |
| 工具注意事项 | TOOLS.md | "Git push 需要先配置身份验证" |
会话间通信
OpenClaw 提供了在会话间共享经验教训的工具:
- sessions_list — 查看活动/最近的会话
- sessions_history — 读取另一个会话的转录
- sessions_send — 将经验教训发送到另一个会话
- sessions_spawn — 生成一个子 Agent 用于后台工作
可选:启用 Hook
用于在会话开始时自动提醒:
# 将 hook 复制到 OpenClaw hooks 目录
cp -r hooks/openclaw ~/.openclaw/hooks/self-improvement
# 启用它
openclaw hooks enable self-improvement
有关完整细节,请参见 references/openclaw-integration.md。
通用设置(其他 Agent)
对于 Claude Code、Codex、Copilot 或其他 Agent,在项目中创建 .learnings/:
mkdir -p .learnings
从 assets/ 复制模板,或创建包含标题的文件。
在 Agent 文件 AGENTS.md、CLAUDE.md 或 .github/copilot-instructions.md 中添加引用,以提醒自己记录经验教训。(这是基于 hook 提醒的替代方案)
自我改进工作流
当发生错误或纠正时:
- 记录到
.learnings/ERRORS.md、LEARNINGS.md或FEATURE_REQUESTS.md - 审查并将广泛适用的经验教训提升到:
CLAUDE.md- 项目事实和约定AGENTS.md- 工作流和自动化.github/copilot-instructions.md- Copilot 上下文
记录格式
学习条目
追加到 .learnings/LEARNINGS.md:
## [LRN-YYYYMMDD-XXX] 类别
**记录时间**: ISO-8601 时间戳
**优先级**: low | medium | high | critical
**状态**: pending
**领域**: frontend | backend | infra | tests | docs | config
### 摘要
所学内容的一行描述
### 详情
完整上下文:发生了什么,什么错了,什么是对的
### 建议操作
具体的修复或改进措施
### 元数据
- 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] 技能或命令名称
**记录时间**: ISO-8601 时间戳
**优先级**: high
**状态**: pending
**领域**: frontend | backend | infra | tests | docs | config
### 摘要
失败内容的简要描述
### 错误
实际错误消息或输出
### 上下文
- 尝试的命令/操作
- 使用的输入或参数
- 相关环境细节
### 建议修复
如果可以确定,可能解决该问题的方法
### 元数据
- Reproducible: yes | no | unknown
- Related Files: path/to/file.ext
- See Also: ERR-20250110-001 (如果重复出现)
---
功能请求条目
追加到 .learnings/FEATURE_REQUESTS.md:
## [FEAT-YYYYMMDD-XXX] 能力名称
**记录时间**: ISO-8601 时间戳
**优先级**: medium
**状态**: pending
**领域**: frontend | backend | infra | tests | docs | config
### 请求的能力
用户想要做什么
### 用户上下文
为什么他们需要它,他们在解决什么问题
### 复杂度估计
simple | medium | complex
### 建议实现
如何构建它,它可能扩展什么
### 元数据
- Frequency: first_time | recurring
- Related Features: existing_feature_name
---
ID 生成
格式:TYPE-YYYYMMDD-XXX
- TYPE:
LRN(学习),ERR(错误),FEAT(功能) - YYYYMMDD: 当前日期
- XXX: 序列号或随机 3 个字符(例如
001、A7B)
示例:LRN-20250115-001、ERR-20250115-A3F、FEAT-20250115-002
解决条目
当问题被修复时,更新条目:
- 将
**Status**: pending改为**Status**: resolved - 在元数据之后添加解决信息块:
### 解决
- **解决时间**: 2025-01-16T09:00:00Z
- **提交/PR**: abc123 或 #42
- **备注**: 所做工作的简要描述
其他状态值:
in_progress- 正在进行中wont_fix- 决定不处理(在解决备注中添加原因)promoted- 已提升到 CLAUDE.md、AGENTS.md 或 .github/copilot-instructions.md
提升到项目记忆
当一个经验教训广泛适用时(不仅仅是一次性修复),将其提升到永久项目记忆。
何时提升
- 经验教训适用于多个文件/功能
- 任何贡献者(人类或 AI)都应该知道的知识
- 防止重复错误
- 记录项目特定的约定
提升目标
| 目标 | 适合的内容 |
|---|---|
CLAUDE.md | 项目事实、约定、所有 Claude 交互的注意事项 |
AGENTS.md | Agent 特定的工作流、工具使用模式、自动化规则 |
.github/copilot-instructions.md | GitHub Copilot 的项目上下文和约定 |
SOUL.md | 行为指南、沟通风格、原则(OpenClaw 工作区) |
TOOLS.md | 工具能力、使用模式、集成注意事项(OpenClaw 工作区) |
如何提升
- 提炼经验教训为简洁的规则或事实
- 添加到目标文件的适当部分(如果需要,创建文件)
- 更新原始条目:
- 将
**Status**: pending改为**Status**: promoted - 添加
**Promoted**: 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`
重复模式检测
如果记录的内容类似于现有条目:
- 先搜索:
grep -r "keyword" .learnings/ - 链接条目:在元数据中添加
**See Also**: ERR-20250110-001 - 提升优先级,如果问题持续出现
- 考虑系统级修复:重复出现的问题通常表明:
- 缺少文档(→ 提升到 CLAUDE.md 或 .github/copilot-instructions.md)
- 缺少自动化(→ 添加到 AGENTS.md)
- 架构问题(→ 创建技术债务工单)
简化与强化反馈
使用此工作流来吸收来自 simplify-and-harden 技能的重复模式,并将其转化为持久的提示指导。
摄入工作流
- 从任务摘要中读取
simplify_and_harden.learning_loop.candidates。 - 对于每个候选者,使用
pattern_key作为稳定的去重键。 - 在
.learnings/LEARNINGS.md中搜索具有该键的现有条目:grep -n "Pattern-Key: <pattern_key>" .learnings/LEARNINGS.md
- 如果找到:
- 增加
Recurrence-Count - 更新
Last-Seen - 添加指向相关条目/任务的
See Also链接
- 增加
- 如果未找到:
- 创建一个新的
LRN-...条目 - 设置
Source: simplify-and-harden - 设置
Pattern-Key、Recurrence-Count: 1以及First-Seen/Last-Seen
- 创建一个新的
提升规则(系统提示反馈)
当以下所有条件都为真时,将重复模式提升到 Agent 上下文/系统提示文件中:
Recurrence-Count >= 3- 在至少 2 个不同的任务中看到
- 发生在 30 天窗口内
提升目标:
CLAUDE.mdAGENTS.md.github/copilot-instructions.md- 适用于 OpenClaw 工作区级别指导的
SOUL.md/TOOLS.md
将提升的规则写成简短的预防规则(在编码之前/期间要做什么),而不是冗长的事件总结。
定期审查
在自然的断点处审查 .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 行为与你理解的不同
错误(→ 错误条目):
- 命令返回非零退出码
- 异常或堆栈跟踪
- 意外的输出或行为
- 超时或连接失败
优先级指南
| 优先级 | 何时使用 |
|---|---|
critical | 阻塞核心功能、数据丢失风险、安全问题 |
high | 重大影响、影响常见工作流、重复出现的问题 |
medium | 中等影响、存在解决方法 |
low | 轻微不便、边缘情况、锦上添花 |
领域标签
用于按代码库区域过滤经验教训:
| 领域 | 范围 |
|---|---|
frontend | UI、组件、客户端代码 |
backend | API、服务、服务器端代码 |
infra | CI/CD、部署、Docker、云 |
tests | 测试文件、测试工具、覆盖率 |
docs | 文档、注释、README |
config | 配置文件、环境、设置 |
最佳实践
- 立即记录 - 问题发生后上下文最新鲜
- 具体明确 - 未来的 Agent 需要快速理解
- 包含重现步骤 - 特别是对于错误
- 链接相关文件 - 使修复更容易
- 建议具体修复 - 而不仅仅是 "调查"
- 使用一致的类别 - 支持过滤
- 积极提升 - 如有疑问,添加到 CLAUDE.md 或 .github/copilot-instructions.md
- 定期审查 - 过时的经验教训会失去价值
Gitignore 选项
将经验教训保留在本地(每个开发者):
.learnings/
在仓库中跟踪经验教训(团队范围): 不要添加到 .gitignore - 经验教训成为共享知识。
混合模式(跟踪模板,忽略条目):
.learnings/*.md
!.learnings/.gitkeep
Hook 集成
通过 Agent hooks 启用自动提醒。这是选择加入的 - 你必须明确配置 hooks。
快速设置(Claude Code / Codex)
… [翻译截断]