dsh-m 0.9.44 → 0.9.46
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/CHANGELOG.md +34 -0
- package/README.en.md +52 -150
- package/README.md +52 -151
- package/docs/DESIGN.md +1 -0
- package/lib/client.js +151 -23
- package/lib/core/host-api.js +26 -3
- package/lib/core/latest-cache.js +8 -0
- package/lib/core/market.js +54 -38
- package/lib/core/versions.js +19 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,195 +1,96 @@
|
|
|
1
1
|
# dsh-m — DeepSeek Harness 插件市场
|
|
2
2
|
|
|
3
|
-
[](
|
|
3
|
+
[](https://github.com/iasiv5/dsh-m/releases)
|
|
4
4
|
[](https://www.npmjs.com/package/dsh-m)
|
|
5
|
-
[](
|
|
5
|
+
[](https://github.com/iasiv5/dsh-m/actions/workflows/registry.yml)
|
|
6
6
|
[](./LICENSE)
|
|
7
|
-
[](
|
|
7
|
+
[](#兼容与常见问题)
|
|
8
8
|
|
|
9
9
|
[English](./README.en.md) · 中文
|
|
10
10
|
|
|
11
|
-
dsh-m
|
|
11
|
+
dsh-m 把 DeepSeek Harness(DSH)的插件**发现、安装、管理与更新**放进同一个界面。社区目录与人工精选同时可搜;侧栏面板、8 个 Agent 工具和 `dshm` CLI 共用一套市场数据。无需额外的市场服务器或账号,插件操作仍由本机 DSH 宿主管理。
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+

|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- **双清单市场**:4,000+ 条社区目录(awesome-dsh-plugin)为默认清单,叠加手工精选,分区浏览、卡片即点即装;
|
|
17
|
-
- **三端同源**:GUI 面板、8 个 `dshm_*` agent 工具与 `dshm` CLI 共享同一套数据与语义;
|
|
18
|
-
- **安全基线**:npm 精确版本 integrity 校验、GitHub 锁定 commit SHA、委派官方 pluginManager,构建脚本逐键精确放行。
|
|
15
|
+
## 30 秒上手
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
<img src="https://raw.githubusercontent.com/iasiv5/dsh-m/main/docs/images/marketplace.webp" alt="侧栏「插件市场」面板——市场视图:社区 / 精选 / 收藏三分区、分类 chips 与插件卡片(已实测 / 已安装徽标、npm 与 GitHub 详情链接)" width="100%">
|
|
22
|
-
<p><sub>侧栏「插件市场」· 市场视图:社区、精选与收藏分区,浏览插件并查看兼容与安装状态</sub></p>
|
|
23
|
-
</div>
|
|
17
|
+
在 DSH 官方「插件管理 → 添加插件」中输入 `dsh-m`,选择可用的安装源并安装。**Web 重启服务并刷新页面;Desktop 退出并重新打开应用**。随后从侧栏底部进入「插件市场」。
|
|
24
18
|
|
|
25
|
-
|
|
19
|
+

|
|
26
20
|
|
|
27
|
-
- [
|
|
28
|
-
- [30 秒上手](#30-秒上手)
|
|
29
|
-
- [界面(侧栏「插件市场」)](#界面侧栏插件市场)
|
|
30
|
-
- [Agent 工具(8 个)](#agent-工具8-个)
|
|
31
|
-
- [CLI](#cli)
|
|
32
|
-
- [社区清单(awesome-dsh-plugin 目录)](#社区清单awesome-dsh-plugin-目录)
|
|
33
|
-
- [精选清单(registry.json)](#精选清单registryjson)
|
|
34
|
-
- [文档](#文档)
|
|
35
|
-
- [FAQ](#faq)
|
|
21
|
+
无图形界面的 Web 宿主也可执行 `dsh plugin --profile web add dsh-m`。Node.js 需 ≥ 22;支持的 DSH 代际见[兼容表](#兼容与常见问题)。`npm install -g dsh-m` **仅安装独立 `dshm` CLI**,不会把市场插件注册到 DSH profile。
|
|
36
22
|
|
|
37
|
-
|
|
23
|
+
> 官方插件管理界面的就地更新能力以宿主版本和界面提示为准;如果明确提示不支持,请按提示卸载旧版后重新安装。卸载不会自动清除插件数据。
|
|
38
24
|
|
|
39
|
-
##
|
|
25
|
+
## 浏览、搜索与安装
|
|
40
26
|
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
27
|
+
- **社区 + 精选**:社区目录默认开启,收录 4,000+ 个条目;精选清单按「装机必备 / 崔添翼精选 / iasi自研 / 腾讯轻量云专区 / 观察区」策展。重名条目以精选为准,社区区不重复展示。
|
|
28
|
+
- **分区浏览、全局搜索**:分类、排序和分页在各区独立保留;输入中文或英文关键词时,同时搜索社区与精选,并分别展示命中数。收藏是本机当前 profile 的便捷入口。
|
|
29
|
+
- **安装前先看详情**:卡片显示来源、安装状态与版本;详情展示说明、兼容信息和可用的安装入口。npm 包锁定**精确版本并校验 integrity**,GitHub 来源锁定 **commit SHA**;peer 不兼容时先提示风险,未经确认不强行安装。
|
|
44
30
|
|
|
45
|
-
|
|
31
|
+
| 社区分类 | 精选策展 |
|
|
32
|
+
|---|---|
|
|
33
|
+
|  |  |
|
|
46
34
|
|
|
47
|
-
|
|
48
|
-
2. 输入包名 `dsh-m`,按网络情况选择安装源,然后点击「安装」。
|
|
49
|
-
3. 安装完成后按宿主生命周期使插件生效:DSH Web 重启后刷新页面;官方 Desktop 退出并重新打开应用。
|
|
50
|
-
4. 加载完成后,从侧栏底部打开「插件市场」。
|
|
35
|
+

|
|
51
36
|
|
|
52
|
-
|
|
53
|
-
<img src="https://raw.githubusercontent.com/iasiv5/dsh-m/main/docs/images/official-plugin-install.webp" alt="DSH 官方插件管理界面:添加插件对话框中填写 dsh-m,并选择安装源" width="86%">
|
|
54
|
-
<p><sub>推荐方式 · 在 DSH 官方插件管理界面添加并安装 dsh-m</sub></p>
|
|
55
|
-
</div>
|
|
37
|
+

|
|
56
38
|
|
|
57
|
-
>
|
|
39
|
+
> **社区收录不是安全审查。** 4,000+ 条目录来源广泛,安装前请核对作者、代码与所需能力;能力字段缺失表示「未扫描」,不表示「未发现风险」。
|
|
58
40
|
|
|
59
|
-
##
|
|
41
|
+
## 已装插件与设置
|
|
60
42
|
|
|
61
|
-
|
|
62
|
-
|---|---|
|
|
63
|
-
| **市场** | 社区(4,000+ 条)/ 精选 / 收藏三分区;浏览态各分区独立保留分类、排序与分页状态,搜索为跨区全局(社区 + 精选一并命中);卡片点开详情 Modal,安装进度与结果就地显示。 |
|
|
64
|
-
| **操作记录** | 安装、升级、卸载、开关统一进入全局操作日志,状态不挂卡片;宿主重载后自动恢复未完成操作。 |
|
|
65
|
-
| **已装** | 当前 profile 实装列表:来源标注、运行相位徽标、一键开关、升级与两段式确认卸载。 |
|
|
66
|
-
| **设置** | 精选清单配置与状态、社区目录开关、dsh-m 自更新。 |
|
|
43
|
+
「**已装**」只反映当前宿主 profile 的实际插件:区分市场/非市场来源,显示运行相位与可用更新,并提供开关、升级和确认后卸载;相关操作进度与结果会统一记录。开关可能即时生效或需要重启,应以操作结果为准。卸载只移除插件引用,不会默默删除用户数据,疑似残留路径会单独报告。
|
|
67
44
|
|
|
68
|
-
|
|
69
|
-
<img src="https://raw.githubusercontent.com/iasiv5/dsh-m/main/docs/images/settings.webp" alt="设置视图——社区清单状态卡(目录版本 / 获取线路 / 收录条目)、精选清单配置卡(地址草稿与强制刷新 / 校验并应用 / 恢复默认 / 下载默认清单)与关于卡" width="86%">
|
|
70
|
-
<p><sub>设置视图 · 社区清单状态、精选清单配置与 dsh-m 自更新</sub></p>
|
|
71
|
-
</div>
|
|
45
|
+

|
|
72
46
|
|
|
73
|
-
|
|
47
|
+
「**设置**」可查看社区目录的版本、获取线路和缓存状态,开关或锁定社区目录版本;也可下载默认精选清单、填入自定义地址并**校验后整体替换精选区**(社区区不变)。校验失败不改当前生效配置;恢复默认或成功应用均无需重启。
|
|
74
48
|
|
|
75
|
-
-
|
|
76
|
-
- 随后出现「⚡ 一键重启」横幅:受 systemd 管理时经 DSH launcher 的 `appExit` 交还服务的 `Restart` 策略拉起,无 `appExit` 的宿主按设计兜底;
|
|
77
|
-
- 客户端按 boot id 确认新进程后关闭横幅,页面经 DSH Web 自身的后台重连恢复,不强制整页刷新;
|
|
78
|
-
- 安装过程实时显示 pnpm 进度(解析 → 下载 → 链接 → 构建)。
|
|
49
|
+

|
|
79
50
|
|
|
80
|
-
|
|
51
|
+
自定义地址支持 HTTPS、本机绝对路径或 `file://`(HTTP 仅限 loopback 调试),清单大小 ≤ 2 MiB、条目 ≤ 1,000。自定义源是独立快照,**不会自动同步默认精选**;源失效时保留该源最近的成功缓存,不会暗中切回默认。添加精选条目或了解完整校验规则,请看 [清单文案指南](https://github.com/iasiv5/dsh-m/blob/main/docs/registry-copy-guide.md)与[设计文档](https://github.com/iasiv5/dsh-m/blob/main/docs/DESIGN.md)。
|
|
81
52
|
|
|
82
|
-
## Agent
|
|
53
|
+
## Agent 工具与 CLI
|
|
83
54
|
|
|
84
|
-
| 工具 |
|
|
55
|
+
| Agent 工具 | 能做什么 |
|
|
85
56
|
|---|---|
|
|
86
|
-
| `dshm_search` |
|
|
87
|
-
| `dshm_list` |
|
|
88
|
-
| `dshm_install`
|
|
89
|
-
| `
|
|
90
|
-
| `dshm_outdated` | 检查最新版本 |
|
|
91
|
-
| `dshm_upgrade` | 升级到最新 |
|
|
92
|
-
| `dshm_toggle` | 切换插件运行状态(默认先确认,用户同句已明确可直接执行) |
|
|
93
|
-
| `dshm_restart` | 一键重启 DSH Web(先征得同意) |
|
|
94
|
-
|
|
95
|
-
## CLI
|
|
57
|
+
| `dshm_search` | 同时搜索社区与精选,在对话内展示插件卡片 |
|
|
58
|
+
| `dshm_list` · `dshm_outdated` | 列当前 profile 实装与可更新插件 |
|
|
59
|
+
| `dshm_install` · `dshm_upgrade` · `dshm_uninstall` | 安装、升级、确认后卸载;兼容风险先行提示 |
|
|
60
|
+
| `dshm_toggle` · `dshm_restart` | 切换运行状态;经用户同意后重启 Web |
|
|
96
61
|
|
|
97
62
|
```sh
|
|
98
|
-
dshm search
|
|
99
|
-
dshm list
|
|
100
|
-
dshm
|
|
101
|
-
dshm
|
|
63
|
+
dshm search --query 主题 --source all
|
|
64
|
+
dshm list
|
|
65
|
+
dshm outdated
|
|
66
|
+
dshm install --id dsh-web-search
|
|
67
|
+
dshm upgrade --pkg dsh-web-search --yes
|
|
102
68
|
dshm uninstall --pkg dsh-web-search --yes
|
|
103
|
-
dshm toggle --pkg dsh-web-search --
|
|
69
|
+
dshm toggle --pkg dsh-web-search --off --yes
|
|
104
70
|
dshm restart --yes
|
|
105
71
|
```
|
|
106
72
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
**profile 目标**:CLI 恒作用于 web profile——`--profile web` 为显式声明;`--profile desktop` 直接拒绝(Desktop 的插件管理走官方 Desktop 应用)。无图形界面的宿主也可用官方 `dsh` CLI 安装插件:`dsh plugin --profile web add dsh-m`。
|
|
110
|
-
|
|
111
|
-
> `npm install -g dsh-m` 只安装 `dshm` CLI(终端管理用),**不会**把插件注册进 web profile;与通过官方插件管理界面安装不冲突,可并存。
|
|
112
|
-
|
|
113
|
-
## 社区清单(awesome-dsh-plugin 目录)
|
|
114
|
-
|
|
115
|
-
**社区清单是 dsh-m 的默认清单**:锚定 npm 包 [`dsh-plugin-catalog`](https://www.npmjs.com/package/dsh-plugin-catalog)(CC0-1.0,awesome-dsh-plugin 全量目录,4,000+ 条)。其上叠加手工 curated 的**精选清单**(registry.json),数据层合并去重(**精选清单恒优先**,重名条目社区侧让位),展示层按「社区 / 精选」分区呈现(ADR-0004)——社区区不再显示与精选清单重复的条目,精选区保持策展序单页直出。
|
|
116
|
-
|
|
117
|
-
<div align="center">
|
|
118
|
-
<img src="https://raw.githubusercontent.com/iasiv5/dsh-m/main/docs/images/community-catalog.webp" alt="市场视图社区分区——社区 / 精选 / 收藏分区 tabs、搜索行与带计数的开放分类 chips" width="86%">
|
|
119
|
-
<p><sub>社区清单 · 默认落地分区:分区 tabs、常驻搜索与带计数的开放分类 chips</sub></p>
|
|
120
|
-
</div>
|
|
121
|
-
|
|
122
|
-
- **数据获取**:dist-tags 探测最新版本 → jsDelivr 按精确版本直取 → npmmirror → unpkg 三线路兜底;版本未变不重拉正文,TTL 内跳过探测。「最新版本」探测结果为纯内存缓存:**重启 DSH 即失效**(发版后重启即可看到新版本),经 dsh-m 安装/升级/卸载成功后该条目缓存立即作废。失败回落 `<缓存目录>/awesome/` 运行时缓存先展示(先回缓存、后台自愈)——过期数据绝不冒充最新;缓存状态(缓存快照/目录版本/获取线路/更新时间)在**设置页**可见,浏览页不打扰。
|
|
123
|
-
- **开关与锁定**:设置页 `communityCatalog` 开关(默认开,live 生效)、`communityCatalogPin` 可锁定目录版本(精确 semver);CLI 用 `DSHM_COMMUNITY_CATALOG=0` 退出、`DSHM_COMMUNITY_CATALOG_PIN` 锁版本。
|
|
124
|
-
- **npm 元数据路由(0.9.32,ADR-0012)**:安装/升级前的元数据预取按机器网络自适应选源——probe-once(2.5s 预算)探测 npmjs 与镜像谁先应答,决策持久化于 `<缓存目录>/npm-route.json`(删除即重探);检测读(升级探测/发布时刻)恒以 npmjs 权威源优先、镜像降级,履约读(精确版本元数据)走生效源、镜像未同步时自动按需同步后重试。环境变量:`DSHM_NPM_REGISTRY` 强制元数据读取源(最高优先,设了跳过探测);`DSHM_MIRROR_SYNC=0` 关闭镜像滞后自愈。**与 `DSHM_REGISTRY_URL`(收录清单源覆盖)是两回事**。调试回环 registry 时若本机开着系统代理,请配 `NO_PROXY=127.0.0.1,localhost`(代理语义跟随标准 env/npm config,不自动豁免 loopback)。
|
|
125
|
-
- **分类与搜索**:社区分类是开放集(已知 23 个分类带中英双语标签:中文由包内单一事实源维护、英文取上游目录,按界面语言下发);搜索走相关性加权管线(中英文双匹配),且为**跨区全局**——任一分区的搜索框同时命中社区与精选(浏览保持分区,摘要行报两分区精确命中数、精选命中置顶分组);社区区排序可切(下载量/Star/收录日期 × 升降,默认下载量降序,无下载量 ≠ 0 下载)。
|
|
126
|
-
- **安装语义**:社区条目与精选条目走同一安装链路(npm 锁精确版本 / GitHub 锁 commit SHA);市场浏览页只对 npm 条目做更新探测,GitHub 条目不做页面级探测(匿名配额 60 次/小时不可控)。
|
|
127
|
-
- **已装页预算(best-effort)**:已装页对 GitHub 来源插件做更新检查,单次请求 ≤25 个、宿主进程滚动 1 小时 ≤50 个(仅被动检查;主动安装/升级不受限);超限条目如实标注「检查未完成」而不冒充「全部最新」。独立 CLI 进程不共享宿主内预算,并发场景不承诺 60 次/小时绝不耗尽。
|
|
128
|
-
- **能力披露**:社区条目的 capabilities/红线只出现在详情折叠区(**缺省 = 未扫描 ≠ 未检出**),卡片不打标;截图仅在详情层加载并经客户端白名单校验。
|
|
129
|
-
- **非安全审查警示**:社区目录为全量收录,**未经安全审查**——安装前请自行确认插件来源与能力;精选清单的策展与 CI 校验不适用于社区条目。
|
|
130
|
-
|
|
131
|
-
## 精选清单(registry.json)
|
|
132
|
-
|
|
133
|
-
精选清单手工 curated,叠加在社区清单之上(重名条目恒优先),按**策展五桶**分类:装机必备 / 崔添翼精选 / iasi自研 / 腾讯轻量云专区 / 观察区,当前收录 DSH Skins、DSH TUI、ModSearch、Better Sidebar、DSH Context 等插件。
|
|
73
|
+
GUI 与 Agent 工具始终跟随**当前宿主 profile**(Web / Desktop);独立 CLI 则**只操作 web profile**,`--profile desktop` 会拒绝。`--force` 可在用户已确认 peer 不兼容风险后用于安装或升级。`registry`、`search`、`outdated` 在清单不可用时明确失败,`list` 仍可列已装插件。完整参数与运行策略见[设计文档](https://github.com/iasiv5/dsh-m/blob/main/docs/DESIGN.md)。
|
|
134
74
|
|
|
135
|
-
|
|
136
|
-
<img src="https://raw.githubusercontent.com/iasiv5/dsh-m/main/docs/images/curated-registry.webp" alt="市场视图精选分区——社区 / 精选 / 收藏分区 tabs 与策展五桶分类 chips(装机必备 / 崔添翼精选 / iasi自研 / 腾讯轻量云专区 / 观察区)" width="86%">
|
|
137
|
-
<p><sub>精选清单 · 策展五桶分类:装机必备 / 崔添翼精选 / iasi自研 / 腾讯轻量云专区 / 观察区</sub></p>
|
|
138
|
-
</div>
|
|
75
|
+
## 兼容与常见问题
|
|
139
76
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
1.
|
|
145
|
-
2.
|
|
146
|
-
3. 在设置页填入副本地址并「校验并应用」——支持 **HTTPS URL**、本机**绝对路径 / `file://`**(HTTP 仅限 127.0.0.1/localhost 本机调试);
|
|
147
|
-
4. 校验失败(字段错误、路径不存在、超过 2 MiB / 1,000 条等)不会保存配置,当前生效清单保持不变;应用成功**即时生效,无需重启**(仅首次部署新版本 dsh-m 需要一次重启);
|
|
148
|
-
5. 「恢复默认」一键回到官方清单。
|
|
149
|
-
|
|
150
|
-
规则与边界:严格 v1 schema(未知字段 / 非法 ID / 超限 / 重复一律拒绝,不截断);副本是独立快照,**不会自动同步**官方新条目;自定义源失败时保留其最近一次成功缓存,绝不静默回退官方清单;切换后旧自定义源缓存会被清理(默认缓存保留);自定义清单未经官方 CI 校验,请确认来源可信再安装;完整本地路径只在设置页显示,工具与卡片只显示短状态。
|
|
151
|
-
|
|
152
|
-
安全基线:拉取仅 HTTPS(loopback HTTP 除外)+ 重定向逐跳校验 + 体积上限 + 超时;npm 安装按精确版本 dist integrity 对照 pnpm lockfile 校验,不一致 fail closed 并回滚;GitHub 安装强制锁定 commit SHA;pnpm 构建脚本被拦时按策略放行并明确报告。
|
|
153
|
-
|
|
154
|
-
## 文档
|
|
155
|
-
|
|
156
|
-
| 文档 | 什么时候读 |
|
|
157
|
-
|---|---|
|
|
158
|
-
| [CHANGELOG.md](https://github.com/iasiv5/dsh-m/blob/main/CHANGELOG.md) | 查看任意版本的变更明细(双语,自 0.4.x 起完整收录) |
|
|
159
|
-
| [docs/DESIGN.md](https://github.com/iasiv5/dsh-m/blob/main/docs/DESIGN.md) | 设计共识、面板行为细则、双代兼容与重启链路;开发与发版流程见其 §6 |
|
|
160
|
-
| [docs/adr/](https://github.com/iasiv5/dsh-m/tree/main/docs/adr) | 架构决策记录:委派与降级、精确构建放行、社区清单合并、分区市场、双 profile |
|
|
161
|
-
| [docs/registry-copy-guide.md](https://github.com/iasiv5/dsh-m/blob/main/docs/registry-copy-guide.md) | 为精选清单条目撰写 description 与 tags |
|
|
162
|
-
| [docs/plans/](https://github.com/iasiv5/dsh-m/tree/main/docs/plans) | 各版本实施计划存档 |
|
|
163
|
-
|
|
164
|
-
## FAQ
|
|
165
|
-
|
|
166
|
-
**1. 为什么 GitHub 来源的更新提示不走 main HEAD?**
|
|
167
|
-
main 上的中间提交可能不稳定。dsh-m 只跟踪 **release / tag**(优先 `releases/latest`,无 release 回退 tags 列表),安装时锁定 tag 指向的 commit SHA。
|
|
168
|
-
|
|
169
|
-
**1.5 官方 Desktop 上能用哪些功能?**
|
|
170
|
-
Desktop(desktop profile)支持浏览市场、**安装新包**和插件开关。自 0.9.8 起,升级、卸载与 dsh-m 自更新也已委派官方 `pluginManager`;服务不可用时会返回结构化拒绝与操作指引。一键重启仍由官方 Desktop 应用生命周期负责,请退出并重新打开应用。市场安装标注与已装列表只反映 Desktop 当前 profile;收藏和操作记录不与 Web 同步。
|
|
171
|
-
|
|
172
|
-
**2. 卸载 dsh-m 会删我的数据吗?**
|
|
173
|
-
不会。只移除 profile 中的包引用(卸载前先下线运行中的界面),并把疑似残留路径报告给你。
|
|
77
|
+
| DSH Web 代际 | 设置通路 | 核验情况 |
|
|
78
|
+
|---|---|---|
|
|
79
|
+
| `0.1.2-rc.1` | cordis 配置降级 | 契约核对 |
|
|
80
|
+
| `0.1.5-rc.1 / rc.2` | `register()` scope | 已核对;rc.1 另有页面实测 |
|
|
81
|
+
| `0.1.7-rc.1 / rc.2` | `.volatile()` + `settings.update` | 已核对 |
|
|
82
|
+
| `0.2.0-rc.1 / rc.2` | 同 0.1.7 通路 | rc.2 与重启链路实测 |
|
|
174
83
|
|
|
175
|
-
**
|
|
176
|
-
市场列表是服务端分页(每页 32/64/96 可选),1,000 条清单第一页也只查询当前页的最新版本,浏览仍然流畅。
|
|
84
|
+
**Desktop 与 Web 完全一样吗?** 不是。Desktop 的浏览、安装新包和开关作用于 desktop profile;升级/卸载等操作需宿主官方 `pluginManager` 提供相应能力,缺失时返回结构化拒绝和指引。Desktop 不提供 Web 的一键重启;变更需按应用提示退出并重新打开。两边的收藏、操作记录和已装状态互不串联。
|
|
177
85
|
|
|
178
|
-
|
|
179
|
-
优先使用该源最近一次成功的缓存(设置页「生效来源」会如实标注);完全没有缓存时市场会提示清单不可用,已安装插件仍可正常管理。修正地址或恢复默认即可。
|
|
86
|
+
**安装、更新后何时生效?** Web 按操作返回的激活要求处理:仅客户端更新可刷新页面;需要重启时先征得同意,再由宿主完成重启与后台重连。使用 systemd 时须有 `Restart=on-failure` 或 `Restart=always`;否则采用部署方的重启方式。
|
|
180
87
|
|
|
181
|
-
|
|
88
|
+
**为什么 GitHub 插件的更新不跟踪 `main`?** 中间提交可能不稳定,dsh-m 跟踪 release / tag,并锁定其 commit SHA。匿名 GitHub 配额有限,未完成的检查会如实显示,不冒充「全部最新」。
|
|
182
89
|
|
|
183
|
-
|
|
184
|
-
|---|---|---|
|
|
185
|
-
| `0.1.2-rc.1` | 形态探测降级 cordis 配置通路 | 契约核对 |
|
|
186
|
-
| `0.1.5-rc.1` / `rc.2` | `register()` scope 通路 | 已核对;rc.1 另有 `/dshm` ping 与带认证页面 `303 → 200` 实测 |
|
|
187
|
-
| `0.1.7-rc.1` / `rc.2` | Config `.volatile()` 字段 + `settings.update` + `loader/volatile-update` 事件 | 已核对;两个 rc 的 dsh-settings 逐字节一致,一套实现通吃 |
|
|
188
|
-
| `0.2.0-rc.1` / `rc.2` | 同 `0.1.7` 通路 | `rc.2` 为当前实机运行代际,重启链路于 2026-10-01 实机核验 |
|
|
90
|
+
**自定义清单不可用怎么办?** 优先使用该源上次成功的缓存;没有缓存时会提示清单不可用,已装管理仍能工作。修正地址或在设置页恢复默认即可。
|
|
189
91
|
|
|
190
|
-
|
|
191
|
-
- systemd 部署需为 unit 配置 `Restart=on-failure` 或 `Restart=always`,否则请使用部署方的手动重启方式。
|
|
92
|
+
完整沿革见 [CHANGELOG](https://github.com/iasiv5/dsh-m/blob/main/CHANGELOG.md),设计与开发细节见 [DESIGN](https://github.com/iasiv5/dsh-m/blob/main/docs/DESIGN.md)、[ADR](https://github.com/iasiv5/dsh-m/tree/main/docs/adr)。截图取自 Web 实例;面板版本、条目数与安装状态会随时间和 profile 变化。在源码仓库运行 `npm install && npm run capture:readme` 可复现截图(需 Web 实例已装 dsh-m;此开发脚本不随 npm 插件包分发)。
|
|
192
93
|
|
|
193
94
|
## License
|
|
194
95
|
|
|
195
|
-
MIT
|
|
96
|
+
[MIT](./LICENSE)
|
package/docs/DESIGN.md
CHANGED
|
@@ -97,6 +97,7 @@
|
|
|
97
97
|
- **agent/CLI 契约(允许破坏性变更)**:`dshm_search` 参数改为 `query / category / source('primary'|'community'|'all',默认 all,与 GUI 分区对齐) / limit(默认 10,clamp 1–80) / offset(真翻页)`;`primary_only` 删除。输出补 `community` 标记与 `downloads/stars`;社区分类直出中文标签(不再回退英文 slug);工具描述整体重写(真实规模 + 翻页语义,删「registry is curated & small」)。CLI 对齐 `--source / --offset / --limit`,默认 10 条。
|
|
98
98
|
- **技术默认件**:图片三层懒加载(IntersectionObserver + `loading=lazy` + `fetchPriority=low`;缩略图本机直连原图,不引第三方代理服务);移除客户端重复排序(服务端单一排序源);`total>200` 性能提示随分区退役;host-api limit 上限对齐新页大小;空状态逐分区定制;错误态带具体原因 + 重试。
|
|
99
99
|
- **Backlog(明确不做)**:UI 完整双语字典、时间窗过滤、浏览层宿主兼容徽章/过滤、组管理、个人备注、giscus 评论、静态官网。
|
|
100
|
+
- **修订(2026-10-06,0.9.45,[ADR-0013](./adr/0013-market-two-phase-probe.md))**:市场页两段加载——浏览态第一段 `probeMode:'cache-only'` 零网络回页(缺口 → latestComplete=false,豁免社区 github,Q46),第二段既有探测语义就地补徽标;force 语义 = peek 旧值兜底 + 全页重探(ADR-0006「peek 不删除」约束落实,重开其暂缓裁决),设置页「强制刷新」经 onForceMarket → marketReloadAll(true) 全链路接通。同批动线:详情 Modal 对已装且可升级条目提供「升级」主按钮(record.target=安装包名;市场区与收藏区两挂载点)+ README 折叠页(展开才拉取)+ 收录日期 fmtDate 本地化;错误行内联「重试」+ 空态三分支(unavailable 主文案 / 分类空桶 / 通用);收藏快照补 verified/audience/decoupled 三字段(只存不标——§2.7 裁决⑤不动),收藏区补「精选」身份徽标与「已实测」;0 计数桶显式渲染「0」+ 降透明 + 跨桶 title 说明;Modal 可达性子集(role=dialog/aria-modal/初始聚焦关闭钮/截图键盘开灯箱,Tab 圈闭不做)。
|
|
100
101
|
|
|
101
102
|
### 2.7 自研条目元数据:受众与解耦(grilling 定稿 2026-10-05)
|
|
102
103
|
|