系列回顾:主循环 · Skills
Skill 写完能跑,不等于写得好。常见病是:正向流程写得很满,失败分支没有;「与用户确认」写了,但模型扫不到;禁止项散落全文,关键决策照样越界。
这篇讲怎么用 Darwin Skilldarwin-skill)对已有 SKILL.md 做结构化优化——以本机优化 unified-dev-workflow 的实战为例。


为什么不「自己改自己评」

手改 Skill 的陷阱和手改 prompt 一样:

做法问题
改完立刻自评「更好了」同 context 乐观偏差;SkillLens 实证 LLM-as-judge 准确率仅约 46%
只看绝对分涨跌换个 judge 同一份未改稿可晃 ±8 分——大半是换尺,不是真退步
一轮改三个维度分数升降无法归因

Darwin 的对策很简单:

  1. 9 维 rubric 先做 triage(哪支最弱、先改谁)
  2. 每轮只改一个维度
  3. keep/revert 用 paired 比较:同一 judge 一次读改前+改后,多数决;不用绝对分 delta
  4. 关键节点人审(🔴 CHECKPOINT)

核心理念可以记成一句话:

评估 → 改进 → 实测 / paired → 人类确认 → 保留或回滚

(灵感来自 Karpathy autoresearch;度量从确定性 loss 换成了 LLM judge,所以棘轮必须改成 paired。)


安装与调用

把 Darwin 装到你的 skills 目录(Cursor / Claude Code / 其它兼容 Agent Skills 的 runtime 均可;注意措辞要 runtime 中立,别写成「只给 Claude Code 用」)。

常用话术:

你说Darwin 做什么
评估 xxx skill / /darwin 评测 xxxPhase 0.5–1:设计测试 prompt + 基线评分,不改文件
优化 xxx / 优化所有 skills确认后进入 Phase 2 棘轮循环
看看 skill 优化历史results.tsv

本机路径示例(按你的安装位置调整):

~/.agents/skills/darwin/SKILL.md          # 或 .cursor/skills/darwin-skill/
~/.cursor/skills/<your-skill>/SKILL.md    # 被优化的目标
~/.agents/skills/darwin/results.tsv       # 实验日志

目标 skill 若不在 git 仓里:用 SKILL.md.bak.YYYYMMDD-HHMM 代替 git revert,一样能棘轮。


流程一张图

Phase 0     定范围、建分支 / 备份、初始化 results.tsv
    ↓
Phase 0.5   为 skill 设计 2–3 条典型 test prompts  →  人确认
    ↓
Phase 1     9 维基线分(结构主评 + dim8 子 agent / 干跑)→  人确认
    ↓
Phase 2     按加权缺口从弱到强:
              改 1 维 → commit/备份 → N=3 paired judge → keep | revert
              每 skill 结束再人审;触顶或连续 slight 则停
    ↓
Phase 3     汇总报告(可选成果卡片)

绝对总分只做 triage。 keep/revert 只看 paired 多数决。


9 维 Rubric(记权重,不背细则)

#维度权重优化时常盯什么
1Frontmatter7做什么 + 何时用 + 触发词;禁空话尾巴
2工作流清晰度12有序号、每步有输入/输出
3失败模式编码12「触发 / 一线修复 / 仍失败兜底」三段式
4检查点6必须有 🔴 / STOP / CHECKPOINT 视觉标记
5可执行具体性18禁「建议/视情况」堆砌
6资源整合4references 路径可达
7整体架构12少废话、层次清楚
8实测表现23带 skill vs 不带 skill 跑同一 prompt
9反例黑名单6独立「不要做什么」章,散落「禁止」不够

Phase 2 诊断用 加权缺口

weighted_gap = weight × (10 − score) / 10

先修缺口最大的维。dim2/3/4 是相关簇:修失败分支时,检查点往往顺手变好——但仍建议一轮一维,方便归因。


实战:优化 unified-dev-workflow

对象:~/.cursor/skills/unified-dev-workflow/SKILL.md
用途:OpenSpec + 竖切 issue + TDD 的极简话术工作流(uw 继续 / uw #N / uw 归档…)。

1)先定测试 prompt(Phase 0.5)

没有 test prompts,dim8(权重 23%)就是瞎打分。我们用了三条典型场景:

idprompt期望
1uw 继续读 change/tasks/issues,只做下一步,输出进度块
2uw 给设置页加暗色模式开关只 propose,不写实现,等确认
3uw 归档(从未验收)拒绝 archive,拉回阶段 4

确认后再评——方向错了,后面全是噪音。

2)基线(Phase 1)

总分主要短板
75.7dim3 失败分支弱;dim4 有「确认」无 🔴;dim9 禁止项散落无专章

dim8 用子 agent 做 with-skill vs baseline 计划级对比(无真实仓库落代码时标 dry_run):

  • 无 skill:新需求常直接写代码;无验收也会归档
  • 有 skill:propose 停步、归档门禁清晰

结论:流程骨架已经对,缺的是失败编码、显性人审、反例章

3)三轮棘轮(Phase 2)

轮次改什么内容paired
R1dim3新增「失败与恢复」:9 行触发 / 一线 / 兜底3-0 better
R2dim4propose / 拆票 / 多 change / 验收处加 🔴 CHECKPOINT · 🛑 STOP3-0 better
R3dim9独立「不要做什么」黑名单 9 条keep

约束:不改核心用途、不引入新依赖、体积不超过原稿 150%(本例约 1.46×)。

无 git 时每轮先:

SKILL.md.bak.YYYYMMDD-HHMM

paired 判 worse 就从备份还原;判 better 就保留。

4)收工后技能长什么样

铁律
  ↓
失败与恢复(三段式表)     ← R1
  ↓
五阶段 + 🔴 CHECKPOINT     ← R2
  ↓
交付检查
  ↓
不要做什么(反例黑名单)   ← R3

日志写在 Darwin 的 results.tsv,便于以后复盘。


优化完对使用者的好处

Skill 作者改的是文档;使用者感到的是 Agent 行为

  1. 少假成功 — push/gh/validate 失败有兜底,不再静默勾 task、关 issue
  2. 关键步会停 — 未确认不写实现、不拆错票、不偷偷 archive
  3. 坏习惯可对照 — 「本地绿就关票」「无验收就归档」写在黑名单里,Agent 更容易扫到
  4. 调用方式不变 — 仍说 uw 继续;变稳的是执行纪律,不是让用户背长模板

这才是 Darwin 相对「润色文案」的价值:改可执行约束,而不只是写得更像好文档。


操作清单(可复制)

1. /darwin 评测 <skill名>
2. 确认 test-prompts(2–3 条 happy + 一门禁场景)
3. 看基线评分卡 → 记下加权缺口最大维
4. 回复「优化」进入 Phase 2
5. 每轮只改一维 → 等 paired 多数决 → 人审 OK 再下一轮
6. MAX_ROUNDS(默认 3)或连续 slight → 收工
7. 看 diff / bak / results.tsv,决定是否留用

高杠杆改法(来自 Darwin 实战 HL):

  • HL-1:检查点加 🔴 / 🛑,别只写「必须确认」
  • HL-2:失败表用「触发 / 一线 / 兜底」三段,别只写症状
  • HL-4:连续两轮只是 slight/tie → 见好就收,别硬凑轮次加废话

反模式(Darwin 自己的黑名单):

  • 同 session 自评自改当 keep 依据
  • 用绝对分涨跌决定 revert
  • git reset --hard 回滚(应用 revert 或文件备份)
  • dry_run 比例过高还宣称「实测提升」

和「手写一版更好的 Skill」差在哪

手改Darwin
改什么凭感觉按加权缺口 + 一轮一维
怎么判更好自觉 / 绝对分paired 多数决 + 人审
失败与人审容易漏rubric 强制 dim3 / dim4 / dim9
可回滚看心情bak / git 棘轮

手改适合从零写;Darwin 适合已有 Skill 要稳态变好——尤其是「能跑但偶尔越界」的那种。


小结

  1. 先评再改:test prompts → 9 维基线 → 人确认
  2. 绝对分只排序;paired 才 keep/revert
  3. 优先补失败分支、显性检查点、反例专章
  4. 每轮一维、控制体积、保留备份
  5. 最终标准是 Agent 执行时更守规矩,不是 Markdown 更长

下一步:对你仓库里最常用的那支 Skill 跑一遍「仅评估」;分数卡出来后,再决定要不要进优化循环。


参考

  • Darwin Skill:https://github.com/alchaincyf/darwin-skill
  • SkillLens(arXiv 2605.23899
  • SkillOpt(arXiv 2605.23904
  • 本例目标 skill:~/.cursor/skills/unified-dev-workflow/SKILL.md
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐