dsh-plugins-in-settings:在设置里管理 DSH 插件

前言

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 误删插件源目录。

典型用法

  1. 按上一节完成安装并完全重启 DSH Desktop。
  2. 打开 设置 → 插件,切换到 「插件管理」 标签页。
  3. 在「添加插件」输入规格(包名、github:… 或本地路径),必要时在下拉中选择安装源,点击安装;预检失败时根据输入框下方提示修改规格。
  4. 在「官方」「已安装」列表中对组合包或插件行启用/停用;需要移除时使用卸载并确认第二次点击。
  5. 若安装卡在构建脚本等步骤,按界面提示处理(例如失败类型中 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜