ClawSkills logoClawSkills

self-improving-agent

捕获经验、错误和修正以实现持续改进。适用于以下情况:(1) 命令或操作意外失败,(2) 用户更正 Claude

介绍

# 自我提升技能

将学习心得和错误记录到 Markdown 文件中,以实现持续改进。编码代理稍后可以将其处理为修复方案,重要的学习心得将被提升到项目记忆中。

## 快速参考

| 情况 | 操作 | |-----------|--------| | 命令/操作失败 | 记录到 `.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` | | 与现有条目相似 | 使用 `**See Also**` 链接,考虑提升优先级 | | 广泛适用的学习 | 提升到 `CLAUDE.md`、`AGENTS.md` 和/或 `.github/copilot-instructions.md` | | 工作流改进 | 提升到 `AGENTS.md` (OpenClaw 工作区) | | 工具陷阱 | 提升到 `TOOLS.md` (OpenClaw 工作区) | | 行为模式 | 提升到 `SOUL.md` (OpenClaw 工作区) |

## OpenClaw 设置(推荐)

OpenClaw 是此技能的主要平台。它使用基于工作区的提示注入,并自动加载技能。

### 安装

**通过 ClawdHub(推荐):** ```bash clawdhub install self-improving-agent ```

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

### 工作区结构

OpenClaw 会将这些文件注入到每个会话中:

``` ~/.openclaw/workspace/ ├── AGENTS.md # Multi-agent workflows, delegation patterns ├── SOUL.md # Behavioral guidelines, personality, principles ├── TOOLS.md # Tool capabilities, integration gotchas ├── MEMORY.md # Long-term memory (main session only) ├── memory/ # Daily memory files │ └── YYYY-MM-DD.md └── .learnings/ # This skill's log files ├── LEARNINGS.md ├── ERRORS.md └── FEATURE_REQUESTS.md ```

### 创建学习文件

```bash 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** — 生成子代理以进行后台工作

### 可选:启用钩子

为了在会话开始时自动提醒:

```bash # Copy hook to OpenClaw hooks directory cp -r hooks/openclaw ~/.openclaw/hooks/self-improvement

# Enable it openclaw hooks enable self-improvement ```

完整详情请参阅 `references/openclaw-integration.md`。

---

## 通用设置(其他代理)

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

```bash mkdir -p .learnings ```

从 `assets/` 复制模板或创建带有标题的文件。

## 记录格式

### 学习条目

追加到 `.learnings/LEARNINGS.md`:

```markdown ## [LRN-YYYYMMDD-XXX] category

**Logged**: ISO-8601 timestamp **Priority**: low | medium | high | critical **Status**: pending **Area**: frontend | backend | infra | tests | docs | config

### Summary One-line description of what was learned

### Details Full context: what happened, what was wrong, what's correct

### Suggested Action Specific fix or improvement to make

### Metadata - Source: conversation | error | user_feedback - Related Files: path/to/file.ext - Tags: tag1, tag2 - See Also: LRN-20250110-001 (if related to existing entry)

--- ```

### 错误条目

追加到 `.learnings/ERRORS.md`:

```markdown ## [ERR-YYYYMMDD-XXX] skill_or_command_name

**Logged**: ISO-8601 timestamp **Priority**: high **Status**: pending **Area**: frontend | backend | infra | tests | docs | config

### Summary Brief description of what failed

### Error ``` 实际错误消息或输出 ```

### Context - Command/operation attempted - Input or parameters used - Environment details if relevant

### Suggested Fix If identifiable, what might resolve this

### Metadata - Reproducible: yes | no | unknown - Related Files: path/to/file.ext - See Also: ERR-20250110-001 (if recurring)

--- ```

### 功能请求条目

追加到 `.learnings/FEATURE_REQUESTS.md`:

```markdown ## [FEAT-YYYYMMDD-XXX] capability_name

**Logged**: ISO-8601 timestamp **Priority**: medium **Status**: pending **Area**: frontend | backend | infra | tests | docs | config

### Requested Capability What the user wanted to do

### User Context Why they needed it, what problem they're solving

### Complexity Estimate simple | medium | complex

### Suggested Implementation How this could be built, what it might extend

### Metadata - Frequency: first_time | recurring - Related Features: existing_feature_name

--- ```

## ID 生成

格式:`TYPE-YYYYMMDD-XXX` - TYPE:`LRN` (learning)、`ERR` (error)、`FEAT` (feature) - YYYYMMDD:当前日期 - XXX:序号或随机 3 个字符(例如 `001`、`A7B`)

示例:`LRN-20250115-001`、`ERR-20250115-A3F`、`FEAT-20250115-002`

## 解决条目

当问题得到修复时,更新该条目:

1. 将 `**Status**: pending` 更改为 `**Status**: resolved` 2. 在元数据之后添加解决块:

```markdown ### Resolution - **Resolved**: 2025-01-16T09:00:00Z - **Commit/PR**: abc123 or #42 - **Notes**: Brief description of what was done ```

其他状态值: - `in_progress` - 正在进行中 - `wont_fix` - 决定不处理(在解决说明中添加原因) - `promoted` - 已提升到 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. **更新**原始条目: - 将 `**Status**: pending` 更改为 `**Status**: promoted` - 添加 `**Promoted**: CLAUDE.md`、`AGENTS.md` 或 `.github/copilot-instructions.md`

### 提升示例

**学习心得**(冗长): > 项目使用 pnpm 工作区。尝试运行 `npm install` 但失败了。 > 锁定文件是 `pnpm-lock.yaml`。必须使用 `pnpm install`。

**在 CLAUDE.md 中**(简洁): ```markdown ## Build & Dependencies - Package manager: pnpm (not npm) - use `pnpm install` ```

**学习心得**(冗长): > 修改 API 端点时,必须重新生成 TypeScript 客户端。 > 忘记这一点会导致运行时类型不匹配。

**在 AGENTS.md 中**(可操作): ```markdown ## After API Changes 1. Regenerate client: `pnpm run generate:api` 2. Check for type errors: `pnpm tsc --noEmit` ```

## 循环模式检测

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

1. **先搜索**:`grep -r "keyword" .learnings/` 2. **链接条目**:在元数据中添加 `**See Also**: ERR-20250110-001` 3. 如果问题持续发生,**提升优先级** 4. **考虑系统性修复**:重复出现的问题通常表明: - 缺少文档(→ 提升到 CLAUDE.md 或 .github/copilot-instructions.md) - 缺少自动化(→ 添加到 AGENTS.md) - 架构问题(→ 创建技术债务工单)

## 定期审查

在自然的断点处审查 `.learnings/`:

### 何时审查 - 开始新的主要任务之前 - 完成功能之后 - 在具有过去学习心得的领域工作时 - 活跃开发期间的每周

### 快速状态检查 ```bash # Count pending items grep -h "Status\*\*: pending" .learnings/*.md | wc -l

# List pending high-priority items grep -B5 "Priority\*\*: high" .learnings/*.md | grep "^## \["

# Find learnings for a specific area 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` | 配置文件、环境、设置 |

## 最佳实践

1. **立即记录** - 上下文在问题发生后最清晰 2. **具体明确** - 未来的代理需要快速理解 3. **包含复现步骤** - 尤其是对于错误 4. **链接相关文件** - 使修复更容易 5. **建议具体的修复方法** - 而不仅仅是"调查" 6. **使用一致的类别** - 以便筛选 7. **积极提升** - 如果有疑问,添加到 CLAUDE.md 或 .github/copilot-instructions.md 8. **定期审查** - 过时的学习心得会失去价值

## Gitignore 选项

**保留学习内容在本地**(按开发者): ```gitignore .learnings/ ```

**在仓库中跟踪学习内容**(团队范围): 不要添加到 .gitignore - 学习内容将成为共享知识。

**混合模式**(跟踪模板,忽略条目): ```gitignore .learnings/*.md !.learnings/.gitkeep ```

## 钩子集成

通过代理钩子启用自动提醒。这是**可选加入 (opt-in)** 的 - 你必须显式配置钩子。

### 快速设置 (Claude Code / Codex)

在你的项目中创建 `.claude/settings.json`:

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

这会在每个提示后注入学习评估提醒(约 50-100 个 token 开销)。

### 完整设置(含错误检测)

```json { "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 个及以上类似问题的 `See Also` 链接 | | **已验证** | 状态为 `resolved` 且有可用的修复方案 | | **非显而易见** | 需要实际调试/调查才能发现 | | **广泛适用** | 非项目特定;在代码库中通用 | | **用户标记** | 用户说"把这个保存为技能"或类似说法 |

### 提取工作流

1. **确定候选**:学习内容满足提取标准 2. **运行辅助程序**(或手动创建): ```bash ./skills/self-improvement/scripts/extract-skill.sh skill-name --dry-run ./skills/self-improvement/scripts/extract-skill.sh skill-name ``` 3. **自定义 SKILL.md**:使用学习内容填充模板 4. **更新学习记录**:将状态设置为 `promoted_to_skill`,添加 `Skill-Path` 5. **验证**:在新会话中读取该技能,确保其自包含

### 手动提取

如果你更喜欢手动创建:

1. 创建 `skills/<skill-name>/SKILL.md` 2. 使用 `assets/SKILL-TEMPLATE.md` 中的模板 3. 遵循 [Agent Skills 规范](https://agentskills.io/specification): - 包含 `name` 和 `description` 的 YAML frontmatter - 名称必须与文件夹名称匹配 - 技能文件夹内不要有 README.md

### 提取检测触发器

留意以下信号,表明某条学习记录应该成为技能:

**在对话中:** - "把这个保存为一个技能" - "我老是遇到这个问题" - "这对其他项目会有用" - "记住这个模式"

**在学习记录中:** - 多个 `See Also` 链接(重复出现的问题) - 高优先级 + 已解决状态 - 类别:`best_practice` 且具有广泛适用性 - 用户称赞该解决方案的反馈

### 技能质量关卡

在提取之前,请验证:

- [ ] 解决方案已测试并有效 - [ ] 描述在没有原始上下文的情况下依然清晰 - [ ] 代码示例是自包含的 - [ ] 没有特定于项目的硬编码值 - [ ] 遵循技能命名约定(小写、连字符)

## 多智能体支持

该技能适用于不同的 AI 编程智能体,并具有特定智能体的激活方式。

### Claude Code

**激活**:钩子 **设置**:`.claude/settings.json` 配置钩子 **检测**:通过钩子脚本自动进行

### Codex CLI

**激活**:钩子(与 Claude Code 模式相同) **设置**:`.codex/settings.json` 配置钩子 **检测**:通过钩子脚本自动进行

### GitHub Copilot

**激活**:手动(不支持钩子) **设置**:添加到 `.github/copilot-instructions.md`:

```markdown ## Self-Improvement

After solving non-obvious issues, consider logging to `.learnings/`: 1. Use format from self-improvement skill 2. Link related entries with See Also 3. Promote high-value learnings to skills

Ask in chat: "Should I log this as a learning?" ```

**检测**:会话结束时人工审查

### OpenClaw

**激活**:工作区注入 + 智能体间消息传递 **设置**:参见上面的“OpenClaw 设置”部分 **检测**:通过会话工具和工作区文件

### 智能体无关指导

无论使用何种智能体,在以下情况应用自我改进:

1. **发现非显而易见的事物** - 解决方案并非显而易见 2. **自我纠正** - 最初的方法是错误的 3. **学习项目约定** - 发现了未记录的模式 4. **遇到意外错误** - 尤其是当诊断很困难时 5. **找到更好的方法** - 改进了你最初的解决方案

### Copilot Chat 集成

对于 Copilot 用户,在相关时将此添加到你的提示词中:

> 完成此任务后,评估是否有任何学习内容应使用自我改进技能格式记录到 `.learnings/` 中。

或使用快速提示词: - "把这个记录到学习记录中" - "根据此解决方案创建一个技能" - "检查 .learnings/ 是否有相关问题"

更多产品