用 dsh-plugin-marketplace 把 GitHub 插件话题同步进 DeepSeek Harness 设置页

前言

DeepSeek Harness(dsh)官方仓库的定位很明确:Everything is a Plugin(一切皆插件)。模型适配、工具、会话、沙箱,连智能体循环本身都可以换成插件。官方也建议插件仓库打上 GitHub topic dsh-plugin,方便别人发现。

问题随之而来。topic 只是一个标签页,仓库数量增长很快。README 和社区目录都按「1800+」来写;2026-08-18 用 GitHub Search API 查询 topic:dsh-plugin 时,返回的 total_count 已经是 6580。要装一个插件,常见做法仍是打开 GitHub、复制 dsh plugin add ...、回到终端执行。社区里也出现了不少「插件市场」实现,能力并不相同。

本文只介绍 AwesomeHou 维护的 dsh-plugin-marketplace。它把 dsh-plugin topic 实时同步进 Web 界面的「设置 → 插件」,可以搜索、分页浏览、一键安装;同时注册 market_searchmarket_install 等模型工具,让 agent 自己去搜、去装。它是社区开源插件,不是 DeepSeek / 幻方的官方应用商店。社区目录站点 deepseek-harness-plugin.com 也是独立收录站,与官方仓库无从属关系。

当前仓库版本为 0.3.0,许可证 MIT,主要语言 JavaScript。2026-08-18 从 GitHub API 读取的星标为 27

这是什么

dsh-plugin-marketplace 是一款界面增强类的永久插件(bundle),由 AwesomeHou 维护,仓库在:

https://github.com/AwesomeHou/dsh-plugin-marketplace

它做两件事:

  1. 设置 → 插件 里注册两个标签页:「插件市场」和「已安装」。前者按 GitHub Search API 分页拉取 dsh-plugin topic;后者只列出后来装上的第三方插件。
  2. 在 Host 侧用 ctx.tools.register 注册一组工具,会话里的模型可以直接搜插件、装插件、看已装列表、更新插件。

package.json 里把浏览器半声明为 dsh.client.platform: web,所以它挂在 web profile 上,不是 headless 那条线。安装后需要重启 harness 才会出现标签页。

数据源写在「插件市场」页顶部:GitHub 话题 dsh-plugin,通过 Search API 实时同步。这不是精选清单,topic 下什么仓库都会进来。装之前仍然要自己看源码和许可证。

核心功能

下面这些能力来自仓库 README 和 package.json,能对上的才写。

1、全量分页,而不是只看前 50 个

Host 按页向 GitHub Search API 拉 topic 仓库,默认每页 50、最大 100。界面有「加载更多」。total 用的是 API 返回的真实 total_count,没有「只展示 50 个」的硬上限。

2、搜索走 GitHub 的 q,不是本地过滤

设置页的搜索框和工具 market_search 都把关键词交给 GitHub 自己的查询。搜索范围是整个 topic,不是已经加载到当前页的那几十条。

3、给模型用的四件套

Host 侧注册的工具是:

工具 作用
market_search(q?, page?, perPage?) 返回 topic 仓库的 JSON:全名、star、语言、简介、URL
market_install(spec) 执行 dsh plugin --profile web add -w <spec>,装进 web profile。执行前校验 spec 是否含 shell 元字符;完成后提示需要重启 harness
market_installed() 列出 web profile 里已装的第三方插件:启用状态、当前版本、最新版本、是否可更新(含市场自己)。内置插件不在此列
market_update(name) 把某个已装插件更新到最新版本,重启后生效

4、卡片上一键安装,优先走 npm

每个市场卡片都有「安装」。点击后 POST /api/market/install,Host 先 planInstall 判断仓库形态:

  • 根目录 package.json 声明了 dsh.bundle / dsh.client 的根级插件,走标准 dsh plugin add -w
  • 已经发到 npm 的优先装 name@version,不拉 GitHub,pnpm 会把运行时依赖一并装进 profile。
  • 没发 npm 的用 github spec。
  • monorepo / workspace 根会克隆到 $DSH_HOME/marketplace-src,用 corepack pnpm 构建后再 link: 注册。README 写明:不能用 link: 装根级插件

装完会做结果校验:是否进入 dsh.profile.bundles、入口文件是否存在、运行时依赖是否可解析。卡片上是带阶段、百分比、速度、ETA 和实时日志的进度条,可以取消。

直装失败时(例如预发布 peer 依赖对不上),卡片会出现「让 agent 安装」。Host 会准备专属工作区 $DSH_HOME/marketplace-install,在新会话里把固定提示词发给 agent,让它读 README 自己决定怎么装,尽量不污染当前对话。runtime 不可用时则退回当前会话。

5、已安装、更新、停用、卸载

「已安装」标签页只展示后安装的第三方插件。profile 模板带来的内置包不能在这里关闭或卸载,页顶有说明。

  • 有新版本时卡片标「可更新」,走 /api/market/update。版本对比:npm 用 registry 的 latest;GitHub 插件看默认分支 package.jsonversion
  • 「停用 / 启用」把插件移出或移回 dsh.profile.bundles,依赖还留着。
  • 「卸载」执行 dsh plugin --profile web remove,并从 bundle 列表摘掉。

停用和卸载都要重启 harness。市场自己也会读 GitHub 上的 package.json 做自更新检查,两个标签页顶部都可能出现 vX → vY · 立即更新 横幅。

6、安装失败时尽量给可操作的原因

README 还写了几条安装期的处理,不是界面功能,但实际装插件时会碰到:

  • 子进程注入 CI=true,避免 pnpm 10 及以上在无 TTY 时卡住等交互。
  • 遇到 pnpm 大版本把 modules 目录建乱(ERR_PNPM_VIRTUAL_STORE_DIR_MAX_LENGTH_DIFF 一类)会自动 pnpm install 重建再试一次。
  • 预发布 peer、构建脚本拦截、幽灵依赖 404、workspace 缺失、pnpm 不在 PATH 等,会分类成可读文案,而不是只回 exit 1
  • 下载长时间零输出时有停滞看门狗(默认 120 秒,可用环境变量 DSH_MARKET_STALL_MS 覆盖),先直连重试一次,再快速失败。

安装与启用

社区目录页给出的安装命令是(以页面原文为准):

dsh plugin add github:AwesomeHou/dsh-plugin-marketplace

作者 README 写的是明确装到 web profile 的写法,和这个插件「只提供 web 客户端」一致,实际使用时更建议这条:

dsh plugin --profile web add https://github.com/AwesomeHou/dsh-plugin-marketplace

装完需要重启 harness。也可以直接对 agent 说:

帮我安装这个插件 https://github.com/AwesomeHou/dsh-plugin-marketplace

目录页还提示:插件会以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。若要可复现安装,把 commit 哈希固定上去,例如:

dsh plugin add github:AwesomeHou/dsh-plugin-marketplace#<commit>

<commit> 换成仓库里真实的 commit SHA,不要留这个占位符。

典型用法

  1. 确认本机已经能跑 DeepSeek Harness 的 Web UI(官方文档是 npx @deepseek-ai/dsh web,默认 http://127.0.0.1:3080)。dsh 目前仍是 developer preview,接口可能不兼容。
  2. 按上一节把插件装进 web profile,然后重启 dsh web
  3. 打开网页,进入 设置 → 插件。除了自带的「插件配置」「插件列表」,应多出「插件市场」和「已安装」。
  4. 在「插件市场」用搜索框按名称或关键词查找;需要更多结果时点「加载更多」。
  5. 打开目标卡片,先看仓库地址和简介,再点「安装」。进度条会显示阶段和日志。根级插件不要指望走 link:
  6. 安装成功后重启 harness,再回「已安装」看启用状态和版本。需要停用、更新或卸载,都在这个标签页操作。
  7. 若希望模型代劳,可以直接在会话里让它搜「视觉插件」「侧边栏」之类,走 market_search;确认 spec 后再让它 market_install。工具在安装前会拒绝带 shell 元字符的 spec。

开发自检可以用仓库提供的:

npm run check

它只对 lib/index.jslib/client.js 做语法检查。

适用场景与注意事项

比较适合:

  • 已经在用 DSH Web UI,不想每次去 GitHub topic 页复制安装命令。
  • 希望 agent 根据当前任务自己找插件、给出仓库列表,再由你点头安装。
  • 需要在同一套设置页里看第三方插件的版本、停用和卸载,而不是只会 dsh plugin add

需要注意:

  1. 权限与来源。 插件以当前 dsh 进程权限运行。市场同步的是 GitHub topic,不是官方审核过的商店。点「安装」等于把第三方代码拉进自己的 profile。装之前打开对应仓库看 README、package.json 和许可证。
  2. 只覆盖 web。 dsh.client 声明了 platform: web。headless 或其它 profile 不会因此出现这套标签页。
  3. 必须重启。 安装、更新、停用、卸载,README 都写了要重启 harness 才生效。
  4. 内置插件动不了。 「已安装」不列出 profile 模板带来的包,也不能在这里卸载它们。
  5. 环境依赖。 一键安装会调 dsh plugin 和 pnpm。web profile 缺少 package.jsonpnpm-workspace.yaml 时,接口会返回如何补 workspace 的说明,而不是 pnpm 那句难读的 --workspace-root 报错。网络差、GitHub 不可达时,看门狗会中止长时间无输出的安装。
  6. 同名产品很多。 GitHub 上还有 dsh-marketdsh-marketplace、其它作者的 dsh-plugin-marketplace。安装命令以目录页的 github:AwesomeHou/dsh-plugin-marketplace 和本仓库 README 为准,不要按插件名自行拼接。
  7. 目录星标可能滞后。 社区目录页抓取时写的是 8 星;以 GitHub 仓库实时数据为准。

小结

dsh-plugin-marketplace 把 GitHub dsh-plugin topic 接进 DeepSeek Harness 的设置页:人可以在「插件市场」里搜、翻页、一键装;模型可以用 market_search / market_install 做同一件事。它解决的是发现和安装路径太散的问题,并不保证 topic 里每一份插件都能用、都安全。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-plugin-marketplace-awesomehou/

GitHub:https://github.com/AwesomeHou/dsh-plugin-marketplace

羽毛球分组比赛记分
小程序二维码

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

小夜