@gehennawu/dsh-service 2.0.7 → 2.0.9
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.en.md +96 -81
- package/README.md +96 -81
- package/client.js +1 -1
- package/index.js +180 -9
- package/model-config-routes.js +641 -0
- package/model-config-schema.js +132 -0
- package/model-smart-fill.js +2206 -0
- package/model-workbench-routes.js +1740 -0
- package/model-workbench-settings.js +389 -0
- package/model-workbench.js +1618 -0
- package/package.json +11 -3
- package/provider-availability.js +84 -0
- package/quota-adapters.js +55 -0
- package/screenshots/README.md +4 -3
- package/screenshots/configuration.png +0 -0
- package/screenshots/configuration_en.png +0 -0
- package/screenshots/health-diagnostics.png +0 -0
- package/screenshots/health-diagnostics_en.png +0 -0
- package/screenshots/model-configuration.png +0 -0
- package/screenshots/model-configuration_en.png +0 -0
- package/screenshots/overview.png +0 -0
- package/screenshots/overview_en.png +0 -0
- package/subagent-routes.js +66 -1
package/README.md
CHANGED
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
<em>A service-control & operations plugin for DeepSeek Harness (DSH) Web.</em>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
|
-
[](package.json)
|
|
13
13
|
[](LICENSE)
|
|
14
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
15
15
|
[](https://cordis.moe/)
|
|
16
16
|
[](https://github.com/gehennawu/dsh-service)
|
|
17
17
|
[](https://github.com/gehennawu/dsh-service/issues)
|
|
@@ -41,7 +41,7 @@ DSH Web 服务控制与运维插件:安全重启、版本管理与一键升级
|
|
|
41
41
|
|
|
42
42
|
- [🚀 功能](#-功能)
|
|
43
43
|
- [版本与更新](#版本与更新) · [安全重启](#安全重启) · [健康诊断](#健康诊断) · [模型统计](#模型统计)
|
|
44
|
-
- [额度查询](#额度查询) · [备份管理](#备份管理) · [技能管理](#技能管理) · [子代理模型](#子代理模型)
|
|
44
|
+
- [额度查询](#额度查询) · [模型配置](#模型配置) · [备份管理](#备份管理) · [技能管理](#技能管理) · [子代理模型](#子代理模型)
|
|
45
45
|
- [任务通知](#任务通知) · [会话管理](#会话管理) · [移动端适配](#移动端适配) · [模型厂家图标](#模型厂家图标) · [右栏文件编辑](#右栏文件编辑) · [外部探活](#外部探活)
|
|
46
46
|
- [🏗️ 架构](#-架构)
|
|
47
47
|
- [⚡ 安装](#-安装) · [🔄 自动重启配置](#-自动重启配置) · [🖥️ 平台支持](#-平台支持)
|
|
@@ -49,16 +49,16 @@ DSH Web 服务控制与运维插件:安全重启、版本管理与一键升级
|
|
|
49
49
|
|
|
50
50
|
## 🚀 功能
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
设置页「服务控制」面板七页导航:**概览 · 模型统计 · 额度查询 · 模型配置 · 健康诊断 · 维护 · 配置**;其中「模型配置」聚合渠道与模型 / 子代理路由,「维护」聚合 会话管理 · 技能 · 备份维护 · 重启 四个子页,「配置」聚合 功能开关 · 任务通知 · 设置栏标签 三个子页。重启、额度查询、会话管理可另行开启**设置页左列快捷入口**(默认关闭;技能与子代理的左列入口已撤销)。
|
|
53
53
|
|
|
54
|
-
「插件 →
|
|
54
|
+
「插件 → 插件配置」提供十三个宿主级开关:**健康诊断、模型统计、额度查询、模型配置、备份维护、任务通知、技能管理、子代理模型、会话管理、移动端适配、模型厂家图标、右栏文件编辑、`/healthz` 探活**(除移动端适配外默认开启)。全部热生效:关闭即隐藏界面、停止轮询并让宿主拒绝对应能力;概览与重启固定保留。
|
|
55
55
|
|
|
56
56
|

|
|
57
57
|
|
|
58
58
|
### 概览
|
|
59
59
|
|
|
60
|
-
-
|
|
61
|
-
-
|
|
60
|
+
- 查看服务状态、待处理问题、DSH / 插件版本、运行环境与近期报错。
|
|
61
|
+
- 健康诊断、备份、统计、额度等异常会汇总为提醒;可更新与尚无备份属于信息提示。
|
|
62
62
|
|
|
63
63
|
### 维护与配置聚合页
|
|
64
64
|
|
|
@@ -66,15 +66,15 @@ DSH Web 服务控制与运维插件:安全重启、版本管理与一键升级
|
|
|
66
66
|
|
|
67
67
|

|
|
68
68
|
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
69
|
+
- 「维护」集中会话管理、技能、备份维护与重启,并记住最近使用的子页。
|
|
70
|
+
- 「配置」集中功能开关、任务通知与设置栏标签;支持拖拽 / 箭头排序和显隐管理,服务控制入口始终保留。
|
|
71
|
+
- 设置栏标签与额度卡片偏好支持多设备同步,保存在 `$DSH_HOME/dsh-service-config.json`;各功能配置互不影响。
|
|
72
72
|
|
|
73
73
|
### 版本与更新
|
|
74
74
|
|
|
75
75
|
- 显示当前 DSH 与插件版本,链接 GitHub Releases
|
|
76
76
|
- 自动检查 npm **正式版 + 预览版**(latest / next 双 tag)
|
|
77
|
-
-
|
|
77
|
+
- 「本次更新内容」查看当前版本更新说明;有新版时点击版本提示查看新版说明,支持就地阅读与 Esc 关闭。
|
|
78
78
|
- 一键升级,完成后自动重启;未检测到进程管理器时先确认后果,保持运行并提示手动重启
|
|
79
79
|
- 升级落地但进程尚未重启期间(手动启动环境尤为常见),版本行改示「已安装 X,重启后生效」并收起升级按钮,重开面板或刷新页面状态依旧;重启进程后恢复常态
|
|
80
80
|
|
|
@@ -92,27 +92,25 @@ DSH Web 服务控制与运维插件:安全重启、版本管理与一键升级
|
|
|
92
92
|
|
|
93
93
|

|
|
94
94
|
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
95
|
+
- 查看运行时间、内存、会话数、活跃 Agent、后台任务、平台、架构与 Node 版本。
|
|
96
|
+
- 检查会话存储、工作区注册表、备份目录、tar、文件权限、运行环境与使用统计索引。
|
|
97
|
+
- **使用统计索引**显示已索引 / 失败会话数与更新时间;部分读取失败不会阻止其他会话统计,关闭模型统计后不再检查此项。
|
|
98
|
+
- **通知权限**提示浏览器未授权或拒绝通知,并给出恢复入口;不影响概览状态,关闭任务通知后不再显示。
|
|
99
|
+
- **插件健康检查**列出失败或依赖未就绪的插件及错误;失败插件可确认后重新加载。手动停用不算异常,已释放或未知状态仅作信息提示。
|
|
100
|
+
- 「权限与修复」提供文件权限深检与两段式确认修复。
|
|
101
|
+
- 疑似手动启动时提示「重启无保障」;无备份仅作信息提示。
|
|
102
102
|
|
|
103
103
|
### 模型统计
|
|
104
104
|
|
|
105
105
|

|
|
106
106
|
|
|
107
|
-
- 近 7 天输入 / 输出 / 缓存 token
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
- 提供方未上报 token 用量的步骤不纳入统计
|
|
115
|
-
- 单个会话无法读取、迁移或解析时继续统计其他会话,显示全项目成功/跳过数量与可展开的会话 ID、错误类别及安全摘要;失败会话有旧缓存时保留并标明过期,首次失败不计入,下次刷新重试。只有服务不可用、列表读取或索引写入失败等全局错误才让整次刷新失败。该提示可关闭(关闭后记入本地存储),且**只静音同一批失败**——出现新的跳过会话或错误类别变化时会再次提示,不会一次关闭就永久盖住新问题
|
|
107
|
+
- 近 7 天输入 / 输出 / 缓存 token 趋势,按项目筛选;悬停查看 token 总量、成功模型步骤与缓存命中率。
|
|
108
|
+
- 模型明细可切换「今日 / 近 7 天 / 累计」。
|
|
109
|
+
- **日用量热力日历**覆盖最多 20 周,可切换为星期 × 小时分布,随项目筛选联动。
|
|
110
|
+
- **历史用量永久保留**:删除会话或项目不会扣减已统计用量;已删除项目从筛选中移除,但仍计入全部总量。
|
|
111
|
+
- 查看最近 48 小时模型 / 工具报错;无报错时不显示。
|
|
112
|
+
- 打开面板、进入统计页、跨本地零点或返回前台时自动同步,也可手动刷新;闲置时不周期轮询。
|
|
113
|
+
- 提供方未上报 token 的步骤不纳入统计。单会话读取失败时保留旧缓存、标明过期并重试,其他会话照常统计;可展开查看失败原因,新的失败会重新提示。
|
|
116
114
|
|
|
117
115
|
### 额度查询
|
|
118
116
|
|
|
@@ -132,6 +130,9 @@ DSH Web 服务控制与运维插件:安全重启、版本管理与一键升级
|
|
|
132
130
|
| OpenCode Go | `{baseURL}/usage`(内置渠道未写 baseURL 时用注册表默认端点 `https://opencode.ai/zen/go/v1`) |
|
|
133
131
|
| OpenRouter | credits 已用百分比 |
|
|
134
132
|
| Kimi / 硅基流动 | 人民币余额 |
|
|
133
|
+
| Vercel AI Gateway | 官方 `GET /v1/credits` 查询团队剩余 USD 余额(Gateway API key;累计消费不作为套餐上限) |
|
|
134
|
+
| Poe | API key 查询剩余 points(非货币积分,不显示金额油表) |
|
|
135
|
+
| ClinePass | API key 查询 5 小时 / 每周 / 每月套餐用量及重置时间 |
|
|
135
136
|
| StepFun 余额 | 官方 `GET /v1/accounts`(API key,com/ai 双域) |
|
|
136
137
|
| StepFun Step Plan | 控制台 BFF 订阅额度(Oasis-Token 登录令牌;5 小时/周窗口与 Credit 月池自动识别) |
|
|
137
138
|
| 小米 MiMo Token Plan | 控制台同源套餐额度(网页登录态 Cookie) |
|
|
@@ -150,7 +151,6 @@ DSH Web 服务控制与运维插件:安全重启、版本管理与一键升级
|
|
|
150
151
|
|
|
151
152
|

|
|
152
153
|
|
|
153
|
-
- 备份记录列表为两行轻行(文件名主行 + 体积 · 时间次行,分隔线布局;会话管理列表同款)
|
|
154
154
|
|
|
155
155
|
- 创建会话、配置与插件 profile 清单的 `.tar.gz` 归档;会话经持久化层稳定快照(活跃 agent 写入不再导致失败),创建过程以单条连续进度条分阶段显示(复制/打包/校验/发布,带步骤号 1/4–4/4,复制阶段为真实百分比)
|
|
156
156
|
- **备份时版本信息**:归档文件名带备份那一刻的 DSH 版本(`dsh-backup-YYYYMMDD-HHmmss-dsh0.1.7-rc.1.tar.gz`),归档内另有 `meta/backup.json` 记录 DSH 版本、插件版本与创建时刻;面板行内与恢复预检都显示该版本,便于判断这份快照出自哪个版本(跨版本降级恢复读不动新格式会话)。旧版本插件所出的归档没有版本段,列表照常显示、恢复照常进行,只是不显示版本行;导入同时接受带版本段与不带版本段两种文件名
|
|
@@ -166,25 +166,46 @@ DSH Web 服务控制与运维插件:安全重启、版本管理与一键升级
|
|
|
166
166
|

|
|
167
167
|
|
|
168
168
|
- 按 **自动加载 / 仅手动调用 / 完全停用** 三区展示本地技能;同名遮蔽与被遮蔽副本均有标注,内置目录只读
|
|
169
|
-
- 条目默认全部折叠成一行(名称 + 来源/只读/已注释徽标);顶部按钮对当前可见条目一键「全部展开 / 全部折叠」,点单条名称行可独立开合;无效条目的 ⚠ 与一键修复折叠态也保留
|
|
170
169
|
- 双开关直接改写 SKILL.md frontmatter(`disable-model-invocation` / `user-invocable`),约 200ms 热生效
|
|
171
170
|
- 带 camelCase 旧版键的条目会被官方解析器剔除:⚠ 提示 + 一键修复
|
|
172
171
|
- ✨ AI 补全说明:选模型生成描述草稿(跟随界面语言),确认后存入插件侧车索引——**绝不改写 SKILL.md**;支持一键批量补全(宿主后台运行、可取消)。已注释技能会在计划中单列,经「确认强制补全」二次确认后才会被覆盖(不再是一旦注释就永远无法再次补全);补全日志时间按本机时区显示
|
|
173
172
|
|
|
173
|
+
### 模型配置
|
|
174
|
+
|
|
175
|
+

|
|
176
|
+
|
|
177
|
+
- 「模型配置」包含**渠道与模型**、**子代理路由**两个子页,区分内置与自定义渠道。
|
|
178
|
+
- **添加自定义渠道**:填写标识、显示名、协议、地址、API Key 与模型 ID;创建不会自动探测接口。
|
|
179
|
+
- **混合协议渠道提示**:渠道目录同时含多种协议(如 0.2.1-alpha.3 起 pi-ai 的 `azure`)时,模板选择与渠道编辑会提示「路由级协议覆盖该路由全部模型」,避免把 Chat Completions 模型钉到 Responses 协议。
|
|
180
|
+
- **渠道编辑**:修改显示名、地址与凭据;自定义渠道可修改协议,内置协议只读。未展示的 headers、超时、缓存与其他高级参数保留不变。
|
|
181
|
+
- **模型获取**:可手填 ID,也可点击「在线获取」搜索、勾选并批量添加;支持 OpenAI 兼容与 Anthropic 模型列表。获取失败不影响手动添加,拿到列表不等于调用成功。
|
|
182
|
+
- **模型编辑**:修改 ID、显示名、上下文窗口、最大输出、图片输入和思考等级;容量支持 `256K`、`1M`,留空继承目录默认值。同渠道 ID 不得重复,已停用模型需启用后改名。
|
|
183
|
+
- **即时启停**:停用后主对话与子代理不能发起新调用,配置和密钥保留,已运行请求不强行取消。该策略随插件卸载撤去。
|
|
184
|
+
- **基础调用测试可能计费**:使用已保存模型发送短文本,显示耗时和脱敏错误;只验证文本调用,不验证图片、容量或全部思考档位,失败不会回滚配置。
|
|
185
|
+
- **智能填充默认关闭**:开启后按模型 ID 查询本机 pi-ai、modelparams.dev 和 OpenRouter 资料;不探测渠道、不发推理、不自动保存。建议按参数展示,「一键填入」确认后只更新草稿,仍需保存。
|
|
186
|
+
- **思考等级需核对**:可选档位声明与调用时选择不同;缺少资料不等于不支持,未配置时沿用继承值或接口默认行为。手动填写的档位参数需与实际接口核对。
|
|
187
|
+
- **删除引用检查**:先列出主对话默认模型、子代理主模型和回退模型引用,存在引用则阻止删除;自定义渠道不能删到零模型。
|
|
188
|
+
- **恢复与凭据**:删除渠道前保存配置快照,删除保留凭据引用;可恢复配置,但不恢复旧密钥值。换密钥默认建立独立引用,替换共享凭据前列出使用者。
|
|
189
|
+
- **草稿与并发保护**:保存失败保留草稿,离开未保存编辑前提醒;配置发生外部变动时拒绝覆盖,重新核对后再保存。草稿不跨刷新保存。
|
|
190
|
+
|
|
191
|
+
#### URL 与密钥安全机制
|
|
192
|
+
|
|
193
|
+
- 旧宿主缺少可追踪配置 revision 时仅可查看,写操作明确拒绝;配置写入经过 DSH 官方校验与原子保存。
|
|
194
|
+
- 输入或保存地址不会自动出网;在线获取只使用当前 Profile 已保存地址,要求公网 HTTPS、443 端口,拒绝私网、IP 字面量与重定向,并限制超时和响应大小。本地 / HTTP 渠道仍可保存并手填模型。
|
|
195
|
+
- 密钥只经 loopback 保存到 DSH 凭据库,不回显、不写入日志或快照,只发往对应渠道,绝不发往资料站。
|
|
196
|
+
|
|
174
197
|
### 子代理模型
|
|
175
198
|
|
|
176
199
|

|
|
177
200
|
|
|
178
|
-
- 三种模式:**初始**(不干预)/
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
186
|
-
- **对话页可见性**:输入框下方常驻一行本会话子代理实际使用的模型,如 `子代理:cpa/gpt-5.6-luna (xhigh) · opencode-go/deepseek-v4-flash (max)`——含回退命中、显式路由与继承来源,可直接核对自定义路由是否生效。行挂官方 `conversation.composer.dock` 槽位,独占官方统计行的下一行、不与统计胶囊/上下文圆环同行挤占;20s 刷新,不依赖回合数据(会话发生 compaction 折叠工具调用也照常显示),由宿主派发记录兜底,任何视图都能看到;可在 维护 → 子代理 页用独立开关关闭。记录存宿主内存(页面刷新不丢、进程重启即清),官方「指派子代理模型」开关关闭与否都不影响本功能
|
|
187
|
-
- 配置存 `$DSH_HOME/dsh-service-subagent-route.json`(原子写入、`0600`),可一键重置
|
|
201
|
+
- 三种模式:**初始**(不干预)/ **跟随主模型**(主对话最近实际使用的模型)/ **自定义**(固定到所选模型)。入口:模型配置 → 子代理路由。
|
|
202
|
+
- 派生请求显式指定 provider/model 时始终优先,不覆盖指定路由。
|
|
203
|
+
- 自定义模型声明可选思考等级时可选择,留空使用目标模型默认值;未声明等级时提示不可选。
|
|
204
|
+
- **切换模式保留配置**:自定义模型、思考等级和回退列表不会清除,切回自定义即可恢复。
|
|
205
|
+
- **有序回退**:跟随与自定义模式可配置回退模型,渠道卸载或额度不可用时依次尝试;全部不可用则回落原生继承。
|
|
206
|
+
- **独立 Agent 预设**(0.2.1-alpha.3+ 宿主):可为派生的子代理统一指定独立预设(角色与工具随预设);留空跟随父代,调用方显式指定的预设优先,仅对支持独立预设的后端生效。
|
|
207
|
+
- 输入框下方可显示本会话子代理实际使用的模型,包含回退命中和显式路由;可独立关闭。页面刷新不清除记录,进程重启后清除。
|
|
208
|
+
- 配置保存在 `$DSH_HOME/dsh-service-subagent-route.json`,可一键重置。
|
|
188
209
|
|
|
189
210
|
### 任务通知
|
|
190
211
|
|
|
@@ -199,49 +220,36 @@ DSH Web 服务控制与运维插件:安全重启、版本管理与一键升级
|
|
|
199
220
|
|
|
200
221
|

|
|
201
222
|
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
-
|
|
206
|
-
-
|
|
207
|
-
-
|
|
208
|
-
-
|
|
209
|
-
-
|
|
223
|
+
- **查看**:列出运行中、冷会话与已归档会话,显示工作区、事件数与体积;支持时间 / 标题排序及按项目分组,默认显示仅归档。
|
|
224
|
+
- **详情**:分页浏览 Markdown 正文,系统事件和工具消息可折叠;返回列表保留滚动位置。
|
|
225
|
+
- **子代理筛选**:支持「仅子代理」与批量「选中子代理」,普通 fork 不误判为子代理。
|
|
226
|
+
- **导出**:单项或批量下载官方完整 ZIP,每份包含子代理与附件。
|
|
227
|
+
- **归档与恢复**:单项或批量归档非运行中会话;DSH ≥0.1.6 支持恢复归档,老宿主仅支持单向归档。
|
|
228
|
+
- **内容搜索**:跨会话搜索正文,支持大小写不敏感与灵活空白匹配;可限定归档区,跳转命中上下文并切换上一个 / 下一个命中。
|
|
229
|
+
- **删除**:仅已归档会话可删除,运行中会话再次校验并拒绝;两段式确认列出 ID、标题、工作区与体积,删除后同步官方侧栏。
|
|
230
|
+
- **已删除记录**:可查看并单条 / 批量清除;记录只含标题与时间,不含正文、不能恢复会话。
|
|
231
|
+
- 入口:维护 → 会话管理;设置栏快捷入口默认关闭。
|
|
210
232
|
|
|
211
233
|
### 移动端适配
|
|
212
234
|
|
|
213
235
|

|
|
214
236
|
|
|
215
|
-
-
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
- Agent Team 弹窗手机端不越屏(<1024px):官方 Agent Team 面板自带左锚(`left:0`),挂在头部右侧动作槽上会整体右移出屏(实测 320~1023px 越出 112~352px)。移动端把会话头部设为定位上下文、面板改**右锚 16px** 并按 `100vw − 32px` 封顶,两缘各留 16px;桌面 ≥1024px 官方几何逐字不变
|
|
222
|
-
- 滑动沉浸:会话内下滑自动收起头部、左上角抽屉图标与输入框全屏阅读(左上角抽屉图标与右上角右侧栏展开按钮同步上滑淡出,收起时让出输入框占位,正文真正铺满整屏;回显时若仍停在会话末尾会自动对齐到底),上滑 / 点「回到底部」浮钮 / 聚焦输入框即恢复(无额外悬浮钮);已经停在会话末尾时往回一点即回显(不再等满阈值),点回底后停留位置会补一次贴底对齐;流式贴底、锚点跳转等程序化滚动绝不误触发
|
|
223
|
-
- 滑动开合抽屉:双抽屉关闭时,横移主导的右滑任意位置打开侧栏抽屉、左滑任意位置打开官方右侧栏(DSH 0.1.5+,未就绪时该方向无效);开启后反向横滑任意位置关闭;从屏幕边缘起滑额外享有浏览器手势接管的补完加成,编辑器等真横滚区内的滑动不误触发
|
|
224
|
-
- 「回到底部」浮钮右移贴边(不再空出大片右侧留白);其上方新增同款圆形上箭头(全平台生效,不含移动端),点击逐条跳转上一条用户回复、可连续向上回溯,目标在未加载历史时会自动点「加载更早」补齐,跳到最顶部后按钮自动隐藏、下滑即复现
|
|
225
|
-
- 大 JSON 响应透明压缩(≥4KB 按 `Accept-Encoding` 自动 gzip/brotli),长会话历史首屏提速
|
|
226
|
-
- 自动补 `viewport-fit=cover` 避让刘海、禁双击缩放、输入框 ≥16px 防 iOS 聚焦放大
|
|
227
|
-
- `?dshsvc-mobile-debug=1` 显示浮动诊断条(仅调试)
|
|
237
|
+
- 默认关闭;开启后仅在视口 <1024px 生效,桌面不受影响。
|
|
238
|
+
- 支持侧栏抽屉、窄屏设置导航和全屏面板,适配模型选择、会话任务菜单与 Agent Team 弹窗。
|
|
239
|
+
- **滑动沉浸阅读**:下滑收起头部和输入框,上滑、回到底部或聚焦输入框恢复;流式更新不会误触发。
|
|
240
|
+
- **抽屉手势**:右滑打开侧栏,左滑打开右侧栏,反向滑动关闭;编辑器横向滚动不误触发。
|
|
241
|
+
- 上箭头可逐条跳到上一条用户消息,未加载历史时自动补齐。
|
|
242
|
+
- 长会话 JSON 响应自动压缩,并处理安全区与手机输入框聚焦缩放。
|
|
228
243
|
|
|
229
244
|
### 模型厂家图标
|
|
230
245
|
|
|
231
|
-
-
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
-
|
|
237
|
-
-
|
|
238
|
-
- **模型选择弹窗的分组标题同样带图标**:点开模型按钮 → 「模型」二级列表后,每个**厂家/渠道商分组名前面**也显示同一枚图标(13px,与 12px 的分组标题同量级)。同一套解析与兜底规则,未识别的渠道分组保持官方标题原样、不加图标
|
|
239
|
-
- **浅色 / 深色都清晰**:品牌色对浅底与深底**两侧**对比度都达标才保留原色,否则自动改用跟随主题文字色的单色版——不会出现深色模式下「黑图标糊在黑底上」或浅色模式下近乎隐形
|
|
240
|
-
- **零运行期网络请求**:图标在构建期内联进客户端产物,离线可用、不影响 CSP,也不向第三方暴露你的渠道名称
|
|
241
|
-
- 图标尺寸与输入框旁的**额度圆环**一致(生成期把每个图标的 viewBox 收紧到真实绘制范围并正方形化,所以各品牌「看起来一样大」,不会有的满格有的缩成一团)
|
|
242
|
-
- 开关在 插件 → 插件配置 → 交互(默认开,热生效)
|
|
243
|
-
- 图标来自 MIT 许可的 [LobeHub Icons](https://github.com/lobehub/lobe-icons)(版本钉死 `@1.95.0`);小米图标取自 CC0 的 [Simple Icons](https://github.com/simple-icons/simple-icons) 纯 mi 标(LobeHub 那份是「Xiaomi / MIMO」两行文字组合标,15px 下糊成一团)。**品牌图形版权归各厂商**,正式对外使用前请查阅对应厂商的品牌条款
|
|
244
|
-
- **全部图标可在一页里查看**:[图标目录](docs/model-icons.html)——62 张图形、76 条渠道映射、匹配规则与深浅色对照;离线单文件,与构建期内联进客户端的数据同源生成
|
|
246
|
+
- 模型按钮、模型选择列表与额度卡片显示渠道厂家图标;未识别渠道保留官方默认图标。
|
|
247
|
+
- 覆盖 pi-ai 常用内置厂家,以及 Ollama、vLLM、LM Studio、Perplexity、Cohere、火山引擎、豆包、混元、阶跃、Cline 等渠道。
|
|
248
|
+
- 自定义渠道名按前缀 / 别名识别,例如 `openrouter-f`、`zai-coding-cn`、`command-goat`、`cline-official`。
|
|
249
|
+
- 名称无法识别时,可按额度页**手动选择的适配类型**匹配;名称匹配优先,CLIProxyAPI 图标需手动适配后显示。
|
|
250
|
+
- 图标内置,离线可用,不向第三方发送渠道名称;开关在插件配置 → 交互,默认开启。
|
|
251
|
+
- 来源:[LobeHub Icons](https://github.com/lobehub/lobe-icons)(MIT)与 [Simple Icons](https://github.com/simple-icons/simple-icons)(CC0)。品牌图形归各厂商所有。
|
|
252
|
+
- 全部图标与渠道匹配规则见[图标目录](docs/model-icons.html)。
|
|
245
253
|
|
|
246
254
|
### 右栏文件编辑
|
|
247
255
|
|
|
@@ -267,7 +275,7 @@ DSH Web 服务控制与运维插件:安全重启、版本管理与一键升级
|
|
|
267
275
|
```mermaid
|
|
268
276
|
flowchart TB
|
|
269
277
|
subgraph Client["🌐 Client 浏览器端 (client.js)"]
|
|
270
|
-
UI["
|
|
278
|
+
UI["设置页「服务控制」面板(七页导航 + 快捷入口)<br/>额度圆环 · 通知铃铛 · 移动端适配"]
|
|
271
279
|
end
|
|
272
280
|
|
|
273
281
|
subgraph Host["⚙️ Host 服务端 (index.js)"]
|
|
@@ -311,7 +319,7 @@ flowchart TB
|
|
|
311
319
|
1. 打开左侧边栏的「**插件**」页。
|
|
312
320
|
2. 点右上角的「**+ 添加插件**」按钮。
|
|
313
321
|
3. 在弹窗里按来源**三选一**填写(同一个输入框接受三种形式,底部提示会随填写内容变化):
|
|
314
|
-
- **npm 包名(推荐)**:`@gehennawu/dsh-service
|
|
322
|
+
- **npm 包名(推荐)**:`@gehennawu/dsh-service@2.0.9`——**带上精确版本号**(写法 `包名@版本号`);
|
|
315
323
|
- **GitHub 仓库地址**:`https://github.com/gehennawu/dsh-service`(公开仓库,无需令牌;`github:gehennawu/dsh-service` 简写同样可用);
|
|
316
324
|
- **本地插件目录**:本机上的绝对路径,例如 `/path/to/dsh-service`(自研或已下载的插件)。
|
|
317
325
|
4. 「**安装源**」按网络情况选择:默认「**npm 官方源**」;国内网络拉取受限时可选「**中国大陆镜像源**」(影响走包名安装时的拉取源,GitHub 地址与本地目录不受其影响)。
|
|
@@ -322,15 +330,17 @@ flowchart TB
|
|
|
322
330
|
|
|
323
331
|
> 提示:三种形式都走官方安装链路,无需手动改 profile 文件;图形界面填 GitHub 地址与命令行 `github:` 前缀等价。
|
|
324
332
|
|
|
333
|
+
> **npm 方式为什么建议带版本号**:pnpm 11 默认启用供应链发布观察期(`minimumReleaseAge`,1440 分钟)。**不带版本号**(含 `@latest`)时,发布时间未满观察期的版本不会被自动安装,包管理器会退到「最近的、已过观察期的那一版」——插件页因此可能提示「本次安装的是 x.y.z,而非最新版本 a.b.c」;**写精确版本号**(如 `@gehennawu/dsh-service@2.0.9`)才会安装你点名的那一版。观察期属供应链安全策略,不代表新版有问题;不着急时等满 24 小时,不带版本号安装同样会装到新版。
|
|
334
|
+
|
|
325
335
|
### 方式二:命令行
|
|
326
336
|
|
|
327
337
|
| 方式 | 命令 |
|
|
328
338
|
| --- | --- |
|
|
329
|
-
| npm(推荐) | `dsh plugin --profile web add @gehennawu/dsh-service` |
|
|
339
|
+
| npm(推荐) | `dsh plugin --profile web add @gehennawu/dsh-service@2.0.9` |
|
|
330
340
|
| GitHub | `dsh plugin --profile web add github:gehennawu/dsh-service` |
|
|
331
341
|
| 本地开发 | `dsh plugin --profile web add link:/path/to/dsh-service` |
|
|
332
342
|
|
|
333
|
-
命令行走 npm / pnpm 的默认源;需要镜像时,请先按 npm / pnpm 的常规做法把 registry 指到镜像站,再执行上面的命令。
|
|
343
|
+
命令行走 npm / pnpm 的默认源;需要镜像时,请先按 npm / pnpm 的常规做法把 registry 指到镜像站,再执行上面的命令。npm 方式同样受 pnpm 发布观察期影响:不带版本号会装到最近的、已过观察期的版本,写精确版本号(`@gehennawu/dsh-service@2.0.9`)才会装该版(原因见「方式一」的提示)。
|
|
334
344
|
|
|
335
345
|
安装或更新后重启 DSH Web:
|
|
336
346
|
|
|
@@ -382,11 +392,10 @@ pm2 start "dsh web --host 127.0.0.1" --name dsh-web
|
|
|
382
392
|
|
|
383
393
|
运行要求:Node.js `>=22`,DSH Web 能加载 Host 与 Client 两半插件。更新检查需访问 `registry.npmjs.org`;网络失败不影响其他功能。
|
|
384
394
|
|
|
385
|
-
**DSH
|
|
395
|
+
**DSH 兼容范围**:`>=0.1.1-rc.2 <0.2.1-alpha.4`,已适配 `0.2.1-alpha.3`。新版会话格式不能由旧版 DSH 读取,**备份不可跨版本降级恢复**。
|
|
386
396
|
|
|
387
|
-
**DSH 0.2.1-alpha.2 补充适配**:支持范围扩展至 `0.2.1-alpha.2`(`engines.dsh`:`>=0.1.1-rc.2 <0.2.1-alpha.3`)。子代理启动同时兼容新版 `startActivation(spec)` 与老版 `start` / `startContinuable`;移动端任务芯片兼容官方移除 `.QsffPG_root`、任务菜单改用 body portal 定位。已在 alpha.2 当前 Web 宿主验证插件 RPC、子代理路由 `available:true`、真实 `subagent` 和 `subagent_fork` 派生及各自的路由派发记录,旧版和新版接口单测均通过。移动端在 alpha.2 真实有后台任务的会话上验证 320/360/390/560px 泊位几何、561px 在流回退及 390px portaled 菜单两次开合无越屏;320px 下任务计数文字完全省略但图标/箭头及完整 `aria-label` 保留。**老宿主真机 UI 对照与不同标签数尚未实测**。
|
|
388
397
|
|
|
389
|
-
**DSH
|
|
398
|
+
**DSH Desktop**:重启与恢复后的重启改为提示退出应用后重新打开;一键升级使用桌面应用自带的插件管理页。通知需授予系统权限,点击通知可能无法唤回隐藏窗口,请用托盘打开。其他平台尽力而为,不承诺兼容。
|
|
390
399
|
|
|
391
400
|
## 🔒 安全设计
|
|
392
401
|
|
|
@@ -473,6 +482,12 @@ Step Plan 订阅没有 API-key 形态的查询接口,需要网页登录态令
|
|
|
473
482
|
并发保护生效:SKILL.md 刚被外部编辑器改动(版本比对失败)。点击「刷新」获取最新状态后重试即可。
|
|
474
483
|
</details>
|
|
475
484
|
|
|
485
|
+
<details>
|
|
486
|
+
<summary><strong>插件管理页装了插件,版本却停在旧版?</strong></summary>
|
|
487
|
+
|
|
488
|
+
pnpm 11 默认启用供应链发布观察期(`minimumReleaseAge`,1440 分钟):安装时**不带版本号**(含 `@latest`)只会选「发布时间已满观察期的最新版」,刚发布的新版会被跳过,官方插件页会提示「本次安装的是 x.y.z,而非最新版本 a.b.c」。要立刻装上新版:在插件管理页卸载后按 `包名@版本号` 重装(例如 `@gehennawu/dsh-service@2.0.9`),或直接用本插件的「**服务控制 → 一键升级**」——它按精确版本安装,不受观察期影响。观察期属供应链安全策略(新发布版本可能含尚未被发现的缺陷),等满 24 小时后不带版本号安装也会自然装到新版。
|
|
489
|
+
</details>
|
|
490
|
+
|
|
476
491
|
<details>
|
|
477
492
|
<summary><strong>更新检查失败会影响其他功能吗?</strong></summary>
|
|
478
493
|
|