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

前言

DeepSeek Harness(DSH)的设计口号是「一切皆插件」:界面、工具、记忆、工作流,大多都能以插件形式装进当前 profile。社区仓库只要打上 GitHub 的 dsh-plugin topic,就会出现在公开话题列表里。问题是,发现和安装这两步通常还要离开 Harness:打开 topic 页、对照 README,再回到终端执行 dsh plugin add

dsh-plugin-marketplace 做的是把这件事收回 Web 界面。装上之后,设置 → 插件 里会多出「插件市场」和「已安装」两个标签页,可以按页浏览、按关键词搜索、点按钮安装;Host 侧同时注册 market_searchmarket_install 等模型工具,让 agent 自己去搜、去装。

需要先说清楚边界:这是 AwesomeHou 维护的社区插件,采用 MIT 许可证,不是 DeepSeek / 幻方官方应用商店。社区目录站点 deepseek-harness-plugin.com 也是独立收录,与官方仓库无从属关系。生态里还有 dsh-marketDSH-Plugins-Marketplace 等同类市场插件,数据源和安装策略并不相同。本文只核对 AwesomeHou/dsh-plugin-marketplace

这是什么

dsh-plugin-marketplace 是一款界面增强插件,由 AwesomeHou 维护,仓库在 AwesomeHou/dsh-plugin-marketplace。目录页分类为「界面增强」,本稿核对 GitHub 时星标为 27package.json 版本为 0.3.0,主要语言是 JavaScript。

它解决的是「社区插件已经很多,但要在终端和 GitHub 之间来回切」这件事。数据源不是某个手工精选清单,而是 GitHub Search API 对 dsh-plugin topic 的实时查询。目录页和 README 仍写「1800+ 仓库」;本稿用 Search API 核对 topic:dsh-plugin 时,total_count 已经超过 6000。市场按页拉取,页面上的 total 对应当次查询的真实 total_count,数字会随 topic 变化。

插件分两半:Host 半(lib/index.js)负责同步 GitHub、注册 /api/market/* 接口和模型工具;Client 半(lib/client.js)把两个标签页挂进 settings.plugins.tabpackage.jsondsh.client.platform 声明为 web,所以它面向的是 Web 界面,不是纯 CLI 会话。

核心功能

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

Host 按页拉取整个 topic,默认每页 50、最大 100。界面带「加载更多」,不再把列表截成「只看 50 个」。total 反映 GitHub 返回的真实 total_count

搜索走 GitHub 的 q,不是已加载页的本地过滤

搜索框和 market_search 工具都把关键词交给 GitHub Search 的 q。这意味着能搜到尚未加载到当前页的仓库,而不是在已经刷出来的卡片里做前端过滤。

「插件市场」标签页顶部会标明来源:GitHub dsh-plugin 话题(github.com/topics/dsh-plugin),通过 Search API 实时同步。这和「某个站点自己维护的精选目录」不是同一件事。

一键安装:先探测仓库形态,优先走 npm

每个卡片都有「安装」按钮。点击后 POST /api/market/install,Host 侧 planInstall 先看仓库长什么样,再选安装路径:

  • 根目录 package.json 声明了 dsh.bundle / dsh.client根级插件:走标准 dsh plugin add -w
  • 已经发到 npm 的插件:优先用 name@ 装 npm 版(README 的理由是快、稳、不必再拉 GitHub;pnpm 会把插件和运行时依赖一起装进 profile)
  • 未发布到 npm:用 github spec
  • monorepo / workspace 根:克隆到 $DSH_HOME/marketplace-src,用 corepack pnpm 构建后再 link: 注册

装完会做结果校验:是否进入 dsh.profile.bundles、入口文件是否存在、运行时依赖是否可解析。README 明确写了:不能用 link: 装根级插件。卡片内会画出类似应用商店的进度条(阶段、百分比、已下载、速度、ETA、实时日志),可以取消。

直装失败时,卡片上会出现「让 agent 安装」。Host 会准备专属工作区 $DSH_HOME/marketplace-install,在新对话里把固定提示词发给 agent,让它读目标仓库 README 再决定怎么装,避免污染当前会话。runtime 服务不可用时,会退回当前会话。

安装子进程会注入 CI=true,避免 pnpm 10 及以上在无 TTY 时卡在交互提示。遇到 pnpm 大版本漂移(ERR_PNPM_VIRTUAL_STORE_DIR_MAX_LENGTH_DIFF / PUBLIC_HOIST_PATTERN_DIFF),会自动 pnpm install 重建 modules 再试一次。下载长时间零输出时,停滞看门狗默认 120 秒杀掉进程树并直连重试一次(可用环境变量 DSH_MARKET_STALL_MS 覆盖),避免一直转到超时长达十分钟。

给 agent 的四件工具

Host 通过 ctx.tools.register 注册:

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

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

dsh.profile.bundles 里来自 profile 模板的包视为内置插件:随 Harness 提供,不能关闭或卸载。「已安装」标签页只列后安装的第三方插件,页面顶部有声明。

后安装插件可以:

  • 停用 / 启用/api/market/set-enabled):从 dsh.profile.bundles 移出或移回,依赖仍保留
  • 卸载/api/market/uninstall):dsh plugin --profile web remove,并自动从 bundle 层摘除
  • 更新:对照 npm 的 latest,或 GitHub 默认分支 package.jsonversion(GitHub 插件优先);有新版本时卡片标「可更新」

市场还会检查自己的版本(读自家 GitHub 仓库的 package.json)。有新版本时,两个标签页顶部会出现 vX → vY · 立即更新 横幅。停用、卸载、更新、自更新都需要重启 harness。

插件简介翻译(0.3.0)

2026-08-17 合并的 PR #1 给卡片加了「翻译」按钮:Host 提供 POST /api/market/translate,用 Google gtx 与 MyMemory 并行竞速,先返回的结果用于弹窗显示中文。仓库 README 尚未单独成节,以该提交和效果截图为准。

安装与启用

目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行即可:

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

仓库 README 写的是装进 web profile(本插件的 client 声明也是 web):

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

也可以把仓库地址直接交给当前 agent:

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

装完需要重启 harness 才会出现两个新标签页。

如需可复现安装,按目录页说明固定 commit 哈希:

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

本稿核对仓库时,默认分支 master 的最新提交是 1df4eb2121e869f48fdeb5de626c3610868a369e(2026-08-17)。哈希会随后续推送变化,安装前请再对一下 GitHub。

不要用裸 npm 包名 dsh-plugin-marketplace 从 registry 安装。仓库 issue #3 记录过:npm 上同名包属于另一作者,自更新若按裸名解析会装错包,重启后市场标签页消失。2026-08-17 的修复提交改为按已装包声明的 GitHub 仓库解析版本与更新来源。

典型用法

  1. 安装并重启 harness(Web 界面一般是 dsh web 这一路)。
  2. 打开 设置 → 插件,应能看到与自带「插件配置」「插件列表」并列的 插件市场已安装
  3. 在「插件市场」里浏览卡片,点「加载更多」翻页;用搜索框按名称或关键词检索整个 topic。
  4. 对目标插件点 安装,看进度条和日志。失败时再看卡片是否出现「让 agent 安装」。
  5. 到「已安装」核对第三方插件的启用状态和版本;需要时点更新、停用或卸载,然后再次重启。

如果希望模型代劳,可以直接说「帮我搜一下 topic 里和视觉相关的插件」或「把某某仓库装进 web profile」。模型应走 market_search / market_install,而不是自己拼一条未校验的 shell。market_install 会拒绝带 shell 元字符的 spec。

适用场景与注意事项

适合已经在用 DSH Web 界面、希望少切终端的人:浏览社区插件、给当前 agent 临时补能力、查看已装第三方插件是否有更新。也适合让 agent 在对话里自己发现并安装插件。

不适合当成「官方审核过的应用商店」。清单来自 GitHub topic 的公开搜索结果,仓库质量、维护状态、是否真的声明了 DSH 插件契约,都要自己看源码。内置插件不会出现在「已安装」里,也不能从这里关闭。纯 CLI、不用 Web profile 的用法对不上这个插件的 client 声明。

安装任何通过市场找到的插件时,请记住目录页上的那句警告:插件以当前 dsh 进程的权限运行,安装时可能执行代码。 安装前检查源代码仓库和许可证。本插件自身是 MIT;它帮你装上的其他插件,许可证和权限各不相同。直装会在本机执行 dsh plugin add、pnpm、必要时 git clone,失败分类和看门狗只能减少卡死,不能代替你对目标仓库的审查。

社区里存在多个「插件市场」插件,安装命令、数据源(实时 topic / 精选 JSON)、是否允许任意 GitHub spec,并不通用。按目录页或目标仓库 README 的原文执行,不要把另一家市场的命令套过来。

小结

dsh-plugin-marketplace 把 GitHub dsh-plugin topic 同步进 DSH 的设置页,并给模型补上搜索与安装工具。它降低的是发现和安装的往返成本,并不改变「插件等于在你这台机器上跑别人的代码」这一事实。

  • 目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-plugin-marketplace/
  • GitHub:https://github.com/AwesomeHou/dsh-plugin-marketplace
  • DeepSeek Harness 官方仓库:https://github.com/deepseek-ai/deepseek-harness
  • GitHub topic:https://github.com/topics/dsh-plugin
羽毛球分组比赛记分
小程序二维码

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

小夜