dsh-plugin-market:在 Harness 里浏览社区插件目录并走官方管理器安装

前言

DeepSeek Harness(DSH)的组合包可以不断叠加,但社区插件散在 dsh-plugin.org 和各类 GitHub 仓库里。若每次都要自己查文档、拼 github:owner/repo、再对照设置里的插件列表,成本偏高。社区里也曾有依赖 dsh CLI、与 profile 行为纠缠的第三方市场方案,和桌面端 / Web 端的官方插件管理并不完全一致。

wojiao42/dsh-plugin-market(npm 包名 dsh-market-panel)是在 DSH 客户端侧栏提供「插件市场」面板的组合包:浏览社区目录,安装、启停、卸载一律调用 Harness 官方 pluginManager,不依赖 dsh CLI,也不代替官方管理器的校验与写锁逻辑。下文按定位、功能、安装与日常用法说明,事实以仓库 README 与 package.json 为准。

这是什么

  • 仓库: github.com/wojiao42/dsh-plugin-market
  • 维护者:wojiao42
  • 分类:客户端(dsh.client,platform: web)
  • 当前版本:0.3.1(MIT)
  • 一句话:左侧栏「插件市场」+ 设置里同名的分区,对接 dsh-plugin.org 的精选目录与 sitemap 全量索引,通过 inspect → installBundle 等官方 API 管理当前 profile 下的组合包。

与 DeepSeek / 幻方无官方商店从属关系;dsh-plugin.org 是社区目录站点,本插件只做浏览与调用官方安装通道。

核心功能

两个入口,同一套界面

  1. 左侧栏 「插件市场」 面板。
  2. 设置(Ctrl+,)→「插件市场」 分区(settings.section,order 60)。

两处渲染同一组件,界面状态各自独立。主区另有 main 页面。

五个页签

页签 作用
市场 推荐条(数据来自官网 stats.json,失败时回退目录统计)、搜索、长名分类 chip、按 Star / Fork / 最近更新 / 最新收录排序;卡片展示名称、版本、分类、「已验证」/「仅索引」、安装源类型等;动作含详情(跳转 dsh-plugin.org)、安装 / 可更新 / 已安装、复制命令
已安装 当前 profile 组合包列表;setBundleEnabled 启停、removeBundle 卸载(二次确认)
自定义安装 输入 npm 包名、github:owner/repo 或本机绝对路径,走与官方一致的 inspect → installBundle
设置 npm registry:默认、pnpm 解析值、host fallback、自定义地址;校验与安装按所选源
日志 本会话安装记录与 pnpm 日志;构建脚本被拦截时可「允许构建脚本并重试」

数据从哪来

Host 半边代理并缓存两类上游(避免渲染进程跨域):

  • api.dsh-plugin.org/plugins.<lang>.json(精选目录,缓存 6 小时 TTL)
  • dsh-plugin.org/sitemaps/plugins.xml(全量索引,缓存 12 小时 TTL)

市场页默认 scope=all:合并精选与 sitemap;只在索引里、不在精选里的条目标「仅索引」,安装源按 github:{owner}/{slug} 推导。索引不可用时会降级为精选目录(响应头 x-plugin-market-scope: curated)。精选目录本身是官网导出的子集,行数会变化;合并索引是为了补全可发现性。

安装通道与边界设计

客户端直接调用 ctx.remote.pluginManager(inspect、installBundle、setBundleEnabled、removeBundle),与 设置 → 插件 同一路径;不做 PATH shim,不自行改写 profile。与社区 bundle dsh-plugin 市场完全独立(README 说明该方案存在 profile 误判、依赖 CLI 等问题,本插件刻意分开)。

目标环境需支持组合包(dsh.bundle.patch)且提供上述 pluginManager 方法;Host 路由为纯 ESM,依赖 Node 18+ 的全局 fetch。

安装与启用

首次安装时,设置里还没有「插件市场」分区(分区由本插件注册),需用命令行或后续在「自定义安装」里填源地址装一次。

浏览器版(DSH Web)(README「快速上手」示例):

dsh plugin --profile web add github:wojiao42/dsh-plugin-market

桌面端(DSH Desktop):

dsh plugin --profile desktop add github:wojiao42/dsh-plugin-market

桌面 profile 由应用托管时,命令行可能被拒绝,可改用:设置 → 插件 的官方安装能力先装其他途径装上的副本,或在已安装本插件后使用 插件市场 → 自定义安装 → github:wojiao42/dsh-plugin-market。

装完后 刷新窗口(Host 半边新路由需重启 Harness 才加载;客户端 client.js 改动手动刷新页面即可)。

本地开发可从 自定义安装 填源码目录绝对路径;长期指向源码建议 pnpm link: 依赖包名 dsh-market-panel(不要把包名起成 dsh-plugin-market,会与官方 @deepseek-ai/dsh-plugin-market 撞名导致 web 启动失败)。

典型用法

经过安装并刷新后,可以按下面顺序操作:

  1. 打开左侧栏「插件市场」,或 Ctrl+, →「插件市场」。
  2. 在 「市场」 页签输入关键词,用分类 chip 收窄范围;需要时用「刷新」带 refresh=1 绕过本地缓存。
  3. 对目标插件点 「安装」;若显示「可更新」,含义与已装版本和目录版本不一致有关。
  4. 切到 「已安装」,对不需要的组合包 停用 或 卸载。
  5. 渠道不在目录里的包,在 「自定义安装」 填 github:owner/repo、npm 包名或绝对路径。
  6. 安装慢或失败时看 「日志」;pnpm 阻止构建脚本时按面板提示允许后重试。

卸载:从 profile 的 dsh.profile.bundles 与 dependencies 去掉 dsh-market-panel,再执行 pnpm remove dsh-market-panel。

适用场景与注意

适合谁:经常在 DSH Web / Desktop 上试社区组合包、希望在一个面板里搜 dsh-plugin.org 并统一启停的人;不想为安装单独配置 dsh CLI 的用户。

权限与安全:插件以当前 Harness 进程权限运行;installBundle 会拉取并执行第三方代码。安装前应查看目标仓库源码与许可证(本市场 MIT,不代表所装插件的许可)。

已知边界(README 原文口径):

  • 索引抓取失败时,「仅索引」条目暂时搜不到。
  • 缓存 TTL:精选 6 小时、索引 12 小时、stats 1 小时;上游改名/下架最长需等 TTL,或用手动刷新。
  • 仅索引行往往缺少描述、星标、topics;详情仍以官网页为准。
  • 无缓存且上游失败时,目录接口可能返回 502;单次上游抓取超时 45 秒。

截至 README 记载:awesome-dsh-plugin 已投稿 PR 待合并;dsh-plugin.org 站内尚未有条目,发现本插件主要依赖 GitHub 与本文所述安装方式。

结尾

dsh-plugin-market 把社区目录收进侧栏,安装链路仍交给官方插件管理器,适合在 Harness 里系统化浏览、试装组合包。目录介绍见 SkillHub 插件页,源码与版本说明见 GitHub 仓库。

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

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

Xiaoye