dsh-unplug

让 DeepSeek Harness(dsh)的插件装得容易、拔得干净——所有插件都能插拔自如。
Plug/unplug any DeepSeek Harness plugin cleanly. 简体中文 · English
中文说明
为什么需要它? 官方 dsh plugin remove 只处理 profile 里 dsh.profile.bundles 列表中的 bundle:
- 不会清理 profile/home 的
cordis.patch.yml 里残留的插件行
- 没有"禁用但保留配置"的能力(插拔自如)
- 没有审计接口,拔完也不知道有没有残留
dsh-unplug 补上这三个缺口。
快速开始
dsh plugin add dsh-unplug
命令行
dsh-unplug list
dsh-unplug remove <插件> --yes
dsh-unplug disable <插件>
dsh-unplug enable <插件>
dsh-unplug audit
dsh-unplug reconcile --yes
选项:--profile <名>(默认 default)、--home <路径>、--json、--yes。
Agent 可调用工具
安装后 agent 获得 unplug 工具:
list / audit — 只读,任何时候可用
remove / reconcile — 需要 force: true 显式确认
disable / enable — 可逆操作,无需确认
返回 dsh-unplug/v1 报告。
工作原理
- bundle 列表(
dsh.profile.bundles)— 移出列表 + pnpm remove
- 禁用列表(
dsh.profile.disabledBundles)— 在 bundles/disabled 之间移动
- profile 的
cordis.patch.yml — 删除插件行或切换 disabled: true
- home 的
cordis.patch.yml — 同上
- 孤立/悬空状态 — audit 发现,reconcile 修复
安全
默认只读;remove / reconcile 需要显式 --yes(CLI)或 force: true(工具)。
English
Why? The official dsh plugin remove only handles bundles in the profile's
dsh.profile.bundles list. It does not:
- Remove patch rows from
cordis.patch.yml (profile or home level)
- Disable/enable without deleting
- Audit for orphaned rows or dangling bundle references
dsh-unplug fills all three gaps.
Quick start
dsh plugin add dsh-unplug
CLI
dsh-unplug list
dsh-unplug remove <plugin> --yes
dsh-unplug disable <plugin>
dsh-unplug enable <plugin>
dsh-unplug audit
dsh-unplug reconcile --yes
Options: --profile <name> (default: default), --home <path>, --json, --yes.
Agent-callable tool
Once installed, the agent gains the unplug tool:
list / audit — always allowed (read-only)
remove / reconcile — require force: true
disable / enable — reversible, no confirmation needed
Returns a dsh-unplug/v1 report.
How it works
- Bundle list (
dsh.profile.bundles) — remove entry + pnpm remove
- Disabled list (
dsh.profile.disabledBundles) — move between bundles/disabled lists
- Profile
cordis.patch.yml — delete entry or toggle disabled: true
- Home
cordis.patch.yml — same as above
- Orphaned rows — detect via audit, fix via reconcile
Security
Read-only by default; remove / reconcile require explicit --yes (CLI) or force: true (tool).
License
MIT