前言¶
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_search、market_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
它做两件事:
- 在 设置 → 插件 里注册两个标签页:「插件市场」和「已安装」。前者按 GitHub Search API 分页拉取
dsh-plugintopic;后者只列出后来装上的第三方插件。 - 在 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.json的version。 - 「停用 / 启用」把插件移出或移回
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,不要留这个占位符。
典型用法¶
- 确认本机已经能跑 DeepSeek Harness 的 Web UI(官方文档是
npx @deepseek-ai/dsh web,默认http://127.0.0.1:3080)。dsh 目前仍是 developer preview,接口可能不兼容。 - 按上一节把插件装进 web profile,然后重启
dsh web。 - 打开网页,进入 设置 → 插件。除了自带的「插件配置」「插件列表」,应多出「插件市场」和「已安装」。
- 在「插件市场」用搜索框按名称或关键词查找;需要更多结果时点「加载更多」。
- 打开目标卡片,先看仓库地址和简介,再点「安装」。进度条会显示阶段和日志。根级插件不要指望走
link:。 - 安装成功后重启 harness,再回「已安装」看启用状态和版本。需要停用、更新或卸载,都在这个标签页操作。
- 若希望模型代劳,可以直接在会话里让它搜「视觉插件」「侧边栏」之类,走
market_search;确认 spec 后再让它market_install。工具在安装前会拒绝带 shell 元字符的 spec。
开发自检可以用仓库提供的:
npm run check
它只对 lib/index.js 和 lib/client.js 做语法检查。
适用场景与注意事项¶
比较适合:
- 已经在用 DSH Web UI,不想每次去 GitHub topic 页复制安装命令。
- 希望 agent 根据当前任务自己找插件、给出仓库列表,再由你点头安装。
- 需要在同一套设置页里看第三方插件的版本、停用和卸载,而不是只会
dsh plugin add。
需要注意:
- 权限与来源。 插件以当前 dsh 进程权限运行。市场同步的是 GitHub topic,不是官方审核过的商店。点「安装」等于把第三方代码拉进自己的 profile。装之前打开对应仓库看 README、
package.json和许可证。 - 只覆盖 web。
dsh.client声明了platform: web。headless 或其它 profile 不会因此出现这套标签页。 - 必须重启。 安装、更新、停用、卸载,README 都写了要重启 harness 才生效。
- 内置插件动不了。 「已安装」不列出 profile 模板带来的包,也不能在这里卸载它们。
- 环境依赖。 一键安装会调
dsh plugin和 pnpm。web profile 缺少package.json或pnpm-workspace.yaml时,接口会返回如何补 workspace 的说明,而不是 pnpm 那句难读的--workspace-root报错。网络差、GitHub 不可达时,看门狗会中止长时间无输出的安装。 - 同名产品很多。 GitHub 上还有
dsh-market、dsh-marketplace、其它作者的dsh-plugin-marketplace。安装命令以目录页的github:AwesomeHou/dsh-plugin-marketplace和本仓库 README 为准,不要按插件名自行拼接。 - 目录星标可能滞后。 社区目录页抓取时写的是 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