DSH-Plugins-Marketplace README

The project's README from github.com/bradeGithub/DSH-Plugins-Marketplace. As one markdown file: README.md.

DSH插件市场(dsh-plugin-marketplace)

🌐 语言 / Language: 中文 | English

一个为 DeepSeek Harness(DSH)打造的插件市场插件:自动嗅探 GitHub 生态全部插件,在 DSH Web GUI 设置页中以卡片列表展示,支持一键安装 / 版本检测 / 自动更新 / 已安装识别,全程无需命令行。

DeepSeek Harness GitHub Stars License Registry CI Last Commit 类型 平台 i18n

DSH 插件市场 — 社交预览封面



✨ 核心优势

9500+ DSH 插件  ·  20000+ 通用 Skills  ·  2 小时 自动收录新插件  ·  0 API 限流

优势 说明
🔍 插件全 自动嗅探 GitHub dsh-plugin topic 的全部仓库(当前 9500+),另有 20000+ 通用 Skills(agent-skills ∪ claude-skills)独立栏目
🤖 自动收录,零申请 CI 每 2 小时增量扫描 topic,作者打上 dsh-plugin 标签后最迟 2 小时自动进市场——无需提 issue、无需人工审核
⚡ 秒开,零限流 列表走静态索引(jsDelivr CDN 分发)——几千个插件秒开,终端用户零 GitHub API 调用、零限流
🎯 智能类型识别 自动识别并安装 4 种类型:cordis 插件 / 技能(SKILL.md)/ agent 预设 / 安装脚本——源码型插件自动弹构建确认,需要 API Key 时自动暂停索取材料
🔄 版本检测与一键更新 已装版本 vs 仓库最新版本自动对比,不一致时按钮变「更新」,一键覆盖升级;npm 发布型插件按 npm dist-tags 对比(同源不误报)
🔒 安全护栏 第三方脚本执行前弹风险确认;安装材料只作环境变量传入不落盘;环境变量最小化隔离;Host 白名单 + CSRF 头防跨站伪造
🏷️ 分类 + 社区徽章 构建期自动分类(12 类筛选 chips);awesome 聚合页收录的仓库打「社区收录」蓝色徽章
🌍 中英双语 界面与安装日志跟随 DSH 语言设置自动切换

给插件作者的规范:STANDARD.md——每种插件形态应该怎么写才能被市场正确收录、正确安装、正确更新(含类型判定规则与常见反模式)。


⚡ 一键安装(复制即用)

方式一(推荐):官方 dsh CLI——由 Harness 官方安装机制完成安装与注册(需要 dsh CLI 与 pnpm,dsh web 用户通常已具备):

dsh plugin --profile web install bradeGithub/DSH-Plugins-Marketplace

卸载 / 更新同样走官方命令:

dsh plugin --profile web remove bradeGithub/DSH-Plugins-Marketplace
dsh plugin --profile web install bradeGithub/DSH-Plugins-Marketplace   # 重装即更新

方式二:安装脚本(没有 dsh CLI 的环境;脚本检测到 dsh CLI 时会自动改用官方方式):

平台 命令
Windows (PowerShell) irm https://raw.githubusercontent.com/bradeGithub/DSH-Plugins-Marketplace/main/install.ps1 | iex
macOS / Linux curl -sL https://raw.githubusercontent.com/bradeGithub/DSH-Plugins-Marketplace/main/install.sh | bash

喂给 AI 的一句话(AI 具备命令执行能力即可,无需解释):

安装 DSH 插件市场插件(dsh-plugin-marketplace):运行 dsh plugin --profile web install bradeGithub/DSH-Plugins-Marketplace;若没有 dsh CLI,则克隆 https://github.com/bradeGithub/DSH-Plugins-Marketplace 到 ~/.dsh/profiles/web/node_modules/dsh-plugin-marketplace,在 ~/.dsh/profiles/web/cordis.patch.yml 中注册(id: plugin-marketplace,name: dsh-plugin-marketplace)。完成后重启 dsh web。

⚠️ 安装脚本方式会从本仓库下载并执行脚本(复制插件本体 + 注册 cordis.patch.yml),属于「信任即执行」;建议先下载脚本肉眼检查一遍再执行(irm <url> | iex / curl <url> | bash 是公认的远程代码执行模式)。官方 CLI 方式由 Harness 自身完成安装,无需执行第三方脚本。 安装完成后需重启 DSH(重新运行 dsh web)再刷新页面。


🚀 使用方法

  1. 重启 DSH 后打开 Web GUI,进入 设置 → DSH插件市场
  2. 页面自动加载全部插件(已安装置顶,其余按 Star 排序),也可点击「刷新」强制重新拉取
  3. 使用搜索框按名字过滤插件;分类 chips 按栏目筛选
  4. 点击插件卡片上的按钮:
    • 安装 → 开始安装,日志实时滚动
    • 需要材料时 → 页面弹出输入框,提供 API Key 等后点「提交材料并继续安装」
    • 更新 → 检测到新版本时覆盖升级
    • 已安装(灰色)→ 无需操作
  5. 切换到 通用 Skills tab 浏览 20000+ 技能,支持搜索 / 触底分页 / 一键安装

✨ 功能特性


📦 手动安装

💡 不想手动操作?用上面的 ⚡ 一键安装(一条命令或一句话交给 AI)。

本插件位于 ~/.dsh/profiles/web/node_modules/dsh-plugin-marketplace/,并通过 ~/.dsh/profiles/web/cordis.patch.yml 注册:

- insert:
    - id: dsh-plugin-marketplace
      name: dsh-plugin-marketplace

⚠️ 重启生效:DSH 的 Web profile 关闭了配置热重载(hmr 被禁用),修改插件代码或注册条目后需要重启 DSH(重新运行 dsh web 或 start-dsh.bat)再刷新页面。


🔧 工作原理

数据源(registry 优先,搜索 API 兜底)

GitHub Actions(每 2 小时,仓库自带 token)
   └─ scripts/build-registry.mjs:分页拉取 topic:dsh-plugin,增量合并,去重/排除本体
        └─ 提交 registry.json 回 main(全量 9500+ 个插件,按 Star 排序)
             └─ 插件读取:jsDelivr CDN(国内快)→ raw.githubusercontent(兜底)
                  └─ 全部失败才回退 GitHub 搜索 API(分页翻到底,缓存 10 分钟)

安装流程(5 步)

[1/5] git clone 仓库到 ~/.dsh/marketplace/cache/<owner>__<name>/
[2/5] 识别类型(SKILL.md / agent 预设 / 安装脚本 / package.json)
[3/5] 扫描 README / install 脚本 / .env 示例中的环境变量(API_KEY 等)
      └─ 发现需要 → 暂停安装,等待用户提供材料(可跳过)
[4/5] 执行安装(复制 skill / 预设 / 插件包,或运行安装脚本)
      └─ 脚本类 → 先征求用户确认(第三方代码风险提示)
[5/5] 写入安装清单(installed.json)并返回结果

版本检测逻辑

数据 来源
已装版本 installed.json 记录;历史安装无记录时读取安装目录 package.json
最新版本 优先 registry 索引的 version 字段(CI 每 2 小时刷新);索引缺失时回退市场缓存克隆目录的 package.json;npm 发布型插件(cli)按 npm dist-tags 的 npm_version 同源对比

两者都存在且不一致 → 卡片显示「更新」按钮 + 已装 vX → vY 提示。 (仅对含 package.json 的 cordis 插件生效;skill / 预设 / 脚本类无版本概念。)

已安装判定(五重,打开市场即自动比对)

  1. ~/.dsh/marketplace/installed.json 安装清单(本插件安装的)
  2. 目录启发式探测:~/.dsh/skills/<名>、~/.dsh/.agent-presets/<名>、市场缓存克隆
  3. 包名映射:扫描已安装目录的 package.json 名称(含 scoped 包 @scope/name),与仓库名 / 原始仓库名 / 索引包名(pkg_name)比对——仓库名与包名不一致(如 DSH-Plugins-Marketplace → dsh-plugin-marketplace)也能识别,并正确读出已装版本
  4. repository 归属校验(双向):已装包 package.json 的 repository 字段必须与目标仓库一致——既防「同名不同仓库」误判,也支持反向查找(先装插件后装市场时,scoped 包 / 包名差异大的插件也能正确标为已安装)
  5. 本体识别:仓库命中本插件自身 package.json 的 repository 字段即视为已安装

官方插件自动排除:DSH 自带的官方插件(@deepseek-ai/*,运行时自动枚举 + 内置兜底清单)永远不会被当成「用户安装的市场插件」,也不会被误标为已安装。


📁 文件结构

~/.dsh/
├── profiles/web/
│   ├── node_modules/dsh-plugin-marketplace/   ← 本插件本体
│   │   ├── package.json        (dsh.client 声明 + exports)
│   │   └── lib/
│   │       ├── index.js        (服务端:GitHub 拉取 / 安装管线 / 版本检测)
│   │       ├── client.js       (发布 bundle:客户端市场页面 UI)
│   │       └── client-src/     (bundle 源片段,开发时由 assembler 拼接)
│   └── cordis.patch.yml        (插件注册条目)
└── marketplace/
    ├── cache/<owner>__<name>/  (克隆缓存,安装与版本对比的数据源)
    └── installed.json          (已安装清单:type / name / location / version / installedAt)

📡 HTTP 接口

接口 方法 说明
/api/marketplace/list GET 插件列表(按 Star 降序,含 installed / installedVersion / latestVersion / updateAvailable、source 数据源、dropped 同名隐藏数);?refresh=1 强制重新拉取
/api/marketplace/skills GET 通用 Skills 列表(skills.json 索引,过滤 has_skill !== false,含 installed / installedAt);?refresh=1 强制重新拉取
/api/marketplace/install POST 安装 / 更新,body:{ "repo": "owner/name", "answers": { "ENV_NAME": "值" } };返回 done / awaiting-input / aborted / failed / manual 状态 + 逐步日志
/api/marketplace/uninstall POST 卸载,body:{ "repo": "owner/name" };删除安装目录 / 包目录 + cordis.patch.yml 注册条目 + 安装记录;返回 done(含 removed 计数与日志)
/api/marketplace/self-update GET 市场本体自更新检测({ installedVersion, latestVersion, updateAvailable, checkedAt })
/api/marketplace/self-update POST 执行市场本体更新(官方 CLI 安装 + 装后版本校验);返回 no-update / done / failed
/api/marketplace/check-update POST npm 型 cli 插件手动版本检测(body { repo };查 npm registry,npmmirror 优先);返回 done + updateAvailable / latestVersion
/api/marketplace/feedback POST 提交安装反馈(body { repo, ok, note })→ 移除队列并同步创建 GitHub issue;返回 done(含 issueUrl / manualUrl)
/api/marketplace/feedback/pending GET 待确认反馈队列({ pending: [...] })
/api/marketplace/feedback/token GET / POST 读 / 写 GitHub token 配置(写为 { token },空串清除;返回 hasToken)
/api/marketplace/env-keys GET 已安装插件的可配置环境变量键名(值不回显);?repo= 查询
/api/marketplace/env-edit POST 写入插件环境变量(body { repo, values },落盘 ~/.dsh/.env + envs.json);返回 done + applied
/api/marketplace/backup GET 导出安装记录备份({ backup: { repos: [...] } })
/api/marketplace/restore/diff POST 给定备份计算恢复差异(body { backup };返回 missing / already)
/api/marketplace/backup/webdav POST 备份推送到 WebDAV(body { url, username?, password? })
/api/marketplace/restore/webdav POST 从 WebDAV 拉取备份并返回恢复差异
/api/marketplace/logs GET 导出脱敏安装日志({ text, count })

说明:

  • 卸载依赖 installed.json 安装记录——通过本市场安装的插件可完整卸载;手动(非市场)预装的插件仅能被识别为「已安装」,不提供卸载按钮。
  • 所有写操作(install / uninstall / self-update POST / feedback / feedback-token POST / env-edit / webdav 推拉)鉴权一致:回环请求直接放行,LAN 请求需 lanWrite: true 配置 + 会话 token(x-dsh-marketplace-token 头)。

⚠️ 安全说明


⚖️ 免责声明

DSH-Plugins-Marketplace (bradeGithub/DSH-Plugins-Marketplace)

Searching Database…

Что это?Это маркетплейс-плагин для DeepSeek Harness (DSH), который автоматически находит все репозитории GitHub с тегом 'dsh-plugin', показывает их карточками на странице настроек DSH Web GUI и позволяет устанавливать, обновлять и отслеживать их в один клик, без командной строки.
Это отдельное приложение или плагин, который добавляется во что-то другое?Это плагин cordis, устанавливаемый в ваш существующий DSH Web GUI (в раздел настроек), а не отдельное приложение; он расширяет веб-профиль DSH страницами маркетплейса и HTTP API эндпоинтами.
Сначала нужны CLI dsh и pnpm?Рекомендуемый способ установки требует CLI dsh и pnpm, которые у тех, кто уже запускает DSH Web, обычно есть; без них сработает резервный скрипт установки, но он выполняет сторонний код на вашей машине.
Безопасно ли просто нажимать «Установить» на любом плагине?Не вслепую: сторонние скрипты установки и npm lifecycle-скрипты выполняют произвольный код, поэтому маркетплейс показывает диалог подтверждения перед их выполнением, а отказ отменяет установку и очищает все следы; отслеживание версий к тому же работает только для плагинов cordis с package.json, но не для скиллов или пресетов.
Какие ОС поддерживает резервный скрипт установки?Прилагаемый скрипт установки в один клик поддерживает Windows (PowerShell) и macOS/Linux (curl | bash); сам плагин работает там, где размещён ваш DSH Web GUI.
Какие типы репозиториев он реально умеет устанавливать автоматически?Он распознаёт четыре типа плагинов: плагины cordis с package.json, скиллы с SKILL.md, пресеты агентов с preset.yml и простые скрипты install.sh/install.ps1, автоматически устанавливая каждый в нужный каталог DSH.
Насколько свежий список плагинов?Задача CI сканирует топик 'dsh-plugin' на GitHub каждые 2 часа и публикует статический реестр через CDN jsDelivr, так что новые плагины появляются примерно в течение 2 часов, а конечные пользователи не тратят ни одного вызова GitHub API и не упираются в лимиты.
Как он понимает, что плагин уже установлен?Он сверяет пять сигналов: собственный журнал installed.json, эвристику по каталогам в папках skills/presets, сопоставление имён пакетов, совпадение поля repository в установленных package.json и самоидентификацию с репозиторием самого маркетплейса.
Для чего нужна отдельная вкладка «Skills»?Это второй просматриваемый индекс из 20 000+ репозиториев скиллов общего назначения (объединение agent-skills и claude-skills), независимый от списка DSH-специфичных плагинов, со своим поиском, пагинацией и установкой в один клик в ~/.dsh/skills/.
Size
2.3 GB
Stars
176
Age
2mo
Commits · 90 Days