前言¶
DeepSeek Harness(DSH)用组合包管理插件,github: 依赖在安装时会把 commit 写进 profile 的锁文件。上游仓库继续 push 之后,本地不会自动跟上,原生插件页主要负责组合包的启停与安装,也不跟踪第三方 GitHub 依赖的远端变化。
如果你已经用原生「添加插件」装了一批来自 GitHub 的插件,需要知道「有没有新版本、要不要更新」,又不想换掉原生插件页或额外占一个页签,社区维护的 dsh-plugin-manager(维护者 longyi-0x0,分类:客户端)做的是增量补位:不动原生插件页、原生「添加插件」对话框和内置插件配置,只在设置页和组合包详情里补上检测与更新能力。
这是什么¶
DSH 插件管理器(npm 包名 dsh-plugin-manager,当前资料中版本 0.5.0,MIT 许可)只做一件事:列出当前 profile 里来源为 github.com 的已安装组合包,对比锁文件里的本地 commit 与远端 ref,给出「待更新」状态,并支持手动或自动更新。安装 GitHub 插件仍走插件页原生的「添加插件」;本插件不重复实现安装表单,也不使用 plugins.tab 或添加菜单。
目录页:longyi-0x0/dsh-plugin-manager
源码:github.com/longyi-0x0/dsh-plugin-manager
界面插在哪¶
本插件不占插件页 tab,不改原生「已安装插件」列表的行内标签、顶部刷新按钮和标题右侧区域(这些位置没有对应插件插槽)。能力分布在以下插槽:
| 插槽 | 位置 | 内容 |
|---|---|---|
settings.section |
设置页侧栏「插件管理器」 | 自动检测/自动更新开关、全局列表、「待更新」标签、「刷新并检测」、「全部更新」、逐项检查/更新 |
shell.overlay |
任意页面 | 发现更新的「立即更新 / 稍后」弹窗、自动更新结果提示条 |
plugins.detail.badge |
组合包详情页标题旁 | 有更新或检测失败时的状态 |
plugins.detail.actions |
组合包详情页页头 | 「检查 / 更新」按钮 |
plugins.detail.section |
组合包详情页底部 | 来源 spec、本地/远端 commit、最近检查时间与单项操作 |
重启 DSH 后,设置页侧栏会出现「插件管理器」;GitHub 来源的组合包详情页会多出更新相关 UI,原生插件页本身保持不变。
核心功能¶
清单与手动检测、更新¶
打开 设置 → 插件管理器。页面第一次打开时会自动做一次全部检测:从 profile 的 pnpm-lock.yaml 读本地 commit,用 git ls-remote 取远端;不一致即视为有更新。
- 「刷新并检测」:重新读取清单并检查全部 GitHub 来源插件(设置页顶部按钮;原生插件页的刷新没有 hook,不会联动)。
- 「全部更新」:对已检出有更新的项逐个更新;本插件自己排在最后,避免自更新重载打断其他项。
- 单行仍可「检查 / 更新」;有更新的行显示「待更新」标签。
检测只读远端,不改文件;结果只存在宿主内存里,DSH 重启后需要重新检测。
自动检测与自动更新¶
设置页顶部有三个开关,属于当前 profile,写在 profile 目录的 dsh-plugin-manager.json(与 compatibility.json 并列);换 profile 需重新设置。
| 开关 | 开启后 |
|---|---|
| 启动自动检测 | DSH 启动约 3 秒后自动做一次「刷新并检测」 |
| 定时自动检测 | 每小时自动做一次检测 |
| 开启自动更新 | 检测到更新后直接更新;关闭时则弹窗提示 |
关闭自动更新时,任意页面可能弹出「发现插件更新」对话框,可选「稍后」或「立即更新」。开启自动更新时,成功或失败以会自动消失的提示条告知;单个失败不阻塞其它项。设置卡下方展示最近自动检测时间、下次定时检测时间与最近一次结果;定时检测在宿主进程计时,不依赖页面是否打开。
更新判定范围¶
只处理已安装且来源为 GitHub 的组合包,例如 github:owner/repo(可带 #分支或标签)、https://github.com/...、git+https://github.com/...、git@github.com:...。本地 link:、npm 包、其他 Git 主机不在列表内。钉死到 40 位 commit 的 spec 显示「钉住 commit」且不提供更新(本插件自更新后的 pinned spec 例外,仍跟远端默认分支 HEAD 比对)。
更新实现方式¶
更新走 DSH 自带的 pluginManager:对普通插件先 removeBundle 再 installBundle(原 spec, { enabled: 原启用状态 })。自更新不能先卸载更新器,改为用 github:owner/repo#<remote commit> 调 installBundle,由 DSH 在 pnpm 之后 HMR 替换运行中的插件;可能触发重载,无变化时需重启 DSH。
安装与启用¶
产物已提交到 GitHub,安装不需要现场构建。插件以当前 DSH 进程权限运行,安装前请自行查看源码与 MIT 许可证。
macOS / Linux(桌面版也可写 dsh 的完整路径):
dsh plugin --profile desktop add "github:longyi-0x0/dsh-plugin-manager"
Windows 使用桌面版自带 CLI:
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" `
plugin --profile desktop add "github:longyi-0x0/dsh-plugin-manager"
开发仓库本地副本时用 link:(路径换成你的目录):
dsh plugin --profile desktop add "link:/path/to/dsh-plugin-manager"
安装完成后重启 DSH,再进入设置页的「插件管理器」使用。
从 GitHub 安装其它插件仍用原生「添加插件」,例如:
github:owner/repo,可带#分支或标签https://github.com/owner/repohttps://github.com/owner/repo/tree/<分支或标签>git@github.com:owner/repo.git
包检查、pnpm 下载、构建脚本审批、兼容性检查与失败恢复均由原生安装对话框完成。
典型用法¶
- 用原生「添加插件」安装若干
github:组合包,重启或刷新 profile 后确认已启用。 - 打开 设置 → 插件管理器,首次进入会自动检测;或点击 「刷新并检测」 查看「待更新」标签。
- 对单个插件点 检查 / 更新,或一次性 全部更新;若提示需要重启,按 DSH 提示操作。
- 若希望少动手:在设置页打开「启动自动检测」「定时自动检测」;需要静默升级则再打开「开启自动更新」,否则保留弹窗确认。
- 在 组合包详情页 也可查看 commit 对比并执行检查/更新,与设置页列表一致。
宿主在 webServer 上提供 /dsh-plugin-manager/api(仅本机回环同源 POST/GET);远程访问模式下界面会显示不可用。请在主 DSH 窗口使用;guest/无 profile 管理的二级窗口里接口不可用。
适用场景与注意¶
适合:profile 里有多项从 GitHub 安装的 DSH 插件,希望集中看远端是否有新 commit,并在不改动原生插件页的前提下批量或自动更新。
注意:
- 只列 github.com 来源;gitcode、自建 Git、npm、
link:本地依赖不在管理范围内。 - 检测结果不持久化,重启后要重新检测;自动开关写在
dsh-plugin-manager.json,跟着 profile 走。 - 卸载成功而安装失败时组合包可能处于未安装状态,设置页会保留错误信息,可用原生「添加插件」按原 spec 重装。
- bundle patch 的行 id 必须是
dsh-plugin-manager(实现备注);误写成plugin-manager会与内置 profile 管理服务冲突。 - SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;本文事实来自项目 README 与 package 元数据。
结尾¶
dsh-plugin-manager 补的是 DSH 原生插件页未覆盖的一段:GitHub 锁 commit 与远端 HEAD/分支的差异。安装仍用原生入口,管理集中在设置页「插件管理器」与组合包详情,可选启动/定时检测与自动更新。
- 目录页:https://www.skillhub.cn/plugins/longyi-0x0/dsh-plugin-manager
- GitHub:https://github.com/longyi-0x0/dsh-plugin-manager