Skip to content
dsh.fish
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

  • 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.
Source