前言¶
DeepSeek Harness(DSH)的插件能力通常从侧栏「插件」进入:浏览组合包、安装、开关、卸载都在那一页完成。若你更习惯在「设置」里集中改环境,就要在侧栏和设置之间来回切。社区插件 dsh-plugins-in-settings(维护者 Alail691)在 设置 → 插件 官方页上增加 「插件管理」 标签页,把同一套管理能力搬进设置;侧栏原有「插件」入口保持不变,两边互不影响。
这是什么¶
dsh-plugins-in-settings 是 DSH 的客户端类插件:在官方已占用的 设置 → 插件(侧栏文案「内置插件」)里注册一个新标签页(id manage),标题为「插件管理」。列表、安装、组合包与单插件行的开关、卸载均通过宿主公开的 remote.pluginManager 完成,与官方面板同一条远程接口,不是另写一套安装器。
包版本在仓库 package.json 中为 1.0.0,许可证 MIT,运行时要求 Node >= 22。DeepSeek Harness 社区插件目录页:skillhub.cn 上的条目;源码与说明:GitHub 仓库。
核心功能¶
下面介绍安装好之后在界面里能做什么,以及和官方面板的关系。
设置内的「插件管理」标签页¶
在 设置 → 插件 顶部标签栏中,本插件新增 「插件管理」(排在官方「插件列表」等标签之前)。页内能力包括:
- 添加插件:输入包名(如
dsh-xxx)、github:作者/仓库,或本机目录绝对路径;可选安装源后执行安装。 - 浏览官方与已装组合包:区分官方与已安装区块,展示启用状态。
- 开关:可对整个组合包启用/停用,也可对组合包内的单个插件行单独开关。
- 卸载:需二次确认(第一次点变为「确定卸载」,失焦还原),降低误删。
- 刷新:运行中的改动会即时生效;个别插件若需重启,界面会按宿主回报说明处理。
侧栏「插件」入口未移除;本插件是额外入口,任一侧异常不应拖垮另一侧。
与 remote.pluginManager 对齐¶
本插件不重写安装逻辑,数据路径全部走官方同一远程命名空间,例如:
| 用途 | 接口 |
|---|---|
| 列出组合包 | listBundles() |
| 安装前预检 | inspect(spec, { registry }, signal) |
| 安装 | installBundle(spec, { enabled, requestId, registry, approvedBuilds? }) |
| 找回安装结果 | waitForInstall(requestId) |
| 取消安装 | cancelInstall(requestId) |
| 开关组合包 / 单插件行 | setBundleEnabled / setPluginEnabled |
| 卸载 | removeBundle(name) |
安装流程为四步链:填规格 → inspect 预检 → installBundle 实装(默认启用,装完刷新列表)→ 按 application 解读结局(装好、装好但需重启、失败、取消)。安装过程可取消;若响应中途丢失,会用同一 requestId 调用 waitForInstall 追问结果,问不到则显示「结果不明」,不谎报成功。
远程服务通过软探测(ctx.get("remote"))获取;若宿主过旧或方法不全,页面会显示可读说明或禁用「安装」,其余列表与开关尽量保持可用(fail-open)。
实现要点(便于排障)¶
- 宿主侧
lib/index.js:主要为让包进入 cordis 树并完成客户端产物静态核对。 - 客户端
lib/client.js:注册到settings.plugins.tab,手写 React 产物,无第三方依赖、无单独构建步骤。 - 本插件不注册宿主钩子、不注入会话消息、不监听 agent 事件;结构上只占用一个 UI 槽位与若干远端管理方法。
- 安装 DSH Desktop 客户端 bundle 后需完全退出进程再启动 才生效,关窗口不够。
安装与启用¶
任选下面一条路;命令与路径以仓库 README 为准,勿对 desktop profile 使用会被拒绝的 CLI 安装方式。
1. 设置面板安装(推荐)¶
在 设置 → 插件 → 添加插件 中填写以下三者之一:
- 本仓库解压后的本地目录绝对路径
github:Alail691/dsh-plugins-in-settings- npm 包名(发布到 registry 后可用)
安装前请确认来源可信:插件以当前 DSH 进程权限在本机运行,应自行查看源码与许可证。
2. 命令行(仅非 desktop profile)¶
desktop 为 Electron 保留 profile,命令行会报错:profile "desktop" is managed exclusively by the Electron application。非 desktop 时可执行:
dsh plugin --profile tui add link:"<本插件的绝对路径>"
dsh plugin --profile tui add github:Alail691/dsh-plugins-in-settings
3. 脚本(desktop 或设置里没有「插件」面板时)¶
在仓库根目录执行(README 中的 30 秒上手同样依赖此脚本):
.\install.cmd
完全退出并重开 DSH Desktop 后,打开 设置 → 插件 → 顶部「插件管理」。
脚本还支持:
.\install.cmd -Profile tui # 装进别的 profile
.\install.cmd -WhatIf # 预览,不落盘
.\install.cmd -Uninstall # 卸载
脚本会备份 profile 的 package.json、添加 link: 依赖、更新 dsh.profile.bundles、在 node_modules 下建立链接(Windows 为 junction)。卸载可用面板或 install.cmd -Uninstall;若手工建过 junction,Windows 上宜用 cmd /c rmdir <junction>,避免 Remove-Item -Recurse 误删插件源目录。
典型用法¶
- 按上一节完成安装并完全重启 DSH Desktop。
- 打开 设置 → 插件,切换到 「插件管理」 标签页。
- 在「添加插件」输入规格(包名、
github:…或本地路径),必要时在下拉中选择安装源,点击安装;预检失败时根据输入框下方提示修改规格。 - 在「官方」「已安装」列表中对组合包或插件行启用/停用;需要移除时使用卸载并确认第二次点击。
- 若安装卡在构建脚本等步骤,按界面提示处理(例如失败类型中 pnpm 拦截构建脚本时,可按宿主流程「同意并重试」)。
与官方面板相比,README 注明:本插件未实现官方面板对 npm 源并行探测、镜像提示与 localStorage 记忆等行为;安装源默认跟随 pnpm 配置,换源需在下拉中手动选择。也不显示 pnpm 的实时安装输出。
适用场景与注意¶
适合谁
- 希望在 设置 → 插件 一处完成插件浏览、安装、开关与卸载的 DSH Desktop 用户。
- 需要与官方面板同一条
remote.pluginManager路径、又不想维护两套操作习惯的用户。
务必注意
- 插件在本机以 DSH 进程权限运行;安装前检查仓库源码与 MIT 许可证是否满足你的合规要求。
- 依赖官方语义契约(槽位
settings.plugins.tab、remote.pluginManager方法名);官方升级若改动契约,本插件可能静默显示「暂不可用」,仓库提供npm run preflight用于对照真实安装下的官方产物。 listBundles()返回形状由宿主决定;认不出的结构会显示空列表而非猜测。- 社区目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系,不是官方应用商店。
结尾¶
dsh-plugins-in-settings 把侧栏插件管理能力收进 设置 → 插件 的「插件管理」标签,与官方面板共用 remote.pluginManager,侧栏入口仍保留。安装可用设置面板、github:Alail691/dsh-plugins-in-settings、非 desktop 下的 dsh plugin add,或 desktop 下的 install.cmd;启用后需完全重启客户端。
- 目录页:https://www.skillhub.cn/plugins/Alail691/dsh-plugins-in-settings
- GitHub:https://github.com/Alail691/dsh-plugins-in-settings