dsh-plugin-market
August 15, 2026 · View on GitHub
DeepSeek Harness 可视化插件市场:把 GitHub 主题页 dsh-plugin 上的全部插件(3300+)收纳进一个分类目录,支持搜索、筛选、排序、分页与一键安装。安装入口位于 设置 → 插件 → 市场(插件栏的第三个 Tab)。
数据完整性:GitHub 对单次查询(网页与 API 一致)最多暴露 1000 条结果。本仓库的同步脚本用 7 种排序(best-match / stars↑↓ / forks↑↓ / updated↑↓)的前 1000 名做并集,把 GitHub 允许枚举的全部仓库尽量收齐,去重后写入
data/catalog.json随仓库提交,市场离线可用。
功能
- 全量收录:GitHub topic
dsh-plugin下所有可枚举仓库,含星标、语言、描述、主题标签、最近更新时间 - 自动分类:按仓库 topics / 描述 / 名称打分归类(主题、智能体、工具、技能、工作流、搜索与记忆、代码、模型与 API、通信与机器人、客户端、文档、数据、媒体、安全、网络、效率、游戏、界面、其他),每仓库最多 3 类
- 检索与浏览:关键词搜索、分类筛选、只看已安装、按星标/更新时间/名称排序、分页
- 一键安装:调用
dsh plugin --profile <profile> add github:owner/repo安装;可卸载;安装结果实时回显 - 目录刷新:市场内一键从 GitHub 拉取最新目录(重新同步)
- 双语界面:中文 / English,跟随系统界面语言
安装
# 方式一:GitHub 直装(推荐)
dsh plugin --profile web add github:Twilightas/dsh-plugin-market
# 方式二:本地源码安装(开发)
git clone https://github.com/Twilightas/dsh-plugin-market.git
cd dsh-plugin-market
dsh plugin --profile web add file:$PWD
安装完成后重启 dsh web(或刷新页面),打开 设置 → 插件,第三个 Tab 即为「市场」。
注:安装/卸载由市场内部直接调用
dsh plugin完成,需要本机具备pnpm(dsh plugin依赖 pnpm 管理 profile)。
目录刷新
市场页右上角「重新同步」会从本仓库 main 分支拉取最新 data/catalog.json;也支持手动更新后提交:
cd dsh-plugin-market
# 需要 GITHUB_TOKEN(建议):30 次搜索/分钟,约 3–4 分钟跑完全量
GITHUB_TOKEN=ghp_xxx node scripts/sync-catalog.mjs
git add data/catalog.json && git commit -m "chore: refresh catalog" && git push
项目结构
dsh-plugin-market/
├── package.json # npm 包清单:dsh.bundle.patch + dsh.client 元数据
├── cordis.patch.yml # 插件层插入(dsh plugin add 时自动应用)
├── lib/index.js # Host 端:catalog / installed / install / uninstall / refresh 路由
├── client/client.js # Client 端:设置 → 插件 → 市场 Tab(手写 bundle,无构建步骤)
├── data/catalog.json # 全量分类目录(由 sync 脚本生成并提交)
└── scripts/
├── sync-catalog.mjs # 全量同步 + 分类脚本(零依赖,Node ≥ 18)
└── smoke.mjs # 本地冒烟:校验 catalog 结构、分类、去重
工作原理
- Host:注册同源 HTTP 路由
/dsh-plugin-market/*。install/uninstall通过node:child_process重新调用启动本进程的 dsh CLI(dsh plugin --profile <profile> add github:owner/repo),带超时与输出捕获;profile 默认取启动参数,可配置覆盖。- 安装前先做 2s GitHub 连通性探针,不可达直接返回明确错误(不悬挂);默认安装超时 90s(
DSH_MARKET_INSTALL_TIMEOUT_MS可覆盖),超时整进程组终止(pnpm→git→git-remote-https全链),不留孤儿进程 - 目录刷新(
refresh-catalog)HTTPS 请求带 10s 超时(原实现无超时,GitHub 被墙时无限悬挂)
- 安装前先做 2s GitHub 连通性探针,不可达直接返回明确错误(不悬挂);默认安装超时 90s(
- Client:以
__ModuleLoader__bundle 格式注册settings.plugins.tab(iddsh-plugin-market,order 20 —— 排在系统自带「可配置」「全部」两个 Tab 之后,即第三个 Tab)。 - 分类器:
scripts/sync-catalog.mjs内置关键词表,对 topics(权重 3)、描述(权重 2)、仓库名(权重 1)打分,取前三名分类。
安全说明
- 插件均为第三方代码,安装即表示信任来源;仅有 dsh 清单(
package.json含dsh字段)的仓库安装后才会真正生效 - 安装接口仅接受同源 POST;市场本身不向任何第三方上报数据
- git 仓库安装需要构建脚本时,pnpm 默认拦截,需按提示在
pnpm-workspace.yaml的allowBuilds中放行
License
MIT © jason.sy.li