前言¶
DeepSeek Harness(DSH)把能力拆成可组合的插件,但装插件往往要查社区目录、复制安装命令、在终端里指定 profile,再重启 web 服务。社区目录独立维护在 awesome-dsh-plugin.com,与 DeepSeek / 幻方无官方从属关系;官网实现可参考 dsh-market。
下面介绍由 Sanqi-normal 维护的 @sanqi-normal/dsh-webui-market-plugin:把目录浏览、安装、更新、卸载放进 DSH web GUI 的 设置 → 插件 → 插件市场,界面跟随 harness 深浅色主题,并按系统语言切换中英文。
这是什么¶
@sanqi-normal/dsh-webui-market-plugin 是 DSH web profile 内的社区插件市场客户端。它读取 awesome-dsh-plugin.com 的插件目录(JSON API plugins.json,含 Star 数与收录日期),在设置面板里展示分类、搜索与排序,并通过后台调用 dsh plugin CLI 把插件写入指定 profile 的 bundle 层。
插件当前版本为 0.5.5,许可证 MIT,GitHub 仓库约 100 stars。分类上属于联网工具:目录数据来自网络,安装可走 npm registry 或 GitHub 源。
核心功能¶
目录浏览与排序¶
打开 设置(Settings)→ 插件(Plugins)→ 插件市场(Plugin Market) 后:
- 目录按分类分组,支持搜索与「已安装」过滤
- 卡片显示 GitHub Star(无数据则不显示)
- 可按 最热(Star 降序,无 Star 排最后)、最新(收录日期)排序,或恢复官网默认顺序
- 大目录分批渐进渲染,避免一次性插入数百卡片造成卡顿
- 顶部显示目录来源官网链接,可直达 awesome-dsh-plugin.com
点 详情 可查看该插件的官方安装命令(含目标 profile)。
安装、更新、卸载与任务队列¶
安装、更新、卸载组成 FIFO 任务队列。多个插件可连续排队;任务面板固定在右下角,实时显示「排队中 / 校验中 / 执行中 / 完成 / 失败 / 已终止 / 超时」。可取消排队项、终止执行项、查看每个任务的 pnpm 日志。
- 默认任务超时 120 秒,可用环境变量
DSH_MARKET_OP_TIMEOUT_MS调大(例如300000) - 遇到 pnpm 临时网络错误(
GET ... error、ETIMEDOUT、ECONNRESET等)会自动重试一次 - 一键更新全部 会把所有可更新插件依次加入队列
- 队列支持一键清空已完成/失败记录;清除会同步到服务端,刷新后不会再次出现
已安装插件卡片会显示真实状态(与 profile 的 package.json 同步),按「作者 + 仓库」(owner/repo)识别,避免同名插件误标。目录外或市场之外安装的依赖也会出现在 本机插件 列表,标注目录内/外、已停用、来源类型,并支持停用、启用或卸载(内置 bundle 与本地 link/file 源不提供删除)。
跨 Profile 安装与同步¶
官网目录默认发布 --profile web 命令;桌面端(desktop shell)使用独立 profile(如 desktop),只装到 web 的插件不会自动出现在桌面应用。
面板顶部提供 安装设置 与 跨 Profile 同步:
- 自动同步到其它 profile 默认开启:安装时自动装到本机所有已初始化的 profile;关闭后仅装到安装时选择的 profile
- 安装确认框可选目标 profile(默认 web)
- 跨 Profile 同步 把 web 里已装的插件一键补装到目标 profile(只新增缺失项)
- 同步为本地复制:源 profile 已装过才放行(
syncFrom校验),目录外插件(如 aegis)也可同步;装到 desktop 等 profile 后需重启对应应用
安全机制与试装验证¶
- 来源白名单:安装只接受精选目录收录的
github:源(与 dsh-market 策略一致);目录抓取失败或 registry/link 源不做此限制。白名单对所有目标 profile 生效,可勾选「跳过安全检查」绕过 - npm 优先:目录条目带
npm映射时优先用 npm 安装/更新;仅 GitHub-only 插件走 GitHub 源。可在 npm/pnpm 配置中设置国内镜像(如registry=https://registry.npmmirror.com) - 试装验证(trial boot):白名单通过后,若插件未声明 web client 半端,会在临时
DSH_HOME里试装并实际启动一次;只有出现dsh web:就绪行才判定可装。验证失败给出真实启动错误并拒绝安装,真实 profile 不会被写入。试装仅对 web profile 执行 - 同源校验:写操作只接受同源 POST,跨源请求返回 403
- 安装前自动快照:写入前会把
package.json备份为.mkts-snapshot-<时间戳>.json,可配合dsh plugin --profile <name> remove <包名>手工回退
停用、启用与热挂载¶
- 停用 / 启用:停用保留依赖与磁盘文件,只移出激活的 bundle 层;状态写入
dsh.market.disabled,重启后仍保持 - 热挂载:安装成功后,若
cordis.patch.yml仅为简单id/name插入,可挂入运行中的组合并自动刷新页面;复杂 patch 或环境不支持时回退为「重启生效」。热挂载仅作用于运行中的 web profile
失败排查¶
安装 / 更新 / 卸载失败(含超时、已终止、已拒绝)后,失败弹窗和任务队列会出现 询问 DSH 按钮:前端新建对话,并把操作目标、环境信息与完整错误日志作为 prompt 发送给 AI,便于排查。
pnpm ≥11 若遇 ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION,市场会自动把违规的 name@version 合并进 profile 的 pnpm-workspace.yaml 的 minimumReleaseAgeExclude 并重试一次。
安装与启用¶
本插件在 DSH web profile 内运行,peer 依赖由宿主提供,用户无需手动安装 @deepseek-ai/cordis、@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-slots。当前版本面向 DSH 0.0.1-rc.2+(不含 0.0.1-rc.1)及 0.1.0-rc.2+。Node 要求 ^22.19.0 || >=24.0.0。
方式一:从 npm registry 安装(推荐):
dsh plugin --profile web add @sanqi-normal/dsh-webui-market-plugin
方式二:从 GitHub 源码安装:
dsh plugin --profile web add github:Sanqi-normal/dsh-webui-market-plugin
安装后重启 web 服务生效:
pnpm dsh web
GitHub 源安装会执行包内 prepare 脚本。若被 pnpm 拦截,把提示的包名加入 profile 的 pnpm-workspace.yaml 的 allowBuilds 后重试。pnpm 11 起未在 allowBuilds 中显式放行的构建脚本会导致 ERR_PNPM_IGNORED_BUILDS;若该包不需要构建脚本,可写成 false 明确拒绝。
典型用法¶
经过上面的安装步骤后,在浏览器打开 DSH web 界面,进入 设置 → 插件 → 插件市场。
- 在搜索框或分类中定位目标插件,用「最热 / 最新」排序缩小范围
- 点 详情 核对官方安装命令与目标 profile
- 在卡片上执行 安装;若需 desktop 等 profile,在 安装设置 中确认「自动同步到其它 profile」,或在 跨 Profile 同步 区补装
- 在右下角任务面板观察进度;失败时可查看 pnpm 日志或点 询问 DSH
- 安装成功后,若未热挂载生效,执行
pnpm dsh web重启 web 服务
维护者可用以下命令从官网 JSON API 刷新离线目录快照(官网不可达时会失败,不会复制旧数据):
pnpm run snapshot
快照写入 data/catalog-snapshot.json,供官网抓取失败时回退。
适用场景与注意¶
适合谁:经常在 DSH web GUI 里试用社区插件的开发者;需要在 web 与 desktop 等多个 profile 间保持插件一致的本机用户;希望用白名单、试装验证和任务队列降低「装坏组合」风险的环境。
务必注意:
- 本插件以当前 dsh 进程的权限运行,安装前应检查目标插件源码与许可证
- 安装 / 卸载后通常需重启 web 服务;热挂载成功时可免重启
- 在命令行手工执行
dsh plugin add/remove/update可能短暂恢复已停用项,重启或下一次市场操作会再次应用停用状态 - 跨 profile 同步只增不删,不会删除目标 profile 已有内容
- 目录数据与插件数量以 awesome-dsh-plugin.com 为准;这是社区生态目录,不是官方应用商店
结尾¶
@sanqi-normal/dsh-webui-market-plugin 把 awesome-dsh-plugin.com 的目录搬进 DSH 设置面板,用队列化安装、白名单、试装验证和跨 profile 同步,把「查目录 → 敲命令 → 重启」收成一套可观测的流程。若你主要在 web GUI 里扩展 harness 能力,这是联网工具类里较完整的市场前端之一。