# dsh-plugin-store · 插件雷达
[English](README.md) | **简体中文**
DeepSeek Harness(dsh)的 **App Store 风格插件雷达**。它作为一个标准 dsh bundle 安装,并在 Web 设置页新增「插件雷达」入口。
- 探针插件的方式来自**同类雷达/市场插件的真实实现**,而不是抓 README 链接:
- `https://dsh.do/api/packages` — dsh.do 官方目录 API,分页拉取全量目录(4419+)。
- `https://awesome-dsh-plugin.com/plugins.json` — 精选注册表(1247+,带分类、中英描述、安装命令)。
- GitHub Search `topic:dsh-plugin` — 同时拉取 `sort=stars` 与 `sort=updated` 两个切片。
- 按 **star 数 / 实用度 / 分类 / 搜索 / 最近更新** 浏览。
- 支持 **手动刷新或每 15 / 30 / 60 / 120 分钟自动刷新**。
- 一键 **安装 / 卸载** 会按数据源选择安装目标:优先使用目录中的 npm 安装命令(例如 **modlens** 用 npm 安装),GitHub URL 仅作兜底;复制命令自动带上当前 profile。
- 是真正的 DSH **bundle 插件**(`dsh.bundle.patch`),安装后也会出现在原生「插件」页面里。
- 头像预加载 + 缓存,避免图标闪烁。
## 相比同类插件雷达/市场的优势
| 维度 | 常见雷达 / 市场 | 本插件 |
| --- | --- | --- |
| 数据来源 | 抓 README 链接、只查一页 GitHub 搜索,或只推卡片流 | 使用 dsh.do 官方目录 API + 精选注册表 JSON + GitHub stars/updated 双切片,与原实现同源 |
| 覆盖率 | 常见截断在 1000 个仓库或单页 topic | dsh.do 全量分页(4419+),合并精选注册表与 GitHub 切片 |
| 排序 | 通常只按 star 或只按更新时间 | 透明的**实用度评分**(star、描述完整度、topic、精选收录、更新时间、主页/语言)+ star/更新时间/名称排序 |
| 体验 | 悬浮卡片流、chat-skill 流程或裸表格 | 原生设置页:Hero、分类 chips、搜索、排序、分页、安装/卸载按钮 |
| 安装形态 | 有些是 skill,有些要手改 `cordis.patch.yml` | 真正 `dsh.bundle` 包:`dsh plugin add` 即挂载进 profile 插件树 |
| 刷新 | 固定间隔或仅手动 | 用户可选手动 / 15 / 30 / 60 / 120 分钟,并持久化 |
| 图标 | 原始 `
` 列表容易闪烁 | 头像预加载 + 缓存 + 占位兜底 |
| 本地测试 | 通常要先发布 | `scripts/test-local.sh` 不发布即可起临时 dsh web 测试 |
## 安装
> 注意:`dsh-plugin-store` 这个 npm 包名可能已被占用。发布前请修改 `package.json` 的 `name`,并同步修改 `lib/client.js` 顶部 `window.__ModuleLoader__.load({ id: "dsh-plugin-store" })` 中的 id。
```bash
# 从 npm
dsh plugin --profile web add dsh-plugin-store
# 或从 Git
dsh plugin --profile web add https://github.com//dsh-plugin-store.git
```
然后重启/刷新 dsh Web 界面,打开「设置」即可看到「插件雷达」。
## 安装目标如何选择
插件雷达不再对每个插件一律使用 GitHub URL 安装。宿主侧会按以下优先级解析每个插件的首选安装目标:
| 优先级 | 来源 | 示例 | 说明 |
| --- | --- | --- | --- |
| 1 | dsh.do 的 `installCommandNpm` | `@liustack/modlens` | 最优先:npm 包自带 `dist` 产物,开箱即用。 |
| 2 | dsh.do 的 `installCommandGit` | `https://github.com/owner/repo.git` | 无 npm 命令时使用。 |
| 3 | awesome-dsh-plugin 的 `install` | npm 或 git 规格 | 社区精选命令。 |
| 4 | GitHub URL 兜底 | `https://github.com/owner/repo.git` | 数据源没有安装命令时才使用。 |
每张卡片会显示安装方式徽标(`npm 安装` / `git 安装` / `GitHub 安装`),安装按钮与复制命令使用同一个解析结果。例如 **modlens** 会安装 `dsh plugin --profile web add @liustack/modlens`,而不是从 GitHub 源码仓库安装。
## 不发布本地测试
```bash
./scripts/test-local.sh 34129
```
该脚本会把插件复制到一次性 `DSH_HOME`,并在指定端口启动独立 `dsh web`。
## 数据源
| 来源 | 说明 | GitHub Token |
| --- | --- | --- |
| `github-topic:stars` | GitHub Search `topic:dsh-plugin`,按 star 排序 | 可选 |
| `github-topic:updated` | GitHub Search `topic:dsh-plugin`,按最近更新排序 | 可选 |
| `dsh.do` | 官方目录 API `https://dsh.do/api/packages`,分页全量 | 无 |
| `curated:awesome-dsh-plugin` | 精选注册表 `https://awesome-dsh-plugin.com/plugins.json` | 无 |
设置 `DSH_GITHUB_TOKEN` / `GITHUB_TOKEN` 可提高 GitHub API 配额;`DSH_GITHUB_API` 可覆盖 API 地址。
## 提交插件到 dsh 生态的步骤
1. **给仓库打上 `dsh-plugin` topic**——这是最关键的一步,也是官方推荐的方式。官方及第三方插件市场会自动发现和收录该仓库。
2. **(可选)提交到社区精选列表**
- 复刻(Fork)`awesome-deepseek-harness` 仓库。
- 在 `README.md` 与 `README.zh-CN.md` 中按格式添加本插件信息。
- 提交 Pull Request(PR)。
- 注意:官方主仓库暂不接受外部 PR,`CONTRIBUTING.md` 中明确指出无法接受外部 Pull Request。
3. 最佳实践:先做出来并打上 `dsh-plugin` 标签,再提交社区精选列表以增加曝光。
## 开发
```bash
node --check lib/index.js
node --check lib/probe.js
node --check lib/client.js
node --test test/*.test.mjs
```
host 侧探针引擎可独立测试:`probe()` 返回 `{ plugins, sources, generatedAt }`。