dsh-plugin-marketplace
Verified@w2112515/dsh-plugin-marketplace · v0.2.4 · MIT · Web UI
Out-of-tree installable plugin marketplace bundle for DeepSeek Harness
Install
dsh plugin add @w2112515/dsh-plugin-marketplace Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Creators
Readme
DSH 插件市场(DSH Plugin Marketplace)
DeepSeek Harness(DSH)的插件市场:在 DSH 自己的设置界面里浏览、审阅、安装插件——基于证据的安装安全、逐次同意的脚本安装、策展整合方案、零遥测。
English documentation: README.md
这是什么?
DSH 插件市场是一个仓外可安装的 DSH bundle,为 DeepSeek Harness 提供完整的插件市场能力。它不属于 DSH 官方仓库,不要求修改或合并 DSH 源码,也不是独立 Web 产品。安装进 web profile 后,DSH 的 Host Loader 挂载市场 Host 插件,包内声明的 dsh.client 浏览器入口注册到「设置 → 插件 → 插件市场」。界面语言跟随 DSH 自动切换(中文 / English)。
一览:
- 2200+ 个插件:每日扫描所有携带
dsh-plugintopic 的 GitHub 仓库,浏览不需要 GitHub 账号或 Token。 - 基于证据的安装资格:扫描器证明每个插件在固定 commit 上哪些安装目标真实存在——「一键安装」意味着已证明可装,而不是大概能装。
- 脚本逐次同意:安装脚本逐字展示,显式同意后才运行——永不持久化,绝不批量代同意。
- 策展整合方案:一次审阅,装出一套完整的能力基线。
- 无遥测、无安装统计、无服务器——目录就是 GitHub Pages 上的静态 JSON。

安装到本机 DSH
从 npm 安装:
dsh plugin --profile web add @w2112515/dsh-plugin-marketplace
也可以从 GitHub 安装并固定 commit(本仓库提交了构建后的 lib/,因此不会在你的机器上执行 prepare):
dsh plugin --profile web add github:w2112515/dsh-plugin-marketplace#<40位commit>
普通用户不需要 GitHub Token。自动安装需要 Host 能调用 pnpm 11(插件也会自动尝试 corepack pnpm);需确认脚本的安装需要 pnpm ≥ 11.7。两者都不可用时 WebUI 保持浏览能力并给出恢复提示,不会显示假成功。卸载:dsh plugin --profile web remove @w2112515/dsh-plugin-marketplace。
默认目录由本仓库的 GitHub Pages 提供。开发时可用环境变量临时覆盖:
$env:DSH_PLUGIN_MARKETPLACE_CATALOG_URL = 'https://w2112515.github.io/dsh-plugin-marketplace/plugin-marketplace/catalog-v1.json'
dsh plugin --profile web add D:\Work\dsh-plugin-marketplace
dsh --profile web --dump-config
dsh web
安装安全
自动安装固定 40 位不可变 commit,一律经过 能力预检 → 短期审核 plan → 确认执行,失败时回滚 profile manifest、lockfile 与 workspace 配置。安装资格由固定 commit 上的证据决定:
| 目录条目 | 扫描器证明的内容 | 安装行为 |
|---|---|---|
| 可自动安装 | 所有安装目标(入口文件、patch)在固定 commit 的 git tree 中存在 | pnpm add --ignore-scripts,第三方生命周期脚本绝不运行 |
| 需确认脚本 | 目标缺失(未随仓库提交构建产物)但声明了生命周期脚本 | 审核页逐字展示脚本内容;你显式勾选同意后,Host 以 --allow-build=<包名> 替代 --ignore-scripts 执行一次安装,脚本执行被精确限定在本次调用的这一个包上。不写入 allowBuilds,同意永不持久化 |
| 手动安装 | 以上都不满足 | 只展示仓库链接,市场不执行任何内容 |

整合方案(Solution Packs)
整合包是一个插件仓库策展清单。仓库同时携带 dsh-plugin 与 dsh-plugin-pack 两个 topic 并提供 dsh.pack.json 即成为整合包:
{
"schemaVersion": 1,
"name": "我的精选",
"description": "一套策展的起手组合",
"items": ["owner/plugin-a", "owner/plugin-b"]
}
items为 1–50 个owner/repo;扫描时解析为稳定的仓库 id,改名不会造成身份错配。- 市场逐项显式标注:将自动安装 / 需确认脚本 / 需手动安装 / 未收录 / 已在 profile 中,并给出诚实的「可安装 N/M」计数。整合包卡片还会前置展示安装构成(如「7 一键 · 1 需审脚本 · 1 手动」),由扫描时的目录事实计算。
- 安装整合包 = 串行复用单插件的 plan→execute 路径,首个失败即停止、不回滚、逐项报告结果。
- 整合包不放权:需确认脚本的插件仍需进入其详情页单独审阅同意;手动项保持手动。
- 整合包永不按 star 排序。 star 排序只会奖励「把最高星插件塞进包里」的行为——那是换了皮的 star 榜单,不是策展。排序为编辑精选优先(由市场维护者审阅一致性与诚实度后列入
FEATURED_MARKETPLACE_PACKS),其余按新鲜度。策展宁缺毋滥:能力空缺就空着,不用未经验证的插件凑数。
用 Codex、Claude Code 或 Cursor 写整合包时,安装便携 Skill dsh-marketplace-publish。收录规则仍以本页和扫描器为准。


社区评分
评分借用 GitHub 原生 reaction:目录中每个插件在评分 issue 下有一条投票评论,点 👍/👎 即投票——一票对应一个真实 GitHub 账号。详情页展示总评分与近 90 天两个窗口,不满 10 票不出结论。客户端只读,投票全程发生在 GitHub 上,市场绝不持有你的凭据。
面向 Agent
市场对 agent 原生开放:Host 插件注册四个工具,DSH agent 在任何会话中都可以调用——marketplace_search、marketplace_detail、marketplace_install、marketplace_manual_guide。搜索与详情是只读的;安装走与 WebUI 完全相同的 plan→execute 管线,且每次调用都要求人工一次性批准——批准提示中带有插件名、固定 commit 与风险信号——同意绝不持久化、绝不批量代授。需脚本审阅的条目会被设计性拒绝(逐字审阅留在「设置 → 插件 → 插件市场」);手动条目市场绝不执行——guide 工具仅抓取该仓库自己的安装说明,交给 agent 用普通 shell 工具在会话既有权限下执行。插件安装后需重启 dsh web 生效。在 bundle 配置中设 agentTools: false 可关闭 agent 面。
Agent 也可以用普通 shell 工具安装市场本身:
dsh plugin --profile web add github:w2112515/dsh-plugin-marketplace#<40位commit>
dsh --profile web --dump-config # 验证 bundle 层
# 重启 dsh web 生效
隐私立场
本市场只读静态目录,永不回传:不统计安装次数、没有遥测、没有分析端点——也刻意没有可以收集它们的服务器,目录就是 GitHub Pages 上的一份 JSON,每个安装决定都发生在你自己机器上。流行度信号只来自 GitHub 公开数据(stars),仅此而已。
工作原理
- 分发单元:声明
dsh.bundle.patch的 npm/Git/tarball package。 - Host:下载并严格校验中央静态目录(schema + 完整性摘要),维护 last-known-good 缓存,拥有当前 profile 的审核与写入权。
- Client:通过
settings.plugins.tabSlot 提供检索、分类筛选、详情、风险信号、审核确认与整合方案界面。 - Host/Client 通道:包私有、同源的
/api/plugin-marketplaceJSON API,不修改 DSH 的静态 Typert Remote 清单。 - 目录生产:本仓库 GitHub Actions 每日扫描带
dsh-plugintopic 的候选仓库;只有静态校验通过且未归档的 Bundle 进入用户目录,拒绝项只保存在 workflow artifact。遇到 GitHub Search 1,000 条上限时按创建时间窗口递归拆分。只有中央扫描器使用仓库自带的GITHUB_TOKEN。 - 分类体系:插件按九个类别归类(主题、记忆、用量、技能、安全、消息渠道、界面、工具、模型接入),依据是显式的
dsh-category-<slug>topic 或保守整词匹配;没有任何可靠信号的插件诚实地留在「未分类」。
插件作者指南
可被收录的条件:仓库携带 dsh-plugin topic、package.json 声明 dsh.bundle.patch、且 cordis.patch.yml 有效。可选 dsh-category-theme|memory|usage|skill|security|channel|ui|tool|provider topic 显式决定目录分类。
获得自动安装资格:让你的 bundle 要加载的文件存在于固定 commit 的 git tree 中——把构建产物(如 lib/)提交进仓库(本仓库即如此)。若刻意不提交构建产物、由 prepare/install 脚本生成,用户会在安装前逐字看到脚本并可选择按次同意;同意范围永不超出被审阅的 commit。
用 Codex、Claude Code 或 Cursor 上架插件时,安装同一份 dsh-marketplace-publish。它不替代上面的规则。
配置
bundle 插入的 row id 是 plugin-marketplace。可在 $DSH_HOME/profiles/web/cordis.patch.yml 覆盖完整配置(patch 对 config 是整体替换,必须写全所有字段):
- id: plugin-marketplace
config:
catalogUrl: https://w2112515.github.io/dsh-plugin-marketplace/plugin-marketplace/catalog-v1.json
maxAgeMs: 172800000
timeoutMs: 60000
maxBytes: 15000000
agentTools: true
目录是 GitHub Pages 上的每日快照。今天刚出现在 GitHub 上的插件,要等下一次扫描成功才会进市场。扫描失败时继续用上一份快照。
仓库结构
dsh-plugin-marketplace/
├── package.json
├── cordis.patch.yml
├── src/
│ ├── index.ts # Host 插件与同源 API
│ ├── catalog*.ts # schema、网络、LKG 缓存、查询
│ ├── profile-operations.ts # plan/确认/回滚、同意门控执行
│ └── client/ # WebUI Slot 插件(中/英)
├── scripts/ # GitHub 扫描器(插件 + 整合包)
├── website/public/ # workflow 生成的静态目录
└── .github/workflows/ # CI 与每日 Pages 发布
本地构建
要求 Node.js ^22.19.0 || >=24 和 pnpm 11。
cd D:\Work\dsh-plugin-marketplace
pnpm install --frozen-lockfile
pnpm run build
pnpm run check
pnpm pack --dry-run
非目标
- 不向
deepseek-ai/deepseek-harness提交代码或要求官方发布。 - 不修改 DSH 的 Web bundle、Settings Slot、API Remote 或 CLI 源码。
- 浏览器不直接访问 GitHub API,不要求用户配置 Token。
- 未经用户逐次、逐 commit 的显式同意,绝不运行生命周期脚本。
- 不做任何形式的遥测——包括安装次数统计。
友情链接
- DeepSeek Harness——宿主项目
- DSH 分类星数榜首——按机械规则收录各分类 star 数最高条目的整合包(标注快照日期)
- DSH Marketplace Publish——上架插件与创建整合包的便携 Agent Skill
- linux.do——新的理想型社区(友链)