Skill 经验进化管理器。在对话结束时分析用户反馈,提取最佳实践和解决方案,持久化到 evolution.json 并缝合到 SKILL.md。支持三层架构(上游层、全局层、项目层)实现跨项目经验管理。当用户说"复盘"、"记录经验"、"保存这个技巧"、"evolve"时使用此工具。
Skill 系统的"进化中枢"。负责将对话中的经验教训持久化存储,并跨版本、跨项目保留。
问题: Skill 更新时,用户积累的最佳实践会丢失;不同项目间的经验无法共享。
解决方案:
evolution.json 文件中┌─────────────────────────────────────────────────────────────────────┐
│ 三层经验架构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ │
│ │ 上游层 (Upstream) │ skills-repo 原始仓库的经验 │
│ │ evolution.json │ 来自社区/原作者的最佳实践 │
│ │ 位置: skills-repo/skills/<skill>/evolution.json │
│ └─────────┬────────┘ │
│ │ 继承 │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 全局层 (Global) │ 你个人的通用经验 │
│ │ evolution.json │ 可选择性提交 PR 到上游 │
│ │ 位置: ~/.claude/evolutions/<skill>/evolution.json │
│ └─────────┬────────┘ │
│ │ 继承 │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 项目层 (Project) │ 项目特定经验 │
│ │ <skill>.json │ 不提交到版本控制 │
│ │ 位置: <project>/.claude/evolutions/<skill>.json │
│ └──────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
最终生效的经验 = merge(
上游层, # 最低优先级
全局层, # 中等优先级
项目层 # 最高优先级
)
触发方式:
/skill-evolution 或 /evolveAgent 分析当前对话,识别:
Agent 将提取的经验转换为 JSON 格式:
{
"preferences": [
"用户希望下载时默认静音",
"优先使用 mp4 格式"
],
"fixes": [
"Windows 下路径需要转义",
"某些参数在 v2.0 后已弃用"
],
"contexts": [
"批量操作时需要添加 --batch 参数",
"处理大文件时增加超时时间"
],
"custom_prompts": "在执行前总是先打印预估耗时"
}
Agent 询问用户:
运行 scripts/merge_evolution.py 将经验合并:
# 传统模式(保存到 skill 目录)
python scripts/merge_evolution.py <skill_dir> '<json_string>'
# 分层模式(保存到全局层)
python scripts/merge_evolution.py <skill_name> '<json_string>' --layer global
# 分层模式(保存到项目层)
python scripts/merge_evolution.py <skill_name> '<json_string>' --layer project --project /path/to/project
运行 scripts/smart_stitch.py 将经验写入 SKILL.md:
# 单层模式
python scripts/smart_stitch.py <skill_dir>
# 分层模式(合并三层经验)
python scripts/smart_stitch.py <skill_dir> --layered --project /path/to/project
当 skill-manager 更新 Skill 后,运行全量对齐恢复经验:
python scripts/align_all.py <skills_dir>
| 脚本 | 功能 | 参数 |
|---|---|---|
layered_merge.py |
分层经验管理核心 | <action> <skill_name> [options] |
merge_evolution.py |
增量合并经验 | <skill_dir> <json> [--layer] [--project] |
smart_stitch.py |
缝合到 SKILL.md | <skill_dir> [--layered] [--project] |
align_all.py |
全量对齐 | <skills_dir> [--dry-run] [--backup] |
# 查看经验状态
python scripts/layered_merge.py status <skill_name> [--project <path>]
# 合并三层经验(查看结果)
python scripts/layered_merge.py merge <skill_name> [--project <path>]
# 将项目经验提升到全局层
python scripts/layered_merge.py promote <skill_name> [--project <path>] [--fields f1,f2]
# 从全局层拉取经验到项目层
python scripts/layered_merge.py pull <skill_name> [--project <path>]
# 保存经验到指定层
python scripts/layered_merge.py save <skill_name> <layer> '<json>' [--project <path>]
{
"preferences": ["string"],
"fixes": ["string"],
"contexts": ["string"],
"custom_prompts": "string",
"last_updated": "ISO-8601 datetime",
"last_evolved_hash": "commit hash"
}
| 字段 | 说明 |
|---|---|
preferences |
用户偏好列表 |
fixes |
已知问题修复方案 |
contexts |
特定使用场景说明 |
custom_prompts |
自定义指令注入 |
last_updated |
最后更新时间 |
last_evolved_hash |
最后进化时的 source_hash |
--backup 选项保护重要的经验数据用户: 记录一下,我希望下载视频时默认不带字幕,这个是通用设置
Agent:
1. 识别这是一个用户偏好,且是通用设置
2. 生成 JSON: {"preferences": ["下载视频时默认不带字幕"]}
3. 运行 merge_evolution.py --layer global 合并到全局层
4. 运行 smart_stitch.py --layered 更新 SKILL.md
用户: 这个项目的路径比较特殊,记住要用绝对路径
Agent:
1. 识别这是项目特定的修复方案
2. 生成 JSON: {"fixes": ["此项目必须使用绝对路径"]}
3. 运行 merge_evolution.py --layer project 合并到项目层
用户: 把这个项目里学到的经验提升到全局,其他项目也能用
Agent:
1. 运行 layered_merge.py promote <skill_name>
2. 项目层的经验被复制到全局层
3. 报告提升结果
用户: 这是新项目,把全局经验拉下来
Agent:
1. 运行 layered_merge.py pull <skill_name>
2. 全局层的经验被复制到项目层
3. 可以在此基础上继续积累项目特定经验
evolution_enabled: true)