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

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

|
|
168
167
|
|
|
169
168
|
- 按 **自动加载 / 仅手动调用 / 完全停用** 三区展示本地技能;同名遮蔽与被遮蔽副本均有标注,内置目录只读
|
|
170
|
-
- 条目默认全部折叠成一行(名称 + 来源/只读/已注释徽标);顶部按钮对当前可见条目一键「全部展开 / 全部折叠」,点单条名称行可独立开合;无效条目的 ⚠ 与一键修复折叠态也保留
|
|
171
169
|
- 双开关直接改写 SKILL.md frontmatter(`disable-model-invocation` / `user-invocable`),约 200ms 热生效
|
|
172
170
|
- 带 camelCase 旧版键的条目会被官方解析器剔除:⚠ 提示 + 一键修复
|
|
173
171
|
- ✨ AI 补全说明:选模型生成描述草稿(跟随界面语言),确认后存入插件侧车索引——**绝不改写 SKILL.md**;支持一键批量补全(宿主后台运行、可取消)。已注释技能会在计划中单列,经「确认强制补全」二次确认后才会被覆盖(不再是一旦注释就永远无法再次补全);补全日志时间按本机时区显示
|
|
174
172
|
|
|
175
173
|
### 模型配置
|
|
176
174
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
-
|
|
192
|
-
- **删除保留凭据并可恢复**:删除渠道只移除 settings 中的路由,凭据引用保留(不影响共享同一凭据的其它渠道);删除前整份渠道配置进快照,**恢复入口常驻列表底部**,不随渠道行消失。恢复写回引用,但**不恢复旧密钥值**
|
|
193
|
-
- **思考配置与调用选择不同**:档位复选框声明可选等级,不代表每次调用选中该等级;全部未配置时继承已有值或由接口默认行为决定,不等于关闭思考。智能填充保留资料中明确声明的 wire 映射;手动勾选非 off 档位暂以英文档位名作为参数值,适用性需自行核对。至少一个非 off 映射才能保存
|
|
194
|
-
- **草稿留在当前页**:保存失败或并发冲突不清空草稿,冲突后对照最新值重新确认;有未保存编辑时离开先提醒;不跨刷新持久化草稿(避免密钥进浏览器存储)
|
|
195
|
-
- **内置与自定义目录分开处理**:内置渠道显示解析后的协议,可追加目录外模型并编辑当前 Profile 的模型条目;目录提供的默认值作为继承展示,未改动字段不整份复制写死。已有未知覆盖和高级字段保留,不冻结整张动态目录
|
|
196
|
-
- **首页零外网**:总览只读当前 Profile、pi-ai 目录、运行时提供方和侧车,分别显示保存 / 加载 / 基础调用状态;进入列表不会查询外部资料
|
|
197
|
-
- **单模型智能填充**:每次进详情默认 OFF;ON 自动查询本机 pi-ai 索引和固定 modelparams.dev / OpenRouter 资料,**不探测渠道、不发推理、不自动保存**。**本轮是「模型 ID 维度」的填充:不绑定当前渠道或协议来源**,界面没有来源选择与绑定交互(候选只作依据,不写进配置)
|
|
198
|
-
- **建议按参数分开展示**:显示名、上下文容量、最大输出、输入模态与思考等级分别展示;模态按集合比较,顺序不同不算差异。多来源候选按稳定顺序选取建议,思考等级优先采用有明确映射的资料,不以当前渠道筛选;没有映射不猜测具体档位。modelparams 的请求范围上限不当模型最大输出;资料只是参考,不代表接口能力实测
|
|
199
|
-
- **统一确认填入**:「一键填入」弹层先列出将覆盖哪些字段的草稿值,确认后**只更新草稿**,不写配置,仍需点保存;不再提供来源绑定或逐项 ✓ / ✕。开关悬停说明资料来源与操作边界
|
|
200
|
-
- **思考等级两条提示分开**:模型资料声明「支持思考」但拿不到具体等级建议时提示「支持思考但未获取到等级建议值,默认行为要看该接口」;完全没有思考资料时提示「未获取到思考等级建议值,请手填」。**资料缺席 ≠ 不支持**,`reasoningEfforts: false` 才是明确声明不支持
|
|
201
|
-
- **档位徽标用英文等级名**:当前与建议档位以 `minimal / low / medium / high / xhigh / max` 徽标展示(不随界面语言翻译;`models.smart.effort.*` 的中文词典另有保留但未用于这里),「当前等级 / 建议等级」的标签本身仍跟随界面语言
|
|
202
|
-
- **先快照再写入**:普通保存一次点击,删除 / 换密钥 / 恢复先展示后果再确认;写前快照落盘失败则不写配置。新建、编辑与恢复均捕获 owner / 完整指纹 / revision,拒绝并发覆盖,后续外部修改阻止撤销。普通快照不含敏感 headers;含敏感值且无法完整恢复的删除直接拒绝
|
|
203
|
-
- **联网查证**:按模型 ID 查 OpenRouter 模型档案(固定域名、不跟随重定向),结果只作参考展示,不改配置
|
|
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
|
+
- **草稿与并发保护**:保存失败保留草稿,离开未保存编辑前提醒;配置发生外部变动时拒绝覆盖,重新核对后再保存。草稿不跨刷新保存。
|
|
204
190
|
|
|
205
191
|
#### URL 与密钥安全机制
|
|
206
192
|
|
|
207
|
-
-
|
|
208
|
-
-
|
|
209
|
-
-
|
|
210
|
-
- **短命宿主句柄**:编辑基线、删除、恢复与凭据后果由 `sessionId` / `planId` 绑定,提交复核完整基线与 revision;未知、过期或重放句柄拒绝。手动参数通过闭集 schema 验证
|
|
211
|
-
- **结构性写保护**:写入走 `settings.mutate(entryId, ops, expectedRevision)`,新版 entryId 由当前 pi-ai owner 解析,旧版才用 `llm-pi-ai`;官方完整校验、原子落盘与热生效,绝不手写真实配置 YAML
|
|
212
|
-
- **仅 loopback**:全部端点经 `/dsh-service` 单层 channel 暴露,authority 一律 `loopback`
|
|
193
|
+
- 旧宿主缺少可追踪配置 revision 时仅可查看,写操作明确拒绝;配置写入经过 DSH 官方校验与原子保存。
|
|
194
|
+
- 输入或保存地址不会自动出网;在线获取只使用当前 Profile 已保存地址,要求公网 HTTPS、443 端口,拒绝私网、IP 字面量与重定向,并限制超时和响应大小。本地 / HTTP 渠道仍可保存并手填模型。
|
|
195
|
+
- 密钥只经 loopback 保存到 DSH 凭据库,不回显、不写入日志或快照,只发往对应渠道,绝不发往资料站。
|
|
213
196
|
|
|
214
197
|
### 子代理模型
|
|
215
198
|
|
|
216
199
|

|
|
217
200
|
|
|
218
|
-
- 三种模式:**初始**(不干预)/
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
-
|
|
223
|
-
-
|
|
224
|
-
-
|
|
225
|
-
-
|
|
226
|
-
- **对话页可见性**:输入框下方常驻一行本会话子代理实际使用的模型,如 `子代理:cpa/gpt-5.6-luna (xhigh) · opencode-go/deepseek-v4-flash (max)`——含回退命中、显式路由与继承来源,可直接核对自定义路由是否生效。行挂官方 `conversation.composer.dock` 槽位,独占官方统计行的下一行、不与统计胶囊/上下文圆环同行挤占;20s 刷新,不依赖回合数据(会话发生 compaction 折叠工具调用也照常显示),由宿主派发记录兜底,任何视图都能看到;可在 模型配置 → 子代理路由 页用独立开关关闭。记录存宿主内存(页面刷新不丢、进程重启即清),官方「指派子代理模型」开关关闭与否都不影响本功能
|
|
227
|
-
- 配置存 `$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`,可一键重置。
|
|
228
209
|
|
|
229
210
|
### 任务通知
|
|
230
211
|
|
|
@@ -239,49 +220,36 @@ DSH Web 服务控制与运维插件:安全重启、版本管理与一键升级
|
|
|
239
220
|
|
|
240
221
|

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

|
|
254
236
|
|
|
255
|
-
-
|
|
256
|
-
-
|
|
257
|
-
-
|
|
258
|
-
-
|
|
259
|
-
-
|
|
260
|
-
-
|
|
261
|
-
- Agent Team 弹窗手机端不越屏(<1024px):官方 Agent Team 面板自带左锚(`left:0`),挂在头部右侧动作槽上会整体右移出屏(实测 320~1023px 越出 112~352px)。移动端把会话头部设为定位上下文、面板改**右锚 16px** 并按 `100vw − 32px` 封顶,两缘各留 16px;桌面 ≥1024px 官方几何逐字不变
|
|
262
|
-
- 滑动沉浸:会话内下滑自动收起头部、左上角抽屉图标与输入框全屏阅读(左上角抽屉图标与右上角右侧栏展开按钮同步上滑淡出,收起时让出输入框占位,正文真正铺满整屏;回显时若仍停在会话末尾会自动对齐到底),上滑 / 点「回到底部」浮钮 / 聚焦输入框即恢复(无额外悬浮钮);已经停在会话末尾时往回一点即回显(不再等满阈值),点回底后停留位置会补一次贴底对齐;流式贴底、锚点跳转等程序化滚动绝不误触发
|
|
263
|
-
- 滑动开合抽屉:双抽屉关闭时,横移主导的右滑任意位置打开侧栏抽屉、左滑任意位置打开官方右侧栏(DSH 0.1.5+,未就绪时该方向无效);开启后反向横滑任意位置关闭;从屏幕边缘起滑额外享有浏览器手势接管的补完加成,编辑器等真横滚区内的滑动不误触发
|
|
264
|
-
- 「回到底部」浮钮右移贴边(不再空出大片右侧留白);其上方新增同款圆形上箭头(全平台生效,不含移动端),点击逐条跳转上一条用户回复、可连续向上回溯,目标在未加载历史时会自动点「加载更早」补齐,跳到最顶部后按钮自动隐藏、下滑即复现
|
|
265
|
-
- 大 JSON 响应透明压缩(≥4KB 按 `Accept-Encoding` 自动 gzip/brotli),长会话历史首屏提速
|
|
266
|
-
- 自动补 `viewport-fit=cover` 避让刘海、禁双击缩放、输入框 ≥16px 防 iOS 聚焦放大
|
|
267
|
-
- `?dshsvc-mobile-debug=1` 显示浮动诊断条(仅调试)
|
|
237
|
+
- 默认关闭;开启后仅在视口 <1024px 生效,桌面不受影响。
|
|
238
|
+
- 支持侧栏抽屉、窄屏设置导航和全屏面板,适配模型选择、会话任务菜单与 Agent Team 弹窗。
|
|
239
|
+
- **滑动沉浸阅读**:下滑收起头部和输入框,上滑、回到底部或聚焦输入框恢复;流式更新不会误触发。
|
|
240
|
+
- **抽屉手势**:右滑打开侧栏,左滑打开右侧栏,反向滑动关闭;编辑器横向滚动不误触发。
|
|
241
|
+
- 上箭头可逐条跳到上一条用户消息,未加载历史时自动补齐。
|
|
242
|
+
- 长会话 JSON 响应自动压缩,并处理安全区与手机输入框聚焦缩放。
|
|
268
243
|
|
|
269
244
|
### 模型厂家图标
|
|
270
245
|
|
|
271
|
-
-
|
|
272
|
-
-
|
|
273
|
-
-
|
|
274
|
-
-
|
|
275
|
-
-
|
|
276
|
-
-
|
|
277
|
-
-
|
|
278
|
-
- **模型选择弹窗的分组标题同样带图标**:点开模型按钮 → 「模型」二级列表后,每个**厂家/渠道商分组名前面**也显示同一枚图标(13px,与 12px 的分组标题同量级)。同一套解析与兜底规则,未识别的渠道分组保持官方标题原样、不加图标
|
|
279
|
-
- **浅色 / 深色都清晰**:品牌色对浅底与深底**两侧**对比度都达标才保留原色,否则自动改用跟随主题文字色的单色版——不会出现深色模式下「黑图标糊在黑底上」或浅色模式下近乎隐形
|
|
280
|
-
- **零运行期网络请求**:图标在构建期内联进客户端产物,离线可用、不影响 CSP,也不向第三方暴露你的渠道名称
|
|
281
|
-
- 图标尺寸与输入框旁的**额度圆环**一致(生成期把每个图标的 viewBox 收紧到真实绘制范围并正方形化,所以各品牌「看起来一样大」,不会有的满格有的缩成一团)
|
|
282
|
-
- 开关在 插件 → 插件配置 → 交互(默认开,热生效)
|
|
283
|
-
- 图标来自 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 下糊成一团)。**品牌图形版权归各厂商**,正式对外使用前请查阅对应厂商的品牌条款
|
|
284
|
-
- **全部图标可在一页里查看**:[图标目录](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)。
|
|
285
253
|
|
|
286
254
|
### 右栏文件编辑
|
|
287
255
|
|
|
@@ -351,7 +319,7 @@ flowchart TB
|
|
|
351
319
|
1. 打开左侧边栏的「**插件**」页。
|
|
352
320
|
2. 点右上角的「**+ 添加插件**」按钮。
|
|
353
321
|
3. 在弹窗里按来源**三选一**填写(同一个输入框接受三种形式,底部提示会随填写内容变化):
|
|
354
|
-
- **npm 包名(推荐)**:`@gehennawu/dsh-service@2.0.
|
|
322
|
+
- **npm 包名(推荐)**:`@gehennawu/dsh-service@2.0.10`——**带上精确版本号**(写法 `包名@版本号`);
|
|
355
323
|
- **GitHub 仓库地址**:`https://github.com/gehennawu/dsh-service`(公开仓库,无需令牌;`github:gehennawu/dsh-service` 简写同样可用);
|
|
356
324
|
- **本地插件目录**:本机上的绝对路径,例如 `/path/to/dsh-service`(自研或已下载的插件)。
|
|
357
325
|
4. 「**安装源**」按网络情况选择:默认「**npm 官方源**」;国内网络拉取受限时可选「**中国大陆镜像源**」(影响走包名安装时的拉取源,GitHub 地址与本地目录不受其影响)。
|
|
@@ -362,17 +330,17 @@ flowchart TB
|
|
|
362
330
|
|
|
363
331
|
> 提示:三种形式都走官方安装链路,无需手动改 profile 文件;图形界面填 GitHub 地址与命令行 `github:` 前缀等价。
|
|
364
332
|
|
|
365
|
-
> **npm 方式为什么建议带版本号**:pnpm 11 默认启用供应链发布观察期(`minimumReleaseAge`,1440 分钟)。**不带版本号**(含 `@latest`)时,发布时间未满观察期的版本不会被自动安装,包管理器会退到「最近的、已过观察期的那一版」——插件页因此可能提示「本次安装的是 x.y.z,而非最新版本 a.b.c」;**写精确版本号**(如 `@gehennawu/dsh-service@2.0.
|
|
333
|
+
> **npm 方式为什么建议带版本号**:pnpm 11 默认启用供应链发布观察期(`minimumReleaseAge`,1440 分钟)。**不带版本号**(含 `@latest`)时,发布时间未满观察期的版本不会被自动安装,包管理器会退到「最近的、已过观察期的那一版」——插件页因此可能提示「本次安装的是 x.y.z,而非最新版本 a.b.c」;**写精确版本号**(如 `@gehennawu/dsh-service@2.0.10`)才会安装你点名的那一版。观察期属供应链安全策略,不代表新版有问题;不着急时等满 24 小时,不带版本号安装同样会装到新版。
|
|
366
334
|
|
|
367
335
|
### 方式二:命令行
|
|
368
336
|
|
|
369
337
|
| 方式 | 命令 |
|
|
370
338
|
| --- | --- |
|
|
371
|
-
| npm(推荐) | `dsh plugin --profile web add @gehennawu/dsh-service@2.0.
|
|
339
|
+
| npm(推荐) | `dsh plugin --profile web add @gehennawu/dsh-service@2.0.10` |
|
|
372
340
|
| GitHub | `dsh plugin --profile web add github:gehennawu/dsh-service` |
|
|
373
341
|
| 本地开发 | `dsh plugin --profile web add link:/path/to/dsh-service` |
|
|
374
342
|
|
|
375
|
-
命令行走 npm / pnpm 的默认源;需要镜像时,请先按 npm / pnpm 的常规做法把 registry 指到镜像站,再执行上面的命令。npm 方式同样受 pnpm 发布观察期影响:不带版本号会装到最近的、已过观察期的版本,写精确版本号(`@gehennawu/dsh-service@2.0.
|
|
343
|
+
命令行走 npm / pnpm 的默认源;需要镜像时,请先按 npm / pnpm 的常规做法把 registry 指到镜像站,再执行上面的命令。npm 方式同样受 pnpm 发布观察期影响:不带版本号会装到最近的、已过观察期的版本,写精确版本号(`@gehennawu/dsh-service@2.0.10`)才会装该版(原因见「方式一」的提示)。
|
|
376
344
|
|
|
377
345
|
安装或更新后重启 DSH Web:
|
|
378
346
|
|
|
@@ -424,11 +392,10 @@ pm2 start "dsh web --host 127.0.0.1" --name dsh-web
|
|
|
424
392
|
|
|
425
393
|
运行要求:Node.js `>=22`,DSH Web 能加载 Host 与 Client 两半插件。更新检查需访问 `registry.npmjs.org`;网络失败不影响其他功能。
|
|
426
394
|
|
|
427
|
-
**DSH
|
|
395
|
+
**DSH 兼容范围**:`>=0.1.1-rc.2`(**无上界**),已验证至 `0.2.1-alpha.4`。不设上界的理由:`0.2.1-alpha.4` 起宿主门禁改为「插件声明了 `engines.dsh` 就由它单独裁决」,一旦上界写死,每次 DSH 发新版都会把插件整包挡掉(**且插件的一键升级会被同一门禁挡死,无法自救**);改用开区间后新版本插件照常加载,个别新功能可能尚未适配,但不阻断使用,也无需为 `engines.dsh` 单独发版。新版会话格式不能由旧版 DSH 读取,**备份不可跨版本降级恢复**。
|
|
428
396
|
|
|
429
|
-
**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 对照与不同标签数尚未实测**。
|
|
430
397
|
|
|
431
|
-
**DSH
|
|
398
|
+
**DSH Desktop**:重启与恢复后的重启改为提示退出应用后重新打开;一键升级使用桌面应用自带的插件管理页。通知需授予系统权限,点击通知可能无法唤回隐藏窗口,请用托盘打开。其他平台尽力而为,不承诺兼容。
|
|
432
399
|
|
|
433
400
|
## 🔒 安全设计
|
|
434
401
|
|
|
@@ -518,7 +485,7 @@ Step Plan 订阅没有 API-key 形态的查询接口,需要网页登录态令
|
|
|
518
485
|
<details>
|
|
519
486
|
<summary><strong>插件管理页装了插件,版本却停在旧版?</strong></summary>
|
|
520
487
|
|
|
521
|
-
pnpm 11 默认启用供应链发布观察期(`minimumReleaseAge`,1440 分钟):安装时**不带版本号**(含 `@latest`)只会选「发布时间已满观察期的最新版」,刚发布的新版会被跳过,官方插件页会提示「本次安装的是 x.y.z,而非最新版本 a.b.c」。要立刻装上新版:在插件管理页卸载后按 `包名@版本号` 重装(例如 `@gehennawu/dsh-service@2.0.
|
|
488
|
+
pnpm 11 默认启用供应链发布观察期(`minimumReleaseAge`,1440 分钟):安装时**不带版本号**(含 `@latest`)只会选「发布时间已满观察期的最新版」,刚发布的新版会被跳过,官方插件页会提示「本次安装的是 x.y.z,而非最新版本 a.b.c」。要立刻装上新版:在插件管理页卸载后按 `包名@版本号` 重装(例如 `@gehennawu/dsh-service@2.0.10`),或直接用本插件的「**服务控制 → 一键升级**」——它按精确版本安装,不受观察期影响。观察期属供应链安全策略(新发布版本可能含尚未被发现的缺陷),等满 24 小时后不带版本号安装也会自然装到新版。
|
|
522
489
|
</details>
|
|
523
490
|
|
|
524
491
|
<details>
|