前言¶
DeepSeek Harness(dsh)把运行时拆成可叠加的插件层:工具、会话、沙箱、UI 都可以做成 bundle,装进某个 Profile,下次启动再按层合成。官方仓库把这件事概括成「一切皆插件」。对使用者来说,改能力往往不是去改 Harness 源码,而是选、换、装一层配置。
真正动手时,发现和安装社区插件仍然比较散。官方建议给仓库加上 GitHub Topic dsh-plugin 方便检索;安装则走 dsh plugin add,由 CLI 在 Profile 目录里转发给 pnpm。命令本身不复杂,麻烦在后面几步:这个仓库是不是声明了 dsh.bundle.patch、该不该固定到某个 commit、有没有现成的 Release 安装包、装完要不要重启、以及装到哪个 Web Profile。社区里已经有独立的插件目录站,也有人做了命令行市场;它们能减轻检索成本,但多数还是要把人带回终端。
Toukaiteio 维护的 dsh-plugin-installer 走的是另一条路:在官方 Web UI 的「设置 → 插件」里增加「插件市场」标签页,把发现、校验、安装、更新和 Profile 切换留在同一个界面里。下面按社区目录页、GitHub README / package.json 以及 DeepSeek Harness 官方文档核对后的内容,说明它是什么、能做什么、怎么装、怎么用。
这是什么¶
dsh-plugin-installer 是一款面向 DeepSeek Harness 的界面增强插件,由 Toukaiteio 维护,许可证为 MIT,主要语言是 JavaScript。社区目录页的定位是「市场插件:快速把 DeepSeek Harness 接入 GitHub 插件生态」;仓库 README 写得更具体:它是内置于 Web UI 的插件市场,同时也是 Web Profile 切换工具。
它解决的不是「再写一个插件」,而是这几件日常操作:
- 从 GitHub 的
dsh-plugin、dshTopic 浏览候选仓库 - 安装前确认仓库根目录
package.json声明了dsh.bundle.patch - 优先用 GitHub Release 里已经构建好的
.tgz,并在有摘要时做 SHA-256 校验 - 把插件装进选定的 Profile,并在页面里更新或删除
- 打开、创建其他 Web Profile,不必离开当前界面
截至本文写作时(2026-08-18),社区目录页与 GitHub 仓库均显示 6 颗星。最新稳定版是 v0.2.0(2026-08-16 发布),package.json 中的版本号与之一致。需要说明的是:社区插件目录是独立站点,和 DeepSeek / 幻方没有官方从属关系,不能把它理解成官方应用商店;这个安装器本身也是社区插件,不是 Harness 内置功能。
核心功能¶
从 GitHub Topic 发现,而不是维护私有索引¶
插件市场在线检索 GitHub 上带 dsh-plugin 和 dsh Topic 的仓库,并自动排除 DeepSeek Harness 本体仓库,避免把宿主程序当成插件列出来。列表支持两种 GitHub 官方支持的仓库排序:按更新时间和按星标数。接近列表底部时会预取下一页,形成无限滚动。
README 把 Topic 的含义写得很明确:它只是发现信号,不代表安全审核,也不代表官方背书。仓库出现在列表里,只说明它打了相应标签,不说明代码已经被审查过。
为了降低 GitHub API 压力,搜索结果会按「搜索词 + 排序方式 + 页码」在服务端和客户端各缓存十二分钟。匿名额度用尽时,可以在同一标签页的「GitHub 请求设置」里粘贴 Token;无人值守场景也可以用服务端环境变量 GITHUB_TOKEN 作为后备。
安装前先确认这是 DSH bundle¶
用户点击安装后,host 端按 README 记载的顺序处理:
- 读取仓库元数据和最新 GitHub Release
- 读取根目录
package.json - 要求存在有效的
dsh.bundle.patch声明 - 优先使用 Release 中与版本匹配的
<包名>-<版本>.tgz;GitHub 提供摘要时校验内容,并把归档保存在DSH_HOME/plugin-archives/后再安装 - 没有合适 Release 时,仅在确认该提交里确实存在包所声明的 JavaScript 入口后,才允许固定 commit 的源码安装
这和 DeepSeek Harness 官方发布文档是对齐的:没有 dsh.bundle 声明的包可以当成普通依赖装上,但不会成为 Profile 的一层;从 Git 安装拿到的是源码而不是构建产物,TypeScript 包如果没提交 lib/,加载会失败。这个安装器选择「有 Release 就装构建包;源码回退必须能看到入口文件」,并且源码路径如果还需要跑 prepare,必须针对该插件再确认一次。既没有可用 Release、也没有可验证入口时,市场会拒绝安装并说明原因。
装完之后可以更新、删除,也可以先管自己¶
「已安装插件」区域对应当前选定的 Profile。页面打开时,会优先把市场安装的插件和仓库最新 Release 比较;没有 Release 时再比较源码提交。页面上的状态包括:
- 有可用更新:下载并安装经过验证的最新 Release 安装包
- 已是最新:已安装包版本与最新 Release 版本一致
- 暂无法检查更新:Release 和源码状态都核对不上时的保守提示,不会在比较失败时声称「有更新」
- 删除:确认后再调用 DSH 自己的
plugin remove,让 Profile 的 bundle 清单和实际包状态一致
从 v0.2.0 起,打开插件市场时还会检查安装器自身有没有新的稳定 Release。一键更新只作用于当前 Profile,重启后生效;重启前旧构建继续提供服务,其他 Profile 不受影响。
文案和仓库日期格式会跟随 DSH「设置 → 通用设置 → 语言」。安装到当前 Web Profile 后,页面会提示重启,并提供「立即重启 DSH」:先拉起新进程,确认新地址可用再跳转,然后关掉旧进程。
在同一页切换 Web Profile¶
除了装插件,这个界面还提供 Profile 相关操作:
- 打开 Profile:在新的本地端口启动所选 Web Profile,再跳转到新地址;当前进程暂时保留,切换失败时不丢掉当前会话
- 创建并打开:初始化一个包含官方 Web bundle 和本插件的新 Profile,然后打开
README 同时记录了一个上游限制:当前 DSH 预览版里,npm 包 @deepseek-ai/dsh-web-app 可能依赖仓库中不存在的 @deepseek-ai/dsh-frontend。遇到这种情况时,创建全新 Web Profile 会被上游包阻断,已经能正常运行的 Web Profile 不受影响。这是 Harness 预览版的打包问题,不是安装器自己能绕开的。
安装与启用¶
环境要求以仓库 README 和 package.json 为准:
- Node.js
>=22.19.0 - pnpm
>=10 - DeepSeek Harness
0.1.0-rc.6或兼容版本 - 一个已经能打开的 DSH Web Profile(应用内界面挂在 Web UI 上)
社区目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行即可:
dsh plugin add github:Toukaiteio/dsh-plugin-installer
如需可复现安装,目录页建议固定 commit:
dsh plugin add github:Toukaiteio/dsh-plugin-installer#commit
把上面的 commit 换成实际的 40 位哈希。仓库 README 更明确地要求装进正在使用的 Web Profile,并从 GitHub 指定提交安装时仓库里必须已经包含构建后的 lib/:
dsh plugin --profile web add github:Toukaiteio/dsh-plugin-installer#<commit>
dsh web
如果希望直接用已经构建好的安装包,可以从 GitHub Releases 下载最新稳定版 .tgz(当前为 dsh-plugin-installer-0.2.0.tgz),再加入 Web Profile:
dsh plugin --profile web add ./dsh-plugin-installer-0.2.0.tgz
dsh web
Windows 也可以用仓库提供的 PowerShell 一键脚本:下载最新稳定 Release,在 GitHub 提供 SHA-256 摘要时校验,把归档留在 DSH_HOME/plugin-archives/dsh-plugin-installer/,安装到 web Profile 并启动 DSH Web:
irm https://raw.githubusercontent.com/Toukaiteio/dsh-plugin-installer/main/scripts/Install-DshPluginInstaller.ps1 | iex
指定其他 Profile、或不自动启动 Web 时,先下载脚本再传参数:
$script = "$env:TEMP\Install-DshPluginInstaller.ps1"
Invoke-WebRequest https://raw.githubusercontent.com/Toukaiteio/dsh-plugin-installer/main/scripts/Install-DshPluginInstaller.ps1 -OutFile $script
& $script -Profile work -NoStart
macOS 和 Linux 对应的是 Bash 脚本,流程与 Windows 相同,额外需要 bash、curl 和 Node.js:
curl --fail --location --remote-name https://raw.githubusercontent.com/Toukaiteio/dsh-plugin-installer/main/scripts/install-dsh-plugin-installer.sh
bash ./install-dsh-plugin-installer.sh
指定 Profile 或只安装不启动:
bash ./install-dsh-plugin-installer.sh --profile work --no-start
Web UI 起来之后,打开 设置 → 插件 → 插件市场。
典型用法¶
下面的步骤来自仓库中的 SKILL.md 和中文 README,可以按界面直接做。
- 确认当前是一个正在运行的 Web Profile,进入 设置 → 插件 → 插件市场。
- 在在线列表里按更新时间或星标浏览,或输入搜索词过滤。
- 选中仓库后先看审查结果,确认它被识别为 DSH bundle,再执行安装。目标 Profile 要在安装前选好。
- 如果审查提示存在
prepare脚本,说明安装阶段会执行第三方代码。不要在没有明确确认的情况下放行构建权限。 - 安装到当前 Web Profile 后,使用 立即重启 DSH,让新的 bundle 叠加层生效。
- 之后可在「已安装插件」里查看更新状态,需要时更新或删除。
GitHub 匿名请求被限流时,展开同一标签页里的 GitHub 请求设置,粘贴 Token 并保存。保存后 Token 不会回显到浏览器,插件把它写到:
$DSH_HOME/config/dsh-plugin-installer.json
未设置 DSH_HOME 时使用 DSH 默认目录。保存空值会清除本插件存过的 Token。Token 只在服务端读取,可以来自上述配置,也可以来自环境变量 GITHUB_TOKEN;README 建议只授予访问公开仓库元数据所需的最小权限。
在 Windows 上如果还开了 FastGitHub、steamcommunity_302 这类本地 HTTPS 加速或代理,市场可能连不上 GitHub,并提示无法验证 TLS 证书。仓库 Issue #1 记录了这种情况:代理根证书已被 Windows 信任,但 Node.js 默认没有用系统证书存储。处理方式是先完全退出 DSH,在同一个 CMD 窗口里让 Node.js 使用系统 CA,再启动:
set "NODE_OPTIONS=%NODE_OPTIONS% --use-system-ca"
dsh web
该选项需要 Node.js 22 或更高版本,加速器根证书仍须安装并被 Windows 信任。不要用 NODE_TLS_REJECT_UNAUTHORIZED=0 关掉证书校验。
如果目的是自己发一个能被这个市场发现的插件,仓库 SKILL.md 给出的最小条件是:根目录 package.json 声明 dsh.bundle.patch,cordis.patch.yml 插入 host 模块,host 模块导出 apply(ctx),并把 dsh-plugin Topic(可选再加 dsh)打到 GitHub 仓库上。从 Git 安装的仓库应提交构建后的 lib/,避免安装时再跑构建脚本。Skill 描述工作流,Plugin 修改运行时或 UI,两者不是同一类东西。
适用场景与注意事项¶
比较适合这些情况:
- 已经在用 DSH 官方 Web UI,希望在设置页里浏览、安装社区插件,而不是每次回到终端抄命令
- 需要在多个 Web Profile 之间切换,或者偶尔建一个带官方 Web bundle 的新 Profile
- 给自己的 DSH 插件打上
dsh-pluginTopic 后,想确认市场侧会怎样发现和校验它
使用前有几条边界需要看清楚。
插件以当前 dsh 进程的权限运行,安装时可能执行代码。社区目录页和仓库 README 都要求:安装前检查源代码仓库和许可证。GitHub Topic 不是安全审查。安装器能做的是校验 bundle 形状、固定 commit、优先使用带摘要的 Release 包;它不能代替你阅读第三方源码,尤其是带安装脚本或构建脚本的仓库。
目录页上的 dsh plugin add github:Toukaiteio/dsh-plugin-installer 没有写死 Profile。应用内界面依赖 Web Profile,实际使用时按 README 加上 --profile web(或你正在用的 Profile 名),需要可复现安装时再钉死 commit。DeepSeek Harness 目前仍是开发者预览,官方 README 写明会有破坏性变更;本插件声明兼容 0.1.0-rc.6,升级 Harness 后应再核对一次。
创建全新 Web Profile 还受上游 @deepseek-ai/dsh-frontend 打包问题影响。已有可用的 Web Profile 时,继续在现有 Profile 里装插件即可,不必为了「干净环境」强行新建。
小结¶
dsh-plugin-installer 把 GitHub 上的 DSH 插件发现和安装收进官方 Web UI 的「设置 → 插件」页:用 Topic 检索,用 dsh.bundle.patch 过滤,优先装校验过的 Release 包,并附带更新、删除和 Profile 切换。它降低的是操作路径,并不改变「插件在当前进程权限下运行」这件事。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-plugin-installer/
GitHub:https://github.com/Toukaiteio/dsh-plugin-installer
DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness