Self-Improvement Skill(WorkBuddy 适配版)
将学习、错误、用户纠正结构化记录到 markdown 文件,实现持续积累。
重要经验可提升到 WorkBuddy 记忆系统,跨会话长期生效。
快速开始
初始化(首次使用)
Windows (PowerShell):
New-Item -ItemType Directory -Force -Path .learnings
if (-not (Test-Path .learnings/LEARNINGS.md)) { "# Learnings`n`nCorrections, insights, and knowledge gaps.`n`n**Categories**: correction | insight | knowledge_gap | best_practice`n`n---`n" | Out-File -Encoding UTF8 .learnings/LEARNINGS.md }
if (-not (Test-Path .learnings/ERRORS.md)) { "# Errors`n`nCommand failures and integration errors.`n`n---`n" | Out-File -Encoding UTF8 .learnings/ERRORS.md }
if (-not (Test-Path .learnings/FEATURE_REQUESTS.md)) { "# Feature Requests`n`nCapabilities requested by the user.`n`n---`n" | Out-File -Encoding UTF8 .learnings/FEATURE_REQUESTS.md }
macOS / Linux (bash):
mkdir -p .learnings
[ -f .learnings/LEARNINGS.md ] || printf "# Learnings\n\nCorrections, insights, and knowledge gaps.\n\n**Categories**: correction | insight | knowledge_gap | best_practice\n\n---\n" > .learnings/LEARNINGS.md
[ -f .learnings/ERRORS.md ] || printf "# Errors\n\nCommand failures and integration errors.\n\n---\n" > .learnings/ERRORS.md
[ -f .learnings/FEATURE_REQUESTS.md ] || printf "# Feature Requests\n\nCapabilities requested by the user.\n\n---\n" > .learnings/FEATURE_REQUESTS.md
> ⚠️ 永远不要覆盖已有文件。如果 .learnings/ 已初始化,此操作为空操作。
快速参考
| 场景 | 操作 |
|---|---|
| 命令/操作失败 | 记录到 .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**,考虑提升优先级 |
| 广泛适用的经验 | 提升到 WorkBuddy 记忆文件 |
WorkBuddy 记忆系统集成
本技能与 WorkBuddy 原生三层记忆系统协同工作,避免重复记录:
| 记忆层 | 路径 | 何时提升至此 |
|---|---|---|
| 云端记忆(自动注入) | 服务器管理,本地只读 | 用户跨项目通用偏好/习惯 |
| 用户级本地记忆 | ~/.workbuddy/MEMORY.md |
跨项目的通用经验、行为准则 |
| 工作区级记忆 | .workbuddy/memory/MEMORY.md |
本项目长期有用的约定、经验 |
| 每日工作日志 | .workbuddy/memory/YYYY-MM-DD.md |
当日完成的具体工作(追加,不覆盖) |
| 技能日志(本技能) | .learnings/*.md |
详细错误上下文、待处理条目、需要追踪的重复问题 |
提升规则:
- 当某条经验在 .learnings/ 中出现 ≥ 3 次,或在 30 天内跨越 ≥ 2 个任务时出现 → 提升到 ~/.workbuddy/MEMORY.md 或 .workbuddy/memory/MEMORY.md
- 行为模式类 → SOUL.md
- 工作流类 → 存为 Skill(用 SkillManage 创建)
- 项目约定类 → .workbuddy/memory/MEMORY.md
两种记录格式
完整格式(用于复杂问题)
用于需要详细上下文的错误、复杂学习条目。
## [LRN-YYYYMMDD-XXX] category
**Logged**: ISO-8601 时间戳
**Priority**: low | medium | high | critical
**Status**: pending
### Summary
一句话描述
### Details
详细上下文
### Suggested Action
具体修复建议
### Metadata
- Tags: tag1, tag2
- See Also: LRN-20250110-001
- Recurrence-Count: 1(重复出现时递增)
---
快速格式(推荐日常使用)
用于简单纠正、小发现。降低记录阻力。
## [LRN-YYYYMMDD-XXX] category
**Summary**: 一句话描述
**Action**: 正确做法或建议修复
---
> 快速格式只需 3 行,优先保证"记下来",细节可以后补。
日志格式详解
Learning 条目(LEARNINGS.md)
## [LRN-20260609-001] correction
**Logged**: 2026-06-09T00:11:00+08:00
**Priority**: medium
**Status**: pending
### Summary
用户指出 XX 做法不正确,正确做法是 YY
### Details
(详细上下文)
### Suggested Action
(具体修复建议)
### Metadata
- Tags: tag1, tag2
- See Also:(相关条目)
- Recurrence-Count: 1
---
Error 条目(ERRORS.md)
## [ERR-20260609-001] command_name
**Logged**: 2026-06-09T00:11:00+08:00
**Priority**: high
**Status**: pending
### Summary
简要描述失败原因
### Error
(错误信息摘要,避免完整日志和敏感信息)
### Context
- 尝试的命令/操作
- 环境信息(如相关)
### Suggested Fix
(可识别的修复方案)
---
Feature Request 条目(FEATURE_REQUESTS.md)
## [FEAT-20260609-001] capability_name
**Logged**: 2026-06-09T00:11:00+08:00
**Priority**: medium
**Status**: pending
### Requested Capability
用户希望实现的功能
### User Context
为什么需要这个功能
### Complexity Estimate
simple | medium | complex
---
ID 生成规则
格式:TYPE-YYYYMMDD-XXX
- TYPE:LRN(学习)、ERR(错误)、FEAT(功能需求)
- YYYYMMDD:当前日期
- XXX:当日序号(001、002…)
示例:LRN-20260609-001、ERR-20260609-001
自动触发检测
在对话中注意以下信号,无需用户手动触发即可记录:
纠正类(→ LEARNINGS.md,correction 类别):
- "不对,应该是……"
- "你错了……"
- "这已经过时了……"
功能需求类(→ FEATURE_REQUESTS.md):
- "能不能也……"
- "我希望你能……"
- "为什么不能……"
知识空白类(→ LEARNINGS.md,knowledge_gap 类别):
- 你引用了过时文档
- API 行为与理解不符
- 用户提供了你不知道的信息
错误类(→ ERRORS.md):
- 命令返回非零退出码
- 异常或堆栈信息
- 超时或连接失败
任务结束自动评估
在完成实质性任务(≥ 3 次工具调用,或有明确交付物)后,在写记忆文件之前,先自问:
> 这次任务中有没有值得记录的经验?
> - 有没有犯过错或收到纠正?
> - 有没有发现更好的做法?
> - 有没有遇到难以排查的问题?
如果有,先记录到 .learnings/,再写记忆文件。
条目状态管理
| 状态 | 含义 |
|---|---|
pending |
待处理 |
in_progress |
正在处理 |
resolved |
已修复 |
promoted |
已提升到记忆文件 |
wont_fix |
决定不处理 |
当条目修复后,更新状态并追加:
**Status**: resolved
### Resolution
- **Resolved**: 2026-06-09T00:11:00+08:00
- **Notes**: 简要描述修复内容
重复模式检测
如果记录的内容与已有条目相似:
- 先搜索:在
.learnings/中搜索关键词 - 链接条目:在新条目中加入
**See Also**: LRN-20250110-001 - 递增计数:在旧条目中递增
Recurrence-Count - 考虑系统性修复:重复问题往往说明:
- 缺少文档 → 提升到记忆文件
- 缺少自动化 → 创建 Skill
- 架构问题 → 记录为技术债
自动提升阈值:
- Recurrence-Count >= 3,且
- 在 ≥ 2 个不同任务中出现,且
- 在 30 天窗口内
满足以上条件时,将经验提炼后写入 ~/.workbuddy/MEMORY.md 或 .workbuddy/memory/MEMORY.md。
与 Skill 系统的衔接
当某条经验满足以下条件时,将其保存为 Skill(用 SkillManage 工具):
- 需要 ≥ 8 次工具调用才能完成的复杂任务
- 修复了一个棘手的错误,值得复用
- 发现了一个非平凡的工作流
保存为 Skill 比写入 .learnings/ 更主动——Skill 是可执行的,记忆是信息性的。
日志审查
何时审查
- 开始新大任务前
- 完成一个功能后
- 在有过往学习的区域工作时
快速状态检查
# Windows PowerShell:统计 pending 条目数
Select-String -Path .learnings/*.md -Pattern "Status\*\*: pending" | Measure-Object | Select-Object -ExpandProperty Count
# 列出 high 优先级 pending 条目
Select-String -Path .learnings/*.md -Pattern "^## \[" | ForEach-Object { $_.Line }
# macOS/Linux:
grep -h "Status\*\*: pending" .learnings/*.md | wc -l
grep -B5 "Priority\*\*: high" .learnings/*.md | grep "^## \["
会话开始提醒
每次会话开始时,检查 .learnings/ 中是否有 pending 状态的条目。
如果有 ≥ 3 条,主动告知用户:"当前有 N 条待处理的学习条目,要回顾一下吗?"
隐私与安全
- 禁止记录:密钥、Token、私钥、环境变量值
- 优先使用摘要:用省略版本或脱敏摘要,不用原始命令输出或完整日志
- 用户明确要求时才可以记录详细配置或源码
.learnings/默认不提交到 Git(已在 WorkBuddy 的.gitignore建议中)
与原技能的差异
| 项目 | 原版(OpenClaw) | 本适配版(WorkBuddy) |
|---|---|---|
| 目标平台 | OpenClaw | WorkBuddy |
| 记忆集成 | ~/.openclaw/workspace/ |
~/.workbuddy/MEMORY.md、.workbuddy/memory/ |
| Windows 兼容 | 部分(仅 bash) | 完整(提供 PowerShell 命令) |
| 记录格式 | 仅完整格式 | 完整格式 + 快速格式 |
| 自动触发 | 需配置 hook | 任务结束后自动评估(无需 hook) |
| 跨会话 | OpenClaw sessions 工具 | conversation_search + 记忆文件 |
| Skill 衔接 | 手动萃取 | 自动建议 + SkillManage |