Skip to content
dsh.fish
Bundle

dsh-unplug

Plug/unplug any DeepSeek Harness plugin cleanly: list every mounted layer, disable/enable without deleting, remove bundles + patch rows + dependencies in one pass, and audit for orphaned/dangling plugin state. Zero runtime dependencies; read-only by defau

Updated
Updated 19 days ago

Readme

# dsh-unplug

让 DeepSeek Harness(dsh)的插件**装得容易、拔得干净**。

**为什么需要它?** 官方 `dsh plugin remove` 只处理 profile 里 `dsh.profile.bundles` 列表中的 bundle:

- 不会清理 profile/home 的 `cordis.patch.yml` 里残留的插件行
- 没有"禁用但保留配置"的能力(插拔自如)
- 没有审计接口,拔完也不知道有没有残留

`dsh-unplug` 补上这三个缺口。

## 快速开始

```sh
dsh plugin add dsh-unplug
```

## 命令行

```sh
dsh-unplug list                         # 列出所有已挂载插件(bundles + 补丁行)
dsh-unplug remove <插件> --yes          # 完整卸载(bundle + 补丁行 + 依赖)
dsh-unplug disable <插件>               # 禁用但不删除(保留依赖,可随时启用)
dsh-unplug enable <插件>                # 重新启用
dsh-unplug audit                        # 检测孤立行 / 悬空 bundle
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`(工具)。

## License

MIT

Install

dsh plugin --profile web add dsh-unplug@0.3.5

Profile: web

Source