dsh-dock 0.12.0 → 0.14.0
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 +72 -8
- package/client.js +1523 -486
- package/features/animation/view.jsx +2 -2
- package/features/balance/view.js +1 -1
- package/features/games/view.jsx +1 -1
- package/features/mobile/host.js +320 -0
- package/features/mobile/view.js +527 -0
- package/features/mobile-relay/gateway.js +187 -11
- package/features/mobile-relay/host.js +58 -173
- package/features/mobile-relay/view.jsx +19 -209
- package/features/modelconfig/host.js +195 -1
- package/features/modelconfig/view.js +762 -92
- package/features/notify/view.jsx +2 -2
- package/features/runstate/view.jsx +2 -2
- package/features/tokenlog/view.jsx +2 -2
- package/index.js +20 -2
- package/package.json +9 -3
- package/screenshots/dock-modelconfig-provider-create.png +0 -0
- package/screenshots/dock-modelconfig-provider-edit.png +0 -0
- package/screenshots/dock-modelconfig-providers.png +0 -0
- package/screenshots/dock-modelconfig.png +0 -0
- package/src/client.jsx +3 -2
- package/src/host-core.js +129 -0
- package/src/shared.js +6 -3
- package/src/welcome-ack.js +69 -0
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
| 功能 | 说明 |
|
|
18
18
|
|---|---|
|
|
19
19
|
| **用量记录** | 记录全部 LLM API 调用:秒级时间筛选、Token/费用统计(**可配置各模型单价、持久保存并按自填单价计费**,支持多段分时价与周末/节假日谷价,内置峰谷计价 + 官网价目自动同步作兜底)、分组汇总、明细检索与 CSV 导出 |
|
|
20
|
-
| **模型设置** | 编辑各 Provider 模型目录:输入类型(文本/图片 +
|
|
20
|
+
| **模型设置** | 编辑各 Provider 模型目录:输入类型(文本/图片 + 标注)与思考强度档位;自定义 Provider 的增删改在「模型提供商」子页面(排版同官方模型管理),图片能力可由你手动声明,新增 Provider 自动刷新加载,写回官方配置热生效 |
|
|
21
21
|
| **模型余额** | 展示所有模型 Provider 账户余额(5 分钟自动刷新) |
|
|
22
22
|
| **任务动画** | 19 种任务运行动画(含星际远征、星云潮汐、曲速航道、量子雷达、星座网络、深海脉动、神经电路等),速度随任务活动联动,配置全部持久化 |
|
|
23
23
|
| **任务通知** | 任务完成 / 异常 / 需确认通知:页内卡片、6 种提示音、浏览器系统通知、钉钉/飞书群机器人推送(宿主直发,浏览器关着也能推);与动画互相独立、各自启停 |
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
|
|
26
26
|
| **趣味游戏** | 任务等待时消磨时间的十款小游戏(五子棋、中国象棋、俄罗斯方块、推箱子、贪吃蛇、打砖块、极速赛车、坦克大战、星际躲避、反应堆解谜);浮动窗口可拖动/缩放/最小化,不遮挡会话,靠屏幕侧边隐藏 |
|
|
27
27
|
| **图片理解代理** | 图片识别等(visionproxy);原图候选默认折叠展示,图片能力以你的声明为准 |
|
|
28
|
-
| **远程访问** | 账号密码登录的远程入口:网关监听 `0.0.0.0` 独立端口,手机/平板/局域网设备访问同一实例,会话与任务进度实时一致;主实例保持仅监听 `127.0.0.1
|
|
28
|
+
| **远程访问** | 账号密码登录的远程入口:网关监听 `0.0.0.0` 独立端口,手机/平板/局域网设备访问同一实例,会话与任务进度实时一致;主实例保持仅监听 `127.0.0.1`,结构上不存在绕开登录的直连路径;LAN 非安全上下文自动补 crypto.randomUUID。手机端排版不在此列——统一归「手机适配」。 |
|
|
29
|
+
| **手机适配** | 手机/窄屏排版与触控兜底:输入类控件 16px 防 iOS 聚焦缩放、纯图标按钮触控面积兜底 ≥36px、代码块横向滚动、viewport-fit=cover 安全区、滚动体 touch-action:pan-y + iOS 惯性滚动、设置弹层 min-height:0 滚动兜底;手机端 chrome 含底部 Tab 栏(会话/插件/设置,等待确认角标红色脉冲)+ 侧栏抽屉遮罩 + 软键盘让位 + 设置弹层纵排(宿主经 tapIndex 注入,客户端自建同款互斥) |
|
|
29
30
|
| **心跳监视 / 主题信息** | 示例功能(纯 Client) |
|
|
30
31
|
|
|
31
32
|
**会话区随身小控件**:启用后,在会话输入区工具行(模型选择器左侧)显示——
|
|
@@ -47,23 +48,59 @@
|
|
|
47
48
|
|
|
48
49
|
## 安装
|
|
49
50
|
|
|
50
|
-
dsh-dock 是 DeepSeek Harness(dsh
|
|
51
|
+
dsh-dock 是 DeepSeek Harness(dsh)的插件,装进 dsh 的 `web` profile(dsh 把插件当作 profile 的一层
|
|
52
|
+
bundle 层,由 `dsh plugin` 管理)。两种方式,选一个即可。
|
|
53
|
+
|
|
54
|
+
### 方式一:npm 安装
|
|
51
55
|
|
|
52
56
|
```bash
|
|
53
|
-
# 安装 npm 版
|
|
54
57
|
dsh plugin --profile web add dsh-dock
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 方式二:从源码安装(本地检出 + `link:`)
|
|
61
|
+
|
|
62
|
+
适合要用最新提交、或自己改代码(改完刷新就能看到)的场景。
|
|
63
|
+
|
|
64
|
+
> **关键点**:dsh 的 `link:` 安装**不会替插件安装依赖**(pnpm 对 `link:` 包不装 deps),而本插件宿主
|
|
65
|
+
> 半部运行时要 import `js-yaml`、`qrcode`;Node 又按符号链接的真实路径解析——两者叠加,必须先在
|
|
66
|
+
> 源码树里备好 `<repo>/node_modules`,否则插件一加载就 `MODULE_NOT_FOUND`。
|
|
67
|
+
> (`@deepseek-ai/*` 由 dsh 运行时从自身安装闭包统一解析——插件源码树里有没有那份都不影响运行。)
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# 1) 克隆(发版库在 GitHub;内网开发库地址见 docs/workflow.md §1)
|
|
71
|
+
git clone https://github.com/wycto/dsh-dock.git
|
|
72
|
+
cd dsh-dock
|
|
73
|
+
|
|
74
|
+
# 2) 在源码树里装运行期依赖(这步不能省,见上面关键点)
|
|
75
|
+
npm install
|
|
76
|
+
|
|
77
|
+
# 3) 以 link: 装进 web profile。本地路径必须是绝对路径;dsh 会同时把 dsh-dock
|
|
78
|
+
# 写进 profile 的 dsh.profile.bundles(等价写法:直接给绝对路径,不带 link:)
|
|
79
|
+
dsh plugin --profile web add "link:$PWD"
|
|
55
80
|
|
|
56
|
-
#
|
|
57
|
-
dsh
|
|
81
|
+
# 4) 重启 dsh web 生效
|
|
82
|
+
dsh web
|
|
58
83
|
```
|
|
59
84
|
|
|
60
|
-
|
|
85
|
+
> 同一 profile 里同名包只能有一个:如果之前装过 npm 版 dsh-dock,先
|
|
86
|
+
> `dsh plugin --profile web remove dsh-dock` 再执行第 3 步(见下方「换回 npm 版」的反向操作)。
|
|
87
|
+
|
|
88
|
+
验证 / 卸载 / 换回 npm 版:
|
|
61
89
|
|
|
62
90
|
```bash
|
|
63
91
|
dsh web --dump-config # 查看合成配置(确认 dsh-dock 已加载)
|
|
64
92
|
dsh plugin --profile web remove dsh-dock # 卸载
|
|
93
|
+
dsh plugin --profile web add dsh-dock # 换回 npm 版
|
|
65
94
|
```
|
|
66
95
|
|
|
96
|
+
源码安装后的维护:
|
|
97
|
+
|
|
98
|
+
- **更新代码**:仓库里 `git pull` 即可;`client.js` 是随仓库提交的构建产物,会跟着一起更新。
|
|
99
|
+
- **改了客户端源码**(`src/`、`features/*/view.jsx`):`npm run build:client` 重建 `client.js`,再刷新页面。
|
|
100
|
+
- **改了宿主半部**(`index.js`、`src/host-core.js`、`features/*/host.js`):重启 `dsh web` 才生效。
|
|
101
|
+
- **想「改代码即刷新」的开发机流程**(`.devdeps` 依赖 + 宿主/客户端双 HMR + 自动重建),见
|
|
102
|
+
[`docs/workflow.md`](docs/workflow.md) §4b。
|
|
103
|
+
|
|
67
104
|
也可以手动在 `cordis.patch.yml` 中声明插件后重启 dsh。
|
|
68
105
|
|
|
69
106
|
要求:DeepSeek Harness 环境(dsh),Node.js 18+。
|
|
@@ -170,12 +207,29 @@ dsh plugin --profile web remove dsh-dock # 卸载
|
|
|
170
207
|
|
|
171
208
|
**模型设置**
|
|
172
209
|
|
|
173
|
-

|
|
174
211
|
|
|
175
212
|
1. 打开功能坞 → 模型设置
|
|
176
213
|
2. 编辑各 Provider 的模型目录:输入类型(文本 / 图片)、思考强度档位;新建 Provider 后进入页面会自动重读目录,顶部和底部都可手动刷新
|
|
177
214
|
3. 是否可直接识图以你勾选的「图片」能力为准;运行时候选仅作辅助提示
|
|
178
215
|
4. 保存后写回官方配置,即时生效(无需重启)
|
|
216
|
+
5. **模型提供商**:主页「模型提供商」卡片点右侧「管理」进入子页面(见下)
|
|
217
|
+
|
|
218
|
+
**模型提供商(模型设置的子页面)**
|
|
219
|
+
|
|
220
|
+
主页不再挤着长长的 Provider 列表——「模型提供商」是一张入口卡(自定义路由数 + 密钥状态圆点 + 「管理」),点进去的子页面排版与官方「设置 → 模型」一致:
|
|
221
|
+
|
|
222
|
+

|
|
223
|
+
|
|
224
|
+

|
|
225
|
+
|
|
226
|
+

|
|
227
|
+
|
|
228
|
+
- **新增 / 编辑 / 删除**自定义模型 Provider(OpenAI 兼容、Anthropic Messages 等),写入官方配置并热生效;内置 DeepSeek 官方 Provider 在该页只读,其模型目录仍在主页编辑
|
|
229
|
+
- **API Key** 存本机凭据库(文件仅 root 可读),输入框永不回显;留空则不改动已存密钥
|
|
230
|
+
- **获取模型列表**:宿主代打 `GET {baseURL}/models`,结果按可勾选清单展示(全选 / 清空 / 已选计数),勾上哪个加哪个
|
|
231
|
+
- 删除仍是两段式确认(点一次变「确认删除?」,再点才真删);编辑/新增卡片都是行内展开,返回主页即卸载、草稿不留后台
|
|
232
|
+
- 深链 `params.page === "providers"` 或 `params.openProviderForm`(后者直接展开新增表单)可直达该页
|
|
179
233
|
|
|
180
234
|
**图片理解代理(visionproxy)**
|
|
181
235
|
- 用于图片内容识别等场景。原图直发候选默认折叠,模型设置中勾选「图片」输入类型的模型即可走该通道;请按实际 Provider 能力选择,端点不支持时取消该标记即可恢复代理识别。
|
|
@@ -186,8 +240,18 @@ dsh plugin --profile web remove dsh-dock # 卸载
|
|
|
186
240
|
|
|
187
241
|
1. **账号密码登录网关(唯一远程入口)**:在功能坞「远程访问」页设置账号密码并点开启,网关监听 `0.0.0.0` 的独立端口(默认**主端口+1**,如 3080 → 3081,可改)。所有设备(电脑/手机/平板)访问 `http://<电脑IP>:<网关端口>`,未登录自动跳转登录页,登录后进入的是**同一个 DSH 进程**——历史会话、工作区(含浏览式选目录)、正在进行的任务进度、设置实时一致;登录会话 Cookie 7 天滑动过期,点「退出登录」随时注销。网关与主服务是同一台机器上的两个监听,不能共用一个端口。工作区目录选择钉为浏览器浏览模式(远程设备不能弹本机对话框);远程页面的兼容兜底(`crypto.randomUUID`)由网关注入。
|
|
188
242
|
- 密码只存加盐哈希;登录失败按来源 IP 限速(10 分钟 10 次);修改密码后所有设备立即下线;关闭远程访问即停止网关并注销所有会话。
|
|
243
|
+
- **重启自动拉起**:开启状态与端口会被记住,重启 `dsh web` 后插件加载时网关按上次端口自动重新监听,不必进面板再点一次;账号密码同样保持。历史升级中若账号等配置滞留在 `~/.dsh/settings.yaml.imported`(dsh 升级改名旧配置时官方导入 dsh-dock 段失败),下次启动会一次性自动恢复——现网已有改动的段不会被覆盖。
|
|
189
244
|
- **异地组网**:Tailscale/ZeroTier 等虚拟组网内直接用组网 IP 访问同一入口,效果与局域网相同。
|
|
190
245
|
- 旧版「服务器模式(0.0.0.0)」与「扫码令牌接力」已被此方案取代:前者把无认证的 DSH 裸露给局域网,后者双实例任务状态不同步。开启远程访问时会自动清理旧的 0.0.0.0 webserver 补丁行(提示重启后回到仅本机)。
|
|
246
|
+
2. **手机端接力体验(窄屏自动生效;由「手机适配」提供)**:
|
|
247
|
+
- **底部 Tab 栏**:会话(拉出会话抽屉)/ **插件** / 设置。任务状态以角标显示在「插件」页签上:有任务进行中显示蓝色数量;**任务等待你确认工具调用时角标变红并脉冲**——公司电脑上跑着的任务停住等人,手机上一眼可见;此时点「插件」直达「运行状态」页处理,没有任务时进插件面板首页。
|
|
248
|
+
- **PWA 添加到主屏幕**:网关自带 manifest 与图标(品牌渐变 + 白色气泡,零依赖生成),手机浏览器「添加到主屏幕」后像 App 一样全屏打开,无地址栏;未登录也能先装,打开后自然进登录页。
|
|
249
|
+
- **断线提示**:换网 / 锁屏久置导致连接中断时,页面顶部出现「连接已断开,正在重连…」胶囊,恢复后自动消失(连续 2 次探测失败才提示,不闪报)。
|
|
250
|
+
- **软键盘适配**:键盘弹出时底部 Tab 栏自动让位,不再挤占键盘上方空间。
|
|
251
|
+
- 会话入口统一在底部 Tab 栏「会话」页签(左缘浮动抽屉把手与浮动侧栏按钮均已移除,避免悬浮遮挡内容)。
|
|
252
|
+
- 面板「远程访问」页与首页总揽会显示当前**在线设备数**;登录页支持密码明文切换。
|
|
253
|
+
|
|
254
|
+
**不开「远程访问」的直连形态**:也可以不经网关、自行经 patch 层把主实例绑 `0.0.0.0` 直连(安全自担,浏览器表层没有登录认证)。这种形态下「远程访问」功能可以整个停用,dsh-dock 仍兜住两件与功能开关无关的事:**非回环浏览器的「预览版说明」自动确认**(dsh 对远程浏览器的确认不持久化,每次刷新都会重弹;插件级注入,回环地址不介入、保留原生的一次性持久确认)与**「手机适配」的整套窄屏排版**(与远程访问完全解耦,见下)。
|
|
191
255
|
|
|
192
256
|
**趣味游戏**
|
|
193
257
|
|