20 KiB
name, description, metadata
| name | description | metadata |
|---|---|---|
| self-improvement | 记录 learnings、errors 和 corrections,以支持持续改进。适用于:(1) 命令或操作意外失败,(2) 用户纠正 Claude('No, that's wrong...', 'Actually...'),(3) 用户请求当前不存在的能力,(4) 外部 API 或工具失败,(5) Claude 意识到自己的知识已过时或不正确,(6) 为重复任务发现了更好的处理方式。在开始重大任务前,也应先回顾 learnings。 |
Self-Improvement Skill
将 learnings 和 errors 记录到 markdown 文件中,以支持持续改进。后续 coding agents 可以基于这些记录推进修复,而重要的学习项则可以提升为项目级 memory。
快速参考
| Situation | Action |
|---|---|
| Command/operation fails | 记录到 .learnings/ERRORS.md |
| User corrects you | 以 correction category 记录到 .learnings/LEARNINGS.md |
| User wants missing feature | 记录到 .learnings/FEATURE_REQUESTS.md |
| API/external tool fails | 将集成细节记录到 .learnings/ERRORS.md |
| Knowledge was outdated | 以 knowledge_gap category 记录到 .learnings/LEARNINGS.md |
| Found better approach | 以 best_practice category 记录到 .learnings/LEARNINGS.md |
| Simplify/Harden recurring patterns | 使用 Source: simplify-and-harden 和稳定的 Pattern-Key 记录或更新 .learnings/LEARNINGS.md |
| Similar to existing entry | 通过 **See Also** 建立关联,并考虑提升优先级 |
| Broadly applicable learning | 提升到 CLAUDE.md、AGENTS.md 和/或 .github/copilot-instructions.md |
| Workflow improvements | 提升到 AGENTS.md(OpenClaw workspace) |
| Tool gotchas | 提升到 TOOLS.md(OpenClaw workspace) |
| Behavioral patterns | 提升到 SOUL.md(OpenClaw workspace) |
OpenClaw Setup(推荐)
OpenClaw 是这个 skill 的主要运行平台。它通过基于 workspace 的 prompt injection 和自动 skill loading 工作。
Installation
Via ClawdHub(推荐):
clawdhub install self-improving-agent
Manual:
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
Workspace Structure
OpenClaw 会将这些文件注入到每个 session 中:
~/.openclaw/workspace/
├── AGENTS.md # 多代理工作流与委派模式
├── SOUL.md # 行为指导、个性与原则
├── TOOLS.md # 工具能力、集成 gotchas
├── MEMORY.md # 长期 memory(仅主 session)
├── memory/ # 每日 memory 文件
│ └── YYYY-MM-DD.md
└── .learnings/ # 本 skill 的日志文件
├── LEARNINGS.md
├── ERRORS.md
└── FEATURE_REQUESTS.md
Create Learning Files
mkdir -p ~/.openclaw/workspace/.learnings
然后创建这些日志文件(或从 assets/ 复制):
LEARNINGS.md— corrections、knowledge gaps、best practicesERRORS.md— command failures、exceptionsFEATURE_REQUESTS.md— 用户请求的 capabilities
Promotion Targets
当 learnings 被证明具有广泛适用性时,将它们提升到 workspace 文件:
| Learning Type | Promote To | Example |
|---|---|---|
| Behavioral patterns | SOUL.md |
"Be concise, avoid disclaimers" |
| Workflow improvements | AGENTS.md |
"Spawn sub-agents for long tasks" |
| Tool gotchas | TOOLS.md |
"Git push needs auth configured first" |
Inter-Session Communication
OpenClaw 提供了这些工具,用于跨 session 共享 learnings:
- sessions_list — 查看活跃/最近 session
- sessions_history — 读取另一个 session 的 transcript
- sessions_send — 向另一个 session 发送 learning
- sessions_spawn — 为后台工作启动 sub-agent
Optional: Enable Hook
如需在 session 启动时自动提醒:
# 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。
Generic Setup(其他 agents)
对于 Claude Code、Codex、Copilot 或其他 agents,在你的项目中创建 .learnings/:
mkdir -p .learnings
从 assets/ 复制模板,或自行创建带标题的文件。
在 agent 文件 AGENTS.md、CLAUDE.md 或 .github/copilot-instructions.md 中加入提示,提醒自己记录 learnings。(这是 hook-based reminders 的替代方案)
Self-Improvement Workflow
当出现 errors 或 corrections 时:
- 记录到
.learnings/ERRORS.md、LEARNINGS.md或FEATURE_REQUESTS.md - 回顾并将具有广泛适用性的 learnings 提升到:
CLAUDE.md- 项目事实和约定AGENTS.md- workflow 和 automation.github/copilot-instructions.md- Copilot 上下文
Logging Format
Learning Entry
追加到 .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 (if related to existing entry)
- Pattern-Key: simplify.dead_code | harden.input_validation (optional, for recurring-pattern tracking)
- Recurrence-Count: 1 (optional)
- First-Seen: 2025-01-15 (optional)
- Last-Seen: 2025-01-15 (optional)
---
Error Entry
追加到 .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
Actual error message or output
### Context
- 尝试执行的 command/operation
- 使用的输入或参数
- 如有必要,补充环境细节
### Suggested Fix
如果能够识别,写明可能的解决方式
### Metadata
- Reproducible: yes | no | unknown
- Related Files: path/to/file.ext
- See Also: ERR-20250110-001 (if recurring)
---
Feature Request Entry
追加到 .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 Generation
格式:TYPE-YYYYMMDD-XXX
- TYPE:
LRN(learning)、ERR(error)、FEAT(feature) - YYYYMMDD: 当前日期
- XXX: 顺序号或随机 3 个字符(例如
001、A7B)
示例:LRN-20250115-001、ERR-20250115-A3F、FEAT-20250115-002
Resolving Entries
当问题被修复后,更新该 entry:
- 将
**Status**: pending改为**Status**: resolved - 在 Metadata 后追加 resolution block:
### Resolution
- **Resolved**: 2025-01-16T09:00:00Z
- **Commit/PR**: abc123 or #42
- **Notes**: 简要描述做了什么
其他 status 值:
in_progress- 正在处理wont_fix- 决定不处理(在 Resolution notes 中补充原因)promoted- 已提升到 CLAUDE.md、AGENTS.md 或 .github/copilot-instructions.md
Promoting to Project Memory
当某条 learning 具有广泛适用性(不是一次性修复)时,将它提升为永久性的项目 memory。
When to Promote
- 该 learning 适用于多个文件/功能
- 是任何 contributor(human 或 AI)都应该知道的知识
- 能防止重复犯错
- 记录了项目特定的约定
Promotion Targets
| Target | What Belongs There |
|---|---|
CLAUDE.md |
所有 Claude 交互都应知道的项目事实、约定、gotchas |
AGENTS.md |
agent 专用 workflow、tool usage patterns、automation rules |
.github/copilot-instructions.md |
GitHub Copilot 的项目上下文与约定 |
SOUL.md |
行为指导、沟通风格、原则(OpenClaw workspace) |
TOOLS.md |
工具能力、usage patterns、integration gotchas(OpenClaw workspace) |
How to Promote
- Distill:将 learning 提炼成简洁的规则或事实
- Add:加入目标文件的适当 section(如无则创建)
- Update 原始 entry:
- 将
**Status**: pending改为**Status**: promoted - 添加
**Promoted**: CLAUDE.md、AGENTS.md或.github/copilot-instructions.md
- 将
Promotion Examples
Learning(详细版):
Project uses pnpm workspaces. Attempted
npm installbut failed. Lock file ispnpm-lock.yaml. Must usepnpm install.
在 CLAUDE.md 中(简洁版):
## Build & Dependencies
- Package manager: pnpm (not npm) - use `pnpm install`
Learning(详细版):
When modifying API endpoints, must regenerate TypeScript client. Forgetting this causes type mismatches at runtime.
在 AGENTS.md 中(可执行版):
## After API Changes
1. Regenerate client: `pnpm run generate:api`
2. Check for type errors: `pnpm tsc --noEmit`
Recurring Pattern Detection
如果你记录的内容与已有 entry 类似:
- Search first:
grep -r "keyword" .learnings/ - Link entries:在 Metadata 中添加
**See Also**: ERR-20250110-001 - 如果问题持续复发,Bump priority
- Consider systemic fix:重复问题往往意味着:
- 缺少 documentation(→ 提升到 CLAUDE.md 或 .github/copilot-instructions.md)
- 缺少 automation(→ 加到 AGENTS.md)
- 存在 architectural problem(→ 创建 tech debt ticket)
Simplify & Harden Feed
使用这套 workflow 吸收 simplify-and-harden
skill 中反复出现的模式,并将其转化为更持久的 prompt guidance。
Ingestion Workflow
- 从任务总结中读取
simplify_and_harden.learning_loop.candidates。 - 对每个 candidate,使用
pattern_key作为稳定的 dedupe key。 - 在
.learnings/LEARNINGS.md中搜索是否已存在该 key 对应的 entry:grep -n "Pattern-Key: <pattern_key>" .learnings/LEARNINGS.md
- 如果已存在:
- 增加
Recurrence-Count - 更新
Last-Seen - 为相关 entries/tasks 添加
See Alsolinks
- 增加
- 如果不存在:
- 创建新的
LRN-...entry - 设置
Source: simplify-and-harden - 设置
Pattern-Key、Recurrence-Count: 1以及First-Seen/Last-Seen
- 创建新的
Promotion Rule(System Prompt Feedback)
当以下条件同时满足时,将 recurring patterns 提升到 agent context/system prompt files:
Recurrence-Count >= 3- 出现在至少 2 个不同任务中
- 发生在 30 天窗口内
Promotion targets:
CLAUDE.mdAGENTS.md.github/copilot-instructions.md- 在适用时,提升到
SOUL.md/TOOLS.md作为 OpenClaw workspace-level guidance
写入被提升的规则时,要写成简短的 prevention rules(编码前/编码中该做什么),而不是冗长的 incident write-ups。
Periodic Review
在自然断点回顾 .learnings/:
When to Review
- 开始新的重大任务前
- 完成一个 feature 后
- 进入某个已有历史 learning 的 area 时
- 活跃开发期间每周一次
Quick Status Check
# 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
Review Actions
- 解决已修复的 items
- 提升适合沉淀的 learnings
- 关联相关 entries
- 升级 recurring issues
Detection Triggers
当你注意到这些情况时,自动记录:
Corrections(→ 使用 correction category 的 learning):
- "No, that's not right..."
- "Actually, it should be..."
- "You're wrong about..."
- "That's outdated..."
Feature Requests(→ feature request):
- "Can you also..."
- "I wish you could..."
- "Is there a way to..."
- "Why can't you..."
Knowledge Gaps(→ 使用 knowledge_gap category 的 learning):
- 用户提供了你此前不知道的信息
- 你引用的 documentation 已过时
- API behavior 与你的理解不一致
Errors(→ error entry):
- command 返回 non-zero exit code
- exception 或 stack trace
- 非预期输出或行为
- timeout 或 connection failure
Priority Guidelines
| Priority | When to Use |
|---|---|
critical |
阻塞核心功能、存在数据丢失风险、安全问题 |
high |
影响显著、影响常见 workflow、重复出现的问题 |
medium |
影响中等,存在 workaround |
low |
轻微不便、边缘 case、nice-to-have |
Area Tags
用于按 codebase 区域筛选 learnings:
| Area | Scope |
|---|---|
frontend |
UI、components、client-side code |
backend |
API、services、server-side code |
infra |
CI/CD、deployment、Docker、cloud |
tests |
test files、testing utilities、coverage |
docs |
documentation、comments、READMEs |
config |
configuration files、environment、settings |
Best Practices
- Log immediately - 问题刚出现时上下文最完整
- Be specific - 未来的 agents 需要快速理解
- Include reproduction steps - 对 errors 尤其重要
- Link related files - 让修复更容易
- Suggest concrete fixes - 不要只写 "investigate"
- Use consistent categories - 便于过滤
- Promote aggressively - 如果拿不准,就加到 CLAUDE.md 或 .github/copilot-instructions.md
- Review regularly - 过期的 learnings 会迅速失去价值
Gitignore Options
Keep learnings local(按开发者本地保留):
.learnings/
Track learnings in repo(团队共享):
不要添加到 .gitignore 中,这样 learnings 会成为共享知识。
Hybrid(跟踪模板,忽略具体 entries):
.learnings/*.md
!.learnings/.gitkeep
Hook Integration
通过 agent hooks 启用自动提醒。该能力是 opt-in 的,你必须显式配置 hooks。
Quick Setup(Claude Code / Codex)
在项目中创建 .claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "./skills/self-improvement/scripts/activator.sh"
}]
}]
}
}
这会在每次 prompt 后注入一个 learning evaluation reminder(约增加 50-100 tokens 开销)。
Full Setup(带 Error Detection)
{
"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"
}]
}]
}
}
Available Hook Scripts
| Script | Hook Type | Purpose |
|---|---|---|
scripts/activator.sh |
UserPromptSubmit | 提醒在任务结束后回顾 learnings |
scripts/error-detector.sh |
PostToolUse (Bash) | 在 command errors 出现时触发 |
详见 references/hooks-setup.md 中的详细配置与故障排查。
Automatic Skill Extraction
当某条 learning 足够有价值,可以演化为可复用的 skill 时,使用提供的 helper 进行提取。
Skill Extraction Criteria
当满足以下任意条件时,这条 learning 就适合做 skill extraction:
| Criterion | Description |
|---|---|
| Recurring | 有 2 条以上相似问题的 See Also links |
| Verified | Status 为 resolved,并且 fix 已验证可用 |
| Non-obvious | 需要真实 debugging/investigation 才能发现 |
| Broadly applicable | 不是项目特定问题;对多个 codebase 都有帮助 |
| User-flagged | 用户明确说 “save this as a skill” 或类似表达 |
Extraction Workflow
- Identify candidate:该 learning 满足 extraction criteria
- Run helper(或手动创建):
./skills/self-improvement/scripts/extract-skill.sh skill-name --dry-run ./skills/self-improvement/scripts/extract-skill.sh skill-name - Customize SKILL.md:将 learning 内容填入模板
- Update learning:将 status 设为
promoted_to_skill,并补充Skill-Path - Verify:在新的 session 中读取该 skill,确保它是 self-contained 的
Manual Extraction
如果你更偏向手工创建:
- 创建
skills/<skill-name>/SKILL.md - 使用
assets/SKILL-TEMPLATE.md中的模板 - 遵循 Agent Skills spec:
- 使用包含
name和description的 YAML frontmatter - name 必须与 folder name 一致
- skill folder 内不要放 README.md
- 使用包含
Extraction Detection Triggers
注意这些信号,它们通常意味着某条 learning 应该升级为 skill:
In conversation:
- "Save this as a skill"
- "I keep running into this"
- "This would be useful for other projects"
- "Remember this pattern"
In learning entries:
- 存在多个
See Alsolinks(说明是 recurring issue) - 高优先级且已 resolved
- category 为
best_practice且具有广泛适用性 - 用户对该 solution 给出明显正向反馈
Skill Quality Gates
在提取前,确认:
- Solution 已测试并可用
- Description 在脱离原始上下文后仍然清晰
- Code examples 是 self-contained 的
- 没有项目特定的 hardcoded values
- 遵循 skill naming conventions(lowercase、hyphens)
Multi-Agent Support
该 skill 可以在不同 AI coding agents 中工作,但 activation 方式因 agent 而异。
Claude Code
Activation:Hooks(UserPromptSubmit、PostToolUse)
Setup:在 .claude/settings.json 中配置 hooks
Detection:通过 hook scripts 自动检测
Codex CLI
Activation:Hooks(与 Claude Code 相同模式)
Setup:在 .codex/settings.json 中配置 hooks
Detection:通过 hook scripts 自动检测
GitHub Copilot
Activation:手动(不支持 hooks)
Setup:加入 .github/copilot-instructions.md:
## Self-Improvement
在解决 non-obvious issues 后,考虑将其记录到 `.learnings/`:
1. 使用 self-improvement skill 的格式
2. 用 See Also 关联相关 entries
3. 将高价值 learnings 提升为 skills
可以在 chat 中提问:"Should I log this as a learning?"
Detection:在 session 结束时手动回顾
OpenClaw
Activation:Workspace injection + inter-agent messaging Setup:见上文 “OpenClaw Setup” section Detection:通过 session tools 和 workspace files
Agent-Agnostic Guidance
无论使用什么 agent,当你遇到以下情况时都应应用 self-improvement:
- Discover something non-obvious - solution 不是立刻想到的
- Correct yourself - 最初方案是错的
- Learn project conventions - 发现了未文档化的 patterns
- Hit unexpected errors - 特别是 diagnosis 很费劲时
- Find better approaches - 相比原始方案找到了更优路径
Copilot Chat Integration
对于 Copilot 用户,在相关场景下可以把这句话加进 prompt:
After completing this task, evaluate if any learnings should be logged to
.learnings/using the self-improvement skill format.
也可以使用这些快速 prompts:
- "Log this to learnings"
- "Create a skill from this solution"
- "Check .learnings/ for related issues"