sy-evolve · 自进化(SkillOpt 轻量复刻)· #6
方法论来自微软 SkillOpt:把技能文档当作冻结 AI 的"可训练状态",用 harvest → mine → reflect → edit → validate → consolidate 闭环迭代,验证门控防退化。
知识库根目录
<知识库根>:① 本次会话用户显式指定 → ② 当前 Agent 打开的项目路径下有知识库标志(阅读笔记/log.md或阅读笔记/_system/用户阅读报告.md)→ ③~/.shendu-yuedu/config.json的 kb_root(问用户是否沿用)→ ④ 默认当前 Agent 打开的项目路径。权威定义见01-init/SKILL.md「知识库根目录解析协议」。
职责边界(关键)
- 只编辑 #5 实践转化的产出——即
<知识库根>/skills/INDEX.md + 阅读报告「已萃取技能索引(跨书累积)」、对应skills/<书名>/<skill-slug>/SKILL.md里的「书名\对应知识点」技能条目(触发条件/步骤/验收/失败模式)。 - 不碰 sy- 合集的 6 个 SKILL.md(那是阅读工作流本身,稳定不动)。用户坚持要求改 sy- → 🛑 STOP:说明本 skill 只养 #5 产出的技能,把问题作为用户级反馈转达,不产出任何对 sy-* 的编辑。
- 只读其他沉淀库(用户阅读报告/拆解/问题清单/知识卡片/log.md),不写它们(唯一例外:Consolidate 同步「已萃取技能索引」节)。
- 一句话:#5 造技能,#6 养技能。 你在真实场景用技能、反馈,#6 据此把技能打磨准。
何时用
- 某技能用起来别扭/步骤太多/触发不准/验收不可达
- 定期(每月)复盘技能库,淘汰没人用的、强化高频用的
- 用户说"这个技能用不起来"
前置:每次用技能要留痕迹
要求 #5 产出的技能,在真实使用后于 runs/sy-practice/<技能ID>/<日期>/ 留:触发场景 / 是否走通步骤 / 验收是否达标 / 哪步卡住 / 用户改动。没痕迹就无法进化——先回去补使用日志。
闭环(每次进化一个目标技能)
1. Harvest 采集
读该技能最近 5-10 次使用痕迹 + 用户口头反馈。整理"场景-是否走通-卡点-用户改了啥"列表。
2. Mine 挖掘模式
- 哪些步骤用户总跳过/改写 → 那步不现实(信号最强)
- 哪些验收总不达标 → 验收设太高 或 步骤缺关键过渡
- 触发从不命中 → 触发条件太窄或太宽
- 哪些步骤用户原样照做且验收达标 → 别动(hold-out 好样本)
3. Reflect 反思
对每个缺陷 5 Why 找根因,想 3 种不同修法(别只想到一种就改——SkillOpt 教训:第一次想到的修法往往过拟合)。
4. Edit(add/delete/replace,文本空间操作)
只对技能条目做三种操作:
- add:加一步/一个失败预警/一个判断标准
- delete:删一步被证明多余的
- replace:替换触发条件/验收为更好版本
bounded edit:一次只动 1-3 处。每处写一句 why,存进技能库末尾的"进化日志"。
5. Validate 验证门(核心防退化,绝不跳过)
- 从 runs/ 挑 2-3 个用户原样照做且验收达标的好样本作 hold-out
- 重跑 = 逐样本走查:把该样本当时的使用痕迹(触发场景/实际走的步骤/验收结果)对照新版步骤/验收逐条过一遍,判"若当时就是新版,此场景仍走通/达标吗"——输出 hold-out 对照表(样本 | 旧版结果 | 新版走查结果 | 是否退步),随人审 CHECKPOINT 一并展示。禁止只凭感觉声称"没退步"
- 新版在原好样本维度没退步 且 在要修维度有改善 → ✅接受
- 任一好样本退步 → ❌拒绝,进该技能目录下的
rejected-edits.md(skills/<书名>/<skill-slug>/rejected-edits.md,带原因,下次别再提同款) - 学习率隐喻:连续 2 次被拒,下次只允许微调(删一句/加一个预警),别推倒重来。
🔴 CHECKPOINT · 🛑 编辑提案人审(Validate 通过后、写回前必停)
向用户展示三样:①每处编辑的 before/after diff ②每处一句 why ③hold-out 对照结果(哪个好样本没退步、哪个缺陷维度改善)。用户说 OK 才进 Consolidate;用户否决的编辑按被拒处理,记入 rejected-edits.md(原因写"用户否决")。
6. Consolidate 固化
- 接受的编辑写回技能条目(skills/INDEX.md + 对应 skill 的 SKILL.md + 阅读报告技能索引同步)
- 更新"进化日志"(日期/技能/编辑类型/why/验证结果)
- 把挖到的反模式加进该技能的"常见失败模式"段——长期记忆
输出
- 改后的技能条目(仅「验证通过 + 用户在人审 CHECKPOINT 确认」才改)
- 进化日志追加一条
- rejected-edits 追加被拒记录
- 给用户的进化报告:动了哪几处/why/验证前后对比/下个建议进化的技能
多目标 reward(参考 SkillOpt)
验证时同时看四维,全部从 runs/ 使用痕迹的既有字段(触发场景/是否走通/验收达标/哪步卡住/用户改动)算出;无数据的维度标 无数据 并按持平处理:
- 走通率 = 走通次数 ÷ 总使用次数
- 验收达标率 = 达标次数 ÷ 总使用次数
- 效率 = 卡住/被跳过的步骤数 ÷ 该技能总步骤数(越低越好)
- 复用率 = 相似触发场景中实际调用了该技能的比例
硬门槛:①② 必须 ≥ 旧版(由 hold-out 走查判定);③④ 持平即可接受,显著变化记入进化日志。
人 × AI 分工
- 人:真实使用技能、留使用痕迹、反馈好不好用、最终确认是否采纳编辑
- AI:采痕迹、挖模式、提案编辑、跑验证门、写日志
下一步
进化是循环——每月或每次发现技能短板就跑一次。无固定下一步;回到当前最薄弱的技能继续打磨。