dsh-distillery
dsh 插件:本地蒸馏器——扫历史会话挖「用户纠错 → 改对」片段,脱敏后蒸馏成微调 JSONL / SKILL.md 技能草稿 / AGENTS.md 规则补丁,带人工审核队列
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 30, 2026
- Updated
- Aug 30, 2026
Introduction
dsh-distillery — 本地蒸馏器
把全部历史会话当原材料的本地蒸馏插件:专挖「用户纠错 → agent 改对」的片段, 脱敏后蒸馏成三种可复用资产,全部经人工审核队列把关。云端 agent 永远做不了这件事—— 原材料锁在你自己的磁盘上。
它做什么
历史会话(~/.dsh/sessions/**/*.jsonl.zstd,只读)
↓ 时间线重建(人类消息 / 助手回应 / 中断标记)
↓ 纠错检测(中英词库 + 成功信号,纯规则可解释,零 LLM 调用、零网络)
↓ 隐私脱敏(未脱敏内容绝不落盘)
↓ 人工审核队列(设置页「蒸馏器」面板)
├─ ① 微调数据对 SFT chat JSONL(recovery 四消息轨迹 / correction 两消息)+ DPO(chosen=修正 / rejected=错误输出)
├─ ② 技能草稿 同主题纠错聚类 → SKILL.md 草稿(人工润色后启用)
└─ ③ 规则补丁 AGENTS.md 规则条目草稿(可一键追加进 ~/.dsh/AGENTS.md,带标记块与逐条去重)
成功判定:纠错消息之后助手必须给出有实质内容的修复输出;下一条用户消息再次纠错 → 连续失败(扣分过滤);确认「好了/可以了/works now」→ 加分;会话就此结束无新抱怨 → 中性加分。每条带置信度与可解释的命中理由。
隐私脱敏(17 类内置规则,逐条计数随条目落盘):私钥块、JWT、sk-/ghp_/AKIA/xox 密钥、 Bearer 令牌、URL 凭据、secret 赋值、邮箱、手机号、身份证、公网 IP(回环/内网默认保留)、 哈希、用户路径用户名遮蔽……支持配置追加自定义正则。扫描状态文件与队列里只有脱敏后内容。
使用
- 面板:设置页「蒸馏器」(order 63)→ 开始扫描 → 逐条预览(此前要求 / 被纠正的输出 / 用户纠正 / 修正后,均带脱敏徽章)→ 通过/驳回 → 导出。
- agent 工具:
distillery_scan/distillery_status/distillery_list/distillery_decide/distillery_export。 - 规则补丁落盘:批准规则条目后点「追加到 AGENTS.md」,或
POST /distillery/api/rules/append-global。 追加区带dsh-distillery:begin/end标记,删除这对标记即可整体移除;重复追加按条目 id 自动去重。
配置
| 键 | 默认 | 说明 |
|---|---|---|
minConfidence | 0.55 | 最低置信度;调低(如 0.4)召回更多边缘片段 |
maxEvidenceChars | 1200 | 每个证据字段截断长度 |
minClusterSize | 2 | 同类纠错至少几次才生成技能/规则草稿 |
pairFormat | recovery | SFT 导出格式:recovery / correction |
extraRedactPatterns | [] | 追加自定义脱敏正则(JS 语法字符串) |
redactLocalIps | false | 是否连回环/内网 IP 也脱敏 |
数据位置
- 队列与扫描状态:
~/.dsh/distillery/queue.json(原子写;损坏自动改名保留现场) - 导出文件:
~/.dsh/distillery/exports/(SFT/DPO JSONL、SKILL.md、规则补丁 md) - 未脱敏原文只存在于内存中的检测阶段,任何落盘内容都先过脱敏引擎。
开发
cd 插件目录
DSH_CHECKOUT=/d/App/dsh/deepseek-harness npm run typecheck && npm test && npm run build
测试 40/40(合成语料,不碰真实会话内容)。E2E 探针(对运行中的 web 实例):
node scripts/verify-distillery.mjs --base http://127.0.0.1:3080 --token <启动token>
# token 在 ~/.dsh/update-center/dsh-web.stdout.log;探针只输出计数与路径,不打印会话内容
边界与诚实声明
- 检测/聚类/草稿生成全是确定性规则:技能与规则草稿是模板化生成的(引用真实脱敏片段), 面板与文件里都明确标注「需人工润色」,不是 LLM 撰写的成品。
- 插件消息(kind=plugin)不参与检测;子 agent 会话可能带来少量噪音,靠置信度阈值过滤。
- 重新扫描按会话指纹(mtime:size)增量跳过;队列按条目 id 去重,更新时保留人工审核状态。
- 技能/规则草稿按全量 pair 重算:消失的 pending 草稿自动移除,已审核草稿保留不回撤。