前言¶
DSH 的理念是「一切皆插件」。插件多起来之后,常见操作会分散到命令行和配置文件里:安装插件、停止某个插件、查看 README、检查版本、处理启动失败。dsh-plugin-butler 把这些动作集中到 DSH Web UI 的「设置 → 插件」中,提供一个「插件管理」标签页。
这是什么¶
imtanhui/dsh-plugin-butler 是一个 DSH 插件,定位为插件管家:在 Web UI 中图形化管理 DeepSeek Harness (DSH) 插件。许可证为 MIT。本文参考的 package.json 版本为 0.6.0,要求 Node >=18,react ^18.2.0 是 optional peerDependency。它强调零构建、零运行时依赖。
核心功能¶
查看与中文目录¶
- 官方 / 外部两类分组,可折叠。
- 内置 130+ 官方模块的中文目录,包含中文名、一句说明和分类。
- 中文目录 / 分组 / 说明覆盖会存到
~/.dsh/plugin-manager/{catalog.json,groups.json}。
实时启停与健康状态¶
- 启停会精确编辑 profile 的
cordis.patch.yml,增删disabled: true块。 - 编辑后由 DSH 的 HMR 观察器热应用,无需重启。
- 失败行红色高亮,支持「只看失败」筛选。
- 每行展开后可查看注入的服务 / 提供方依赖。
自定义分组¶
- 外部插件可按分组组织,支持新建 / 重命名 / 删除 / 移动。
- 分组持久化到
~/.dsh/plugin-manager/groups.json。 - 支持一键过滤。
更新检测与一键更新¶
「检查更新」会对比 registry latest,有新版的行会显示 当前 → 最新。
「更新」会执行类似下面的安装命令:
pnpm add <name>@latest
更新失败时自动回滚旧版本。link / file / git 源的依赖标记为不可自动更新。
卸载¶
卸载会从 dsh.profile.bundles 移除,并执行:
pnpm remove
失败时自动回滚。更新 / 安装 / 卸载链路整体串行互斥。
插件详情¶
- 插件详情弹窗会显示 Markdown README。
- README 渲染使用插件内置的手写渲染器,零依赖。
插件市场¶
- 检索 GitHub
topic:dsh-plugin仓库,按 star 排序并分页。 - 每项显示作者 / star / 简介,支持「详情」和「一键安装」。
- 市场依赖 GitHub Search API;未认证时存在 60 次/小时限流,主要影响频繁搜索。
- 该市场检索独立 GitHub 仓库,不等同于 DeepSeek 或幻方官方应用商店。
依赖关系图¶
- 全屏依赖图,采用从左到右的思维导图布局。
- 节点显示项目名,悬停显示详情;官方节点为蓝点,外部节点为黑点。
- 支持拖拽节点、悬停高亮上下游。
- 依赖解析基于运行时
fiber._store尽力完成,语义级冲突不在检测范围。
安装与启用¶
下面先安装插件,再重启 profile 让标签页生效。
1、从 GitHub 安装:
dsh plugin --profile <name> add github:imtanhui/dsh-plugin-butler
这条命令把 dsh-plugin-butler 添加到指定 profile。
2、本地源码安装(开发调试):
cd /path/to/dsh-plugin-butler
dsh plugin --profile <name> add .
适合先阅读源码或做本地调试。
3、重启 profile:
重启后,Web UI 的「设置 → 插件」会出现「插件管理」标签页。
典型用法¶
检查更新¶
1、打开「设置 → 插件 → 插件管理」。
2、点「检查更新」。
3、插件会对比每个已装 npm 依赖的 registry latest,有新版的行会显示 当前 → 最新。
4、点对应行的「更新」。
5、如果更新失败,会回滚到上一版本。
本地开发¶
pnpm run check
pnpm test
pnpm run check 用于检查源文件语法,pnpm test 用于运行测试。
适用场景与注意¶
适合经常安装、更新、启停 DSH 插件的开发者,尤其是希望在一个界面里查看版本、README、依赖关系和失败状态的维护场景。
使用前建议检查:
- 插件以当前 DSH 进程权限运行;安装前应检查源码、许可证、依赖和实际执行的命令。
- 禁用被依赖的条目可能导致 profile 启动失败,官方为 fail-loud 设计;恢复时可手动删除该 profile
cordis.patch.yml里的disabled块。 - 核心行受保护,不能从 UI 禁用,需要手工改配置文件。
!!js表达式控制的行 UI 不处理,须手工编辑。link / file / git源的依赖不可自动更新。- 市场搜索受 GitHub Search API 未认证限流影响。
- 依赖图基于运行时
fiber._store尽力解析,语义级冲突不在检测范围。 - GET 请求带同源校验,用于防 CSRF / DNS-rebinding。
链接¶
- GitHub:https://github.com/imtanhui/dsh-plugin-butler
- 目录页:本文资料未提供可直接引用的目录页 URL;请以实际 DSH 社区目录站点为准。