越用越灵

SKILLAI 工具
AI 工具 未标注权限 许可证不明确
安装这个技能

让 AI 越用越聪明——你正常干活,它静默捕捉命令失败、你的纠正、API 异常等微观经验,自动沉淀为跨会话永久记忆,并提取成可复用的 Skill。零配置、不打断、Hook 驱动,每条学习仅几十 token

一句话选型结论

按资料字段整理

越用越灵是AI 工具类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类AI 工具 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_09df4766/self-loop-optimizer
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

AI 工具
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_09df4766仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量63.9 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
组合多个 AI 能力

把写作、检索、总结串成一条流程。

搭工作流

把固定流程做成可重复调用的步骤。

做提示词与评测

整理提示词并对比输出效果。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在AI 工具场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
越用越灵当前 未标注权限 未标注 未标注 未标注 有
执行计划 只读 GitHub 仓库 151.5 万 Codex、Claude、Cursor 有
Playwright MCP 测试 浏览器控制 ClawHub 市场 136.5 万 OpenClaw 有
完成前的验证 未标注权限 GitHub 仓库 131.9 万 Codex、Claude、Cursor 有
子 Agent 驱动开发 只读 GitHub 仓库 131.2 万 Codex、Claude、Cursor 有
前端设计 执行命令 GitHub 仓库 125.6 万 Codex、Claude、Cursor 有

SKILL.md 全文

63.9 KB
模型实际读到的说明书原文,来自技能仓库

越用越灵

本技能优势维度

维度 本技能优势
Token消耗 极低(每条 50–150 token)
可用性 Hook驱动,几乎不会失败
检测能力 6类自动触发器 + Hook脚本
跨任务学习 Promotion机制 → 永久文件,跨会话累积
改进粒度 微观(单条经验/错误)
跨会话通信 支持 OpenClaw sessions_list / send / spawn
技能提取 内置 Skill Extraction 全自动工作流
配置灵活性 gitignore可选 + Hook独立开关

核心理念

从「重型5阶段一次性流水线」进化为「轻量Hook驱动的持续学习引擎」:

  • 不替代你干活,而是在你干活的每一刻静默捕捉值得记住的经验
  • 每条学习仅几十token,积累到阈值才触发轻量的Promotion/Extraction
  • 几乎零失败:无长链路、无强制阶段、无阻塞等待,纯Hook事件驱动
  • 跨会话增长:Promotion将经验写入永久文件,下次会话自动受益

数据安全与隐私(强制约束)

本技能在自动捕获学习记录时,严禁记录任何敏感信息。以下内容绝对不能写入任何 learnings 或 promotion 文件:

🚫 绝对禁止记录

  • API 密钥 / Token / Access Key / Secret Key
  • 密码 / Passphrase / 认证凭据
  • SSH 私钥 / 证书 / 签名密钥
  • 数据库连接串(含密码字段)
  • 完整源代码文件内容(仅记录文件名+行号+错误模式)
  • 用户个人身份信息(姓名/手机/邮箱/身份证号)
  • 内网 IP/域名等基础设施敏感信息

✅ 脱敏记录规则

  • 错误模式中如含敏感数据 → 仅记录错误类型,替换参数为占位符 <REDACTED>
  • 命令示例中如含 Token → 替换为 <TOKEN> 或 ****
  • 文件路径脱敏:仅保留相对路径,去除用户目录前缀
  • 原则:记录"怎么错的、怎么修的",不记录"谁、在哪、用什么密钥"

🔒 跨会话推送约束

  • 推送前检查每条 learning 是否含以上敏感类型
  • 仅推送通用经验/工具类学习,明确拒绝推送含项目具体配置/路径的学习
  • 隐私类学习(user_correction 中的偏好/习惯)仅存储在本地 learnings/,不广播

📋 安全自检

每次 Promotion/Extraction 前执行:

1. 扫描候选 learnings → 匹配敏感信息模式(key/token/secret/password/private)
2. 命中 → 自动脱敏或跳过该条,记录安全日志
3. 通过 → 继续正常流程

🔐 最小权限原则

本技能遵循最小权限原则——仅获取完成任务所需的最低权限:

权限类型 是否获取 用途 安全边界
读取 SKILL.md ✅ 读取自身指令 只读,不修改
读取 config.yaml ✅ 读取用户配置 只读,不修改
写入 outputs/ ✅ 写入 learnings/Promotion/Extraction 记录 仅操作 outputs/ 目录
写入 ~/.workbuddy/ ✅ 跨项目经验 (MEMORY.md) 和 Skill Extraction 安装 仅操作 skills/ 和 MEMORY.md
写入 hooks/ ⚠️ 仅自修 自修复流程中修正 Hook 脚本 仅修改已存在的 Hook 文件
写入 tests/ ⚠️ 仅自修 自修复流程中更新回归测试 仅修改已存在的测试文件
读取系统文件 ❌ 不获取 — 不访问 /etc/ ~/.ssh/ 等系统敏感路径
读取网络 ❌ 不获取 — 不执行网络请求(纯本地技能)
执行系统命令 ❌ 不获取 — 不执行 rm/del/dd 等危险操作
读取其他技能目录 ❌ 不获取 — 不跨目录读取其他技能文件

原则:本技能仅写 outputs/、~/.workbuddy/MEMORY.md、~/.workbuddy/skills/ 三个目录,其余文件系统访问均为只读。如需额外权限(如写入其他目录),需用户明确授权。


快速上手

方式一:零配置模式(推荐新手)

无需任何配置文件,开箱即用:

# 仅需创建学习记录目录
mkdir -p outputs/learnings/

技能启动后自动使用内置默认值运行:
- 所有6类Hook 全部启用,语义去重、价值评分、自动归档 全部开启
- Promotion 阈值 = 3 次;Extraction 阈值 = 5 次,自动安装
- gitignore = hybrid;存储后端 = outputs;并发模式 = 安全时间戳文件
- 详细默认值见「配置系统 → 零配置默认值」章节

无需 config.yaml,缺失时自动使用以上硬编码默认值。适合快速试用和单项目场景。

方式二:自定义配置模式

# 从模板创建配置文件
cp config.yaml.example config.yaml
# 按需修改 hooks.enabled / promotion.threshold 等

使用 config.yaml 进行精细化控制(Hook 独立开关、阈值调整、gitignore 策略选择)。

首次运行自检

技能加载时自动执行:
1. 检查 outputs/learnings/ 是否存在 → 不存在则自动创建
2. 检查 config.yaml 是否存在 → 缺失则使用内置默认值
3. 扫描 hooks/ 目录 → 缺失 Hook 文件则降级为内置简化规则
4. 输出就绪状态:
✅ 越用越灵 | 6/6 Hooks | 语义去重:on | 并发:安全 | 归档:auto | 共存:exclusive | 零配置 ▸ 你现在可以直接干活了。我会静默捕捉经验,任务结束时汇报成果。

验证安装

触发任意一个Hook测试:

# 故意输错命令触发 command_failure Hook
nonexistent-command
→ 自动捕获为 learnings/YYYY-MM-DD/ 目录下的一条独立记录

新手三分钟(读完就能开始用)

加载技能后,你什么都不用做——技能已自动运行。以下是你的第一条行动路线:

▸ 加载技能后的 0 秒  →  6类自动触发器已静默运行
▸ 输入第一条指令后  →  Hook自动捕获经验
▸ 完成任务后        →  自动输出一行摘要,告诉你今天学到了什么

第一天:只需确认技能在工作

# 1. 故意输错一个命令,验证 Hook 触发
cd /nonexistent-dir

# 2. 查看看一日志(看有没有自动记下来)
@self-loop-optimizer status

# 3. 创建一个真实任务,正常干活即可

技能会自动捕获失败的命令、你的纠正、API 异常。不需要手动开启任何东西。

第一周:让技能帮你沉淀经验

时机 你做的 技能自动做的
第一天 正常干活 捕获 3-5 条 learnings
第三天 继续干活 同类经验累积到 3 次 → Promotion 到 MEMORY.md
第五天 查看一次状态 可能已提取出 1 个 Skill
第七天 回顾本周学到了什么 完整的 Promotion/Extraction 历史

什么时候需要配置?

只有在你需要以下场景时才需要碰 config.yaml:

□ 与 self-improvement 并存       → 改 coexistence.mode
□ 不想让某些经验自动晋升          → 调高 promotion.threshold
□ 公司团队共享配置                → 改 gitignore.mode: team-shared
□ 希望记录写得更详细              → 改 learning_format.mode: enhanced

99% 的情况下,零配置就够了。

速查路线图

我想... 怎么做 难度
看看技能有没有在工作 @self-loop-optimizer status ⭐
查看今天学到了什么 cat outputs/learnings/$(date +%Y-%m-%d).md ⭐
让一个经验永久记住 什么都不用做,累积3次自动Promotion ⭐
禁止记录某类错误 在 config.yaml 中禁用对应 Hook ⭐⭐
自动提取重复模式为Skill 什么都不用做,累积5次自动Extraction ⭐
把我的技巧分享给团队 改 gitignore.mode: team-shared,提交 git ⭐⭐
和 self-improvement 一起用 改 coexistence.mode: division ⭐⭐
把经验同步到其他会话 什么都不用做,OpenClaw 自动广播 ⭐
跨项目共享个人经验 什么都不用做,Promotion到 ~/.workbuddy/MEMORY.md ⭐
配置精细控制每个Hook 编辑 config.yaml 中的 hooks.enabled.* ⭐⭐⭐
深度优化(归档/并发/语义去重) 默认已全部启用,无需配置 ⭐

---

## 工作模式

### 模式 A:Hook自动检测(默认,推荐)

技能激活后全程静默运行,6类触发器自动监测。检测到事件→立即捕获为微学习记录→主任务完成后批量执行Promotion/Extraction。**不打断、不询问、不阻塞主任务**。

### 模式 B:全流程优化(显式触发)

当用户使用 `@self-loop-optimizer full` 或明确要求完整流水线时,执行原5阶段全流程(见附录A)。用于需要端到端质量保证的复杂交付物。

---

## 6类内置检测触发器

### 1. 🔴 命令执行失败 `command_failure`

**触发条件**:
- Bash/PowerShell 返回非零退出码
- 输出包含 `error:` / `failed:` / `fatal:` / `permission denied` 等
- 编译/构建/测试命令失败

**捕获内容**:失败命令片段、错误摘要(1行)、根本原因(1行)、修复方法(1行)

**Hook脚本**:`hooks/on_command_failure.md` — 定义详细的捕获规则和去重策略

**Token预算**:~50-80 token/条

---

### 2. 🟡 用户纠正 `user_correction`

**触发条件**:
- 用户消息包含纠正意图关键词:`不对`/`错了`/`应该是`/`改一下`/`重来`/`不是这样`/`修正`
- 用户明确否定了前一步操作结果

**捕获内容**:被纠正的操作(1行)、错误点(1行)、正确做法(1行)

**Hook脚本**:`hooks/on_user_correction.md`

**Token预算**:~40-60 token/条

---

### 3. 🟠 能力缺失 `capability_gap`

**触发条件**:
- Agent输出包含 `无法`/`不支持`/`没有权限`/`做不到`/`超出能力`/`I don't have access`
- Agent发现缺少必要的工具/API/权限来完成用户请求

**捕获内容**:缺失能力描述(1行)、当前替代方案(1行)、建议增强方向(1行)

**Hook脚本**:`hooks/on_capability_gap.md`

**Token预算**:~40-60 token/条

---

### 4. 🔵 API/外部服务异常 `api_error`

**触发条件**:
- HTTP 4xx/5xx 响应
- 连接超时/拒绝连接/DNS解析失败
- MCP工具/Connector返回错误
- 外部服务不可用

**捕获内容**:服务名称(1行)、错误码/类型(1行)、降级/重试方案(1行)

**Hook脚本**:`hooks/on_api_error.md`

**Token预算**:~50-70 token/条

---

### 5. 🟣 知识过时 `knowledge_outdated`

**触发条件**:
- 发现文档/API/包版本与当前环境不匹配
- 命令/参数在新版本中已废弃或变更
- 搜索结果与本地预期不一致

**捕获内容**:过时信息(1行)、最新信息(1行)、信息来源(1行)

**Hook脚本**:`hooks/on_knowledge_outdated.md`

**Token预算**:~50-80 token/条

---

### 6. 🟢 更优方案发现 `better_approach`

**触发条件**:
- 执行过程中发现或联想到明显更优的实现方式
- 用户建议了比当前方案更好的做法
- 工具链/库有更好的替代品

**捕获内容**:当前方案不足(1行)、更优方案(1行)、适用条件(1行)

**Hook脚本**:`hooks/on_better_approach.md`

**Token预算**:~50-70 token/条

---

## Hook系统架构

触发事件 → 匹配Hook条件 → 执行Hook指令 → 生成微学习记录 → 写入 learnings/YYYY-MM-DD/HH-MM-SS-uuid.md(任务结束时合并为 YYYY-MM-DD.md)


### Hook脚本规范

每个 `hooks/on_*.md` 文件定义:
1. **触发判定规则**:哪些输出模式匹配此Hook
2. **信息提取模板**:从上下文中提取哪些字段
3. **去重策略**:同一会话中同类错误仅记录首次
4. **抑制规则**:已知/预期的错误可配置跳过

### Hook启用控制

通过 `config.yaml` 中 `hooks.enabled.<name>: true/false` 独立控制每个Hook的启用状态。

### Hook主动检查机制(关键:确保"几乎不会失败")

Hook并非被动等待的守护进程,而是通过 **"每步后自检"** 机制保证触发率:

1. **每次工具调用完成后**(Bash/PowerShell/Write/Read等),自动扫描返回结果检查是否命中6类触发器
2. **每次用户消息接收后**,自动扫描用户文本是否命中纠正/建议类触发器
3. **每个子任务完成后**,主动自评:是否发现能力缺失?是否有更优方案?
4. **检查耗时**:每次检查为纯文本模式匹配,消耗 < 10 token
5. **未命中则静默跳过**,命中则执行对应Hook指令生成学习记录

检查失败不会阻塞主流程——最坏情况只是漏记一条学习,不会导致任务中断。

### Hook文件缺失容错

启动时扫描 hooks/ 目录 → 比对 config.yaml 启用列表
├── Hook文件存在 → 正常加载
├── Hook文件缺失但已启用 → 降级为SKILL.md内置简化规则,记录警告
└── Hook已禁用 → 跳过


---

## 微学习捕获格式

所有学习记录写入 `outputs/learnings/YYYY-MM-DD/` 子目录(每条独立时间戳文件),任务结束时自动合并为 `outputs/learnings/YYYY-MM-DD.md` 供人类阅读。每条占用约 50~150 token:

### 基础格式(极简,默认)

```markdown
## 2026-07-27

### [14:32:05] command_failure · pip install
**现象**:`pip install` 在 venv 中报 `externally-managed-environment`
**根因**:Python 3.12+ PEP 668 限制全局 pip
**修复**:使用 `--break-system-packages` 或先激活 venv
**标签**:#python #pip #venv

输入输出样例

输入(用户做了什么 → 触发 Hook → 捕获为 learning):

输入场景 触发 Hook 输出 learning 摘要
用户输入 pip install foo 报错 command_failure [command_failure] pip install → externally-managed-environment
用户手动输入 --break-system-packages 修复 user_correction [user_correction] 用户纠正:pip install 需加 --break-system-packages
用户问"能不能帮我把所有 .jpg 转 .png" capability_gap [capability_gap] 批量图片格式转换需求,当前工具链不支持
API 返回 429 Too Many Requests api_error [api_error] API rate limit hit,等待 60s 后重试
用户说"现在都用 pnpm 了" knowledge_outdated [knowledge_outdated] npm → pnpm 迁移趋势
用户用 npx 替代了全局安装 better_approach [better_approach] npx > npm install -g,避免全局污染

输出格式(合并后的 YYYY-MM-DD.md 人类可读版):

## 2026-07-28

### [10:32:05] command_failure · pip install
**现象**:pip install numpy 报 externally-managed-environment
**根因**:Python 3.12+ PEP 668 限制全局 pip
**修复**:使用 --break-system-packages 或先激活 venv
**标签**:#python #pip #venv

### [14:15:22] api_error · rate_limit
**现象**:GitHub API 返回 429 状态码
**根因**:未认证请求达到匿名限速
**修复**:配置 GITHUB_TOKEN 环境变量后重试
**标签**:#api #github #rate-limit

当日志需要更好的可读性与筛选能力时,每条增加元数据行:

### [14:32:05] command_failure · pip install
<!-- META: P=1 S=open A=python-env RC=1 -->
**现象**:`pip install` 在 venv 中报 `externally-managed-environment`
**根因**:Python 3.12+ PEP 668 限制全局 pip
**修复**:使用 `--break-system-packages` 或先激活 venv
**标签**:#python #pip #venv
**关联**:[See Also: 2026-07-25 · command_failure · npm EBADENGINE]

元数据字段说明

字段 缩写 可选值 说明
Priority P 0/1/2 P0=阻塞级, P1=重要, P2=优化
Status S open/promoted/extracted/resolved 当前学习状态
Area A 自由文本, 领域标签 如 python-env windows-path
Recurrence-Count RC 数字 同类问题跨会话累计出现次数

记录原则

  • 极简:每条3-5行,绝不超过8行(含元数据)
  • 结构化:统一 现象→根因→修复→标签 模板
  • 可选增强:元数据行 <!-- META: --> 为 HTML 注释,不影响人读,便于程序解析
  • 可检索:标签使用 #keyword 格式,便于后续聚合
  • 去重:同会话同类错误仅记录首次出现
  • 关联:通过 [See Also: YYYY-MM-DD · category · keyword] 建立跨日记链接

语义去重(跨会话)

问题

基础去重仅在同会话内生效。同一个 "pip install PEP 668 错误" 在不同会话中被反复记录,造成存储膨胀和 Promotion 信号稀释。

语义指纹去重

每条 learning 记录时生成语义指纹:

指纹 = hash(标签集合 归一化 + 现象首句 去除参数)

示例:

# 会话A
现象:pip install numpy 报 externally-managed-environment
标签:#python #pip #venv
指纹:hash("python,pip,venv|pip install externally-managed-environment")

# 会话B(参数不同,但语义相同)
现象:pip install pandas 报 externally-managed-environment
标签:#python #pip #pandas
指纹:hash("python,pip,pandas|pip install externally-managed-environment")

# 指纹相似度 = 0.92 > semantic_threshold(0.85) → 识别为重复
# → 更新会话A记录的 Recurrence-Count,不新增记录

配置

dedup:
  semantic: true                 # 启用语义去重
  semantic_threshold: 0.85       # 相似度阈值
  cross_session_window: 10       # 检查最近N个会话日期的learnings

去重决策矩阵

场景 结果
同一会话,完全相同错误 不记录(基础去重)
不同会话,完全相同的标签+现象 不记录,RC++
不同会话,标签80%重叠+现象相似度>0.85 不记录,RC++,合并标签
不同会话,标签/现象差异大 新增记录

并发安全

问题

多 Agent 同时运行(OpenClaw spawn 的 Extraction Agent + 主会话 Agent)可能同时追加同一 YYYY-MM-DD.md,导致写入交错损坏。

解决方案:时间戳独立文件 + 定时合并

放弃直接追加 YYYY-MM-DD.md,改为每条 learning 写入独立文件:

outputs/learnings/2026-07-27/
├── 14-32-05-a3f2_command_failure_pip.md
├── 14-45-18-b7c1_user_correction.md
├── 15-10-22-d4e8_api_error.md
└── ...

每日归档任务(主任务结束时执行):

1. 扫描 outputs/learnings/YYYY-MM-DD/ 下所有 .md 文件
2. 按时间排序 → 合并为 outputs/learnings/YYYY-MM-DD.md(人类可读格式)
3. 删除独立文件目录
4. 此操作为单 Agent 执行 → 无并发风险

配置

concurrency:
  mode: timestamp_files           # timestamp_files | direct_append
  merge_on_task_end: true         # 主任务结束时自动合并独立文件

优点:
- 彻底消除并发写冲突(每个文件由单个 Agent 独占写入)
- 独立文件可作为原子操作(write + close = 完成)
- 合并后人类可读性不变(仍然聚合到 YYYY-MM-DD.md)


价值评分模型

问题

当前 "高价值单条即触发 Promotion" 依赖关键词判断,无量化标准。容易误将低信息量记录晋升,或遗漏重要的中频模式。

Impact Score(影响分)

每条 learning 在捕获时自动计算 impact_score(0-10):

impact_score = scope × 0.4 + recurrence × 0.3 + universality × 0.3
维度 权重 评分标准
scope(影响面) 0.4 单文件=2, 单项目=4, 多项目=6, 全局=9
recurrence(复发概率) 0.3 偶发=1, 已知常见=4, 高频=8, 每次都会=10
universality(通用性) 0.3 仅此工具=1, 同类工具=4, 跨语言=7, 通用原则=10

Promotion 触发规则

条件 行为
impact_score >= promote_threshold(默认7.0) 单条即触发 Promotion
3 <= impact_score < 7.0 需累积到 promotion.threshold 次才触发
impact_score < 3.0 仅记录,不自动 Promotion(需手动标记高价值)

配置

impact_score:
  enabled: true
  promote_threshold: 7.0
  weights:
    scope: 0.4
    recurrence: 0.3
    universality: 0.3

存储后端可切换

问题

与 self-improvement 并存的根本矛盾:两套存储后端(outputs/learnings/ vs .learnings/)即使分工也会各写各的,无法从根源消除双重记录。

解决方案:统一存储后端

backend:
  type: outputs                  # outputs | dotlearnings
  auto_migrate: false            # 是否自动迁移现有数据

模式 A:outputs(默认,自闭环原生格式)

使用 outputs/learnings/YYYY-MM-DD/ 子目录存储(任务结束时合并为 outputs/learnings/YYYY-MM-DD.md),格式见"微学习捕获格式"章节。

模式 B:dotlearnings(与 self-improvement 共享)

使用 .learnings/ 作为存储后端,记录格式兼容 self-improvement 的 LEARNINGS.md + ERRORS.md + FEATURE_REQUESTS.md:

.learnings/
├── LEARNINGS.md              # 自闭环写入(兼容 self-improvement 格式)
├── ERRORS.md                 # command_failure + api_error → 写入此处
└── FEATURE_REQUESTS.md       # capability_gap → 写入此处

格式兼容映射:

自闭环 learning 类型 .learnings/ 目标文件 映射方式
command_failure ERRORS.md 追加为 ERR-{id} 条目
api_error ERRORS.md 追加为 ERR-{id} 条目
capability_gap FEATURE_REQUESTS.md 追加为 FEAT-{id} 条目
user_correction LEARNINGS.md 追加为 LRN-{id} 条目
knowledge_outdated LEARNINGS.md 追加为 LRN-{id} 条目
better_approach LEARNINGS.md 追加为 LRN-{id} 条目

启用后效果:
- 与 self-improvement 共享同一份数据源,彻底消除双重记录
- 自闭环额外提供自动 Promotion / Extraction / 价值评分 / 归档
- self-improvement 仍可正常读取 .learnings/ 进行手动 Review / Promotion

迁移命令

# 从 outputs 迁移到 dotlearnings
@self-loop-optimizer migrate --from outputs --to dotlearnings

# 预览迁移(不实际执行)
@self-loop-optimizer migrate --from outputs --to dotlearnings --dry-run

⚠️ 迁移前置条件
- backend.type: dotlearnings 迁移前,必须先安装并初始化 self-improvement(生成 .learnings/ 根目录),否则目标目录不存在、迁移失败。
- 迁移为单向追加:仅把 outputs/learnings/ 的活跃记录写入 .learnings/ 对应文件,不删除源数据;如需回滚,直接把 backend.type 改回 outputs 即可。
- 建议先跑 --dry-run 预览映射结果,确认 command_failure/api_error → ERRORS.md、capability_gap → FEATURE_REQUESTS.md、其余 → LEARNINGS.md 的归类符合预期,再正式迁移。
- 迁移不改变 learnings 内容,仅改变存储后端;Promotion/Extraction 行为不受迁移影响。


Promotion机制

触发条件

满足以下任一条件即触发Promotion:

  1. 频次触发:同一标签的learnings累积到N次(默认3次,可在config.yaml配置)
  2. 价值触发:单条learning被判定为"高价值"(通用性强、影响面广、安全相关)

提升目标文件与映射规则

目标文件 适用内容 写入方式
CLAUDE.md 本项目工作流/约定/踩坑/技术栈偏好 追加到对应章节
AGENTS.md 跨Agent协调规则/通信约定 追加到对应章节
TOOLS.md 工具使用技巧/参数最佳实践/版本兼容 追加到对应章节
SOUL.md Agent行为偏好/决策原则/边界 追加到对应章节
~/.workbuddy/MEMORY.md 跨项目通用偏好/用户习惯 合并更新

Promotion执行流程

1. 扫描 learnings/ 目录 → 按标签聚合
2. 识别达到阈值的标签组 → 生成候选
3. 自动判断目标文件(基于标签+内容语义) → 分配目标
4. 去重检查(目标文件中是否已有相同/相似内容) → 避免冗余
5. 追加写入目标文件(保留原有结构) → 记录promotion日志
6. 标记源learnings为 `[promoted → {target_file}]` → 更新Status为 promoted

Promotion格式示例

写入 CLAUDE.md:

## 本项目踩坑记录 (auto-promoted on 2026-07-27)
- Windows路径含空格时使用短路径名(`PROGRA~1`)代替引号包裹,避免嵌套引号转义问题
- `pip install` 在 Python 3.12+ 需加 `--break-system-packages` 或确保在 venv 中

Skill Extraction 工作流

触发条件

当同一领域的learnings满足以下条件时自动触发Extraction:

  1. 同类标签learnings >= N条(默认5条,可在config.yaml配置)
  2. 内容构成可独立执行的完整工作流(有明确的输入→步骤→输出)
  3. 不存在同名Skill

Extraction全流程

Step 1 — 聚合 (Aggregate)
  合并同标签/相关标签的所有learnings,提取共性模式

Step 2 — 模式识别 (Pattern Recognition)
  识别重复出现的步骤序列、决策树、输入输出关系
  判断是否满足&quot;完整工作流&quot;标准:
    ✅ 有明确的触发条件/使用场景
    ✅ 有清晰的操作步骤(&gt;=3步)
    ✅ 有可验证的输出/结果
    ❌ 仅零散tips → 跳过,继续等待累积

Step 3 — 模板填充 (Template Fill)
  套用标准Skill模板生成 SKILL.md:
  - name: 自动推导(基于标签+内容)
  - description: 从learnings中提炼
  - keywords: 从标签中提取
  - 执行步骤: 从learnings模式中重构

Step 4 — 质量自检 (Quality Check)
  确认:
  - description明确,触发词清晰
  - 步骤完整可执行
  - 无硬编码敏感信息
  - 无与现有Skill的功能重叠

Step 5 — 安装 (Install)
  写入 ~/.workbuddy/skills/{skill-name}/SKILL.md
  使用 `Skill` 工具(command=&quot;skill-creator&quot;)或直接 Write 创建 SKILL.md
  如 config.yaml 中 extraction.auto_install=false 则仅生成预览

Step 6 — 溯源 (Trace)
  在源learnings中添加:
  `[extracted → skill:{skill-name}]`

Extraction日志

所有Extraction操作记录到 outputs/extractions/extraction-log.md:

## 2026-07-27 15:00
- **Skill**: python-venv-troubleshooting
- **来源learnings**: 5条 (#python #pip #venv)
- **安装路径**: ~/.workbuddy/skills/python-venv-troubleshooting/
- **状态**: ✅ installed

归档与保留策略

问题

当前 outputs/learnings/ 只增不删。长期运行会导致:
- 日积月累数百条记录,Promotion 扫描越来越慢
- 已 promoted/extracted 的旧记录与活跃记录混杂,干扰判断
- 违反 Token 预算设计目标(旧数据持续占用扫描额度)

归档流程

每条 learning 的生命周期:

捕获 → [open] → 达到阈值 → [promoted] + [extracted]
                          ↓
                    保留 retention.days 天后(默认30天)
                          ↓
                    移入 archive/YYYY-MM/ → 原位置替换为归档引用
                          ↓
                    超过 archive.max_age 天后(默认365天)→ 删除

自动归档规则

  1. 触发时机:每次 Promotion/Extraction 完成后,扫描 learnings/ 目录
  2. 归档条件:Status 为 promoted 或 extracted 或 resolved,且最后修改时间 > retention.days
  3. 归档目标:archive/YYYY-MM/ (按月分目录,便于查找)
  4. 归档后:原独立时间戳文件替换为归档引用(由合并任务处理时自动完成):
    markdown &lt;!-- ARCHIVED: [14:32:05] command_failure · pip install → archive/2026-07/pip-externally-managed.md --&gt;
  5. 清理:超过 archive.max_age 的归档条目自动删除
  6. 执行时序:主任务结束时的操作顺序固定为 合并独立文件 → 归档旧记录,确保归档操作面向已合并的 flat YYYY-MM-DD.md,而非原始子目录

手动归档

用户可随时触发的快速归档:

# 立即归档所有已 promoted/extracted/resolved 的记录
@self-loop-optimizer archive now

# 查看归档统计
@self-loop-optimizer archive status

配置

retention:
  days: 30                       # promoted/extracted/resolved 记录保留天数
  max_in_active: 200             # learnings/ 活跃记录上限,超出触发强制归档

archive:
  auto: true                     # 是否启用自动归档
  max_age: 365                   # 归档最大保存天数,超期删除
  compress: false                # 是否压缩归档文件(节省磁盘)

初始化归档目录

技能启动时自动检查并创建:

outputs/
├── learnings/          # 活跃记录(&lt;30天 &amp; status=open)
├── archive/            # 历史归档
│   ├── 2026-06/        # 按月分目录
│   ├── 2026-07/
│   └── ...
├── promotions/
└── extractions/

通过 OpenClaw 协议实现跨会话学习同步和Agent协作。

支持的操作

sessions_list — 列出活跃会话

用途: 查询当前所有活跃会话及其状态
返回: 会话ID、工作目录、最近活跃时间、当前任务
场景: Promotion后广播更新给所有相关会话

send — 向指定会话发送消息

用途: 向指定会话ID发送学习/通知/指令
内容: learning记录、promotion结果、skill更新通知
场景: 
  - 会话A捕获到通用学习 → 广播给会话B/C
  - 主会话安装新Skill → 通知子会话加载

spawn — 在指定会话中派生Agent

用途: 在目标会话中创建新Agent执行独立任务
参数: 会话ID、Agent类型、任务描述
场景:
  - 后台会话并行执行Skill Extraction
  - 跨会话分工协作大型任务

通信协议

[会话A] 捕获learning
    ↓
[会话A] 评估通用性 → 判定需广播
    ↓
[会话A] sessions_list → 获取活跃会话列表
    ↓
[会话A] send(session_B, learning_content) → 推送到会话B
    ↓
[会话B] 接收 → 写入本地 learnings/ → 标记 [synced-from:session_A]

具体对话示例(会话A捕获到一条通用踩坑,广播给会话B):

# 会话A:捕获后判定为通用经验,主动广播
[会话A] send(
    target=&quot;session_B&quot;,
    content=&quot;[command_failure] Windows 上 `pip install` 需 --break-system-packages 或在 venv 中;否则报 externally-managed-environment&quot;
)
→ 返回: { &quot;status&quot;: &quot;delivered&quot;, &quot;session&quot;: &quot;session_B&quot; }

# 会话B:接收后写入本地 learnings/,并标记来源
[会话B] 写入 outputs/learnings/2026-07-28/09-15-22-c1d2_command_failure_pip.md
[会话B] 追加标记:&lt;!-- synced-from:session_A --&gt;

> 注意:以上为 OpenClaw 协议语义示意。实际调用由运行环境提供 sessions_list/send/spawn 原语;纯本地单 Agent 场景不触发广播,经验仅落本地。

使用约束

  • 去重优先:发送前检查目标会话是否已有相同learning
  • 静默推送:默认不打断目标会话当前任务
  • 安全边界:仅推送通用经验/工具类学习,不推送用户隐私内容

多平台兼容性

本技能的核心资产(learnings/ + config.yaml + SKILL.md)均为纯 Markdown/YAML 文本文件,天然跨平台兼容。除 OpenClaw 原生协议外,可在以下环境中直接使用:

平台/Agent 兼容方式 说明
OpenClaw 原生协议 sessions_list / send / spawn 完整支持
Claude Code 文件共享 learnings/ + promoted 文件直接加载
GitHub Copilot .github/copilot-instructions.md Promotion 目标之一,自动注入上下文
Codex CLI CLAUDE.md / AGENTS.md 标准项目指令文件,自然识别
独立 Agent 标准化 Markdown 任何支持 MD 文件读取的 Agent 均可消费

跨平台共享策略:

同一项目 → git提交 outputs/learnings/ → 所有Agent自动消费
Promotion → 写入 CLI/Agent 标准指令文件 → 多平台上下文注入
跨项目   → ~/.workbuddy/MEMORY.md → 仅WorkBuddy可见

配置系统

配置文件:config.yaml(位于Skill目录下,可选——缺失时使用零配置默认值)

零配置默认值(config.yaml 缺失时生效)

配置项 默认值 说明
hooks.enabled.* 全部 true 6类Hook全部启用
promotion.threshold 3 同类学习累积3次触发晋升
promotion.high_value_auto true 高价值学习单条即触发
extraction.threshold 5 同类学习累积5次触发提取
extraction.auto_install true 自动安装提取的Skill
gitignore.mode hybrid 核心共享,个人本地覆盖
learning_format.mode basic 极简记录格式
security.* 全部 true 自动脱敏+审计+广播前检查
token_budget.max_per_learning 150 单条最大token
token_budget.max_per_session 3000 单会话token总预算
dedup.semantic true 启用跨会话语义去重
dedup.semantic_threshold 0.85 语义相似度阈值
impact_score.promote_threshold 7.0 单条触发Promotion的最低分
backend.type outputs 默认存储后端
coexistence.mode exclusive 检测到.learnings/自动退出
retention.days 30 已解决记录保留天数
archive.auto true 启用自动归档
archive.max_age 365 归档最大保存天数
concurrency.mode timestamp_files 独立时间戳文件,防并发冲突

Gitignore策略

gitignore:
  mode: hybrid  # local | team-shared | hybrid

  # local:      整个 config.yaml 加入 .gitignore,仅本地生效
  # team-shared: 整个 config.yaml 提交到Git,团队共享同一配置
  # hybrid:     核心配置(triggers/thresholds)共享,敏感配置(hooks启用/个人路径)本地覆盖
  #             hybrid模式下使用 config.local.yaml 覆盖团队配置

Hook独立开关

hooks:
  enabled:
    command_failure: true      # 命令执行失败检测
    user_correction: true      # 用户纠正检测
    capability_gap: true       # 能力缺失检测
    api_error: true            # API/服务异常检测
    knowledge_outdated: true   # 知识过时检测
    better_approach: true      # 更优方案发现检测

Promotion/Extraction阈值

paths:
  learnings_dir: &quot;outputs/learnings&quot;      # 学习记录存储路径
  promotion_log: &quot;outputs/promotions/promotion-log.md&quot;
  extraction_log: &quot;outputs/extractions/extraction-log.md&quot;

promotion:
  threshold: 3               # 同类learnings累积N次触发promotion
  high_value_auto: true      # 高价值learnings单条即触发

extraction:
  threshold: 5               # 同类learnings累积N次触发extraction
  auto_install: true         # 自动安装提取的Skill(设为false则仅生成预览)
  require_confirmation: false # 安装前是否需要用户确认

运行时行为

核心原则

  1. 静默运行:默认不打断主任务,检测→捕获→写入全程无感知
  2. 零交互:全程不使用 AskUserQuestion,所有决策自主完成
  3. 批量处理:Promotion/Extraction在主任务完成后批量执行,不阻塞
  4. 增量更新:所有文件操作为追加(append)/合并(merge),不覆盖已有内容
  5. 去重保护:写入前检查目标文件,同内容不重复记录

启动检查清单

  1. 欢迎语输出(首次加载):
    markdown 🚀 越用越灵 已激活 ▸ 你现在可以直接干活了,不必做任何配置 ▸ 我会静默捕捉命令失败、你的纠正、API异常等经验 ▸ 任务结束时汇报今日捕获/晋升/提取摘要 ▸ 需要查看状态或手动控制时,输入 @self-loop-optimizer status
  2. 读取 config.yaml → 确定启用的Hook列表和阈值
  3. 检查 outputs/learnings/ 目录是否存在 → 不存在则创建
  4. 扫描历史learnings → 识别待Promotion/Extraction的候选
  5. 激活启用的Hook → 进入检测模式
  6. 主任务完成后 → 执行批量Promotion + Extraction

进度可见(可选)

  • 每个Hook触发时 → TaskCreate 创建微任务追踪
  • Promotion完成时 → TaskUpdate 标记完成
  • Extraction完成时 → 输出简短摘要(1行)

与v1.x的兼容

  • 用户显式使用 @self-loop-optimizer full → 触发原5阶段完整流水线(见附录A)
  • 原有交付物格式和目录结构保留不变
  • v1.x的 outputs/ 目录结构向后兼容

状态摘要输出(可观测性)

主任务结束时自动输出一行状态摘要,让用户直观了解技能工作状态:

📊 今日捕获 12 条 · 晋升 3 条 · 提取 0 个 Skill | learnings活跃53条 | 归档0条

输出格式:📊 今日捕获 N 条 · 晋升 M 条 · 提取 K 个 Skill | learnings活跃 L 条 | 归档 A 条

手动查询状态

用户可随时查看详细统计:

@self-loop-optimizer status

返回完整状态面板:

## 📊 越用越灵 — 运行状态

### 今日活动
- 捕获: 12 条 learnings
- 会话数: 2 个活跃会话
- Token 消耗: 约 850 token(预算 3000)

### 学习分布
| 类型 | 今日 | 本周 | 总计 |
|------|:---:|:---:|:---:|
| command_failure | 5 | 12 | 47 |
| user_correction | 3 | 5 | 18 |
| capability_gap  | 1 | 2 | 9 |
| api_error        | 2 | 4 | 15 |
| knowledge_outdated | 0 | 1 | 6 |
| better_approach  | 1 | 3 | 11 |

### Promotion 历史
- 总计晋升: 24 条 → CLAUDE.md(8) AGENTS.md(3) TOOLS.md(6) SOUL.md(3) MEMORY.md(4)
- 最近晋升: 2026-07-27 15:30 — `pip install --break-system-packages` → MEMORY.md

### Extraction 历史
- 总计提取: 2 个 Skill(python-venv-troubleshooting, windows-path-quoting)
- 等待提取: 3 组(#git #npm #docker)

### 归档状态
- learnings/ 活跃: 53 条(上限 200)
- archive/ 总量: 18 条(最早 2026-06-15)
- 下次自动归档: 2026-08-27

状态诊断脚本

# 等效于 @self-loop-optimizer status 的命令行版本
cat &lt;&lt; &#x27;EOF&#x27; | python3
import os, glob, re
from datetime import datetime

learnings_dir = &quot;outputs/learnings&quot;
archive_dir = &quot;outputs/archive&quot;

# 统计 learnings(子目录模型:YYYY-MM-DD/HH-MM-SS-uuid.md)
today_dir = f&quot;{learnings_dir}/{datetime.now().strftime(&#x27;%Y-%m-%d&#x27;)}&quot;
today_count = len(glob.glob(f&quot;{today_dir}/*.md&quot;)) if os.path.isdir(today_dir) else 0

# 也统计已合并的 flat 文件(兼容旧数据)
merged_file = f&quot;{learnings_dir}/{datetime.now().strftime(&#x27;%Y-%m-%d&#x27;)}.md&quot;
if os.path.exists(merged_file):
    today_count += len([l for l in open(merged_file).readlines() if l.startswith(&quot;### [&quot;)])

# 总计:所有子目录的 .md 文件 + 顶层合并文件(排除特殊文件)
all_files = glob.glob(f&quot;{learnings_dir}/*/*.md&quot;) + glob.glob(f&quot;{learnings_dir}/*.md&quot;)
total = sum(1 for f in all_files if os.path.basename(f) not in [&quot;api-health.md&quot;, &quot;feature-requests.md&quot;])

print(f&quot;📊 今日捕获 {today_count} 条 · learnings活跃 {total} 条&quot;)
EOF

命令实现状态

命令 状态 说明
@self-loop-optimizer full ✅ 就绪 触发附录A的5阶段完整流水线
@self-loop-optimizer 自检 ✅ 就绪 5维自审(配置/引用/逻辑/路径/更新)
@self-loop-optimizer status ✅ 就绪 完整状态面板(学习分布/Promotion/Extraction/归档)
@self-loop-optimizer archive now 🔧 逻辑就绪 归档流程已定义,由主任务结束时的自动归档覆盖
@self-loop-optimizer archive status 🔧 逻辑就绪 统计信息包含在 status 命令输出中
@self-loop-optimizer migrate 🔧 逻辑就绪 迁移逻辑已定义,存储格式兼容映射表已完备

> 🔧 = 逻辑与文档就绪,行为由 SKILL.md 中的流程描述驱动。无需独立 scripts/ 目录——LLM Agent 根据文档描述即可执行。


调试与故障排查

常见问题速查

症状 可能原因 解决方案
Hook不触发 config.yaml 中该Hook被禁用 检查 hooks.enabled.&lt;name&gt;: true
Hook不触发 Hook文件缺失且无内置降级 恢复 hooks/on_*.md 或确认 config 中已启用
learnings不写入 outputs/learnings/ 目录不存在 手动 mkdir -p outputs/learnings/
learnings重复 去重逻辑未生效 检查 dedup.session_window 配置
Promotion不执行 阈值未达到(默认3次) 检查 promotion.threshold,或手动标记高价值
Extraction不触发 阈值未达到(默认5次)或不满足工作流标准 检查 extraction.threshold,确认learnings构成完整流程
config.yaml语法错误 YAML缩进/格式问题 用 YAML validator 检查,或删除 config 使用零配置模式
Token超预算 单日learning过多 调整 token_budget.max_per_session 或清理旧记录

故障恢复与重试策略

故障场景 自动行为 用户应对
outputs/learnings/ 目录不存在 自动创建(启动时检查) 无需操作
config.yaml 语法错误 自动降级到零配置默认值 日志提示"语法错误,使用零配置"
Hook 文件缺失 降级为内置简化规则 日志提示缺失的Hook文件名
write 并发冲突(多Agent同时写) 使用时间戳独立文件,写操作互不阻塞 无需操作,merge 任务会自动合并
Extract 安装失败 输出错误信息到 extraction-log.md,不阻塞任务 手动重试或检查 skills/ 目录权限
Promotion 目标文件不可写 跳过该条,记录失败日志 检查目标文件(CLAUDE.md等)权限
Token 超预算 当会话 learning 写入达到 max_per_session 时停止捕获 清除旧记录或调大预算
无效/恶意输入 去重+脱敏双保险,拒绝触发 日志提示"违反安全规则,已跳过"

所有故障都有明确的降级路径,不会让任务卡死。唯一需要人工干预的是 Token 超预算和权限问题。

诊断命令

# 检查学习记录数量
find outputs/learnings/ -name &quot;*.md&quot; | wc -l

# 查看今日记录(子目录模式:先看合并文件,再看独立文件)
MERGED=&quot;outputs/learnings/$(date +%Y-%m-%d).md&quot;
DIR=&quot;outputs/learnings/$(date +%Y-%m-%d)&quot;
if [ -f &quot;$MERGED&quot; ]; then cat &quot;$MERGED&quot;; elif [ -d &quot;$DIR&quot; ]; then ls &quot;$DIR/&quot; | while read f; do echo &quot;--- ${f} ---&quot;; cat &quot;$DIR/$f&quot;; done; else echo &quot;今日暂无记录&quot;; fi

# 统计各类型触发次数
grep -h &quot;command_failure\|user_correction\|capability_gap\|api_error\|knowledge_outdated\|better_approach&quot; outputs/learnings/*.md | sort | uniq -c | sort -rn

# 查看 Promotion 日志
cat outputs/promotions/promotion-log.md 2&gt;/dev/null || echo &quot;尚无 Promotion 记录&quot;

# 查看 Extraction 日志
cat outputs/extractions/extraction-log.md 2&gt;/dev/null || echo &quot;尚无 Extraction 记录&quot;

重置方法

如果技能行为异常,可安全重置而不影响已积累的经验:

# 仅重置配置(保留 learnings 历史)
rm config.yaml                         # 下次启动使用零配置默认值

# 完全重置(删除所有数据)
rm -rf outputs/learnings/ outputs/promotions/ outputs/extractions/

与 self-improvement 技能共存策略

风险确认

同时启用 self-improvement v3.0.24 与本技能会导致双重记录:同一个错误/纠正/异常会被分别写入 outputs/learnings/ 和 .learnings/ 两处,造成存储冗余、Promotion 冲突和 Token 浪费。

检测机制

本技能启动时自动检查项目根目录是否存在 .learnings/ 目录(self-improvement 的存储根):

启动检查:
  ├── .learnings/ 目录不存在 → 正常运行,无需处理
  ├── .learnings/ 目录存在 → 检测到 self-improvement 共存 → 根据共存模式决策
  └── 输出状态:例如 &quot;⚠️ 检测到 self-improvement 共存 | 模式:分工&quot;

共存模式(config.yaml coexistence.mode 配置)

模式 1:exclusive(互斥,推荐默认)

检测到 .learnings/ 时,本技能自动静默退出,将学习记录任务完全交给 self-improvement。最适合"已有 self-improvement 稳定运行,不想引入冲突"的场景。

coexistence:
  mode: exclusive
  # 行为:检测到 .learnings/ → 输出提示后静默退出
  # 适用:已深度使用 self-improvement,本技能仅作备份方案

模式 2:division(分工,推荐共存)

两个技能按 Hook 类型分工记录,各司其职,避免重叠:

Hook/事件类型 由谁记录 分工理由
command_failure self-improvement 通用事件,跨平台共享
api_error self-improvement 通用事件,跨平台共享
knowledge_outdated self-improvement 通用事件,跨平台共享
user_correction 自闭环 含用户偏好/习惯,WorkBuddy 特有
capability_gap 自闭环 WorkBuddy 特有能力体系
better_approach 自闭环 与 WorkBuddy 工具体系紧密相关
coexistence:
  mode: division
  # 行为:仅启用 user_correction/capability_gap/better_approach 三个Hook
  #       command_failure/api_error/knowledge_outdated 交给 self-improvement
  #       Skill Extraction / cross-project MEMORY.md promotion 不受影响

模式 3:full(全启+去重)

两者全部启用,但本技能每条记录前先检查 self-improvement 是否已有同类记录:

记录前:
  1. 生成本条 learning 的标签指纹(#tags + error_summary hash)
  2. 查询 .learnings/LEARNINGS.md + ERRORS.md 中是否有相同指纹
  3. 已有 → 跳过记录,标记 [deduped: self-improvement already covered]
  4. 无 → 正常写入
coexistence:
  mode: full
  # 行为:全Hook启用,每条记录前检查 .learnings/ 去重
  # Token开销:每条额外 +10-20 token(读取检查)
  # 适用:需要双重覆盖保底,接受少量冗余

模式 4:off(不处理)

coexistence:
  mode: off
  # 行为:忽略 .learnings/ 存在,正常全量运行
  # 风险:双重记录!仅在你确认不会同时启用两者时使用

推荐路径

新手 → 选一个,用 exclusive 模式避免冲突
  ├── 要开箱即用 → self-improvement(不用配 config)
  └── 要自动晋升/提取 → 自闭环(mkdir 即用零配置)

深度用户 → division 模式,两者分工协作
  └── 自闭环:user_correction + capability_gap + better_approach + 跨项目MEMORY + 自动Extraction
  └── self-improvement:command_failure + api_error + knowledge_outdated + 跨平台共享

共存策略 与 存储后端 的层次关系

两个配置解决不同层面的问题,可以独立或组合使用:

配置层 解决的问题 配置键 互斥关系
共存层(是否记录) 两个技能同时启用时,谁记录哪些事件 coexistence.mode exclusive/full 与 division 互斥
存储层(写在哪) 记录写入 outputs/learnings/ 还是 .learnings/ backend.type outputs 与 dotlearnings 互斥
组合关系 两层可自由组合 — —

推荐组合:

coexistence.mode: division  +  backend.type: outputs
  → 自闭环只记3类WorkBuddy特有事件,写入outputs/learnings/
  → self-improvement记3类通用事件,写入.learnings/
  → 完美分工,零冲突

coexistence.mode: exclusive + backend.type: dotlearnings
  → 检测到.learnings/自动退出,但如果想切换存储格式可单独配置

coexistence.mode: full      + backend.type: dotlearnings
  → 全量记录,但写入.learnings/与self-improvement共享存储
  → ⚠️ 注意:此时需确保记录格式兼容,避免格式冲突

不推荐:coexistence.mode: off + backend.type: outputs(默认双重记录)


Skill自优化(元能力)

本技能使用自身机制进行自我改进:

自检触发

  • 每次技能被加载时,自动执行快速自检(与config.yaml一致性、Hook文件完整性)
  • 每10次累积learnings后,自动评估SKILL.md是否有待更新(基于自身捕获的 learnings)
  • 用户显式触发 @self-loop-optimizer 自检 → 执行完整5维自审

自检维度

  1. 配置一致性:SKILL.md 中的配置示例是否与 config.yaml 实际结构一致
  2. 引用完整性:所有 hooks/on_*.md 引用是否对应实际文件
  3. 逻辑自洽:Promotion/Extraction阈值描述与config.yaml值是否匹配
  4. 路径正确性:所有文件路径引用是否可解析
  5. 更新优先级:是否有来自自身learnings的改进建议待实施

自修复流程

graph TD
    A[自检发现问题] --&gt; B[修正 SKILL.md / config.yaml / hooks/]
    B --&gt; C[运行 tests/skill-self-test.md 全部5维]
    C --&gt; D{全部通过?}
    D --&gt;|是| E[记录到 learnings ✅]
    D --&gt;|否| F[回滚修改 → 分析根因 → 重试修复]
    F --&gt; B

⚠️ 自修风险与防护

风险存在:自修由 LLM Agent 执行,修正本身可能引入新问题。tests/skill-self-test.md 是文档级回归检查表,靠 Agent 逐项执行,非自动化 CI 测试。这意味着:

风险 场景 防护
自修引入回归 修改 SKILL.md 配置示例后漏了同步 config.yaml 回归测试 T1 强制检查两端一致性
引用断裂 新增章节后忘记更新文件结构树 回归测试 T2 强制检查文件结构树与磁盘一致
误改 修 A 问题时连带破坏了 B 的逻辑 回归测试 T3 检查逻辑自洽
漏跑测试 自修后忘记回归验证 本条明确写死:自修后必须跑回归测试,全部通过才能结束

关键原则:
1. 自修后不跑回归测试 = 不允许结束。这是硬性约束,非建议
2. 回归测试只是文档级检查,Agent 执行时需逐项核实,不能跳步
3. 如果回归测试失败,必须回滚到上一次正确状态,分析根因后再试
4. 对 SKILL.md 的每次修改都应同时在 tests/skill-self-test.md 中添加对应检查项


能力边界

本技能不是万能工具。以下场景建议使用其他方案或配合使用:

❌ 本技能不适合

场景 原因 替代方案
实时错误监控/告警 本技能是离线学习引擎,不提供实时告警 使用 Sentry / Datadog 等 APM 工具
大文件/大数据集处理 outputs/ 目录默认不提交 Git,不适合管理大型二进制 使用 Git LFS 或独立存储
敏感/合规数据审计 虽内置脱敏,但不应作为安全审计工具 使用专用安全审计工具
跨组织知识共享 设计为个人/团队使用,无权限体系 使用 Wiki / 知识库系统
代替 CI/CD 流程 无流水线编排能力 使用 GitHub Actions / Jenkins
实时协作编辑 无冲突解决机制 使用 Google Docs / Notion

⚠️ 弱项与约束

  • LLM 文档驱动:归档、迁移等命令靠 LLM 读取 SKILL.md 中的流程描述执行,非独立可执行代码。适合纯 LLM Agent 环境,不适合传统 CI/CD 集成
  • 跨会话同步依赖 OpenClaw:需要 WorkBuddy 的 OpenClaw 协议支持;在 Claude Code / Codex CLI 等平台仅通过文件共享同步,非实时
  • Token 消费不可消除:每条 learning 的捕获和检查消耗 50-150 token,长期运行有累积成本(参见附录B的Token预算分析)
  • 多 Agent 并发安全:使用时间戳独立文件模式缓解,但极端高频场景仍需关注写时序
  • backend.type: dotlearnings 依赖 self-improvement:启用该后端前必须先安装并初始化 self-improvement(生成 .learnings/),否则自动回退为 outputs 后端

反模式与常见陷阱

🔴 不要做的事

# 反模式 为什么 正确做法
1 同时启用 self-improvement 和本技能但不配置 coexistence 双重记录 → 存储膨胀 + Token浪费 配置 coexistence.mode: exclusive 或 division
2 手动编辑 api-health.md 或 feature-requests.md 自闭环会覆盖你的修改 这些文件仅供读取,修改请用独立的说明文档
3 将 outputs/learnings/ 提交到 Git(hybrid 模式) 每人有独立学习记录,提交会导致冲突 用 gitignore.mode: local 或 hybrid(默认已配置)
4 希望一条 learning 解决所有 Promtion 问题 单一经验碎片化,不具备推广价值 等待同类学习累积到 promotion.threshold 后再 Promotion
5 把 promotion.threshold 设为 1 每一条不成熟的中间步骤都晋升 → 永久文件被噪声淹没 保持默认 3,或调高到 5-7 更严格
6 在 OSS 项目中不加审查就自动提取 Skill Extraction 可能提取出含项目特定逻辑的 Skill 设置 extraction.auto_install: false,审查后再安装
7 将 config.yaml 改为 mode: off 却同时使用 self-improvement 双重记录 要么 exclusive 要么 division,不要 off

⚠️ 容易掉坑的地方

1. 写入模型视图混淆
本技能的存储模型是"独立时间戳文件写入 → 任务结束时合并为 flat 文件"。如果你用文件管理器直接看 outputs/learnings/,看到的是 YYYY-MM-DD/ 子目录(细粒度)和 YYYY-MM-DD.md 合并文件(人类可读)。两者共存,各有用处。

2. "归档 = 删除"的误解
归档不删除数据——learnings 只会从活跃区移入 archive/YYYY-MM/。只有超过 archive.max_age(默认365天)的归档条目才会被清理。数据安全优先。

3. 去重不等同于"绝对不会重复"
语义去重的相似度阈值默认 0.85,极少数情况下高度相似但不同的 learnings 可能被误判为重复。如发现误去重,可调低 dedup.semantic_threshold(如 0.75)。


最佳实践

🎯 团队协作

# 团队推荐配置
gitignore:
  mode: team-shared           # 提交到 Git,团队共享能力边界/反模式等文档
promotion:
  threshold: 5                # 更严格,避免个人经验过早推送
extraction:
  auto_install: false         # 审查后再安装
coexistence:
  mode: division              # 与 self-improvement 分工

团队规范:
- 每天站会花 30 秒查看 @self-loop-optimizer status 的输出,了解团队沉淀经验
- 每两周审查一次 archive/ 中的归档 learnings,决定是否永久保留或清理
- Extraction 出来的 Skill 先在单用户试用一周,确认通用性后再推广团队

🚀 个人高效用法

# 个人推荐配置
gitignore:
  mode: local
promotion:
  threshold: 3                 # 快速沉淀
  high_value_auto: true
extraction:
  auto_install: true
coexistence:
  mode: exclusive              # 使用自闭环为主,不混用其他技能

个人习惯:
- 新项目初始化:mkdir -p outputs/learnings/ &amp;&amp; @self-loop-optimizer 自检
- 每周看一次 learnings/ 中各类型分布,识别频繁踩坑的方向
- 手机端查看每天的 outputs/learnings/YYYY-MM-DD.md(合并文件手机友好)

📊 数据驱动改进

利用本技能自身的数据做决策:

高频 command_failure → 环境配置问题,更新 onboarding 文档
高频 user_correction → 知识盲区,写一个快速参考卡片
高频 capability_gap  → 工具链缺失,考虑安装对应 Skill
低频 better_approach → 反思:是因为本已经很优,还是因为没留意更好的解法?

实用案例

案例 1:新手第一天(零配置)

场景:小张第一次使用越用越灵,什么都没配置。

时间 小张的行为 技能自动做的
10:00 pip install numpy(报 PEP 668 错误) 捕获 command_failure → 记入 learnings
10:05 手动加了 --break-system-packages 捕获 user_correction
14:00 npm install -g create-react-app(报 EACCES) 捕获 command_failure
14:02 改用了 npx 捕获 user_correction
任务结束 — 输出 📊 今日捕获 4 条 · 晋升 0 条 · 提取 0 个 Skill

第三天:同类 pip 错误累积到 3 次 → 自动 Promotion 到 MEMORY.md。
第五天:pip + npm 相关的经验累积到 5 条 → 自动提取为 Skill。

案例 2:团队协作(配置共存)

场景:一个 5 人项目组,同时使用越用越灵和 self-improvement。

# 一人配置,git 共享
coexistence:
  mode: division            # 自闭环记3类,self-improvement记3类
gitignore:
  mode: team-shared         # 提交到 git

效果:团队共享同一份 outputs/learnings/,但每人各自的个人经验(如 ~/.workbuddy/MEMORY.md)不互相污染。两周后团队共积累了 47 条 learnings,提取了 2 个通用 Skill。

案例 3:深度个人定制

场景:老李长期使用,想精细控制。

promotion:
  threshold: 5              # 更严格,避免过早推送
impact_score:
  promote_threshold: 8.0    # 只有高价值经验才自动晋升
learning_format:
  mode: enhanced            # 详细记录

效果:虽然晋升变慢了,但每一条晋升到永久文件的经验都确实有价值,老李的 MEMORY.md 从"什么都记"变成了"高价值专业手册"。

案例 4:从零搭建个人知识库

场景:小王的 MEMORY.md 之前一片空白。

第一周结束时,@self-loop-optimizer status 输出:

📊 越用越灵 — 运行状态

今日活动: 捕获 7 条
学习分布:
  command_failure    5  → pip/npm/git 等工具问题
  user_correction    2  → 路径空格/命令行参数

Promotion 历史:
  - 2026-07-28 → pip-externally-managed → MEMORY.md
  - 2026-07-28 → windows-path-spaces     → MEMORY.md

一周后:MEMORY.md 中多了 3 条自动积累的实用经验,全部来自日常操作中的真实踩坑。


使用限制速览

以下是本技能所有限制条件的集中汇总:

限制类别 具体限制 对应章节
能力边界 不适合:实时告警/大数据集/安全审计/跨组织共享/CI-CD/实时协作 能力边界
敏感记录 禁止记录:API密钥/密码/私钥/连接串/完整源码/身份证/内网IP 数据安全与隐私
跨会话 仅推送通用经验,不推送隐私/含路径的学习 数据安全与隐私
Token预算 单条≤150 token,会话≤3000 token 配置系统
并发 多Agent同时写使用时间戳独立文件模式,非极端高频安全 并发安全
自修风险 自修可能引入回归,必须跑回归测试确认 Skill自优化
共存 与self-improvement同时启用需配置coexistence,否则双重记录 共存策略

文件结构

self-loop-optimizer/
├── SKILL.md # 本文件(核心指令)
├── config.yaml # 配置文件(gitignore可选)
├── hooks/ # 6类Hook检测指令
│ ├── on_command_failure.md # 命令失败检测规则
│ ├── on_user_correction.md # 用户纠正检测规则
│ ├── on_capability_gap.md # 能力缺失检测规则
│ ├── on_api_error.md # API异常检测规则
│ ├── on_knowledge_outdated.md # 知识过时检测规则
│ └── on_better_approach.md # 更优方案检测规则
├── outputs/ # 运行时产出(自动创建)
│ ├── learnings/ # 活跃微学习记录(<retention.days & status=open)
│ │ ├── YYYY-MM-DD/ # 每日子目录(timestamp_files模式,并发安全)
│ │ │ ├── HH-MM-SS-uuid_category.md # 独立时间戳文件
│ │ │ └── ...
│ │ ├── YYYY-MM-DD.md # 每日合并文件(任务结束时自动生成,人类可读)
│ │ ├── api-health.md # API服务健康状态(持续更新)
│ │ └── feature-requests.md # 能力缺失/功能需求汇总
│ ├── archive/ # 历史归档(learnings生命周期终点)
│ │ ├── 2026-06/ # 按月分目录
│ │ ├── 2026-07/
│ │ └── ...
│ ├── promotions/ # Promotion操作日志
│ │ └── promotion-log.md
│ └── extractions/ # Extraction操作日志
│ └── extraction-log.md
├── references/ # 跨平台接入模板
│ ├── claude-code.md
│ ├── copilot.md
│ └── codex.md
└── tests/ # 自修复回归测试
└── skill-self-test.md


---

## 附录A:v1.x 全流程优化模式(保留,显式触发)

当用户使用 `@self-loop-optimizer full` 触发时,执行以下5阶段完整流水线:

### 阶段1:需求量化与验收标准建立
- 拆解至少10项可独立验证的验收项,每项标注权重
- 反向校验覆盖率 → 自评≥95分进入阶段2
- 交付 `outputs/01_需求验收清单.md`

### 阶段2:方案自迭代优化循环(最大5轮)
- 每轮执行5维反问(A-E) → 输出缺陷清单 → 修正 → 打分
- 单轮得分提升&lt;2分连续2轮→提前收敛
- 交付 `outputs/02_迭代过程记录.md`

### 阶段3:全流程自动测试
- 生成三类测试用例(正常/异常/边界)
- 逐条执行 → 失败自动修复 → 核心用例100%通过进阶段4
- 交付 `outputs/03_测试用例集.md` + `03_测试报告.md`

### 阶段4:暗坑排查与修复
- 5维度系统排查(极端输入/外部依赖/逻辑陷阱/累积问题/合规安全)
- 中高风险逐一修复 → 回归验证
- 交付 `outputs/04_暗坑风险清单.md` + `04_修复记录.md`

### 阶段5:分模块审计与终验
- 模块化拆解 → 逐模块审计 → 终验打分≥95
- 交付 `outputs/05_模块审计报告.md`

---

## 附录B:Token预算分析

### v1.x 典型消耗

阶段1: 验收清单生成 + 自评 + 修正 ≈ 2000-4000 token
阶段2: 5轮迭代 × 5维反问 × 每轮修正 ≈ 5000-15000 token
阶段3: 测试用例 + 执行 + 修复 ≈ 3000-8000 token
阶段4: 暗坑排查 + 修复 + 回归 ≈ 2000-5000 token
阶段5: 模块审计 + 终验 ≈ 2000-4000 token
─────────────────────────────────────────────────
合计(一次完整运行) ≈ 14000-36000 token


### v2.0 典型消耗

单条learning捕获 ≈ 50-150 token
每日10条learnings ≈ 500-1500 token
Promotion × 1(去重→1次写入) ≈ 200-400 token
Extraction × 0.2(5天触发1次) ≈ 2000-4000 token (摊销≈400-800/天)
─────────────────────────────────────────────────
日平均 ≈ 700-1900 token (含promotion+extraction摊销)
单条净消耗 ≈ 50-150 token
```

结论:v2.0日常模式下日消耗约700-1900 token(含Promotion/Extraction摊销),远低于v1.x单次完整运行的14000-36000 token。每条学习净消耗仅50-150 token。

常见问题

5 问
答案由本站依据条目字段整理
越用越灵怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_09df4766/self-loop-optimizer。安装方式为未标注。装完刷新技能列表或重开客户端。

越用越灵支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

越用越灵权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

越用越灵收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

越用越灵用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。