跳到主内容

deepseek-plugin-store

24Star3Fork1Issue0Watching

DSH Web 端的插件商店入口插件:侧边栏一键打开 deepseekplugin.store iframe,可视化浏览+勾选批量把 GitHub 插件装到 web profile。

机审证据4/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
JavaScript
License
CC0-1.0
分支
main
agent-toolsai-agentsawesome-listcommunitycurated-listdeepseekdeepseek-harnessdeveloper-tools

安装

命令web profile
$ dsh plugin --profile web add github:Ericwong5021/deepseek-plugin-store

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 Ericwong5021/deepseek-plugin-store:先查看仓库 https://github.com/Ericwong5021/deepseek-plugin-store 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

DSH Web 端的「插件商店」入口插件:在侧边栏放一个商店按钮,点开后把 deepseekplugin.store 站点以全屏 iframe 形式铺到对话区,让你在商店页面上浏览、勾选 GitHub 插件源,DSH 后台把勾选项直接装进 web profile。

核心能力

  • 侧边栏入口:通过 cordis.patch.yml 把 plugin-store 槽位注入 sidebar.footer.action 列表(order=70),侧边栏底部多一个购物袋风格的按钮,宽栏显示「插件商店」文字、窄栏仅显示圆形图标(lib/client.js:225-253)
  • 全屏商店页:点击按钮后通过 history.pushState 切换到 /store 路由,并把对话区临时隐藏、用 React Portal 把 iframe 嵌入原位置,关闭后自动恢复(lib/client.js:86-117 / 118-131)
  • 双向握手协议:iframe 加载完毕后通过 postMessage 上报 {source:"deepseek-dsh", type:"dsh-store-capabilities", install:connected, catalogSchema:2, pluginVersion},监听 iframe 反向消息 dsh-install-request 并回 dsh-install-result(lib/client.js:139-173)
  • 后端安装命令注册:在 Cordis 宿主侧注册一个名为 plugin-store-install 的命令,解码 base64url 编码的 {profile, specs} 负载后用 ctx.subprocess.spawn 派生 dsh plugin --profile X add ... 子进程完成安装(lib/index.js:4 / 60-72)
  • 连接状态感知:通过 ctx.connection.hostDescription 订阅连接状态,连接断开时按钮仍可打开商店页面,但「安装」按钮被禁用并显示提示气泡(lib/client.js:218-253)
  • 会话切换保护:打开商店前先记录当前 session id,关闭时若当前没有会话则自动恢复之前的会话,避免误关聊天窗口(lib/client.js:61-78 / 101-117)

技术实现

  • 语言: TypeScript + JavaScript(编译产物在 lib/)
  • 关键依赖: @deepseek-ai/dsh-client-runtime / @deepseek-ai/dsh-client-ui-sidebar(peerDependency,平台种子模块)、@deepseek-ai/cordis ^4.0.1(peerDependency)、react ^18.2.0 + react-dom ^18.2.0、lightningcss ^1.32.0
  • 架构模式: 双端注入——服务端通过 cordis.patch.yml 把自己注册到宿主,再通过 dsh.client.inject 把自己注入到 Web 客户端 runtime;客户端用 React 组件挂入 sidebar.footer.action 槽位,用 iframe + postMessage 与外部商店站点解耦
  • 入口文件: lib/index.js(Cordis 宿主端 apply)+ lib/client.js(Web 客户端 React 组件)

适用场景

DSH 用户想找新插件但不想在终端手动敲 dsh plugin add github:... 时,打开侧边栏商店按钮即可在可视化页面里挑插件、勾选后让 DSH 自己装。商店页面本身由 https://deepseekplugin.store/ 提供(公开站点数据来自本仓库每小时自动同步的 catalog),所以你装上的插件版本、分类、收录顺序与官网保持一致。

前置依赖与兼容性

依赖最低版本说明
DSH Web 客户端^0.1.0-rc.6peerDependencies 中 @deepseek-ai/dsh-client-runtime / -ui-sidebar / -ui-slots 均要求此版本,且 dsh.client.inject 列表里点名要前两个(package.json:62-67 / 25-36)
@deepseek-ai/cordis^4.0.1peerDependency,宿主端 apply 依赖其 Context/commands/subprocess(package.json:63)
Node.js未声明package.json 未声明 engines;运行期依赖 node:os、node:path 等内置模块与 React 18、lightningcss ^1.32.0
DSH_HOME 环境变量可选不设置时默认 ~/.dsh;设置后无论相对还是绝对路径都会作为 DSH 子进程的 env.DSH_HOME(lib/index.js:7-11 / 49-53)
平台跨平台无 os/cpu 限制,Web 端运行

安装方式

dsh plugin --profile web add github:Ericwong5021/deepseek-plugin-store

配置项

本插件无需额外配置。安装后重启 DSH Web 客户端,侧边栏底部会自动出现「插件商店」按钮。

常见问题

Q: 装上之后在哪里打开插件商店?

A: 安装后重启 DSH Web 客户端,侧边栏底部会出现一个购物袋样式的「插件商店」按钮(宽栏模式显示文字,窄栏模式只显示圆形图标),点一下就会把内嵌商店页面全屏铺在对话区域上。

Q: 商店里的内容是从哪里加载的?

A: 不是一个内嵌资源管理器,而是一个指向 https://deepseekplugin.store/ 的 iframe,外加一套 postMessage 协议(dsh-store-ready / dsh-install-request / dsh-install-result)互通安装请求,所以使用时要保证 DSH 客户端能访问 deepseekplugin.store 这个站点。

Q: 选中的插件会被装到哪个 profile?

A: 客户端侧硬编码装到名为 web 的 profile(lib/client.js:241),不是当前激活 profile,也不是让你在 UI 里挑;安装命令会走宿主端的 dsh plugin --profile web add ... 子进程来执行。

Q: 一次最多能装多少个?

A: 协议层在解码时会校验购物车长度必须在 1-20 之间,且每个 spec 必须形如 github:owner/repo(可附带 #sha 或分支/路径片段);超出范围或格式不对会被直接拒绝并报错。

Q: 需要 DSH 会话处于已连接状态吗?

A: 商店页面任何时候都能打开浏览,但只有在连接 DSH 宿主会话后才能触发「安装」按钮:未连接时会显示「连接 DSH 会话后可直接安装插件」的提示气泡,点击安装会抛「DSH 连接已断开」错误。

Q: 自定义 DSH_HOME 的用户会被影响吗?

A: 安装子进程会读取 DSH_HOME 环境变量并把它显式传给子进程;如果没设置,默认走 ~/.dsh。也就是说,主进程用自定义 DSH_HOME 启动时,安装操作也会用同一份 home。

Q: 怎么把它自己卸载掉?

A: 安装命令的逆向同样走标准 DSH CLI:在终端里执行 dsh plugin --profile web remove github:Ericwong5021/deepseek-plugin-store 即可。

Q: 这个仓库本身还做别的事吗?

A: 是的,仓库同时是 deepseekplugin.store 静态站点的数据源——data/ 目录下的 plugins.json、candidates.json、editor-picks.json 等由每小时一次的 GitHub Action 同步生成,并喂给 site/template.html 渲染 README 与 docs/ 下的多语言页面。

上手难度

入门 — 装上即用,侧边栏多一个按钮,无配置项;唯一要记住的是「装到 web profile」这一条与终端 dsh plugin 的目标 profile 是同一份。

已知问题与限制

  • 仅支持 github:owner/repo 形式的安装来源,npm 包与本地路径都不在协议白名单内(lib/index.js:4 / 30)
  • 客户端硬编码装入 web profile,无法通过 UI 选择目标 profile,多 profile 工作流的用户需要自行用 CLI 重装到其他 profile(lib/client.js:241)
  • 商店 iframe 来源固定为 https://deepseekplugin.store/,离线或该站点不可达时无法浏览与安装(lib/client.js:33-34 / 187)
  • 单次购物车最多 20 项;超出会被 decodeRequest 抛出「购物车中包含不受支持的插件来源」(lib/index.js:30)
  • 关闭商店页时如果当前没有活跃会话,组件会自动恢复打开前的那个会话;如果用户期望「关闭即完全离开」,行为上可能会有一次无感回跳(lib/client.js:113-117)
  • DSH 客户端必须处于已连接状态才能触发安装,未连接状态下点击安装按钮会得到「DSH 连接已断开,请重新启动 DSH 后重试」错误(lib/client.js:235 / 247)

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/Ericwong5021/deepseek-plugin-store)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录