# dsh-plugin-hub

> 给 DSH Web 界面加插件管理面板:一键开关已装插件、浏览/搜索/安装 GitHub 与自定义源上的插件和技能、内置 DSH 框架一键升级。

## Metadata

- Author: [@Noob-stupid](https://github.com/Noob-stupid)
- Repo: <https://github.com/Noob-stupid/dsh-plugin-hub.git>
- GitHub: [Noob-stupid/dsh-plugin-hub](https://github.com/Noob-stupid/dsh-plugin-hub)
- Stars: 62
- Language: JavaScript
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Topics: `deepseek-harness`, `dsh`, `dsh-plugin`, `dsh-plugins`, `github`, `help-wanted`, `plugin-manager`, `plugin-market`
- Forks: 3
- Open Issues: 1
- Last push: 2026-08-20T21:50:21.000Z
- Added: 2026-08-14T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:Noob-stupid/dsh-plugin-hub
```

## Wiki

## 一句话定位
dsh-plugin-hub 是 DeepSeek Harness 的插件管理面板:把"装/卸/启/停"插件、浏览插件市场、搜索 GitHub/Gitee/自定义源、安装技能和 Agent 预设、以及一键升级 DSH 框架这件事,全部塞进设置页的一个 Tab,不用再回到终端敲 dsh 命令。

## 核心能力
- 在设置页的「插件管理」Tab 一键启用/停用已装插件(写用户补丁层,HMR 约 1 秒生效),受保护的宿主基础设施行自动屏蔽开关
- 浏览内置静态插件索引(500 个插件 + 300 个技能,每 6 小时自动收录 CI 刷新),打开 GitHub/Gitee/自定义源做关键词搜索
- 一键安装插件或技能,自动按主→备顺序尝试配置的软件源、curl 通道、git 通道,失败时给出本地 AI 兜底并弹费用授权
- 软件源管理:添加/编辑/设主源 npm registry,内置 GitHub 与 Gitee(仓库直装模式),可加任意自定义搜索源支持请求头认证
- 检测已装插件的 npm 新版本并提示子包配套情况,避免半更新混搭导致启动冲突
- DSH 框架一键升级(备份 → 在线安装 → 校验 → 自动重启),带实时进度、失败自动回滚、超时保护

## 技术实现
- **语言**: JavaScript (ESM, Node 内置模块优先)
- **关键依赖**: 全部走 Node.js 内置模块(node:fs/promises, node:https, node:child_process),外部依赖为零
- **架构模式**: Cordis 插件 + 自定义 HTTP 路由表,通过 `apply(ctx)` 注册环回 `/plugin-console/*` 路由;客户端 bundle 通过 `dsh.client.inject` 注入 settings 面板
- **入口文件**: `lib/index.js`(宿主端);`lib/client.js`(浏览器端 bundle,设置页 Tab)

## 适用场景
你已经装好 DSH 想随手装/卸第三方插件,又不想记 `dsh plugin add` 命令和版本号;或者你想在浏览器里看 GitHub 上有哪些 dsh 插件可以装、看自己装的插件是不是有新版本;遇到框架升级提示时,在面板里点一下就能完成升级,而不是手动备份、跑命令、重启。

## 前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DeepSeek Harness (DSH) | 0.1.0-rc.6 (0.1.0 系列) | 安装命令要求 `--profile web`;运行中 web 包版本需匹配 `/^0.1.0-/`,否则面板顶部显示兼容性警告 |
| Node.js | 随 DSH 上游 | 本插件未单独声明,跟随宿主 DSH 的 Node 要求 |
| 平台 | macOS / Windows / Linux | 跨平台,Windows 下走 corepack.js 直跑避开 .cmd 启动问题 |
| 原生模块 | 无 | 全部依赖 Node.js 内置模块,无 node-gyp 编译 |
| Git | PATH 中可用 | 安装链的 git 通道、Release 下载、技能/套装 clone 都依赖 git CLI |
| curl | PATH 中可用 | 安装链在 pnpm 黑洞时走 curl 手动通道;win32 下找 curl.exe |

## 安装方式
```bash
dsh plugin --profile web add github:Noob-stupid/dsh-plugin-hub
```

## 配置项
本插件无需在文件里写额外配置。运行时所需的环境变量与软件源都在「插件管理 → 软件源」面板里通过 UI 设置,常见条目如下:

| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| `DSH_HOME` | 环境变量 | 覆盖 DSH 数据根目录;影响本插件写入的 sources.json / 升级快照 / 已装技能位置 | `~/.dsh` |
| 软件源(registry) | 面板 UI | npm 安装主→备依次尝试的源列表,支持 https 与本机/私网 http | npmmirror(主)+ npmjs(备) |
| 搜索源 | 面板 UI | GitHub / Gitee 内置 + 自定义 URL 模板(`{q}` / `{page}` 占位符,支持请求头认证) | GitHub + Gitee |
| Gitee client_id / client_secret | 面板 UI | 仅直装模式搜索限额提高时需要(走 OAuth);直装本身不要求登录 | 未配置 |
| `~/.dsh/github-auth.json` | 文件 | 复用 dsh-github-login 工具写入的 GitHub 令牌,面板只读登录态不保存令牌 | 不存在即未登录 |
| 升级失败回滚点 | 自动 | 框架升级前自动备份到 `~/.dsh/plugin-console/framework-backups/<旧版本>/`,失败自动还原 | 无 |

## 常见问题

**Q: 这个插件装到哪个 DSH profile 才能看到 GUI?**

A: 装到 DSH 自带的 web profile。DSH 的其他 profile 不会启动 Web GUI,本插件的客户端 bundle 只在 web profile 加载;装到其他 profile 位置只有后台路由没有界面。

**Q: 面板上为什么有些插件标着"受保护"且开关是灰的?**

A: 那是宿主基础设施行(Cordis 加载器、HMR、WebServer、存储、设置链等 70+ 个核心模块)。停用会破坏热加载本身,所以面板禁止开关,这是保护机制不是 bug。

**Q: 看到"等待授权"弹窗,要不要同意?**

A: 只有在配置源 / curl / git 三条确定性通道全部失败时才弹出,明确告诉你"将调用 DeepSeek API 模型,可能产生 API 费用"。可以点"取消",也可以勾选"以后不再提醒",或在市场页底部的 AI 兜底总开关里彻底关掉(关掉后零 API 费用)。

**Q: Gitee 源为什么输入关键词搜不到东西?**

A: Gitee 官方搜索 API 已停用,所以 Gitee 源走"仓库直装模式":输入完整仓库路径(支持中文和完整 URL),面板按路径精确查找并安装,不是关键词搜索。

**Q: 添加了一个自定义 registry 但安装失败,怎么办?**

A: 面板会在自定义源安装失败后,自动回退到内置源(npmmirror / npmjs)继续尝试;若都失败再走 curl 和 git 通道。也可以在软件源管理里编辑名称或设为主源;删除按钮被禁,避免误删插件安装依赖的源。

**Q: DSH 升级后为什么旧的自定义功能突然消失?**

A: 这是因为 DSH 框架文件被覆盖。本插件会检测到版本变化并自动重打"cordis.patch.yml 解析容错补丁"(issue #5),备份旧版本快照到 `~/.dsh/plugin-console/framework-backups/`;若重启后仍异常,可手动跑仓库里的 `scripts/apply-framework-patch.cjs`。

**Q: 装的技能在 DSH 里找不到?**

A: 技能被装到 `~/.dsh/skills/<名称>/`,由 `@deepseek-ai/dsh-skill-filesystem` 插件扫描发现。若当前 profile 没启用该插件,技能会休眠——在 profile 的 `cordis.yml` 启用 dsh-skill-filesystem 并重启即可。

**Q: 数据保存在哪里?卸载是否干净?**

A: 软件源配置: `~/.dsh/plugin-console-sources.json`;框架升级快照: `~/.dsh/plugin-console/framework-backups/`;已装技能: `~/.dsh/skills/<名称>/`;安装时间标记: `<profile>/node_modules/<pkg>/.dsh-installed-at`。卸载本插件不会删除其他已装插件,但 `~/.dsh/plugin-console/` 目录下的状态文件可手动清理。

## 上手难度
入门 — 装到 web profile 重启即用,常用功能(开关已装插件、装/卸)在面板里点几下就完成,无需读文档;遇到"受保护""AI 兜底授权""子包配套"等边界时回到 README 翻一眼即可。

## 已知问题与限制
- 宿主代码变更需重启 DSH 服务才能生效(客户端变更只需刷新页面);面板自带的重启按钮会走守护拉起,无需手动
- 实时 GitHub 搜索依赖 GitHub 可达性(浏览器直连 + 服务端多通道竞速兜底);网络黑洞期可能 5-15 秒返回
- 版本检测只对已发布到 npm 的包生效;技能类仓库没有版本概念
- 静态索引每次构建收录 500 个插件 + 300 个技能上限,新仓库需 star 爬升或等下一轮 6 小时 CI 进入索引
- 搜索结果打 ★ 标记需 1-3 秒后台补全,刚打开市场时可能暂时显示空
- Gitee 官方搜索 API 已废弃,仅支持仓库直装模式(按 `owner/repo` 精确匹配),不支持关键词搜索
- 第三方 bundle 型插件(如某些聚合仓库子包)自动装配已默认跳过(防止 bundle 与 DSH 版本不兼容导致启动崩溃),需按详情面板的"官方安装方式"手动安装

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [dsh-plugin-hub](https://deepseek-plugin.org/plugins/Noob-stupid/dsh-plugin-hub)
Wiki generated by AI (model: `MiniMax-M3`)
