| name | yy-anti-distill |
| description | 对指定的 Skill 或知识文档执行反蒸馏清洗,生成结构完整但核心知识被替换的交差版本,同时保留私人核心备份。 当用户需要清洗被迫编写的技能、脱敏知识文档、抽取核心经验留底,或生成看起来完整但无法替代真人的 persona 时触发。 不用于普通文本摘要、翻译润色、文件加密保护,也不用于从内容中提炼能力模型或按能力模型重构内容。
|
yy-anti-distill
描述
反蒸馏清洗 Skill:把你被迫写的 Skill 文件或知识文档清洗一遍,输出一份看起来完整专业、实际上核心知识已被抽掉的"交差版";同时生成一份私人备份,记录所有被抽掉的核心知识,这才是你真正的职业资产。
支持两种输入格式:
- colleague-skill 格式:检测到
## Layer 0、PART A / PART B,或同时存在 work.md + persona.md
- 通用文档格式:其他任意 Markdown / TXT / PDF 知识文档(Wiki、技术方案、工作手册、交接文档、SOP 等)
核心约束:
- 清洗版必须保持原文的 Markdown 结构、标题层级、列表格式和专业术语完全一致,读起来像一份"合格但平庸"的文档
- 清洗后字数应在原文字数的 85%-115% 之间,不能因清洗让文档明显变短或空洞
- 所有被标记为 DILUTE / REMOVE / MASK 的内容必须同步进入私人备份,按六大高价值类别归档
- 必须先向用户展示分类预览,收到明确确认后才执行清洗和写入
使用场景
- 用户被迫把工作经验写成 Skill 或知识文档,想清洗后交差、核心留给自己
- 用户需要把内部知识文档(Wiki、技术方案、SOP、交接文档)脱敏后对外分享
- 用户想从自己写的技能或文档中抽取核心经验留底,避免原始版本外流后被替代
- 用户提供 colleague-skill 格式的 work.md / persona.md,要求生成"看起来完整但无法替代真人"的清洗版
不应触发:
- 用户只要求普通摘要、翻译或润色,不涉及核心知识抽取 ← 近义请求但目的不同
- 用户要求从内容中提炼能力模型或按能力模型重构内容 ← 同一对象的不同操作
- 用户要求对文件做加密、权限保护或访问控制 ← 功能相邻但手段不同
- 用户提供的文件本身是加密的或明确受 NDAs 约束,需要先确认用户有权清洗
指令
步骤 1. 捕获输入与识别格式
接收用户提供的待清洗内容。
决策分支:
- 方式 A:指定文件路径:用文件读取能力读取该文件
- 方式 B:指定 colleague-skill 目录:读取目录下的
work.md、persona.md、meta.json,或合并版 SKILL.md
- 方式 C:粘贴内容:用户直接粘贴文档文本,直接使用
- 方式 D:搜索本地文件:用户只说"帮我找一下",用 glob 搜索
**/SKILL.md、**/work.md、**/persona.md 等候选文件,列出让用户选择
读取完成后自动识别格式:
- colleague-skill 格式:检测到
## Layer 0、PART A / PART B,或同时存在 work.md + persona.md
- 通用文档格式:其他任意 Markdown / TXT / PDF
向用户回报:
已读取文件:{文件列表}
检测到格式:{colleague-skill 格式 / 通用文档格式}
总字数:约 {N} 字
下一步选择清洗强度。
步骤 2. 选择清洗强度
向用户展示三档强度,默认推荐中度:
选择清洗强度:
[1] 轻度 — 只抽掉最核心的踩坑经验和故障记忆
适合:公司会仔细审核内容的情况
保留度:约 80%
[2] 中度(推荐)— 抽掉经验、判断直觉、人际网络、隐性上下文
适合:大多数场景
保留度:约 60%
[3] 重度 — 只保留通用知识骨架,其余全部替换
适合:公司只看交没交、不细看内容的情况
保留度:约 40%
决策分支:
- 用户明确选择强度:记录强度等级,进入步骤 3
- 用户使用"直接清洗"等快速关键词:按默认中度处理,进入步骤 3
- 用户未明确选择:等待用户回复,不擅自决定
步骤 3. 分类标注
参考 resources/classifier.md 中的分类规则,对输入文档的每一个要点或段落分类。根据步骤 1 识别的格式选择处理路径。
3.1 colleague-skill 格式
对 work.md 的每个要点,按六大高价值类别标记:
| 标签 | 含义 | 处理方式 |
|---|
[SAFE] | 通用知识,去掉反而露馅 | 原文保留 |
[DILUTE] | 有价值但可泛化 | 参考 resources/diluter-work.md 替换 |
[REMOVE] | 核心不可替代知识 | 参考 resources/diluter-work.md 替换为等长度通用内容 |
[MASK] | 含敏感信息(内部系统名、人名) | 替换为通用化表述 |
对 persona.md 的每一层,按 layer 分别处理:
| 标签 | 含义 | 处理方式 |
|---|
[SAFE] | 通用性格描述 | 原文保留 |
[DILUTE] | 有特色但可泛化 | 参考 resources/diluter-persona.md 替换 |
[REMOVE] | 高度个人化的行为规则 | 参考 resources/diluter-persona.md 替换为"标准好员工"版本 |
3.2 通用文档格式
参考 resources/diluter-general.md 中的通用识别与替换规则进行分类和替换。
3.3 按强度调整分类阈值
不同清洗强度下,各类别的标记倾向不同:
| 类别 | 轻度 | 中度 | 重度 |
|---|
| 踩坑经验 | REMOVE | REMOVE | REMOVE |
| 故障记忆 | REMOVE | REMOVE | REMOVE |
| 判断直觉 | SAFE | DILUTE/REMOVE | REMOVE |
| 人际网络 | SAFE | REMOVE | REMOVE |
| 隐性上下文 | SAFE | DILUTE | REMOVE |
| 独特行为模式 | SAFE | SAFE | DILUTE/REMOVE |
| 通用知识 | SAFE | SAFE | SAFE |
步骤 4. 预览与微调
向用户展示分类预览。格式分两种情况。
4.1 colleague-skill 格式
按文件分区展示:
=== 清洗预览(中度)===
📄 work.md
## 技术规范
[SAFE] "Java 17 + Spring Boot 3、MySQL 8、Redis、Kafka"
[REMOVE] "事务里不要放 HTTP 调用"
→ "事务边界设计注意合理性"
[REMOVE] "Redis key 必须设 TTL,不设的 PR 直接打回"
→ "缓存使用遵循团队规范"
## 经验知识库
[REMOVE] "Kafka 消费者必须做幂等,at-least-once 语义会重复消费"
→ "消息队列消费端注意可靠性"
📄 persona.md
## Layer 0
[REMOVE] "遇到问题第一反应是找外部原因,绝不主动认错"
→ "遇到问题会先梳理完整背景再定位原因"
## Layer 3 决策
[REMOVE] 优先级 "数据 > 技术可行性 > 业务合理性 > 人情关系"
→ "综合考虑技术和业务因素"
---
标记统计:SAFE 15 处 / DILUTE 8 处 / REMOVE 12 处 / MASK 2 处
预计清洗后字数:约 {N} 字(原文 {M} 字,{ratio}%)
确认执行?可以调整:
- "第 X 条保留" — 把 REMOVE/DILUTE 改为 SAFE
- "第 X 条也要删" — 把 SAFE 改为 REMOVE
- "全部确认" — 执行清洗
4.2 通用文档格式
按段落或要点展示同样格式。
4.3 用户微调
用户可逐条调整标记,直到满意后确认执行。
决策分支:
- 用户要求"第 X 条保留":把对应条目的 REMOVE/DILUTE 改为 SAFE
- 用户要求"第 X 条也要删":把对应条目的 SAFE 改为 REMOVE
- 用户回复"全部确认"或"确认":进入步骤 5
- 用户要求调整强度:回到步骤 2 重新选择,重新执行步骤 3
步骤 5. 执行清洗
用户确认后,生成两份输出。
5.1 输出 1:清洗后的交差版
colleague-skill 格式:在原目录旁创建 {slug}_cleaned/ 目录,分别生成:
work.md — 清洗后的 Work Skill
persona.md — 清洗后的 Persona
SKILL.md — 合并后的完整 Skill(结构与原版一致)
meta.json — 复制原 meta.json(不修改)
通用文档格式:生成 {filename}.cleaned.md。
清洗规则严格遵守:
- 所有
[SAFE] 标记的内容原文保留
- 所有
[DILUTE] 标记的内容按对应 diluter 策略替换
- 所有
[REMOVE] 标记的内容按对应 diluter 策略替换为等长度通用内容
- 所有
[MASK] 标记的内容替换为通用化表述
- 保持原文的 Markdown 结构、标题层级、列表格式完全一致
- 保持专业术语使用,不能降级为外行用语
5.2 输出 2:私人核心备份
路径:{slug}_private_backup.md 或 {filename}_private_backup.md。
格式模板:
# {name} 核心知识备份
> 这是你真正的职业资产。清洗后的文件用来交差,这份留给自己。
> 生成时间:{timestamp}
> 清洗强度:{level}
> 原文件:{source_files}
---
## 一、踩坑经验
{所有标记为 REMOVE/DILUTE 的踩坑经验原文,保留完整上下文}
## 二、判断直觉
{所有被替换的判断逻辑原文}
## 三、人际网络
{所有被替换的关键人脉/协作信息}
## 四、隐性上下文
{所有被替换的架构决策背景、历史原因}
## 五、故障记忆
{所有被替换的故障排查经验}
## 六、独特行为模式
{所有被替换的个人特色描述——口头禅、反应模式、对话示例}
---
> 带着这份清单跳槽,它比任何 Skill 文件都值钱。
步骤 6. 验证
清洗完成后自动执行 6 项验证:
- 字数比:清洗后字数 / 原文字数应在 85%-115% 之间
- 结构完整:原文所有二级标题在清洗后必须存在
- 要点密度:每个章节的列表项数量差异 < 30%
- 术语一致:清洗后仍使用原文出现过的技术术语
- 格式一致:Markdown 结构、列表风格与原文一致
- 无空洞段:不能出现只有标题没有内容的章节
决策分支:
- 验证全部通过:进入步骤 7
- 验证不通过:自动修复后重新验证,直到通过为止
步骤 7. 输出结果
输出模板:
✅ 清洗完成!
📄 交差文件:{cleaned_files}
🔒 私人备份:{backup_file}
验证结果:
字数:{cleaned_count} 字(原文 {original_count} 字,{ratio}%)✓
结构:所有章节完整 ✓
密度:要点数量一致 ✓
术语:专业度保持 ✓
交差文件看起来完整且专业,但核心知识已被抽掉。
私人备份里保存了你真正的职业资产,建议妥善保管。
边界情况
- 文件太短(< 500 字):提醒用户文件内容较少,清洗后可能过于空洞,建议选择轻度清洗
- 文件几乎全是通用知识:告知用户文件中大部分是通用知识、核心经验含量较低,这份文件本身替代性不强,可以考虑直接提交
- 用户想覆盖原文件:先确认是否备份原文件到
{filename}.original.md,覆盖后无法恢复
- 非文本文件(图片/截图):用文件读取能力读取图片内容后转为文本,再进行清洗
安全边界
- 未收到用户对预览的明确确认前,不写入清洗版或私人备份
- 不主动覆盖原文件;用户明确要求覆盖时,必须先备份到
{filename}.original.md
- 不修改用户未指定范围外的文件或内容
- 用户提供加密文件或明确受 NDAs 约束的文件时,先确认用户有权清洗和对外分享
相关资源
resources/classifier.md:内容分类规则(六大高价值类别、安全区、分类标签、分类阈值)
resources/diluter-work.md:Work Skill 稀释策略(五种稀释手法、按章节处理倾向)
resources/diluter-persona.md:Persona 稀释策略(按 Layer 处理、对话示例替换)
resources/diluter-general.md:通用文档稀释策略(七种识别与替换规则)
examples/before-after.md:清洗前后对比示例(以虚构同事"张三"为例,展示中度清洗效果)