0xKcyzz
dsh-plugin-store
DeepSeek Harness 插件商店:浏览、搜索、筛选并一键安装 dsh-plugin 生态插件
- Stars
- 3
- Language
- JavaScript
- Created
- Aug 14, 2026
- Updated
- Aug 15, 2026
Introduction
简体中文 | English
DSH Plugin Store · 插件商店
这是一个 DeepSeek Harness 内置的插件商店:在「设置 → 插件」里新增插件商店,浏览、搜索、筛选并一键安装 / 更新 / 卸载
dsh-plugin生态插件。
安装:
dsh plugin --profile web add github:0xKcyzz/dsh-plugin-store
安装后重启 DSH,打开 设置 → 插件 → 「插件商店」。
功能
- 联网目录 + 渐进式加载:从 GitHub
topic:dsh-plugin拉取插件。搜索接口单查询上限 1000 条,本插件按 Star 分片查询再合并,可加载全部(当前约 1800+ 个)。首屏先秒出前 300 条,其余在后台补全并写入磁盘缓存(30 分钟),之后秒开。 - 卡片列表:类型标签徽章、
作者/仓库名、简介、Star 数、发布日期。 - 搜索:按名称、简介、标签、作者实时过滤。
- 筛选:
- 功能分类(下拉框):全部分类 / 已安装 / 界面增强 / 通知 / 工作流自动化 / 开发辅助 / 知识学习 / 其他工具。
- 类型标签(单行横向滚动,带实时计数):全部类型 / 已收录 + 18 个类型标签。
- 排序:GitHub Stars / 最近添加 / 最近更新 / 名称。
- 分页:每页 10 / 30 / 50(默认 10),页码固定 7 格(翻页不位移)+ 跳页输入框。
- 一键安装:卡片「安装」在宿主机执行
pnpm add,并把声明dsh.bundle的依赖写进 profile 的 bundle 列表。 - 手动安装:标题栏「手动安装」弹出输入框,粘贴安装命令或包名(支持
dsh plugin add github:owner/repo、@scope/pkg、github:owner/repo#subdir等)。 - 卸载:已安装插件卡片按钮变为「卸载」,本地移除(改 package.json + 删 bundle + 删目录,不依赖 pnpm/网络,秒回)。
- 更新检测:已安装且是最新版的显示绿色「最新版」标签;有更新的显示「有更新」标签 + 「更新」按钮;「已安装」页面顶部有「一键更新」批量更新全部。
- 查看详情:跳转插件仓库的 GitHub 页面。
- 安装 / 卸载 / 更新成功或失败都在顶部横幅提示。
界面
打开 设置 → 插件 → 插件商店:
- 顶部:插件总数 / 已收录数 / 已加载条数 + 「一键更新(仅已安装页)」「手动安装」「刷新」按钮。
- 工具栏:搜索框 + 分类下拉框 + 排序下拉框。
- 单行横向滚动的类型标签条(全部类型 / 已收录 / 18 个分类标签,带计数)。
- 双列卡片网格:标签徽章、最新版/有更新状态、名称、简介、Star 数、语言 / License / 发布日期、查看详情 + 安装/更新/卸载按钮。
- 底部分页栏:每页条数、页码(固定 7 格)、上一页/下一页、跳页。
工作原理
本插件是双面(dual-face) DSH bundle,由 cordis.patch.yml 以单行挂载:
- Host 半侧(
src/index.ts→lib/index.js):注册/plugin-store/*HTTP 路由——GET /plugin-store/catalog:抓取 GitHub Search API(按 Star 分片 + 限流重试),归一化、分类,渐进式返回 + 磁盘缓存。GET /plugin-store/installed:读取 profile 的package.json,报告已安装依赖与 bundle。GET /plugin-store/install-meta:返回安装时间戳记录(用于更新检测)。POST /plugin-store/install:预检dsh.bundle→pnpm add <spec>→ 重排dsh.profile.bundles→ 记录安装时间戳。POST /plugin-store/uninstall:本地移除依赖 + bundle + 目录,记录卸载。
- Client 半侧(
src/client/*→lib/client.js):注册settings.plugins.tab(id=store),渲染商店界面,通过fetch调用 Host 路由。
包声明 dsh.bundle.patch + dsh.client,所以安装后:Host 入口由 Loader 加载,浏览器半侧由 client-modules 注入 window.__DSH_BOOT__。
配置(环境变量)
| 变量 | 默认值 | 说明 |
|---|---|---|
GITHUB_TOKEN | 空 | 可选 GitHub Token,提升 API 限流额度(未认证搜索 10 次/分钟,认证后 30 次/分钟),建议配置以更快加载全部插件。 |
DSH_PLUGIN_STORE_PROFILE | web | 安装目标 profile 名。 |
开发 / 构建
npm install # 安装 esbuild 等构建工具
npm run build # 产出 lib/index.js(Host)+ lib/client.js(浏览器)
仓库已提交
lib/构建产物,github:owner/repo安装时无需构建;改动src/后需重新npm run build并提交。
说明与限制
- 重启生效:安装 / 卸载 / 更新只写入依赖与 bundle 列表,需重启 DSH 才挂载 / 移除 / 更新。
- 限流:全量抓取约 22 次搜索请求(带间隔 + 重试);未配置
GITHUB_TOKEN时后台补全较慢(约 2 分钟),界面会标注「已加载 N(部分)」,配置 token 后约 45 秒。 - 更新检测基于
pushed_at:对比「目录里仓库的最新推送时间」与「安装时记录的推送时间」,跟随目录缓存(30 分钟)。 - topic 噪声:
dsh-plugin主题下含不少非 DSH 插件仓库(设计工具、桌面客户端、skill 集、monorepo 皮肤合集等)。「已收录」标签用启发式近似「可安装的 DSH 插件」,非权威口径。 - 可安装性:只有声明
dsh.bundle.patch的 npm 包才会成为真正的 profile bundle;合集仓库(如皮肤库)需用github:owner/repo#subdir手动安装其中的具体子包。 - 分类为启发式:功能分类 / 类型标签由内置关键词表(
src/categories.ts)从 topics、语言、名称、简介派生,可按需调整。