第 5 章:Skill 进化与持续优化
本章目标: 掌握 Skill 版本迭代、用户反馈闭环、自进化机制设计
预计阅读时间: 40 分钟
难度等级: ⭐⭐⭐⭐☆(高级)
📖 目录
- 版本迭代策略
- 用户反馈闭环
- 自学习机制设计
- 技能提取与抽象
- 社区协作与分发
- 进化案例分析
- 本章实践
版本迭代策略
版本号规范
语义化版本(SemVer):
| 主版本。次版本.修订版本
↑ ↑ ↑
│ │ └─ Bug 修复(向后兼容)
│ └──────── 新功能(向后兼容)
└─────────────── 破坏性变更
|
示例:
| 1.0.0 → 初始发布
1.0.1 → Bug 修复
1.1.0 → 新功能
2.0.0 → 破坏性变更
|
发布周期
推荐周期:
| 小版本(x.x.1-9):每 1-2 周
- Bug 修复
- 性能优化
- 文档更新
中版本(x.1-9.0):每月
- 新功能
- 显著改进
- 向后兼容
大版本(1-9.0.0):每季度/半年
- 架构变更
- API 变更
- 破坏性更新
|
变更日志
格式规范:
| ## [1.1.0] - 2026-03-26
### 新增
- 新增 PDF 合并功能
- 新增批量处理支持
### 改进
- 提取性能提升 50%
- 错误提示更清晰
### 修复
- 修复大文件处理崩溃
- 修复编码问题
### 变更
- 默认输出格式改为 UTF-8
- 弃用旧 API(将在 2.0.0 移除)
|
回滚机制
设计原则:
| 1. 每次发布前创建备份
2. 保留最近 3 个版本
3. 一键回滚能力
4. 回滚后数据兼容
|
实现示例:
| def rollback_skill(skill_name, target_version):
# 1. 备份当前版本
backup_current(skill_name)
# 2. 恢复目标版本
restore_version(skill_name, target_version)
# 3. 验证
if not verify_skill(skill_name):
# 恢复失败,回滚回滚
restore_from_backup()
raise Exception("Rollback failed")
# 4. 通知用户
notify_users(f"{skill_name} 已回滚到 {target_version}")
|
用户反馈闭环
反馈收集渠道
渠道 1:内嵌反馈
| 在 Skill 末尾添加:
## 反馈
遇到问题或有改进建议?
- 📝 [提交反馈](链接)
- 💬 [Discord 社区](链接)
- 🐛 [报告 Bug](链接)
- ⭐ [评价 Skill](链接)
|
渠道 2:使用后调查
| 任务完成后(可选):
"这次体验如何?"
😊 满意 → "谢谢!有什么可以改进的吗?[文本框]"
😐 一般 → "请告诉我们如何改进:[文本框]"
😞 不满意 → "抱歉!问题是什么?[文本框]"
|
渠道 3:被动收集
| # 自动收集错误和纠正
def collect_feedback(session):
feedback = {
'errors': extract_errors(session),
'corrections': extract_corrections(session),
'retries': count_retries(session),
'duration': session.duration
}
if feedback['errors'] or feedback['corrections']:
save_feedback(feedback)
|
反馈分类处理
分类框架:
| 用户反馈
├── Bug 报告(功能错误)
│ └─→ 优先级:高 → 修复 → 验证 → 发布
├── 功能请求(新能力)
│ └─→ 评估价值 → 规划 → 开发 → 发布
├── 体验问题(难用、困惑)
│ └─→ 分析原因 → 优化 → 测试 → 发布
└── 表扬建议(保持、推广)
└─→ 记录 → 在营销中使用
|
优先级评估:
| def prioritize_feedback(feedback):
score = 0
# 影响范围
if feedback.affects_all_users:
score += 30
elif feedback.affects_many_users:
score += 20
else:
score += 10
# 严重程度
if feedback.is_blocking:
score += 40
elif feedback.is_major:
score += 25
else:
score += 10
# 频率
if feedback.is_recurring:
score += 20
# 用户价值
if feedback.high_value_user:
score += 10
return score
# 优先级
# 80-100: 立即处理
# 60-79: 本周处理
# 40-59: 本月处理
# <40: backlog
|
反馈响应 SLA
| 优先级 | 响应时间 | 解决时间 |
| P0(阻塞) | <1 小时 | <24 小时 |
| P1(严重) | <4 小时 | <3 天 |
| P2(一般) | <24 小时 | <1 周 |
| P3(轻微) | <3 天 | <1 月 |
闭环追踪
状态流转:
| 新建 → 确认 → 处理中 → 待验证 → 已解决 → 已发布
↓ ↓
└─→ 拒绝(说明原因)
|
追踪模板:
| ## 反馈 #123
**类型:** Bug 报告
**优先级:** P1
**状态:** 已解决
### 描述
用户报告 PDF 合并时文件顺序错误
### 复现
1. 选择 3 个 PDF
2. 调整顺序为 2-1-3
3. 执行合并
4. 输出顺序为 1-2-3(错误)
### 原因
排序逻辑使用了字母排序而非用户指定顺序
### 修复
修改排序逻辑,使用用户指定的索引
### 验证
- [x] 单元测试通过
- [x] 手动测试通过
- [x] 用户确认
### 发布
包含在 v1.1.2 中发布
|
自学习机制设计
学习循环
| 使用 → 记录 → 分析 → 学习 → 应用 → 验证
↑ ↓
└──────────────────────────────────────┘
|
学习类型
类型 1:错误学习
| 记录错误:
- 什么操作失败了
- 错误信息
- 上下文
- 最终解决方案
应用:
- 更新故障排查文档
- 添加错误处理
- 创建预防措施
|
类型 2:纠正学习
| 记录纠正:
- 用户纠正了什么
- 正确做法
- 为什么错了
应用:
- 更新 SKILL.md
- 添加注意事项
- 修改默认行为
|
类型 3:优化学习
| 记录优化:
- 发现了更好的方法
- 性能提升
- 用户体验改善
应用:
- 更新最佳实践
- 修改工作流
- 分享经验
|
学习存储
结构化存储:
| .learnings/
├── ERRORS.md
│ ## [ERR-20260326-001] pdf_merge
│ **Logged**: 2026-03-26T10:30:00Z
│ **Priority**: high
│ **Status**: resolved
│
│ ### Summary
│ PDF 合并时文件顺序错误
│
│ ### Error
│ 输出顺序与用户指定顺序不符
│
│ ### Fix
│ 修改排序逻辑
│
│ ### Prevention
│ 添加顺序验证测试
├── LEARNINGS.md
│ ## [LRN-20260326-001] best_practice
│ **Logged**: 2026-03-26T14:00:00Z
│ **Priority**: medium
│ **Status**: promoted
│
│ ### Summary
│ 批量处理时先验证文件存在
│
│ ### Details
│ 发现批量处理时如果有文件不存在会中途失败
│
│ ### Best Practice
│ 1. 先验证所有文件存在
│ 2. 再开始处理
└── FEATURE_REQUESTS.md
## [FEAT-20260326-001] pdf_split
**Logged**: 2026-03-26T16:00:00Z
**Priority**: medium
**Status**: planned
### Request
用户需要按页码拆分 PDF
### Use Case
提取特定页面发送给不同人
### Implementation
添加 split_by_pages 功能
|
学习应用
自动应用:
| def apply_learning(learning):
if learning.type == 'error':
# 添加错误处理
add_error_handling(learning)
# 更新文档
update_troubleshooting(learning)
elif learning.type == 'correction':
# 更新主逻辑
update_main_logic(learning)
# 添加测试
add_test_case(learning)
elif learning.type == 'optimization':
# 应用优化
apply_optimization(learning)
# 更新文档
update_best_practices(learning)
|
手动审核:
| 定期审核学习(每周):
## 本周学习审核
### 待应用学习
1. [LRN-001] - 批量处理验证 → 计划本周
2. [LRN-002] - 错误提示优化 → 计划下周
### 已应用学习
1. [ERR-001] - PDF 顺序修复 → v1.1.2
2. [LRN-003] - 性能优化 → v1.1.1
### 待讨论学习
1. [FEAT-001] - 拆分功能 → 需要评估工作量
|
技能提取与抽象
提取条件
何时提取为新 Skill:
| 满足以下任一条件:
1. 重复出现 3+ 次
2. 跨 2+ 不同任务
3. 30 天内频繁使用
4. 用户明确要求
5. 有通用价值
|
提取评估:
| def should_extract_skill(learning):
score = 0
# 频率
if learning.recurrence_count >= 3:
score += 30
# 跨任务
if learning.task_diversity >= 2:
score += 25
# 时间窗口
if learning.time_window_days <= 30:
score += 20
# 用户请求
if learning.user_requested:
score += 15
# 通用性
if learning.is_generalizable:
score += 10
return score >= 60 # 阈值
|
提取流程
| 1. 识别候选学习
↓
2. 评估提取价值
↓
3. 设计 Skill 结构
↓
4. 实现核心功能
↓
5. 编写文档
↓
6. 测试验证
↓
7. 发布 Skill
↓
8. 更新原学习状态
|
抽象原则
原则 1:去情境化
| 原始学习:
"在处理用户 A 的 PDF 时,发现需要先验证文件存在"
抽象后:
"批量处理文件前,先验证所有文件存在"
→ 移除特定用户、特定文件
|
原则 2:参数化
| 原始:
"用 pdfplumber 打开 file.pdf"
抽象:
```python
def process_pdf(file_path):
with pdfplumber.open(file_path) as pdf:
...
|
→ 参数化文件路径
| **原则 3:可配置**
```markdown
原始:
"设置超时为 30 秒"
抽象:
```python
def process(timeout=30):
...
|
→ 可配置参数
| ### 提取模板
```markdown
# 技能提取模板
## 原始学习
- 学习 ID: LRN-XXXX
- 出现次数:X
- 涉及任务:[任务列表]
## 抽象 Skill
### 名称
[skill-name]
### 用途
[一句话描述]
### 触发条件
[何时使用]
### 核心功能
[功能列表]
### 与原始学习的区别
[去情境化、参数化、可配置说明]
## 验证
- [ ] 单元测试通过
- [ ] 集成测试通过
- [ ] 用户测试通过
|
社区协作与分发
分发渠道
渠道 1:ClawHub
| # 发布到 ClawHub
clawhub publish ./my-skill
# 用户安装
clawhub install my-skill
|
渠道 2:GitHub
| 仓库结构:
my-skill/
├── SKILL.md
├── scripts/
├── references/
├── .github/
│ └── workflows/
│ └── publish.yml # 自动发布
└── README.md # 人类可读文档
|
渠道 3:直接分享
| # 打包
python scripts/package_skill.py ./my-skill
# 分享 .skill 文件
# 用户安装
clawhub install ./my-skill.skill
|
协作模式
模式 1:开源协作
| 仓库公开,欢迎贡献:
- Issues: 报告问题、请求功能
- PRs: 代码贡献
- Discussions: 讨论想法
维护者职责:
- 审查 PR
- 回答问题
- 发布版本
|
模式 2:社区维护
| 核心团队 + 社区贡献者:
- 核心团队:架构、发布
- 社区贡献者:功能、修复
治理模式:
- RFC 流程
- 投票决策
- 透明路线图
|
模式 3:企业内部分享
| 内部 Skill 仓库:
- 私有 ClawHub
- 内部 GitHub
- 文档门户
审核流程:
- 安全审查
- 功能验证
- 文档完整
|
版本同步
自动同步:
| # .github/workflows/sync.yml
name: Sync to ClawHub
on:
release:
types: [published]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Publish to ClawHub
run: |
clawhub publish ./my-skill \
--token ${{ secrets.CLAWHUB_TOKEN }}
|
依赖管理:
| Skill 依赖声明:
dependencies:
- pdf-tools: ">=1.0.0"
- data-utils: ">=2.0.0"
→ 安装时自动检查依赖
|
进化案例分析
案例 1:self-improvement 进化史
v1.0.0(初始):
v1.1.0(自动化):
| 新增:
- 自动错误检测
- Hook 集成
- 激活脚本
改进:
- 日志格式标准化
|
v1.2.0(技能提取):
| 新增:
- 技能提取脚本
- 提取条件判断
- 自动模板生成
改进:
- 提升流程自动化
|
v2.0.0(架构升级):
| 变更:
- 新的日志存储格式
- OpenClaw 深度集成
- 跨会话通信
移除:
- 旧 Hook 系统(不兼容)
|
关键学习:
| 1. 早期用户反馈至关重要
2. 破坏性变更需要充分沟通
3. 自动化是规模化的关键
4. 文档更新与代码同步
|
案例 2:token-optimizer 进化史
v1.0.0:
| - 基础优化功能
- 单一供应商心跳
- 手动配置
|
v1.0.8:
| 新增:
- 回滚功能
- 健康检查
- Diff 预览
- --no-color 选项
改进:
- 多供应商支持
- 更好的错误提示
|
关键学习:
| 1. 安全功能(回滚、预览)提高采用率
2. CLI 体验影响用户满意度
3. 量化收益(节省金额)促进传播
|
本章实践
练习 1:设计版本策略
任务: 为你的 Skill 设计版本迭代策略
输出:
| ## 版本策略
### 版本号规范
[说明你使用的版本规范]
### 发布周期
- 小版本:[周期]
- 中版本:[周期]
- 大版本:[周期]
### 变更日志格式
[示例变更日志]
### 回滚计划
[如何实现回滚]
|
练习 2:设计反馈闭环
任务: 设计完整的用户反馈收集和处理的流程
输出:
| ## 反馈闭环设计
### 收集渠道
1. [渠道 1]: [说明]
2. [渠道 2]: [说明]
3. [渠道 3]: [说明]
### 分类处理
[如何分类和处理反馈]
### 优先级评估
[评估标准和权重]
### 响应 SLA
| 优先级 | 响应时间 | 解决时间 |
|-------|---------|---------|
| ... | ... | ... |
### 追踪模板
[反馈追踪的格式]
|
练习 3:设计自学习机制
任务: 为你的 Skill 设计自学习机制
输出:
| ## 自学习机制
### 学习类型
1. 错误学习:[如何记录和应用]
2. 纠正学习:[如何记录和应用]
3. 优化学习:[如何记录和应用]
### 学习存储
[存储结构和格式]
### 学习应用
[如何自动/手动应用学习]
### 审核流程
[定期审核的安排]
|
练习 4:规划技能提取
任务: 识别可以提取为新 Skill 的学习
输出:
| ## 技能提取计划
### 候选学习
| 学习 ID | 出现次数 | 跨任务数 | 通用性 | 评分 |
|--------|---------|---------|-------|------|
| ... | ... | ... | ... | ... |
### 提取优先级
1. [最高优先级的学习]
2. ...
3. ...
### 提取时间表
- Q1: [计划提取的技能]
- Q2: ...
- Q3: ...
|
本章总结
核心要点
- 版本迭代:
- 语义化版本
- 规律发布周期
- 详细变更日志
-
可靠回滚机制
-
用户反馈:
- 多渠道收集
- 分类处理
- 优先级评估
-
闭环追踪
-
自学习:
- 错误/纠正/优化学习
- 结构化存储
- 自动/手动应用
-
定期审核
-
技能提取:
- 明确提取条件
- 标准化流程
- 抽象原则
-
验证机制
-
社区协作:
- 多渠道分发
- 协作模式
- 版本同步
- 依赖管理
进化检查清单
持续优化 Skill 时检查:
| □ 有明确的版本策略
□ 有反馈收集渠道
□ 有反馈处理流程
□ 有学习记录机制
□ 有学习应用机制
□ 定期审核和改进
□ 有技能提取计划
□ 有分发渠道
□ 有社区协作机制
|
持续改进循环
| 发布 → 收集反馈 → 分析学习 → 改进优化 → 发布新版本
↑ ↓
└──────────────────────────────────────────────┘
每个周期:
- 修复 Bug
- 优化体验
- 添加功能
- 提升性能
|
🎓 教程总结
恭喜你完成整个 Skill 开发教程!
知识回顾
| 章节 | 核心内容 | 关键收获 |
| 第 1 章 | 方法论 | 四大设计原则、六步开发法 |
| 第 2 章 | 结构设计 | SKILL.md 规范、资源组织 |
| 第 3 章 | 案例分析 | 10+ 模式、最佳实践 |
| 第 4 章 | 质量评估 | 五维框架、测试方法 |
| 第 5 章 | 进化优化 | 版本迭代、自学习机制 |
下一步行动
- 实践: 创建一个完整的 Skill
- 分享: 发布到 ClawHub 或 GitHub
- 迭代: 持续收集反馈并改进
- 学习: 关注社区最新动态
资源链接
第 5 章完 · 教程结束
返回:教程总览