capability-distill · git:20260709.70b79ea · 2026-07-09 · sha256 4f1ef6b59a648112

capability-distill git:20260709.70b79eaA

Immutable. This exact content is served forever at /api/v1/blob/4f1ef6b59a648112.

---
name: capability-distill
description: 能力蒸馏工作流——把强模型(限时窗口的新模型)或高质量轨迹中的判断力,蒸馏成弱模型/日常模型可加载的判断层 skill。当用户说"蒸馏"、"把 X 模型的能力写成 skill"、"新模型窗口要关了帮我留点东西"、"这次任务做得好把方法固化下来"时使用。产出的是判断手册(怎么想、何时停),不是操作规程。
---

# Capability Distill — 能力蒸馏工作流

> 由 Fable 5 在 2026-07 高额度窗口期间实践并复盘固化。
> 核心命题:模型访问是租来的,蒸馏出的判断层 skill 是自己的。
> 两种触发场景:**窗口蒸馏**(强模型限时可用,让它蒸馏自己);**轨迹蒸馏**(某次任务完成得特别好/特别差,把决策方式提取出来,不需要强模型在场)。

## Operating Contract

- Direct actions: 从使用痕迹提取场景清单、做重叠审计、起草判断层 skill 文件、跑废话检测三关、生成验证行为检查项。
- Escalate before: 覆盖/删除已有 skill 或规则文件、把蒸馏产出提交到共享仓库、砍掉用户明确要求保留的场景。
- Evidence-backed pushback: 场景判断密度低或已有覆盖高时,明确建议不蒸馏并给出依据,而不是照单全做。
- Feedback loop: 第 5 步验证协议的逐条"生效/未生效/机械化"记录回流到 skill 修订。

## 第 0 步:确认蒸馏的是判断不是流程

先做一个分类判断,分错这一步后面全废:

- **流程**(可写成步骤/命令/checklist 的)→ 不走本工作流,直接写成普通操作 skill 或 hook。
- **判断**(需要现场权衡的:查哪层、何时停、信谁的证据、要不要拆)→ 本工作流的对象。
- 判断的识别特征:两个都合理的选项之间选择、依赖上下文的阈值、"什么时候例外"的知识。

## 第 1 步:场景清单(从使用痕迹来,不从记忆来)

**不要问用户"你有什么场景"**——人对自己最高频的判断习以为常,列不出来。从实际痕迹提取:

```bash
ls -lt ~/.claude/skills/ | head -30        # 最近在建/改什么 skill
ls <项目根>/..                              # 活跃项目和 worktree 分布
# 可选:会话历史、memory 文件、git log 近期主题
```

对每个候选场景打两个分(高/中/低):
- **判断密度**:这个场景的质量差异来自判断力还是执行力?
- **现有覆盖**:已有 skill/规则把它流程化到什么程度?

只蒸馏"判断密度高 + 现有覆盖低"的场景。判断密度低的不值得,现有覆盖高的蒸不出增量。把清单和排序展示给用户确认,用户常会砍掉或合并——这一步的讨论本身会暴露真正的痛点。

## 第 2 步:重叠审计(写作前的强制步骤)

⚠️ 这是最容易翻车的一步:蒸馏产出如果和现有规则集(CLAUDE.md、VibeGuard 类规则、既有 skill)重复,就制造了双真实来源,且消耗约束预算。

- 列出目标场景相关的所有现有规则/skill,逐条标注:已覆盖 / 部分覆盖 / 未覆盖。
- 新 skill **只写"未覆盖"栏**;与"部分覆盖"衔接处用一句话引用("X 见规则 Y,本文只补 Z"),不复述原文。
- 在新 skill 的开头声明与现有体系的分工边界。

## 第 3 步:蒸馏写作协议

### 窗口蒸馏(强模型在场)

不要只说"写一套指令"。用**具体场景提问**逼出隐性判断,逐场景问强模型:

- "在这个场景里,你和一个较弱模型的行为差异具体出现在哪个决策点?"
- "你在什么信号下会切换策略/停止/上抛?阈值是多少?"
- "这个场景里最常见的假成功长什么样?你怎么识别?"
- "有哪条你遵守但从没被明说的纪律?"

### 轨迹蒸馏(从已完成的任务提取)

对着轨迹问:这次的关键转折点在哪?当时有哪些备选方向、为什么选了这个?哪一步如果做错整个任务就偏了?失败轨迹同样蒸馏:决策边界在失败里比在成功里更清晰。

### 写作规格

- 每份一个场景,100-150 行,结构:本场景的本质特征 → 关键决策点的判断标准 → 证据/质量纪律 → **场景特有的停止/上抛信号**(必须有,这是弱模型差距最大的地方)。
- 每条判断尽量配**可观察的触发信号或机械检查**("豁免清单超过 5 项 → 重新设计"),纯态度性表述("要谨慎")不许出现。

## 第 4 步:废话检测(发布前的质量门)

蒸馏的头号失败模式是产出**弱模型本来就会写的通用建议**。逐行过三个删除标准:

1. **反转测试**:把这条判断反过来说,是否明显荒谬?"验证要充分"反过来荒谬 → 是废话,删。"从证据密度最高的层开始查,而不是怀疑最大的层"反过来(从怀疑最大的开始)是很多人的真实做法 → 有信息量,留。
2. **新手测试**:一个没做过这类任务的合格工程师,会自己想到这条吗?会 → 删。
3. **可违反测试**:能构造一个具体场景,某人违反了这条且能被指出来吗?不能 → 太抽象,改具体或删。

三关过完通常会删掉 30-50% 的初稿。删不动说明第 3 步提问不够具体,回去重问。

## 第 5 步:验证协议(在目标模型上)

skill 不经真实任务验证就是装饰品。窗口关闭后,在目标模型上:

1. 每个场景挑 1-2 个**真实任务**(不是构造的玩具任务),开头显式加载对应 skill。
2. 验证看的是**可观察行为**,不是产出质量的整体感觉。写 skill 时就为每条关键判断定义行为检查项,例如:
   - 排障 skill → 它有没有在动手前先回答影响面三问?
   - 长时程 skill → 会话结束时有没有主动留接续锚点?
   - 有没有在该停止的信号出现时真的停止上抛?
3. 逐条记录:生效 / 未生效 / 生效但机械化(照念条文没做判断)。
4. **未生效的条目**,先怀疑写得太抽象(改成更机械的触发条件),再怀疑目标模型 instruction-following 上限(改成 hook 强制),最后才删。
5. 迭代 2-3 轮后收敛。"生效但机械化"的条目是正常状态——蒸馏传递的本来就是显式决策规则,不是隐式能力,别追求完美复刻。

## 第 6 步:生命周期

- 每份蒸馏 skill 标注来源和日期("Fable 5 蒸馏,2026-07")——将来更强的模型可用时,同场景**重新蒸馏并对比 diff**,diff 本身能看出模型判断力进化在哪。
- 目标模型换代后重跑第 5 步:新模型可能原生具备某些条目,那些条目删掉(skill 里只留目标模型仍不具备的判断)。
- 与已有的蒸馏手册同场景时,更新旧文件而不是新建。

## 反模式清单

- 让强模型"写一套完整指令体系"一把梭 → 产出泛泛的 8 条通用建议,全是废话检测该删的。
- 跳过重叠审计 → 和现有规则集重复,双真实来源 + 约束预算爆炸。
- 蒸馏流程性知识(部署步骤、查询命令)→ 那是操作 skill 的事,判断手册写这些会又长又没重点。
- 用构造任务验证 → 构造任务天然贴合 skill 条文,测不出真实迁移效果。
- 把"目标模型没完美执行"当成蒸馏失败 → 捕获 60-70% 的显式判断已经是巨大收益,剩下的是模型能力差距不是 skill 问题。