dsh-distillery
开发工具 活跃维护

dsh-distillery

Britneycode/dsh-distillery

脱敏蒸馏历史会话中用户纠错改对片段,自动生成微调JSONL数据、SKILL.md技能草稿及AGENTS.md规则补丁,配备人工审核队列确保输出质量。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
None
开源协议
58 KB
仓库大小
22 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:Britneycode/dsh-distillery
git clone https://github.com/Britneycode/dsh-distillery.git
git clone git@github.com:Britneycode/dsh-distillery.git
README.md main

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 草稿自动移除,已审核草稿保留不回撤。