@noob-stupid/dsh-plugin-console 0.3.8

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.zh.md ADDED
@@ -0,0 +1,401 @@
1
+ > **English**: [README.md](README.md) | **中文**: [README.zh.md](README.zh.md)
2
+
3
+ ---
4
+
5
+ <img width="1170" height="609" alt="image" src="https://github.com/user-attachments/assets/b802d606-14ba-4151-9956-ff642ed12b0a" />
6
+
7
+ # DSH 插件中心(dsh-plugin-hub)
8
+
9
+ [![](https://img.shields.io/badge/powered_by-dsh-4D6BFE?style=flat-square&logo=deepseek&logoColor=white)](https://github.com/deepseek-ai/deepseek-harness)
10
+ [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
11
+ [![GitHub stars](https://img.shields.io/github/stars/Noob-stupid/dsh-plugin-hub?style=flat-square&logo=github)](https://github.com/Noob-stupid/dsh-plugin-hub/stargazers)
12
+ [![License](https://img.shields.io/github/license/Noob-stupid/dsh-plugin-hub?style=flat-square)](LICENSE)
13
+ [![Last commit](https://img.shields.io/github/last-commit/Noob-stupid/dsh-plugin-hub?style=flat-square)](https://github.com/Noob-stupid/dsh-plugin-hub/commits/main)
14
+ [![Registry CI](https://img.shields.io/github/actions/workflow/status/Noob-stupid/dsh-plugin-hub/registry.yml?label=registry%20CI&style=flat-square)](https://github.com/Noob-stupid/dsh-plugin-hub/actions/workflows/registry.yml)
15
+ [![topic: dsh-plugin](https://img.shields.io/badge/topic-dsh_plugin-4D6BFE?style=flat-square)](https://github.com/topics/dsh-plugin)
16
+
17
+ 给 DeepSeek Harness(DSH)Web 界面加上**插件管理面板**:一键启用/停用已安装插件,
18
+ 在**多个搜索源**上浏览 dsh-plugin 插件项目(GitHub / Gitee / 自定义源),一键添加并启用——
19
+ 并带一份 **CI 每 6 小时自动收录的静态插件/技能索引**。
20
+
21
+ <!-- TOC -->
22
+ - [核心优势](#核心优势)
23
+ - [一键部署](#一键部署)
24
+ - [使用方法](#使用方法)
25
+ - [功能](#功能)
26
+ - [原理](#原理)
27
+ - [兼容性策略](#兼容性策略)
28
+ - [项目结构](#项目结构)
29
+ - [HTTP 接口](#http-接口)
30
+ - [AI 兜底安装与授权弹窗](#ai-兜底安装与授权弹窗)
31
+ - [框架层补丁(cordis.patch.yml 解析容错)](#框架层补丁cordispatchyml-解析容错)
32
+ - [安全说明](#安全说明)
33
+ - [免责声明](#免责声明)
34
+ - [已知限制](#已知限制)
35
+ - [帮助 / Help](#帮助--help)
36
+ - [生态与收录](#生态与收录)
37
+ - [支持](#支持)
38
+ - [更新日志](#更新日志)
39
+ - [License](#license)
40
+ <!-- /TOC -->
41
+
42
+ ---
43
+
44
+ ## 核心优势
45
+
46
+ | | 优势 | 说明 |
47
+ |---|---|---|
48
+ | 🧩 | **插件 + 技能双市场** | 自动收录 `dsh-plugin` topic 仓库(按 star **500+**),另有**技能 tab**(`agent-skills` ∪ `claude-skills` ∪ `dsh-skill`,最多 300)——浏览、搜索、一键安装,零 GitHub API 调用 |
49
+ | 🤖 | **自动收录 CI** | GitHub Actions 每 6 小时自动重跑 `build-index`(也支持手动触发);作者只需给自己的仓库打 `dsh-plugin` / `agent-skills` / `claude-skills` / `dsh-skill` 标签,**无需申请、无需审核** |
50
+ | ⚡ | **秒开、零限流** | 索引以静态 `marketplace/index.json` 提交仓库,经 jsDelivr CDN 分发(宿主 10 分钟缓存)——终端用户**零 GitHub API 调用、零限流** |
51
+ | 🔄 | **版本检测与一键更新** | 已安装条目自动比对 npm `dist-tags.latest`,卡片出现「更新 → vX」;聚合包子包版本不配套时给出 depsOutdated 提示,避免版本混搭启动冲突 |
52
+ | 🔀 | **多源检索** | GitHub / Gitee(仓库直装模式)/ 自定义搜索源(URL 模板 + 请求头认证 + 私网 http);「⊞」并行合并 GitHub + 全部自定义源 |
53
+ | 🔒 | **安全默认** | 全部路由仅环回;AI 兜底置于明确费用授权弹窗之后;基础设施行禁止开关(受保护) |
54
+
55
+ > **给插件作者**:给仓库打上 `dsh-plugin` 标签即可被官方 [topic 列表](https://github.com/topics/dsh-plugin)
56
+ > 与本中心自动收录;技能类仓库请打 `agent-skills` / `claude-skills` / `dsh-skill`。
57
+
58
+ ---
59
+
60
+ ## 一键部署
61
+
62
+ ### 方式一:官方命令(推荐)
63
+
64
+ 插件声明了 `dsh.bundle` 官方清单,一条命令装好并自动启用:
65
+
66
+ ```sh
67
+ dsh plugin --profile web add github:Noob-stupid/dsh-plugin-hub
68
+ ```
69
+
70
+ 卸载 / 重装(即更新):
71
+
72
+ ```sh
73
+ dsh plugin --profile web remove github:Noob-stupid/dsh-plugin-hub
74
+ dsh plugin --profile web add github:Noob-stupid/dsh-plugin-hub
75
+ ```
76
+
77
+ 然后重启 dsh 服务 → 刷新页面 → 设置 → 插件 → 插件管理。
78
+
79
+ ### 方式二:部署脚本(网络受限时的兜底)
80
+
81
+ Windows(PowerShell):
82
+
83
+ ```powershell
84
+ git clone https://github.com/Noob-stupid/dsh-plugin-hub "$env:TEMP\dsh-plugin-console" 2>$null; & "$env:TEMP\dsh-plugin-console\deploy.ps1"
85
+ ```
86
+
87
+ Linux / macOS:
88
+
89
+ ```bash
90
+ git clone https://github.com/Noob-stupid/dsh-plugin-hub /tmp/dsh-plugin-console 2>/dev/null; bash /tmp/dsh-plugin-console/deploy.sh
91
+ ```
92
+
93
+ 脚本会做两件事:把插件包拷进 `$DSH_HOME/profiles/<profile>/node_modules/`,
94
+ 并在 `cordis.patch.yml` 幂等追加启用条目。完成后:
95
+
96
+ 1. 重启 dsh 服务(宿主代码变更需要重启进程;命令行方式重启进程,桌面客户端退出重开);
97
+ 2. 刷新页面 → 设置 → 插件 → **插件管理**。
98
+
99
+ ### 方式三:一句话交给 AI
100
+
101
+ > 安装 DSH 插件中心(dsh-plugin-hub):运行 `dsh plugin --profile web add github:Noob-stupid/dsh-plugin-hub`;若没有 dsh CLI,则克隆 https://github.com/Noob-stupid/dsh-plugin-hub 到 `~/.dsh/profiles/web/node_modules/`,在 `cordis.patch.yml` 注册(id: plugin-console,name: @deepseek-ai/dsh-plugin-console)。完成后重启 dsh web。
102
+
103
+ 要求:DSH ≥ 0.1.0-rc.6(web profile,含 `dsh-client-modules` / `dsh-host-plugin-inventory`)。
104
+
105
+ ---
106
+
107
+ ## 使用方法
108
+
109
+ 1. 重启 DSH → 打开 Web GUI → **设置 → 插件 → 插件管理**。
110
+ 2. **已安装列表**:一键开关(HMR 约 1 秒生效)、按名称/id 搜索、展开详情(版本、仓库、README 摘要)。
111
+ 3. **插件市场**:GitHub 源空查询直接打开静态索引(秒开);输入关键词实时搜索。顶部登录标切换
112
+ 搜索源(GitHub / Gitee / 自定义);「⊞」多源合并;「★」只看可 `dsh plugin add` 直装。
113
+ 4. **技能 tab**:搜索框旁切换「插件 / 技能」,浏览并一键安装技能(克隆到 `~/.dsh/skills/<名称>/`)。
114
+ 5. **安装**:点「添加到本地」→ 后台安装链自动执行(可放心离开页面);已安装条目自动出现
115
+ 「检测更新」/「更新 → vX」。
116
+
117
+ ---
118
+
119
+ ## 功能
120
+
121
+ ### 已安装插件(一键开关 + 详情)
122
+
123
+ - **默认只显示第三方插件**(后装/非 dsh 自带),带「第三方」标签与删除入口;点「全部」切换查看完整列表(1.5s 亮框反馈);
124
+ - 列出全部插件条目(名称、加载状态、启用状态);支持按名称/id 搜索;
125
+ - 点「停用」= 在用户补丁层写入 `- id: X` + `disabled: true`,HMR 立即生效;
126
+ - 点「启用」= 移除该停用条目;bundle 层本就停用的行用 `disabled: false` 覆盖;
127
+ - 打标「补丁停用 / 补丁强制启用」区分用户补丁状态;
128
+ - **基础设施保护**:host 传输/热加载/存储/设置链上的插件(timer、hmr、webserver 等
129
+ 70+ 行)标记「受保护」,禁止开关——误停用会破坏热加载本身;
130
+ - **详情面板**:每个插件可点「详情」,展开简介、版本、仓库/主页链接与 README 摘要;
131
+ - **版本检测**:「检测更新」走 curl 读 npm `dist-tags.latest`(node 网络黑洞时也可用),
132
+ 并提示需要同步的子包版本(depsOutdated),避免半更新混搭导致启动冲突。
133
+
134
+ ### 框架一键升级(deepseek-harness 卡片)
135
+
136
+ - **deepseek-harness 卡片**在检测到框架新版本时显示「框架升级 → vX」(稳定版 latest 优先;
137
+ latest 与当前相同时取 next 预发布渠道);点击一键完成:备份配置与框架本体(回滚点)→
138
+ **在线安装**(服务保持运行、页面不断开)→ 版本校验 → **自动重启生效**;
139
+ - **实时进度**:升级时弹出 `DSH-Upgrade` 窗口,实时显示 pnpm 下载进度;面板内进度卡片
140
+ 同步显示等待时长;
141
+ - **升级保护**:失败**自动回滚**(robocopy,升级前校验回滚点有效)、版本校验防假成功、
142
+ 10 分钟硬超时、卡死检测(debug 日志无更新自动切换 registry)、全局异常兜底、
143
+ 15 分钟残留状态清理——框架绝不处于损坏状态;
144
+ - **pnpm 通道**:npm-cli.js 在 schtasks 任务环境启动即卡死(debug 日志 0 字节、网络请求
145
+ 都发不出);升级改用 `corepack pnpm`(实测 0.4s 秒启动、11.5s 装完 rc.8)+ **国内源
146
+ npmmirror**,并带 `dangerouslyAllowAllBuilds` 让 node-pty/koffi 等原生模块正常编译;
147
+ - **运行时解析 bin.js**:pnpm 布局下 `@deepseek-ai/dsh` 是 Junction——拉起服务在运行时
148
+ 解析(跟随 Junction 到当前版本),而非使用脚本生成时固化的路径;
149
+ - **卡片关闭语义**:终态(成功/失败)点叉号永久关闭(持久化);进行中点叉号仅本次会话
150
+ 隐藏,刷新后恢复显示。
151
+
152
+ ### 插件市场(多搜索源)
153
+
154
+ - **搜索源切换**:点击顶部登录态标识弹出菜单,在 **GitHub / Gitee / 自定义源** 间切换(选择持久化);
155
+ 市场标题、加载提示、搜索框占位符、说明行全部随源切换;
156
+ - **GitHub 源**:默认搜索 `dsh-plugin`,浏览器直连(失败自动回退服务端通道);
157
+ - **Gitee 源**:Gitee 官方搜索 API 已停用,采用**仓库直装模式**——输入 `owner/repo`
158
+ (支持中文路径与完整 URL)精确查找仓库并安装;
159
+ - **自定义搜索源**:软件源管理中添加(URL 模板含 `{q}`/`{page}` 占位符),支持
160
+ **请求头认证**(如 `Authorization: Bearer ...`)与**本机/私网 http 地址**;
161
+ - **多源汇总**:搜索框旁「⊞」开启——GitHub + 全部自定义源并行检索,结果合并并标注来源;
162
+ - **★ 官方筛选**:只筛**可 `dsh plugin add` 直装**的插件——根包带 `dsh.bundle` 清单(官方)
163
+ 或聚合仓库中**子包带 `dsh.bundle`**(子包可直装);标记由服务端 curl 双通道 + 客户端兜底补全,
164
+ 搜索结果与筛选即时可用;
165
+ - **类型徽标**:官方 / 聚合 / 技能(仓库含 SKILL.md)自动识别;
166
+ - 「添加到本地」= 按当前源安装(registry 失败自动回退 git 通道)+ 写入启用条目,HMR 生效。
167
+
168
+ ### 静态索引市场(插件 / 技能双 tab)
169
+
170
+ > **混合架构**:浏览走静态索引(秒开、零 API 调用),搜索走实时通道(GitHub 搜索 API / 多源并行)——
171
+ > 两者互补:新仓库即使还没进索引,也能被实时搜索找到。
172
+
173
+ - GitHub 源空查询展示**静态索引**(`marketplace/index.json`,jsDelivr CDN + 宿主 10 分钟缓存):
174
+ 按 star 排序 500+ 插件,秒开、**零 GitHub API 调用**;
175
+ - 搜索框旁**「插件 / 技能」tab**:技能 tab 列出自动收录的 `agent-skills` ∪ `claude-skills` ∪
176
+ `dsh-skill` 仓库(最多 300);
177
+ - **自动版本比对**:市场中已安装的条目后台自动查 npm `dist-tags.latest`,卡片变「更新 → vX」;
178
+ - **技能安装**:技能条目一键安装 = git clone → 复制 SKILL.md 及同目录资源到
179
+ `~/.dsh/skills/<名称>/`(frontmatter 的 name 优先于仓库名;SKILL.md 位于仓库根或第一层
180
+ 子目录均可识别);已装技能显示灰色「已装」徽标。
181
+
182
+ ### 软件源管理
183
+
184
+ 市场标题行右侧悬浮「软件源」按钮(半透明、颜色加深),弹出管理模态框:
185
+
186
+ ![软件源管理](https://github.com/user-attachments/assets/ef712900-65ae-4f6f-9584-bacdd8d34ea1)
187
+
188
+ - **安装源(registry)**:添加 / 行内编辑 / 设为主源 / 恢复默认;支持私有源与内网地址;
189
+ **删除已保护**(插件安装依赖的 npm 源,避免误删);
190
+ - **搜索源**:内置 GitHub、Gitee + 自定义搜索源(增删、🔒 显示请求头数量);
191
+ - **Gitee 登录(可选)**:直装模式无需登录;登录仅提高接口限额——创建第三方应用
192
+ (gitee.com → 数据管理 → 第三方应用,权限勾选 user_info、projects)后填入
193
+ client_id / client_secret → 保存 → 授权登录。
194
+
195
+ ---
196
+
197
+ ## 原理
198
+
199
+ ### 开关语义
200
+
201
+ DSH 的 web profile 由 bundle 补丁层 + 用户补丁层(`$DSH_HOME/profiles/web/cordis.patch.yml`)
202
+ 组合而成,补丁是**逐键覆盖**语义。插件开关只是往用户补丁层追加/移除两行 YAML:
203
+
204
+ ```yaml
205
+ - id: 插件条目id
206
+ disabled: true
207
+ ```
208
+
209
+ 配置文件监视器(HMR)会在保存后 1 秒内重组合,无需重启——除宿主代码本身变更外。
210
+
211
+ ### 安装链
212
+
213
+ ```
214
+ 配置的软件源按主→备依次尝试(默认 npmmirror → npmjs)
215
+ → curl 手动安装 (node 网络黑洞时:curl 下载 tarball 解压进 node_modules)
216
+ → git 通道 (GitHub 走加速代理+直连,Gitee 走对应平台)
217
+ → Windows EPERM 陈旧目录自动清理重试
218
+ → 自动展开仓库子包 (聚合包优先)
219
+ → 本地 AI 兜底 (置于明确费用授权弹窗之后)
220
+ ```
221
+
222
+ 技能安装独立走:`git clone --depth 1` → 复制 SKILL.md 资源到 `~/.dsh/skills/<名称>/`
223
+ (不碰 npm、不写补丁、无需重启)。
224
+
225
+ ### 数据源
226
+
227
+ ```
228
+ GitHub Actions(每 6 小时,仓库自带 token)
229
+ └─ scripts/build-index.cjs:分页拉取 topic:dsh-plugin(按 star 500 个)+ 技能 topic(300 个)
230
+ └─ 提交 marketplace/index.json 回 main
231
+ └─ 宿主经 jsDelivr CDN 读取(10 分钟缓存)→ 市场秒开、零 API 调用
232
+ └─ 实时搜索仍走 GitHub 搜索 API(浏览器直连 + 服务端通道兜底)
233
+ ```
234
+
235
+ ### 版本检测与已安装识别
236
+
237
+ - **已安装识别**:按已装条目的 `repository` 字段或模块名与市场条目比对(仓库名 → 包名映射);
238
+ - **版本检测**:`check-update` 走 curl 读 npm `dist-tags.latest`;聚合包额外对比子包
239
+ 声明版本 vs 本地实际版本(depsOutdated),防止半更新混搭导致启动冲突。
240
+
241
+ ---
242
+
243
+ ## 兼容性策略
244
+
245
+ - 当前支持 **DSH 0.1.0 系列**(`0.1.0-rc.6` 及同系列版本)。
246
+ - 面板会读取运行中的 `@deepseek-ai/dsh-web-app` 版本:官方发布破坏性升级
247
+ (0.2 / 1.0 等)后,面板顶部会显示兼容性警告并给出本仓库地址,而不是默默失效。
248
+ - 官方破坏性更新可能改动的接口:补丁层语义、`webServer.register`、
249
+ 加载器条目结构、`dsh.client` bundle 格式、`settings.plugins.tab` 插槽。
250
+ 届时随官方版本更新本仓库即可(依赖面已收窄到上述几个点)。
251
+ - 部署脚本不校验版本、直接安装;面板里的警告是权威提示。
252
+
253
+ ---
254
+
255
+ ## 项目结构
256
+
257
+ ```
258
+ lib/index.js 宿主端插件(/plugin-console/* 路由 + 补丁读写 + 多源检索 + 安装)
259
+ lib/client.js 浏览器端 bundle(ModuleLoader 格式,设置页 tab)
260
+ scripts/build-index.cjs 索引构建(插件 --limit 500 / 技能 --skills --limit 300)
261
+ scripts/apply-framework-patch.cjs 框架层补丁(issue #5,幂等,可重复应用)
262
+ .github/workflows/registry.yml 自动收录 CI(每 6 小时 + 手动触发)
263
+ marketplace/index.json 生成的静态索引(jsDelivr CDN 分发)
264
+ deploy.ps1 / deploy.sh 一键部署脚本(Windows / Linux·macOS)
265
+ test-harness.mjs 逻辑自检(state/toggle/校验/环回保护;搜索视网络环境 SKIP)
266
+ ```
267
+ <img width="1878" height="945" alt="image" src="https://github.com/user-attachments/assets/b26f2f19-0ba4-4be7-9ca1-b3fd4c51a7a8" />
268
+
269
+ ---
270
+
271
+ ## HTTP 接口
272
+
273
+ | 接口 | 方法 | 说明 |
274
+ |---|---|---|
275
+ | `/plugin-console/state` | GET | 插件清单 + 补丁状态 + 兼容性 + 运行中的安装任务 |
276
+ | `/plugin-console/toggle` | POST | 启用/停用条目(写用户补丁层) |
277
+ | `/plugin-console/uninstall` | POST | 删除条目并卸载包(bundle 感知) |
278
+ | `/plugin-console/search` | POST | 多源搜索(github/gitee/自定义,`multi` 合并) |
279
+ | `/plugin-console/repo` | POST | 仓库元数据:package.json、private 根、dsh 提示、**hasSkill** |
280
+ | `/plugin-console/enrich` | POST | 服务端类型标记(官方/聚合/技能) |
281
+ | `/plugin-console/install` | POST | 安装(插件或 `kind: skill` 技能),返回任务 id |
282
+ | `/plugin-console/install-status` | POST | 轮询安装任务 |
283
+ | `/plugin-console/check-update` | POST | npm 最新版本 + 子包不配套检查 |
284
+ | `/plugin-console/market-index` | POST | 静态索引(jsDelivr CDN,10 分钟缓存) |
285
+ | `/plugin-console/skills-installed` | GET | `~/.dsh/skills` 下已安装技能 |
286
+ | `/plugin-console/sources` | GET/POST | 软件源与搜索源管理、Gitee OAuth 配置 |
287
+ | `/plugin-console/gitee-oauth-url` / `gitee-oauth-callback` | GET | Gitee OAuth 流程 |
288
+ | `/plugin-console/ai-consent` | POST | 同意/取消 AI 兜底步骤 |
289
+ | `/plugin-console/restart` | POST | 自带守护的安全自重启(等同面板按钮) |
290
+
291
+ ---
292
+
293
+ ## AI 兜底安装与授权弹窗
294
+
295
+ 安装走**确定性通道链**:`配置源(主→备)→ curl 手动安装 → git 通道 → EPERM 清理重试 → 仓库子包展开`。常规通道全部失败时,才轮到**本地 AI 兜底**。
296
+
297
+ **本地 AI 兜底是什么**:拉起一个本地 AI 子代理接管安装——它会像人工一样诊断(查仓库结构、识别子包/聚合包、清理残留),用正确管理器完成安装并落配置。**注意:这一步会调用 DeepSeek API 模型,可能产生 API 费用。**
298
+
299
+ **授权弹窗逻辑(费用透明)**:
300
+
301
+ 1. 常规通道全失败后,任务进入「等待授权」状态,屏幕中央弹出**最上层模态框**:
302
+ - 明确说明"将调用 DeepSeek API 模型,可能产生 API 费用"
303
+ - 提供 **同意,继续** / **取消** 两个按钮(取消 = 零费用)
304
+ - 10 分钟未决定自动取消
305
+ 2. 模态框内可勾选 **"以后不再提醒"**(自动同意)——勾选后可随时在**插件市场页面最底部**恢复弹窗提醒
306
+ 3. 右上角悬浮的 **"AI 兜底"开关**可彻底关闭该功能:常规通道失败将直接取消安装,**永远不会调用模型 API(零费用)**
307
+
308
+ ---
309
+
310
+ ## 框架层补丁(cordis.patch.yml 解析容错)
311
+
312
+ **问题(issue #5)**:`cordis.patch.yml` 若含顶格 `[]` 占位符 + 后续条目(两个 YAML 根节点),
313
+ DSH 启动时解析崩溃:`end of the stream or a document separator is expected`。
314
+
315
+ **修复位置**:DSH 框架 `dsh-app-boot` 的 `parsePatchList`——解析失败时自动移除顶格空数组占位行(视为 no-op)后重试;
316
+ 正常文件、纯 `[]` 文件、缩进子数组均不受影响。
317
+
318
+ **应用方式**(DSH 升级后需重新执行,升级会覆盖框架文件):
319
+
320
+ ```bash
321
+ node scripts/apply-framework-patch.cjs
322
+ ```
323
+
324
+ 脚本自动定位 npx 缓存中的 `dsh-app-boot/lib/index.js`,检测到已补丁则跳过(幂等),首次应用会保留 `.bak-issue5` 备份。
325
+
326
+ ---
327
+
328
+ ## 安全说明
329
+
330
+ - 全部路由仅允许环回地址访问;
331
+ - GitHub 元数据只用于发现公开插件,npm 安装走 registry 的完整 TLS 校验;
332
+ - GitHub 源搜索在浏览器内直连;Gitee / 自定义源检索与请求头(含认证信息)仅经服务端处理,不下发浏览器;
333
+ - 自定义源地址仅允许 https 与本机/私网 http(127.0.0.1、localhost、10.x、192.168.x、172.16-31.x 等);
334
+ - 技能是纯文件(SKILL.md + 资源)——安装技能**不会执行任何代码**;git clone 来自你选择的仓库,安装前请自行核验。
335
+
336
+ ---
337
+
338
+ ## 免责声明
339
+
340
+ - 市场收录的均为 GitHub 第三方仓库,各插件由各自作者独立开发维护,**与 DeepSeek Harness 及本插件中心无任何关联**;
341
+ - 本中心**不对任何插件的质量、可靠性、安全性、许可证合规性、兼容性作任何明示或默示担保**;收录**不构成推荐或背书**——安装即代表你已自行评估并接受相应风险,建议安装前阅读仓库源码与 README;
342
+ - 本中心按「现状」(AS-IS)提供,因安装或使用任何第三方插件造成的任何直接或间接损失(数据丢失、系统损坏、隐私泄露等),本中心及其开发者不承担任何责任。
343
+
344
+ ---
345
+
346
+ ## 已知限制
347
+
348
+ - 宿主代码变更需要**重启服务**(面板的重启按钮自带守护、安全);客户端变更只需刷新页面;
349
+ - 实时 GitHub 搜索依赖 GitHub 可达性(浏览器直连 + 服务端兜底;网络黑洞期请稍后重试);
350
+ - 版本检测只对已发布到 npm 的包生效;技能类仓库没有版本概念;
351
+ - 静态索引有上限(每次构建 500 插件 / 300 技能);新仓库靠 star 爬升或等下一轮 6 小时 CI 进入索引;
352
+ - 技能由 `dsh-skill-filesystem` 扫描发现——若当前 profile 未启用该插件,装好的技能会休眠,启用并重启后生效。
353
+
354
+ ---
355
+
356
+ ## 帮助 / Help
357
+
358
+ 遇到问题先看这里;仍有疑问请到 [Issues](https://github.com/Noob-stupid/dsh-plugin-hub/issues) 提问。
359
+
360
+ - **面板没出现**:重启 dsh 服务 → 刷新页面 → 设置 → 插件 → 插件管理。
361
+ - **点开关没反应**:基础设施行带"受保护"标签(禁止开关,这是保护机制);普通插件开关经
362
+ HMR 生效,约 1-3 秒,可点刷新查看。
363
+ - **顶部出现兼容性警告**:官方发布了破坏性更新,请到本仓库获取适配版本(见兼容性策略)。
364
+ - **市场搜索没结果/报错**:GitHub 源走浏览器直连(与浏览器可用性一致),失败自动回退
365
+ 服务端通道;Gitee 源为仓库直装模式(输入 `owner/repo`);自定义源检查地址与请求头配置;
366
+ 网络黑洞期请稍后重试。
367
+ - **★ 筛选为空**:★ 只筛可 `dsh plugin add` 直装(官方 + 子包带 bundle 的聚合);
368
+ 标记 1-3 秒后台补全后自动出现,不会误报"没有"。
369
+ - **安装失败**:确认仓库有 package.json 且包名已发布到 npm;npm 装不了的会回退
370
+ `github:owner/repo` 安装(需要 git);可在软件源管理中换主源(如 npmmirror 网络波动时)。
371
+ - **装好的技能 DSH 不识别**:在 profile 的 `cordis.yml` 启用 `@deepseek-ai/dsh-skill-filesystem`
372
+ 并重启;技能位于 `~/.dsh/skills/<名称>/`。
373
+
374
+ ---
375
+
376
+ ## 生态与收录
377
+
378
+ - 已被 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin)(社区主精选列表)与 [DSH Directory](https://dsh.directory) 收录;
379
+ - 本中心的自动收录索引(500+ 插件 / 300 技能,CI 每 6 小时刷新)会收录**任何**打了 `dsh-plugin` / `agent-skills` / `claude-skills` / `dsh-skill` 标签的仓库——作者打上标签即可自动出现在市场,无需申请;
380
+ - 如果你在开发 DSH 插件,本面板就是你的分发渠道:所有使用本面板的用户都能一键安装你的插件。
381
+
382
+ ## 支持
383
+
384
+ 如果这个面板帮你省了时间、让 DSH 更好用:
385
+
386
+ - ⭐ **给本仓库点个 Star**——直接帮助更多 DSH 用户发现它;
387
+ - 分享给身边的 DSH 用户或社区;
388
+ - 提交你自己的插件(打上 `dsh-plugin` 标签)一起壮大生态;
389
+ - 发现 bug 或有新需求?[开一个 Issue](https://github.com/Noob-stupid/dsh-plugin-hub/issues)。
390
+
391
+ ---
392
+
393
+ ## 更新日志
394
+
395
+ 版本记录见 [CHANGELOG.md](CHANGELOG.md)。
396
+
397
+ ---
398
+
399
+ ## License
400
+
401
+ MIT
@@ -0,0 +1,5 @@
1
+ # dsh-plugin-hub 的 bundle 补丁层:作为官方插件安装(dsh plugin add)时,
2
+ # 自动把插件控制台插入 profile 的组合树(等效于部署脚本写入的启用条目)。
3
+ - insert:
4
+ - id: plugin-console
5
+ name: '@noob-stupid/dsh-plugin-console'