技能.md
自我提升技能
将学习成果和错误记录到 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 |
| 简化/强化重复模式 | 日志/更新.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
基于原仓库ithub.com/pskoett/pskoett-ai-skills- github.com/pskoett/pskoett-ai-skills/tree/main/skills/self-improvement为 OpenClaw 重新制作
工作区结构
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
创建学习文件
mkdir -p ~/.openclaw/workspace/.learnings
然后创建日志文件(或从以下位置复制assets/):
-
LEARNINGS.md— 更正、知识缺口、最佳实践 -
ERRORS.md— 命令失败、异常 -
FEATURE_REQUESTS.md— 用户请求的功能
促销目标
当学习成果被证明具有广泛的适用性时,将其提升到工作区文件中:
| 学习类型 | 晋升 | 例子 |
|---|---|---|
| 行为模式 | SOUL.md |
“言简意赅,避免免责声明” |
| 工作流程改进 | AGENTS.md |
“生成子代理以执行长时间任务” |
| 工具陷阱 | TOOLS.md |
“Git推送需要先配置身份验证” |
会间交流
OpenClaw 提供工具,用于在不同会议之间共享学习成果:
-
sessions_list — 查看当前/最近的会话
-
sessions_history — 阅读另一次会议的记录
-
sessions_send — 将学习内容发送到另一个会话
-
sessions_spawn — 生成一个子代理以执行后台任务
可选:启用钩子
为在会话开始时自动提醒:
# 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/在您的项目中创建:
mkdir -p .learnings
从文件中复制模板assets/或创建带有标题的文件。
添加对代理文件 AGENTS.md、CLAUDE.md 或 .github/copilot-instructions.md 的引用,以提醒自己记录学习心得。(这是基于钩子的提醒的替代方案)
自我提升工作流程
当出现错误或需要更正时:
-
登录到
.learnings/ERRORS.md,LEARNINGS.md或FEATURE_REQUESTS.md -
回顾并推广具有广泛适用性的知识,以:
-
CLAUDE.md项目事实和惯例 -
AGENTS.md工作流程和自动化 -
.github/copilot-instructions.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
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)
- 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)
---
错误条目
添加到.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
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:
## [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
-
类型:(
LRN学习),ERR(误差),FEAT(特征) -
YYYYMMDD:当前日期
-
XXX:连续数字或随机 3 个字符(例如
001,,A7B)
例如:LRN-20250115-001,,ERR-20250115-A3FFEAT-20250115-002
解析条目
问题解决后,请更新条目:
-
更改
**Status**: pending→**Status**: resolved -
在元数据后添加解析块:
### 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
晋升为记忆项目
当学习内容具有广泛适用性(而非一次性解决方案)时,应将其提升为永久项目记忆。
何时晋升
-
学习适用于多个文件/功能
-
任何贡献者(人类或人工智能)都应该知道的知识
-
防止再次出错
-
文档项目特定约定
促销目标
| 目标 | 那里应该放什么? |
|---|---|
CLAUDE.md |
项目概况、惯例、注意事项,适用于所有与克劳德的互动 |
AGENTS.md |
代理特定的工作流程、工具使用模式、自动化规则 |
.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(简明版)中:
## Build & Dependencies
- Package manager: pnpm (not npm) - use `pnpm install`
学习(详细):
修改 API 端点时,必须重新生成 TypeScript 客户端。否则,运行时会出现类型不匹配的问题。
在 AGENTS.md(可操作)中:
## After API Changes
1. Regenerate client: `pnpm run generate:api`
2. Check for type errors: `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
-
晋升规则(系统提示反馈)
当所有条件都为真时,将重复出现的模式提升到代理上下文/系统提示文件中:
-
Recurrence-Count >= 3 -
至少在 2 项不同的任务中观察到
-
发生在30天期限内
推广目标:
-
CLAUDE.md -
AGENTS.md -
.github/copilot-instructions.md -
SOUL.md/TOOLS.md用于 OpenClaw 工作区级别的指导(如适用)
编写提升规则时,应采用简短的预防规则(编码前/编码时应采取的措施),而不是冗长的事件报告。
定期审查
.learnings/在自然断点处进行回顾:
何时进行复习
-
在开始一项新的主要任务之前
-
完成一项功能后
-
在拥有过往经验的领域工作时
-
活跃发展期间每周
快速状态检查
# 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 |
配置文件、环境、设置 |
最佳实践
-
立即记录日志——问题发生后立即记录的上下文信息最准确。
-
要具体——未来的代理人需要快速理解。
-
提供重现步骤——尤其是对于错误。
-
链接相关文件——使修复更容易
-
提出具体的解决方案,而不仅仅是“调查”。
-
使用一致的类别——便于筛选
-
积极推广——如有疑问,请添加到 CLAUDE.md 或 .github/copilot-instructions.md 中。
-
定期回顾——过时的知识会失去价值。
忽略选项
将学习成果本地化(每个开发者):
.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 个令牌开销)。
完整设置(含错误检测)
{
"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 |
用户提示提交 | 提醒在任务完成后评估学习成果 |
scripts/error-detector.sh |
PostToolUse(Bash) | 因命令错误而触发 |
请参阅references/hooks-setup.md详细配置和故障排除信息。
自动技能提取
当学习内容足够有价值,可以成为可重用的技能时,使用提供的辅助函数将其提取出来。
技能提取标准
当符合以下任何一项条件时,学习成果即可提取技能:
| 标准 | 描述 |
|---|---|
| 再次发生的 | 链接See Also到 2 个以上类似问题 |
| 已验证 | 状态:resolved修复工作已完成 |
| 不明显的 | 需要进行实际调试/调查才能发现 |
| 适用范围广 | 不局限于特定项目;适用于多个代码库。 |
| 用户标记 | 用户说“将此保存为技能”或类似内容 |
提取工作流程
-
识别候选对象:学习符合提取标准
-
运行辅助程序(或手动创建):
./skills/self-improvement/scripts/extract-skill.sh skill-name --dry-run ./skills/self-improvement/scripts/extract-skill.sh skill-name -
自定义 SKILL.md:填写包含学习内容的模板
-
更新学习:将状态设置为
promoted_to_skill,添加Skill-Path -
验证:在新会话中阅读技能,确保其内容完整独立。
手工提取
如果您更喜欢手动创建:
-
创造
skills/<skill-name>/SKILL.md -
使用模板
assets/SKILL-TEMPLATE.md -
遵循特工技能规范:
-
YAML frontmatter 包含
name和description -
名称必须与文件夹名称匹配
-
技能文件夹中没有 README.md 文件
-
提取检测触发器
注意观察以下信号,表明学习应该转化为一项技能:
对话中:
-
“将此技能保存下来”
-
“我总是遇到这种情况”
-
“这对其他项目也很有用。”
-
记住这个模式
学习条目:
-
多个
See Also链接(反复出现的问题) -
高优先级 + 已解决状态
-
类别:
best_practice适用范围广泛 -
用户反馈称赞该解决方案
技能质量门槛
提取前,请核实:
-
解决方案已测试并运行正常。
-
即使没有原文,描述也很清晰。
-
代码示例是独立的。
-
没有项目特定的硬编码值
-
遵循技能命名规则(小写,连字符)
多智能体支持
该技能适用于不同的AI编码代理,并可针对特定代理进行激活。
克劳德·科德
激活方式:钩子(UserPromptSubmit、PostToolUse) 设置方式:.claude/settings.json通过钩子配置 检测方式:通过钩子脚本自动检测
Codex CLI
激活方式:钩子(与 Claude Code 模式相同) 设置方式:.codex/settings.json通过钩子配置 检测方式:通过钩子脚本自动检测
GitHub Copilot
激活方式:手动(不支持挂钩) 设置方式:添加到.github/copilot-instructions.md:
## 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 设置”部分; 检测:通过会话工具和工作区文件。
与代理无关的指导
无论你使用什么工具,在以下情况下都要进行自我提升:
-
发现了一些不为人知的秘密——解决方案并非立竿见影。
-
更正一下——最初的方法错了。
-
学习项目规范——发现未记录的模式
-
遭遇意外错误——尤其是在诊断困难的情况下。
-
寻找更好的方法——改进你原来的解决方案
Copilot聊天集成
对于 Copilot 用户,请在相关情况下将以下内容添加到您的提示中:
.learnings/完成此任务后,评估是否应该使用自我提升技能格式记录任何学习成果。
或者使用快速提示:
-
“将此记录到学习中”
-
“利用这个解决方案创造一项技能”
-
“请查看 .learnings/ 目录以了解相关问题”
self-improving-agent-3.0.5.zip (23.7 KB)