dsh-dock 0.11.6 → 0.13.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 +54 -9
- package/client.js +685 -253
- package/features/mobile/view.js +305 -0
- package/features/mobile-relay/gateway.js +187 -11
- package/features/mobile-relay/host.js +175 -50
- package/features/mobile-relay/view.jsx +217 -86
- package/features/tokenlog/host.js +92 -13
- package/features/tokenlog/view.jsx +55 -21
- package/index.js +5 -1
- package/package.json +3 -3
- package/src/client.jsx +3 -2
- package/src/host-core.js +136 -1
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
| 功能 | 说明 |
|
|
18
18
|
|---|---|
|
|
19
|
-
| **用量记录** | 记录全部 LLM API 调用:秒级时间筛选、Token
|
|
19
|
+
| **用量记录** | 记录全部 LLM API 调用:秒级时间筛选、Token/费用统计(**可配置各模型单价、持久保存并按自填单价计费**,支持多段分时价与周末/节假日谷价,内置峰谷计价 + 官网价目自动同步作兜底)、分组汇总、明细检索与 CSV 导出 |
|
|
20
20
|
| **模型设置** | 编辑各 Provider 模型目录:输入类型(文本/图片 + 标注)与思考强度档位;图片能力可由你手动声明,新增 Provider 自动刷新加载,写回官方配置热生效 |
|
|
21
21
|
| **模型余额** | 展示所有模型 Provider 账户余额(5 分钟自动刷新) |
|
|
22
22
|
| **任务动画** | 19 种任务运行动画(含星际远征、星云潮汐、曲速航道、量子雷达、星座网络、深海脉动、神经电路等),速度随任务活动联动,配置全部持久化 |
|
|
@@ -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`,结构上不存在绕开登录的直连路径。手机端有专属体验:底部 Tab 栏(会话/任务/功能坞/设置,等待确认角标红色脉冲)、PWA 添加到主屏幕全屏打开、断线重连提示 |
|
|
29
|
+
| **手机适配** | 手机/窄屏排版与触控兜底:输入类控件 16px 防 iOS 聚焦缩放、纯图标按钮触控面积兜底 ≥36px、代码块横向滚动、viewport-fit=cover 安全区;附 44px 浮动侧栏开关(调用 dsh 官方 `toggleSidebar`,与远程访问的手机 chrome 自动互斥让位) |
|
|
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+。
|
|
@@ -123,7 +160,7 @@ dsh plugin --profile web remove dsh-dock # 卸载
|
|
|
123
160
|
- 「模型耗时排行」横条图:按模型累计 LLM 耗时降序,看哪个模型最占时间
|
|
124
161
|
- 「分布统计」横条图:维度一键切换 模型 / 提供商 / 状态 / 推理强度
|
|
125
162
|
- 指标可切换 总 Token / 调用次数 / 金额 / 输出 Token;所有图都基于当前筛选结果即时聚合,筛选一变图表即变
|
|
126
|
-
9. **费用不准?点「单价设置」按模型填真实单价**:官网刊例价是抓来的,与实际计费(第三方中转、折扣、自建端点)常有出入。点开独立的「单价设置」子弹窗(可最大化、拖动、缩放),可按模型逐条配置单价(人民币元 / 百万 tokens,匹配模型名子串即可),并设置兜底单价、USD→CNY 汇率、是否继续自动同步官网价。每个模型还可配置**多段分时价**(如 DeepSeek 的高峰/优惠时段),命中哪段用哪段、时段外回落基准价,支持跨零点(如 `23~7`)与半点边界(如 `8.5` = 08:30
|
|
163
|
+
9. **费用不准?点「单价设置」按模型填真实单价**:官网刊例价是抓来的,与实际计费(第三方中转、折扣、自建端点)常有出入。点开独立的「单价设置」子弹窗(可最大化、拖动、缩放),可按模型逐条配置单价(人民币元 / 百万 tokens,匹配模型名子串即可),并设置兜底单价、USD→CNY 汇率、是否继续自动同步官网价。每个模型还可配置**多段分时价**(如 DeepSeek 的高峰/优惠时段),命中哪段用哪段、时段外回落基准价,支持跨零点(如 `23~7`)与半点边界(如 `8.5` = 08:30)。每段可选**日期类型**:每天 / **仅工作日** / **仅周末或节假日**;再配合顶部的**法定节假日**列表(`2026-10-01` 或 `2026-10-01~2026-10-07`),即可表达「周末与节假日全天谷价、只有非节假日非周末的高峰时段双倍」(内置 DeepSeek V4 即此口径:工作日 9~12、14~18 双倍)。保存后写入宿主配置**持久保存**,费用立即按自填单价重算(无需重扫历史);计价优先级:**自定义单价 > 官网同步价 > 内置价 > 兜底价**。明细表里走兜底价的金额会标「兜底」,方便你补配。
|
|
127
164
|
|
|
128
165
|
**模型余额**
|
|
129
166
|
|
|
@@ -186,8 +223,16 @@ dsh plugin --profile web remove dsh-dock # 卸载
|
|
|
186
223
|
|
|
187
224
|
1. **账号密码登录网关(唯一远程入口)**:在功能坞「远程访问」页设置账号密码并点开启,网关监听 `0.0.0.0` 的独立端口(默认**主端口+1**,如 3080 → 3081,可改)。所有设备(电脑/手机/平板)访问 `http://<电脑IP>:<网关端口>`,未登录自动跳转登录页,登录后进入的是**同一个 DSH 进程**——历史会话、工作区(含浏览式选目录)、正在进行的任务进度、设置实时一致;登录会话 Cookie 7 天滑动过期,点「退出登录」随时注销。网关与主服务是同一台机器上的两个监听,不能共用一个端口。工作区目录选择钉为浏览器浏览模式(远程设备不能弹本机对话框);远程页面的兼容兜底(`crypto.randomUUID`)由网关注入。
|
|
188
225
|
- 密码只存加盐哈希;登录失败按来源 IP 限速(10 分钟 10 次);修改密码后所有设备立即下线;关闭远程访问即停止网关并注销所有会话。
|
|
226
|
+
- **重启自动拉起**:开启状态与端口会被记住,重启 `dsh web` 后插件加载时网关按上次端口自动重新监听,不必进面板再点一次;账号密码同样保持。历史升级中若账号等配置滞留在 `~/.dsh/settings.yaml.imported`(dsh 升级改名旧配置时官方导入 dsh-dock 段失败),下次启动会一次性自动恢复——现网已有改动的段不会被覆盖。
|
|
189
227
|
- **异地组网**:Tailscale/ZeroTier 等虚拟组网内直接用组网 IP 访问同一入口,效果与局域网相同。
|
|
190
228
|
- 旧版「服务器模式(0.0.0.0)」与「扫码令牌接力」已被此方案取代:前者把无认证的 DSH 裸露给局域网,后者双实例任务状态不同步。开启远程访问时会自动清理旧的 0.0.0.0 webserver 补丁行(提示重启后回到仅本机)。
|
|
229
|
+
2. **手机端接力体验(窄屏自动生效)**:
|
|
230
|
+
- **底部 Tab 栏**:会话(拉出会话抽屉)/ **插件** / 设置。任务状态以角标显示在「插件」页签上:有任务进行中显示蓝色数量;**任务等待你确认工具调用时角标变红并脉冲**——公司电脑上跑着的任务停住等人,手机上一眼可见;此时点「插件」直达「运行状态」页处理,没有任务时进插件面板首页。
|
|
231
|
+
- **PWA 添加到主屏幕**:网关自带 manifest 与图标(品牌渐变 + 白色气泡,零依赖生成),手机浏览器「添加到主屏幕」后像 App 一样全屏打开,无地址栏;未登录也能先装,打开后自然进登录页。
|
|
232
|
+
- **断线提示**:换网 / 锁屏久置导致连接中断时,页面顶部出现「连接已断开,正在重连…」胶囊,恢复后自动消失(连续 2 次探测失败才提示,不闪报)。
|
|
233
|
+
- **软键盘适配**:键盘弹出时底部 Tab 栏自动让位,不再挤占键盘上方空间。
|
|
234
|
+
- 会话入口统一在底部 Tab 栏「会话」页签(左缘浮动抽屉把手已移除,避免悬浮遮挡内容)。
|
|
235
|
+
- 面板「远程访问」页与首页总揽会显示当前**在线设备数**;登录页支持密码明文切换。
|
|
191
236
|
|
|
192
237
|
**趣味游戏**
|
|
193
238
|
|
|
@@ -207,7 +252,7 @@ dsh plugin --profile web remove dsh-dock # 卸载
|
|
|
207
252
|
- **功能开关刷新后重置**:v0.5.0 起功能开关已持久化(浏览器本地存储),刷新/重启后保持。
|
|
208
253
|
- **任务动画/任务通知/运行状态不生效**:三者的路由都在宿主进程内(动画/通知的配置持久化也在宿主),旧宿主需重启 `dsh web` 加载(面板页会提示「宿主进程是旧版本」)。另注意通知与运行状态已各自独立成菜单项,需在功能坞里分别开启「任务通知」「运行状态」。
|
|
209
254
|
- **用量记录空白**:确认 dsh 是较新版本且插件宿主已加载(查看启动日志含 `[dsh-dock] host half loaded`);旧宿主进程需重启 dsh web 加载新路由。
|
|
210
|
-
- **费用不准 / 与实际账单对不上**:金额是按单价估算的,官网抓取来的刊例价不代表你的实际计费。在用量记录页点「单价设置」(独立子弹窗,可最大化/拖动/缩放),按模型填真实单价并保存(持久化到宿主配置),费用会立即按自填单价重算;每个模型还支持多段分时价(跨零点 /
|
|
255
|
+
- **费用不准 / 与实际账单对不上**:金额是按单价估算的,官网抓取来的刊例价不代表你的实际计费。在用量记录页点「单价设置」(独立子弹窗,可最大化/拖动/缩放),按模型填真实单价并保存(持久化到宿主配置),费用会立即按自填单价重算;每个模型还支持多段分时价(跨零点 / 半点边界 / 每天·仅工作日·仅周末节假日)+ 全局法定节假日列表。计价优先级为「自定义单价 > 官网同步价 > 内置价 > 兜底价」,明细里走兜底价的金额会标「兜底」。
|
|
211
256
|
- **余额显示「需登录 / 无密钥」**:对应 Provider 未在 dsh 凭据中配置可查询余额的密钥,属正常状态提示。
|
|
212
257
|
- **切模型 / 打开历史会话卡住,报 `preset "…" failed to mount`**:这是该 **agent 预设**与 dsh 版本
|
|
213
258
|
的 schema 漂移,不是本插件的问题。预设目录在 `~/.dsh/.agent-presets/<id>/`,dsh 升级后预设里的
|