@noob-stupid/dsh-plugin-console 0.3.63 → 0.3.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -21
- package/README.zh.md +32 -11
- package/lib/index.js +5 -5
- package/package.json +18 -4
package/README.md
CHANGED
|
@@ -4,31 +4,54 @@
|
|
|
4
4
|
|
|
5
5
|
<img width="1170" height="609" alt="image" src="https://github.com/user-attachments/assets/b802d606-14ba-4151-9956-ff642ed12b0a" />
|
|
6
6
|
|
|
7
|
-
# DSH Plugin Hub (dsh-plugin-hub)
|
|
7
|
+
# DSH Plugin Gating Hub (dsh-plugin-gating-hub)
|
|
8
|
+
|
|
9
|
+
*Renamed from `dsh-plugin-hub` — old URLs redirect.*
|
|
8
10
|
|
|
9
11
|
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
12
|
[](https://awesome-dsh-plugin.com)
|
|
11
|
-
[](https://github.com/Noob-stupid/dsh-plugin-hub/stargazers)
|
|
12
|
-
[](LICENSE)
|
|
13
|
-
[](https://github.com/Noob-stupid/dsh-plugin-hub/commits/main)
|
|
14
|
-
[](https://github.com/Noob-stupid/dsh-plugin-hub/actions/workflows/registry.yml)
|
|
13
|
+
[](https://github.com/Noob-stupid/dsh-plugin-gating-hub/stargazers)
|
|
14
|
+
[](LICENSE)
|
|
15
|
+
[](https://github.com/Noob-stupid/dsh-plugin-gating-hub/commits/main)
|
|
16
|
+
[](https://github.com/Noob-stupid/dsh-plugin-gating-hub/actions/workflows/registry.yml)
|
|
15
17
|
[](https://github.com/topics/dsh-plugin)
|
|
16
18
|
[](https://www.npmjs.com/package/@noob-stupid/dsh-plugin-console)
|
|
17
19
|
[](https://www.npmjs.com/package/@noob-stupid/dsh-plugin-console)
|
|
18
|
-
[](https://github.com/Noob-stupid/dsh-plugin-hub/releases)[](https://www.dsh.so/artifact/dsh-plugin-hub)
|
|
20
|
+
[](https://github.com/Noob-stupid/dsh-plugin-gating-hub/releases)[](https://www.dsh.so/artifact/dsh-plugin-hub)
|
|
19
21
|
[](https://www.dsh.so/artifact/dsh-plugin-hub)
|
|
20
22
|
|
|
21
|
-
>
|
|
22
|
-
>
|
|
23
|
-
> upgrade
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
> **Framework upgrade safety & plugin version gating for DeepSeek Harness (DSH)**: one-click
|
|
24
|
+
> framework upgrade with **auto-rollback on failure** → **one-click rollback to the previous
|
|
25
|
+
> version** after an upgrade → plugins the new framework cannot load are **auto-disabled** →
|
|
26
|
+
> the **plugin upgrade gate** refuses a version the host can't take.
|
|
27
|
+
> A **built-in multi-source plugin market & index** (500+ plugins / 300+ skills, zero GitHub
|
|
28
|
+
> API calls) rides on top as the **discovery layer** — and **every source is swappable**: install
|
|
29
|
+
> source (incl. a private intranet registry), search source (URL template + headers), index source
|
|
30
|
+
> (self-hosted intranet index), Git source (incl. a local `file://` bare repo), so plugins can be
|
|
31
|
+
> installed on an **intranet-only or fully offline** machine.
|
|
32
|
+
|
|
33
|
+
## Why DSH Plugin Gating Hub
|
|
34
|
+
|
|
35
|
+
- 🛡️ **Framework upgrade safety, end-to-end** — one-click upgrade: config backup + full-tree
|
|
36
|
+
checkpoint (rollback point) → online install (service stays up, page never disconnects) →
|
|
37
|
+
version verification → auto-restart. A failed install **auto-rolls the whole tree back**,
|
|
38
|
+
version check catches fake success, 15-min hard timeout + stall detection — the framework is
|
|
39
|
+
never left broken. → [details](docs/upgrade-safety-adapt-gate.md)
|
|
40
|
+
- ↩️ **One-click rollback to the previous version** — after an upgrade the framework card keeps
|
|
41
|
+
a 「roll back to previous」 button: stop service → restore full tree → relaunch → health check,
|
|
42
|
+
state visible throughout.
|
|
43
|
+
- 🚫 **Incompatible plugins auto-disabled** — the **adapt gate** force-disables plugins the new
|
|
44
|
+
framework cannot load (enable locked; the server rejects `/toggle` with 409 — unbypassable);
|
|
45
|
+
「Check update → Update & adapt」auto-verifies and unlocks them.
|
|
46
|
+
- 🔒 **Plugin upgrade gating** — a version/declaration gate (`dsh.engines.framework` /
|
|
47
|
+
`engines.dsh` + `@deepseek-ai/*` ranges, built-in zero-dependency semver engine) decides
|
|
48
|
+
whether a plugin version may run on this host, so an upgrade can't silently take plugins out.
|
|
49
|
+
- 🧩 **Built-in discovery layer** — multi-source plugin market (GitHub / Gitee / custom sources)
|
|
50
|
+
plus the static index of `dsh-plugin` repos (500+ by stars) and a Skills tab (up to 300);
|
|
51
|
+
browse, search, one-click install, **zero GitHub API calls** (served via CDN).
|
|
52
|
+
**Every source is swappable** — private intranet npm registry, custom search source (URL template +
|
|
53
|
+
headers), self-hosted index source, Git source (incl. local `file://` bare repo) — so an
|
|
54
|
+
**intranet-only / offline** machine can still browse and install.
|
|
32
55
|
- 🤖 **AI Empower** — give the console a package name or GitHub repo, the local AI
|
|
33
56
|
reads its docs and drafts a safe, confirmable deployment plan (install / config /
|
|
34
57
|
start / health-check); server components get an automatic control card.
|
|
@@ -106,7 +129,7 @@ Requires: DSH ≥ 0.1.0-rc.6 (web profile, with `dsh-client-modules` / `dsh-host
|
|
|
106
129
|
- [Compatibility](#compatibility)
|
|
107
130
|
- [Project layout](#project-layout)
|
|
108
131
|
- [HTTP endpoints](#http-endpoints)
|
|
109
|
-
- [
|
|
132
|
+
- [安全](#security)
|
|
110
133
|
- [Known limitations](#known-limitations)
|
|
111
134
|
- [Help & Ecosystem](#help--ecosystem)
|
|
112
135
|
- [Contributing](#contributing)
|
|
@@ -121,7 +144,7 @@ Requires: DSH ≥ 0.1.0-rc.6 (web profile, with `dsh-client-modules` / `dsh-host
|
|
|
121
144
|
1. Restart DSH → open the Web GUI → **Settings → Plugins → Plugin Console**.
|
|
122
145
|
2. **Installed list**: toggle plugins on/off (HMR applies within ~1s), search by name/id,
|
|
123
146
|
expand details (version, repository, README summary).
|
|
124
|
-
3.
|
|
147
|
+
3. **市场**: empty query on the GitHub source opens the static index (instant);
|
|
125
148
|
type a query to search live. Switch sources via the login pill (GitHub / Gitee / custom);
|
|
126
149
|
`⊞` merges all sources; `★` filters to `dsh plugin add`-installable packages.
|
|
127
150
|
4. **Skills tab**: switch 插件/技能 next to the search box to browse and install skills
|
|
@@ -220,6 +243,8 @@ The floating "Sources" button (right of the title row, semi-transparent) opens t
|
|
|
220
243
|
|
|
221
244
|
---
|
|
222
245
|
|
|
246
|
+
<img width="393" height="525" alt="56ccd0b3-f174-4365-848b-64013b27d604" src="https://github.com/user-attachments/assets/5a2816ce-12d9-4001-b895-1e422c11d423" />
|
|
247
|
+
|
|
223
248
|
## Documentation
|
|
224
249
|
|
|
225
250
|
- [AI Empower 与服务器组件控制](docs/ai-empower.md)
|
|
@@ -244,7 +269,7 @@ The floating "Sources" button (right of the title row, semi-transparent) opens t
|
|
|
244
269
|
|
|
245
270
|
---
|
|
246
271
|
|
|
247
|
-
|
|
272
|
+
##帮助
|
|
248
273
|
|
|
249
274
|
- **Panel missing**: restart dsh → refresh → Settings → Plugins → Plugin Console.
|
|
250
275
|
- **Toggle does nothing**: infrastructure rows are "Protected" (by design); normal toggles
|
|
@@ -311,4 +336,4 @@ The layered-refactor preview lives in its **own repository**: [**`Noob-stupid/ds
|
|
|
311
336
|
- **What it is**: the monolithic `lib/index.js` (8547 lines) split into layers — `lib/index.js` **141 lines** + `lib/server/**` **38 modules**; **feature-equivalent to `0.3.57`**, maintainability only;
|
|
312
337
|
- **Verified**: 19 test suites green · 8 architecture-guard assertions · **route inventory identical** (`status` + response fields) against the stable build;
|
|
313
338
|
- **Not yet exercised**: real framework upgrade / rollback, restart guardian, component start/stop, real AI run, Gitee OAuth (~10–25% long-tail risk, subjective);
|
|
314
|
-
- **For everyday use** stick to npm `@noob-stupid/dsh-plugin-console@0.3.
|
|
339
|
+
- **For everyday use** stick to npm `@noob-stupid/dsh-plugin-console@0.3.65`, or `main` of this repo.
|
package/README.zh.md
CHANGED
|
@@ -4,16 +4,34 @@
|
|
|
4
4
|
|
|
5
5
|
<img width="1170" height="609" alt="image" src="https://github.com/user-attachments/assets/b802d606-14ba-4151-9956-ff642ed12b0a" />
|
|
6
6
|
|
|
7
|
-
# DSH
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
7
|
+
# DSH 插件门控中心(dsh-plugin-gating-hub)
|
|
8
|
+
|
|
9
|
+
*原名 `dsh-plugin-hub`,已改名;旧链接 301 跳转有效。*
|
|
10
|
+
|
|
11
|
+
> **DSH 框架升级安全与插件升级门控**:一键框架升级(**失败自动回滚**)→ 升级后**一键回滚到
|
|
12
|
+
> 上一版** → 新框架带不动的插件**自动禁用** → **插件升级门控**按版本/声明拒绝装不上的插件版本。
|
|
13
|
+
> **内置多源插件市场与自定义索引**(500+ 插件 / 300+ 技能,零 GitHub API 调用)作为**发现层**——
|
|
14
|
+
> 而且**每一条源都能换成你自己的**:安装源(含内网私有 registry)、搜索源(URL 模板 + 请求头)、
|
|
15
|
+
> 索引源(内网自建索引)、Git 源(含 `file://` 本地裸仓库),**纯内网 / 断网也能装插件**。
|
|
16
|
+
|
|
17
|
+
## 为什么是 DSH 插件门控中心
|
|
18
|
+
|
|
19
|
+
- 🛡️ **一键框架升级,失败自动回滚** — 备份配置 + 升级前全树 checkpoint(回滚点)→ 在线安装
|
|
20
|
+
(服务不中断、页面不断开)→ 版本校验 → 自动重启生效;安装失败**自动全树回滚**,
|
|
21
|
+
版本校验防假成功,15 分钟硬超时 + 卡死检测——框架绝不处于损坏状态。
|
|
22
|
+
→ [详见](docs/upgrade-safety-adapt-gate.zh.md)
|
|
23
|
+
- ↩️ **升级后一键回滚到上一版** — 升级成功后框架卡片保留「回滚到上一版」:停服 → 全树恢复 →
|
|
24
|
+
自动拉起 → 健康检测,全程状态可见。
|
|
25
|
+
- 🚫 **旧插件不适配自动禁用** — 适配门把新框架加载不了的插件**强制禁用**(启用按钮锁定,
|
|
26
|
+
服务端 `/toggle` 直接 409、无法绕过);「检测更新 → 更新并适配」自动校验后解锁。
|
|
27
|
+
- 🔒 **插件升级门控** — 按 `dsh.engines.framework` / `engines.dsh` 声明与 `@deepseek-ai/*`
|
|
28
|
+
依赖范围(内置零依赖 semver 判定器)判定插件版本能否在本宿主运行,
|
|
29
|
+
避免框架升级把插件悄悄带下线。
|
|
30
|
+
- 🧩 **内置发现层:多源插件市场** — GitHub / Gitee / 自定义源,外加静态索引(按 star 收录
|
|
31
|
+
`dsh-plugin` 仓库 **500+**)与技能 tab(最多 300);浏览、搜索、一键安装,
|
|
32
|
+
**零 GitHub API 调用**(CDN 分发,秒开零限流)。
|
|
33
|
+
**每条源都能换成你自己的** —— 内网私有 npm registry、自定义搜索源(URL 模板 + 请求头)、
|
|
34
|
+
内网自建索引源、Git 源(含 `file://` 本地裸仓库),**纯内网 / 断网环境照样浏览与安装**。
|
|
17
35
|
- 🤖 **AI 赋能** — 输入 npm 包名或 GitHub 仓库,本地 AI 读文档生成**部署计划**
|
|
18
36
|
(安装/写配置/启动服务/健康检查),你确认后安全执行;服务器组件自动生成控制卡片。
|
|
19
37
|
→ [详见](docs/ai-empower.zh.md)
|
|
@@ -187,6 +205,9 @@ git clone https://github.com/Noob-stupid/dsh-plugin-hub /tmp/dsh-plugin-console
|
|
|
187
205
|
(gitee.com → 数据管理 → 第三方应用,权限勾选 user_info、projects)后填入
|
|
188
206
|
client_id / client_secret → 保存 → 授权登录。
|
|
189
207
|
|
|
208
|
+
<img width="393" height="525" alt="image" src="https://github.com/user-attachments/assets/caacbe78-034b-4151-b1d1-2b67b73a5de6" />
|
|
209
|
+
|
|
210
|
+
|
|
190
211
|
---
|
|
191
212
|
|
|
192
213
|
## 文档
|
|
@@ -279,5 +300,5 @@ MIT
|
|
|
279
300
|
- **已验证**:19 套测试全绿 · 8 条架构守卫断言 · 与稳定版逐条对打**路由清单一致**(`status` + 响应字段);
|
|
280
301
|
- **已实测**(2026-09-20 真装真卸演练):普通插件 / bundle 插件 / 无 npm 仓库 / 套装 / 技能 / 聚合仓库子包 / 仓库落地 / 服务器组件启停;
|
|
281
302
|
- **尚未实测**:真框架升级 / 真回滚、重启守护链路、AI 真跑、Gitee OAuth 回调(长尾风险主观估计 **10%~25%**);
|
|
282
|
-
- **日常使用请继续用**:npm `@noob-stupid/dsh-plugin-console@0.3.
|
|
303
|
+
- **日常使用请继续用**:npm `@noob-stupid/dsh-plugin-console@0.3.65`,或本仓库 `main`。
|
|
283
304
|
- 请多反馈问题
|
package/lib/index.js
CHANGED
|
@@ -942,11 +942,11 @@ export const DEFAULT_SOURCES = {
|
|
|
942
942
|
// (另一位用户实测报「市场索引加载失败:网络不可达(2 个索引源全部失败):GitHub 请求超时」)。
|
|
943
943
|
// jsDelivr 官方多入口互为主备:cdn(主)/ gcore / fastly;再加 ghproxy 与 raw 直连兜底。
|
|
944
944
|
indexSources: [
|
|
945
|
-
{ id: 'jsdelivr', name: 'jsDelivr CDN', url: 'https://cdn.jsdelivr.net/gh/Noob-stupid/dsh-plugin-hub@main/marketplace/index.json', primary: true },
|
|
946
|
-
{ id: 'jsdelivr-gcore', name: 'jsDelivr (gcore)', url: 'https://gcore.jsdelivr.net/gh/Noob-stupid/dsh-plugin-hub@main/marketplace/index.json', primary: false },
|
|
947
|
-
{ id: 'jsdelivr-fastly', name: 'jsDelivr (fastly)', url: 'https://fastly.jsdelivr.net/gh/Noob-stupid/dsh-plugin-hub@main/marketplace/index.json', primary: false },
|
|
948
|
-
{ id: 'ghproxy', name: 'ghproxy 镜像', url: 'https://ghproxy.net/https://raw.githubusercontent.com/Noob-stupid/dsh-plugin-hub/main/marketplace/index.json', primary: false },
|
|
949
|
-
{ id: 'raw', name: 'GitHub raw 直连', url: 'https://raw.githubusercontent.com/Noob-stupid/dsh-plugin-hub/main/marketplace/index.json', primary: false },
|
|
945
|
+
{ id: 'jsdelivr', name: 'jsDelivr CDN', url: 'https://cdn.jsdelivr.net/gh/Noob-stupid/dsh-plugin-gating-hub@main/marketplace/index.json', primary: true },
|
|
946
|
+
{ id: 'jsdelivr-gcore', name: 'jsDelivr (gcore)', url: 'https://gcore.jsdelivr.net/gh/Noob-stupid/dsh-plugin-gating-hub@main/marketplace/index.json', primary: false },
|
|
947
|
+
{ id: 'jsdelivr-fastly', name: 'jsDelivr (fastly)', url: 'https://fastly.jsdelivr.net/gh/Noob-stupid/dsh-plugin-gating-hub@main/marketplace/index.json', primary: false },
|
|
948
|
+
{ id: 'ghproxy', name: 'ghproxy 镜像', url: 'https://ghproxy.net/https://raw.githubusercontent.com/Noob-stupid/dsh-plugin-gating-hub/main/marketplace/index.json', primary: false },
|
|
949
|
+
{ id: 'raw', name: 'GitHub raw 直连', url: 'https://raw.githubusercontent.com/Noob-stupid/dsh-plugin-gating-hub/main/marketplace/index.json', primary: false },
|
|
950
950
|
],
|
|
951
951
|
// Git 克隆源({owner}/{repo} 占位符;按主→备依次尝试)。
|
|
952
952
|
// 可替换为 Gitee / GitLab / 自建 Gitea / 任意镜像代理,实现「换一个网站下载仓库内容」。
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noob-stupid/dsh-plugin-console",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "DSH
|
|
3
|
+
"version": "0.3.65",
|
|
4
|
+
"description": "DSH 框架升级安全与插件升级门控:一键升级、失败自动回滚、升级后回滚上版、旧插件不适配自动禁用;内置多源插件市场为发现层,插件源全部可自定义,可指向公司内网私有源 / 私有索引 / 本地 Git 仓库,纯内网离线可用 | Framework upgrade safety & plugin version gating for DSH, with a customizable multi-source plugin market: point every source at internal mirrors or a local file:// repo for intranet-only, offline installs.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
|
-
"url": "https://github.com/Noob-stupid/dsh-plugin-hub"
|
|
7
|
+
"url": "https://github.com/Noob-stupid/dsh-plugin-gating-hub"
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
10
|
"main": "./lib/index.js",
|
|
@@ -16,7 +16,21 @@
|
|
|
16
16
|
"keywords": [
|
|
17
17
|
"dsh-plugin",
|
|
18
18
|
"deepseek-harness",
|
|
19
|
-
"plugin-manager"
|
|
19
|
+
"plugin-manager",
|
|
20
|
+
"dsh",
|
|
21
|
+
"dsh-plugins",
|
|
22
|
+
"plugin-market",
|
|
23
|
+
"plugin-console",
|
|
24
|
+
"marketplace",
|
|
25
|
+
"framework-upgrade",
|
|
26
|
+
"rollback",
|
|
27
|
+
"auto-rollback",
|
|
28
|
+
"upgrade-safety",
|
|
29
|
+
"gating",
|
|
30
|
+
"插件市场",
|
|
31
|
+
"框架升级",
|
|
32
|
+
"自动回滚",
|
|
33
|
+
"插件升级门控"
|
|
20
34
|
],
|
|
21
35
|
"dsh": {
|
|
22
36
|
"bundle": {
|