Bundle
dsh-distillery
dsh 插件:本地蒸馏器——扫描全部历史会话,挖出「用户纠错 → agent 改对」片段,脱敏后蒸馏成微调数据对(JSONL)、技能草稿与 AGENTS.md 规则补丁,带人工审核队列
- Source
- Britneycode
- License
- BSD-3-Clause
- Updated
- Updated 6 days ago
Readme
# 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) - 未脱敏原文只存在于内存中的检测阶段,任何落盘内容都先过脱敏引擎。 ## 开发 ```bash cd 插件目录 DSH_CHECKOUT=/d/App/dsh/deepseek-harness npm run typecheck && npm test && npm run build ``` 测试 40/40(合成语料,不碰真实会话内容)。E2E 探针(对运行中的 web 实例): ```bash 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 草稿自动移除,已审核草稿保留不回撤。
Install
dsh plugin --profile web add github:Britneycode/dsh-distillery
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-distillery from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.