前言¶
DeepSeek Harness(DSH)的插件生态分散在 GitHub 上,仓库通过 dsh-plugin 话题归类,数量已超过一千。平时找插件往往要打开话题页、逐个翻仓库、对照 README 里的安装命令,再手动执行 dsh plugin add。已安装的插件散落在 profile 配置里,更新和卸载也没有统一入口。
下面介绍的 dsh-plugin-marketplace 由 AwesomeHou 维护,是一个 DSH 永久插件。它把 GitHub dsh-plugin 话题实时同步到 Harness 设置页的「插件市场」标签,支持搜索、分页浏览、一键安装,并向 agent 注册 market_search、market_install 等工具,让模型也能自行搜索并安装插件。
这是什么¶
dsh-plugin-marketplace 同时承担两件事:
- 设置 UI — 在「设置 → 插件」下新增「插件市场」和「已安装」两个标签页,与自带的「插件配置」「插件列表」并列。
- Host 工具 — 通过
ctx.tools.register向 agent 暴露市场搜索、安装、列出已装插件、更新等能力。
数据来源是 GitHub Search API,针对 github.com/topics/dsh-plugin 话题实时拉取;页面顶部会声明清单来源。当前版本为 v0.3.1,分类为联网工具,许可证 MIT。
核心功能¶
浏览与搜索¶
- 全量分页:按页拉取 topic 下的全部仓库,默认每页 50 条、最大 100 条,UI 提供「加载更多」;
total反映 GitHub 返回的真实total_count,不再局限于前 50 个。 - 关键词搜索:搜索框和
market_search工具均走 GitHub 的q参数,在整个 topic 范围内检索,而非只在已加载页内过滤。
一键安装与进度反馈¶
每个插件卡片提供「安装」按钮,点击后通过 POST /api/market/install 启动异步安装任务。Host 侧 planInstall 会先探测仓库形态:
- 根目录
package.json声明了dsh.bundle/dsh.client的根级插件 → 走标准dsh plugin add -w <spec>。 - 已发布到 npm 的插件 → 优先用
name@<latest>安装 npm 版(pnpm 一并安装运行时依赖如ws、node-pty)。 - 未发布到 npm → 使用 GitHub spec。
- monorepo / workspace 根 → 克隆到
$DSH_HOME/marketplace-src,经 corepack pnpm 构建后以link:注册。
安装完成后会做结果校验:确认插件进入 dsh.profile.bundles、入口文件存在、运行时依赖可解析。卡片内联展示 App Store 式进度条(阶段、百分比、速度、ETA、实时日志),可取消。
pnpm 兼容与安装止损¶
借鉴 dsh-market 的做法,所有安装子进程注入 CI=true,避免 pnpm ≥10 在无 TTY 时无限等待交互提示。检测到 pnpm 大版本漂移(ERR_PNPM_VIRTUAL_STORE_DIR_MAX_LENGTH_DIFF 等)会自动 pnpm install 重建 modules 并重试。失败经 classifyPnpmFailure 分类后给出可操作文案,覆盖预发布 peer 解析、构建脚本拦截、幽灵依赖 404、workspace 缺失等场景。
若 pnpm / git 在慢网络下零输出挂死,Host 侧停滞看门狗(默认 120 秒,可用 DSH_MARKET_STALL_MS 覆盖)会杀掉进程树并直连重试一次;再次停滞则快速失败,提示检查网络或改用「让 agent 安装」。
Agent 工具¶
Host 侧注册四个工具:
| 工具 | 作用 |
|---|---|
market_search(q?, page?, perPage?) |
返回 topic 仓库 JSON 列表(full name、star、语言、简介、URL) |
market_install(spec) |
通过 dsh plugin --profile web add -w <spec> 安装到 web profile;执行前校验 spec 是否含 shell 元字符 |
market_installed() |
列出 web profile 已安装的第三方插件及启用状态、版本、是否可更新 |
market_update(name) |
将指定插件更新到最新版本 |
已安装插件管理¶
「已安装」标签页只展示后安装(第三方)插件;来自 profile 模板的内置插件不列出,页面顶部有说明。
- 停用 / 启用(
/api/market/set-enabled):移出或移回dsh.profile.bundles,依赖保留。 - 卸载(
/api/market/uninstall):dsh plugin --profile web remove <name>,同时从 bundle 层摘除。 - 更新(
/api/market/update):对照 npm registrylatest或 GitHub 默认分支package.json的version;有新版本时卡片标「可更新」。
以上操作均需重启 harness 后生效。
兜底:让 agent 安装¶
直装失败时(尤其预发布对等依赖、非标准结构),卡片会出现「让 agent 安装」。Host 确保专属工作区 $DSH_HOME/marketplace-install,client 在该工作区新开对话并发送固定提示词,由 agent 读 README 自行决定安装方式,不污染当前会话。若 runtime 不可用则回退到当前会话。
对等依赖失败(如 @deepseek-ai/*@^0.1.0-rc.6 触发 ERR_PNPM_NO_MATCHING_VERSION)时,Host 会给出说明而非裸 exit 1。
市场自更新¶
本插件会检查自身 GitHub 仓库 package.json 的最新版本;有新版本时在「插件市场」和「已安装」标签页顶部显示 vX → vY · 立即更新 横幅。
安装与启用¶
官方安装命令如下。安装后需重启 harness 才能生效。
dsh plugin --profile web add https://github.com/AwesomeHou/dsh-plugin-marketplace
也可以让 agent 安装:
帮我安装这个插件 https://github.com/AwesomeHou/dsh-plugin-marketplace
安装前请确认 web profile 存在 package.json 或 pnpm-workspace.yaml;缺失时 market_install 和 /api/market/install 会返回可操作的错误说明,而不是 pnpm 的 --workspace-root may only be used inside a workspace。
典型用法¶
在设置页浏览并安装¶
- 重启 harness 后打开「设置 → 插件 → 插件市场」。
- 在搜索框输入关键词,或点击「加载更多」翻页。
- 找到目标插件,点击「安装」,观察进度条;完成后重启 harness。
让 agent 搜索并安装¶
agent 可调用 market_search 检索 topic,再用 market_install 安装:
market_search(q="markdown", page=1, perPage=20)
market_install(spec="owner/repo")
安装完成后 agent 应提示用户重启 harness。
查看与更新已装插件¶
market_installed()
market_update(name="某插件包名")
或在「已安装」标签页直接操作停用、启用、卸载、更新。
适用场景与注意¶
适合谁
- 经常在 DSH 里试用社区插件的开发者。
- 希望 agent 能自主发现并安装
dsh-plugin话题下仓库的工作流搭建者。 - 需要集中管理
webprofile 第三方插件启用状态与版本的用户。
注意事项
- 插件以当前 dsh 进程权限运行;安装前应检查目标仓库源码与许可证。
- 不能用
link:装根级插件;monorepo 场景由 Host 自动处理克隆与构建。 - 内置插件随 harness 提供,不能在此市场停用或卸载。
- DSH 社区目录(如 SkillHub)是独立站点,与 DeepSeek / 幻方无官方从属关系;本市场同步的是 GitHub 话题,亦非官方应用商店。
链接¶
- 社区目录页:https://www.skillhub.cn/plugins/AwesomeHou/dsh-plugin-marketplace
- GitHub 仓库:https://github.com/AwesomeHou/dsh-plugin-marketplace
- 插件话题来源:https://github.com/topics/dsh-plugin