dsh-mini-remote 0.2.0 → 0.2.2
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 +69 -0
- package/README.en.md +207 -141
- package/README.md +207 -148
- package/client/client.js +1984 -6
- package/lib/build.js +32 -1
- package/lib/devices.js +372 -0
- package/lib/index.js +1628 -33
- package/lib/mirror.js +373 -7
- package/lib/page.html +955 -71
- package/lib/page.js +4 -1
- package/lib/remotes.js +279 -0
- package/lib/server.js +984 -55
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,255 +1,314 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
1
3
|
# 极简遥控器 · dsh-mini-remote
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/xingzhen199186/dsh-mini-remote/main/docs/promo.webp" alt="极简遥控器:手机上只留你的指令和它的结论,过程想看的时候再调出来" width="720" />
|
|
7
|
+
</p>
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
**专为 DeepSeek Harness(DSH)用户打造的轻量级移动端遥控插件,解决外出离机时查看 Agent 运行状态与下发指令时界面冗余、注意力被大量中间过程绑架的痛点。**
|
|
8
10
|
|
|
9
|
-
](https://www.npmjs.com/package/dsh-mini-remote)
|
|
12
|
+
[](https://nodejs.org/)
|
|
13
|
+
[](https://github.com/deepseek-ai/DeepSeek-Harness)
|
|
14
|
+
[](LICENSE)
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
[English](README.en.md) · [简体中文](README.md)
|
|
12
17
|
|
|
13
|
-
|
|
18
|
+
</div>
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
<p align="center">
|
|
21
|
+
<a href="#背景与痛点">背景与痛点</a> ·
|
|
22
|
+
<a href="#核心特性">核心特性</a> ·
|
|
23
|
+
<a href="#效果预览">效果预览</a> ·
|
|
24
|
+
<a href="#移动端页面操作指引">移动端使用</a> ·
|
|
25
|
+
<a href="#桌面端远程窗口">远程窗口</a> ·
|
|
26
|
+
<a href="#快速上手">快速上手</a> ·
|
|
27
|
+
<a href="#使用示例与配置">使用示例与配置</a> ·
|
|
28
|
+
<a href="#开源协议">开源协议</a>
|
|
29
|
+
</p>
|
|
16
30
|
|
|
17
31
|
---
|
|
18
32
|
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
一个 [DeepSeek Harness](https://github.com/deepseek-ai/DeepSeek-Harness)(DSH,一个用插件扩展的 AI agent 框架)插件。装上之后:
|
|
22
|
-
|
|
23
|
-
- 手机上打开一个网页,上面只有一个输入框和最新的一条回答;
|
|
24
|
-
- 你在手机上发的指令,直接交给电脑上正在跑的那个会话;
|
|
25
|
-
- AI 干活的中间过程(工具调用、读写文件、子 Agent、思考正文)**一律不推给手机**;
|
|
26
|
-
- 唯一会「说话」的是鲸鱼娘:模型在步骤之间自言自语的那一句,由她念出来,只进她的气泡。
|
|
33
|
+
## 背景与痛点
|
|
27
34
|
|
|
28
|
-
|
|
35
|
+
在日常使用桌面端或网页端 Agent 执行复杂工程任务时,一次交互往往涉及数分钟的深度思考、几十次文件读写与密集的工具链调用。现有的移动端远程方案通常选择将桌面端界面完整映射至手机屏,引发以下实际问题:
|
|
29
36
|
|
|
30
|
-
|
|
37
|
+
- **信息密度失衡**:大量原始推理细节、工具调用入参以及代码差异充满小屏,关键结论被淹没。
|
|
38
|
+
- **注意力过度消耗**:外出通勤、就餐或离机休憩时,用户核心诉求仅为确认当前轮次是否结束,并下达下一阶段指令,无暇逐行审查中间步骤。
|
|
39
|
+
- **网络与权限适配单一**:纯内网方案出差无法访问,中心化云端转发则引入额外的凭据托管风险。
|
|
31
40
|
|
|
32
|
-
|
|
41
|
+
**极简遥控器**由此设计:本插件适应多种使用场景,将注意力支配权交还给用户。移动端提供「单帧」、「聊天」和「完整」三种模式,用户可以选择彻底屏蔽执行噪声,也可随时展开完整轨迹;PC 端提供远程窗口功能,可在多台设备上以桌面端原生 UI 界面操作核心设备上的 DeepSeek Harness。
|
|
33
42
|
|
|
34
|
-
|
|
43
|
+
---
|
|
35
44
|
|
|
36
|
-
##
|
|
45
|
+
## 核心特性
|
|
37
46
|
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
47
|
+
- 🎛️ **三档按需呈现模式**:提供「单帧」(整屏仅留最新结论,极度清爽)、「聊天」(常规气泡对话流)与「完整」(按原有时序就地展开工具调用与文件差异,支持关键词检索)三档视图,随时无缝切换。
|
|
48
|
+
- 📱 **零安装的移动端**:手机端就是一个网页——扫码、用浏览器打开,就是全部。不装 App、不注册账号、不经过任何第三方服务器;可以「添加到主屏幕」,加完那个图标点开是全屏的。
|
|
49
|
+
- 🌐 **多通路安全连接**:内置本地局域网(LAN)、Tailscale 私网(支持 MagicDNS 与 HTTPS 证书)以及 Cloudflare 公网隧道(无公网 IP 场景)三种模式,各通道并存且独立提供二维码与访问口令。
|
|
50
|
+
- 🐬 **拟人化轻量状态流**:提取步骤之间的关键旁白由鲸鱼娘气泡念出,实时呈现队列刻度尺与计时进度,彻底过滤底层原始推理块。
|
|
51
|
+
- 💬 **飞书长连接双向遥控**:基于飞书开放平台 WebSocket 长连接直连桌面端,无需公网 IP 即可实现纯文本交互、选择题回复以及 `/会话` 切换。
|
|
52
|
+
- 🗂️ **移动端就地会话治理**:在移动端用浏览器网页打开,支持会话重命名、置顶排序、安全归档以及从指定轮次派生新会话(Fork),并明确提示待审批与待回答事件。
|
|
53
|
+
- 💻 **桌面端嵌入式「远程窗口」**:在 DSH 桌面端左侧栏提供「远程窗口」快捷入口,可远程跨机操作另一台电脑上的 DSH 桌面端,原生窗口无感过渡,配对步骤见下文「桌面端『远程窗口』」。
|
|
54
|
+
- 🔒 **严格的安全与防御边界**:所有接口均实施定长字符串口令校验,防范时序侧信道攻击;配置防暴力破解阈值(1 分钟内试错 5 次锁定 1 分钟);严禁移动端跨目录读取任意文件;配对信息仅限电脑本机回路读取。
|
|
41
55
|
|
|
42
56
|
---
|
|
43
57
|
|
|
44
|
-
##
|
|
58
|
+
## 效果预览
|
|
45
59
|
|
|
46
|
-
|
|
47
|
-
dsh plugin --profile web add dsh-mini-remote
|
|
48
|
-
```
|
|
60
|
+
### 对话界面(单帧 / 聊天 / 完整)
|
|
49
61
|
|
|
50
|
-
|
|
62
|
+
移动端页面使用原生 JavaScript 开发,无前端构建负担,支持深海墨蓝(深色)与冰蓝宝蓝(浅色)两套高对比度主题。同一场对话有三种看法:单帧整屏只留最新一条结论,聊天把历史一条条排成气泡,完整再把每一轮的执行轨迹插回对话原位:
|
|
51
63
|
|
|
52
|
-
|
|
64
|
+
<div align="center">
|
|
65
|
+
<img width="290" alt="聊天(深色):一来一回排成气泡,一屏看得到多条历史" src="https://raw.githubusercontent.com/xingzhen199186/dsh-mini-remote/main/docs/screen-chat-dark.png" />
|
|
66
|
+
<img width="290" alt="聊天(浅色):同一段对话的浅色版" src="https://raw.githubusercontent.com/xingzhen199186/dsh-mini-remote/main/docs/screen-chat-light.png" />
|
|
67
|
+
</div>
|
|
53
68
|
|
|
54
|
-
|
|
55
|
-
<summary>从 GitHub 源码装、从本地目录装,以及它适配哪些 DSH 版本</summary>
|
|
69
|
+
### 设置面板与外观切换
|
|
56
70
|
|
|
57
|
-
|
|
71
|
+
通过右上角设置随时切换呈现模式、外观主题与网络重连控制:
|
|
58
72
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
73
|
+
<div align="center">
|
|
74
|
+
<img width="290" alt="设置(深色):显示模式三选一、外观选中深色" src="https://raw.githubusercontent.com/xingzhen199186/dsh-mini-remote/main/docs/settings-dark.png" />
|
|
75
|
+
<img width="290" alt="设置(浅色):选中态和主按钮都跟着换成宝蓝" src="https://raw.githubusercontent.com/xingzhen199186/dsh-mini-remote/main/docs/settings-light.png" />
|
|
76
|
+
</div>
|
|
62
77
|
|
|
63
|
-
|
|
78
|
+
### 执行动画状态
|
|
64
79
|
|
|
65
|
-
|
|
66
|
-
dsh plugin --profile web add <你放源码的目录>
|
|
67
|
-
```
|
|
80
|
+
任务运行中动态展示拟人化跑动状态、耗时计时器与排队刻度尺,消除不可知等待:
|
|
68
81
|
|
|
69
|
-
|
|
82
|
+
<div align="center">
|
|
83
|
+
<img width="290" alt="执行中(深色):鲸鱼娘正在跑、已计时 14 秒、队列刻度上排着一条" src="https://raw.githubusercontent.com/xingzhen199186/dsh-mini-remote/main/docs/running-dark-phone.jpg" />
|
|
84
|
+
<img width="290" alt="执行中(浅色):同一次执行,鲸鱼娘正在跑、已计时 14 秒、排队中 1 条" src="https://raw.githubusercontent.com/xingzhen199186/dsh-mini-remote/main/docs/running-light-phone.jpg" />
|
|
85
|
+
</div>
|
|
70
86
|
|
|
71
|
-
|
|
87
|
+
### 远程窗口(桌面端)
|
|
72
88
|
|
|
73
|
-
|
|
89
|
+
不用切窗口,也不用远程桌面:在 DSH 桌面端左侧栏点「远程窗口」,把另一台电脑的 DSH 界面直接嵌在主面板里。顶上一行是「← 返回列表 / 这是哪一台 / 再试一次」,界面正常显示时它会自动收起,鼠标碰一下屏幕顶部才滑出来。
|
|
74
90
|
|
|
75
|
-
|
|
91
|
+
<div align="center">
|
|
92
|
+
<img width="720" alt="远程窗口:主面板里嵌着另一台电脑的 DSH 界面,左侧栏「远程窗口」为选中态" src="https://raw.githubusercontent.com/xingzhen199186/dsh-mini-remote/main/docs/remote-window.png" />
|
|
93
|
+
</div>
|
|
76
94
|
|
|
77
|
-
|
|
95
|
+
---
|
|
78
96
|
|
|
79
|
-
|
|
97
|
+
## 快速上手
|
|
80
98
|
|
|
81
|
-
|
|
82
|
-
| --- | --- | --- | --- |
|
|
83
|
-
| **内网** | 手机和电脑在同一个 Wi-Fi,只在家里用 | 什么都不用装 | 一出家门就断 |
|
|
84
|
-
| **Tailscale** | 出门也要连,地址还想固定 | 电脑和手机各装一个 Tailscale | 两边都要装一个 App |
|
|
85
|
-
| **公网隧道** | 什么都不想装,任何网络都要能连 | 什么都不用装 | 地址每次重启都换;第一次要下一个约 50 MB 的组件 |
|
|
99
|
+
### 环境依赖
|
|
86
100
|
|
|
87
|
-
|
|
101
|
+
安装前请确认这台电脑满足以下条件:
|
|
88
102
|
|
|
89
|
-
|
|
103
|
+
- **Node.js**:`^22.19.0 || >=24.0.0`
|
|
104
|
+
- **DSH(DeepSeek Harness)**:`>=0.1.5-rc.2 <0.3.0`
|
|
105
|
+
- **操作系统**:Windows、macOS 或 Linux
|
|
90
106
|
|
|
91
|
-
|
|
107
|
+
> ⚠️ **注意**:DSH 处于活跃迭代期,本插件核心功能在 `0.1.5-rc.2`、`0.1.7-rc.2`、`0.2.0-rc.1` 及 `0.2.0-rc.2` 上完成全量验证。对于低于 `0.1.5` 的历史版本未作兼容承诺;高于 `0.3.0` 的版本存在上游底层接口破坏风险 —— **这一版声明的上界就是 `0.3.0`**,DSH 升上去之后要先等插件跟进,别直接升。
|
|
92
108
|
|
|
93
|
-
###
|
|
109
|
+
### 安装步骤
|
|
94
110
|
|
|
95
|
-
|
|
111
|
+
#### 途径一:DSH 桌面端图形化安装(推荐)
|
|
96
112
|
|
|
97
|
-
|
|
113
|
+
1. 点击 DSH 顶部导航栏的「插件」按钮进入插件管理页面。
|
|
114
|
+
2. 点击页面右上角的「添加插件」按钮打开对话框。
|
|
115
|
+
3. 在输入框中输入插件包名 `dsh-mini-remote`(亦可输入 GitHub 仓库地址 `github:xingzhen199186/dsh-mini-remote` 或本地目录路径)。安装源保持默认的「npm 官方源」。
|
|
116
|
+
4. 点击对话框底部的「安装」按钮完成安装。
|
|
98
117
|
|
|
99
|
-
|
|
118
|
+
> ⚠️ **注意**:
|
|
119
|
+
> 1. **确认来源可信**:插件在本机以当前用户的完整权限运行,来源不明的插件可能损坏 DeepSeek Harness,或读取和泄露敏感数据。
|
|
120
|
+
> 2. **暂不支持自动更新**:插件安装后暂不支持自动更新。若需升级版本,请先卸载当前版本后再安装新版本。
|
|
100
121
|
|
|
101
|
-
|
|
122
|
+
#### 途径二:从官方 npm 注册表安装(命令行)
|
|
102
123
|
|
|
103
|
-
|
|
124
|
+
在终端中执行对应的安装命令。命令中的 `web` 为 DSH 默认 Profile 名称,若使用自定义配置档,请替换为对应名称:
|
|
104
125
|
|
|
105
|
-
|
|
126
|
+
```powershell
|
|
127
|
+
dsh plugin --profile web add dsh-mini-remote
|
|
128
|
+
```
|
|
106
129
|
|
|
107
|
-
|
|
130
|
+
#### 途径三:从 GitHub 仓库直接安装
|
|
108
131
|
|
|
109
|
-
|
|
132
|
+
```powershell
|
|
133
|
+
dsh plugin --profile web add github:xingzhen199186/dsh-mini-remote
|
|
134
|
+
```
|
|
110
135
|
|
|
111
|
-
|
|
112
|
-
- **第一次打开会慢**——它在下载一个五十兆左右的组件,只下这一次。这期间状态那行会显示「正在打开…」,那是正常的,不是卡死。注册偶尔会失败,插件会自动重试 3 次。
|
|
136
|
+
#### 途径四:本地目录安装(开发者调试)
|
|
113
137
|
|
|
114
|
-
|
|
138
|
+
```powershell
|
|
139
|
+
dsh plugin --profile web add C:\path\to\dsh-mini-remote
|
|
140
|
+
```
|
|
115
141
|
|
|
116
|
-
###
|
|
142
|
+
### 启动与服务确认
|
|
117
143
|
|
|
118
|
-
|
|
144
|
+
1. 重启 DSH 服务(关闭当前 `dsh web` 窗口并重新运行)。
|
|
145
|
+
2. 查看控制台启动日志,插件将输出初始化就绪信息、本机监听端口与动态访问令牌:
|
|
146
|
+
```text
|
|
147
|
+
[dsh-mini-remote] 已启动:http://127.0.0.1:3090/mini?token=xxxxxxxxxxxx
|
|
148
|
+
```
|
|
149
|
+
3. 打开 DSH 桌面端界面,进入「设置」→ 左侧导航选择「手机遥控」,即可查看配对二维码与连接详情。
|
|
119
150
|
|
|
120
|
-
|
|
151
|
+
> **手机端只有浏览器网页这一种形态。** 扫码用浏览器打开就是全部——没有独立的 App,也没有小程序。可以把这个页面「添加到主屏幕」:加完那个图标点开是全屏的,看着和 App 差不多,跑的仍然是浏览器;换一台手机、或者清掉浏览器数据,就回到重新扫码那一步。
|
|
152
|
+
>
|
|
153
|
+
> 反过来说,这个网页**也不挑设备**:在 PC 浏览器里打开同一个地址同样能用,而且能在里面开出完整的 DSH 电脑端界面——见「进阶设置:内嵌桌面端界面」。
|
|
121
154
|
|
|
122
155
|
---
|
|
123
156
|
|
|
124
|
-
##
|
|
125
|
-
|
|
126
|
-
打开链接就是全部界面:一个输入框,和最新的一条回复。
|
|
127
|
-
|
|
128
|
-
**发指令。** 打字发出去,AI 就在电脑上开始干活。
|
|
129
|
-
|
|
130
|
-
**等结论。** 跑的时候上面显示「运行中…」。这期间你可以接着发,指令会排队。任务结束,结论直接出现在页面上,同时响一声、震一下。
|
|
131
|
-
|
|
132
|
-
**鲸鱼娘动画。** 电脑上的模型在步骤之间常会自言自语一句(「我先看一下这个文件」这类),这一句现在由鲸鱼娘念出来——说话的动作是新画的一张立绘,轮播会为它停一下,说完接着从停下的地方往下走。
|
|
133
|
-
|
|
134
|
-
**两套外观,随手换。** 设置里有一行「外观」:**深色**、**浅色**(默认)、**跟随系统**。深色是深海墨蓝打底;浅色那套的色是从宣传图那张画上取的——近白的冰蓝地、深宝蓝的字,主按钮也换成同一个宝蓝。选哪套记在手机上,下次打开还是它。
|
|
135
|
-
|
|
136
|
-
<img width="290" alt="设置(深色):显示模式与外观" src="https://raw.githubusercontent.com/xingzhen199186/dsh-mini-remote/main/docs/settings-dark.png" /> <img width="290" alt="设置(浅色):选中态和主按钮都跟着换成宝蓝" src="https://raw.githubusercontent.com/xingzhen199186/dsh-mini-remote/main/docs/settings-light.png" />
|
|
157
|
+
## 使用示例与配置
|
|
137
158
|
|
|
138
|
-
|
|
159
|
+
### 连接通道对比与选型
|
|
139
160
|
|
|
140
|
-
|
|
161
|
+
依据当前网络拓扑选择最合适的接入通路:
|
|
141
162
|
|
|
142
|
-
|
|
163
|
+
| 通道类型 | 适用场景 | 依赖条件 | 特性与代价 |
|
|
164
|
+
| :--- | :--- | :--- | :--- |
|
|
165
|
+
| **局域网(LAN)** | 手机与电脑处于同一 Wi-Fi 子网 | 无额外客户端 | 配置即用;脱离当前局域网后立即断开 |
|
|
166
|
+
| **Tailscale** | 跨地域移动访问,要求网络地址稳定 | 电脑与手机均安装并登录 Tailscale | 固定私网 IP;可额外申请 Tailscale HTTPS 证书 |
|
|
167
|
+
| **公网隧道** | 无公网 IP 且不便安装任何额外客户端 | 需开启 Cloudflare 隧道开关 | 每次重启 DSH 自动更换临时二级域名;初次开启下载约 50 MB 运行组件 |
|
|
168
|
+
| **飞书长连接** | 仅依赖企业 IM,完全脱离浏览器 | 配置飞书自建应用机器人凭据 | 无需公网暴露,通过长连接双向收发,支持移动审批 |
|
|
143
169
|
|
|
144
|
-
|
|
170
|
+
### 移动端页面操作指引
|
|
145
171
|
|
|
146
|
-
|
|
172
|
+
**先拿到这个页面的地址。** 打开 DSH 桌面端「设置 → 手机遥控」,页面会列出这台电脑**能用的每一条地址**——「本机」「内网」「Tailscale」「Tailscale(加密)」「公网访问」,具体有哪几条,取决于你这台电脑装了哪些、开了哪些。
|
|
147
173
|
|
|
148
|
-
|
|
174
|
+
每一条是一块:**左边二维码,右边就是完整网址**。手机扫二维码最省事;要在别的设备上手动输入,点右边那个「复制」,或者点一下网址框(它会自动全选)。
|
|
149
175
|
|
|
150
|
-
|
|
176
|
+
地址长这样:
|
|
151
177
|
|
|
152
|
-
|
|
178
|
+
```text
|
|
179
|
+
http://192.168.1.2:3090/mini?token=xxxxxxxxxxxx
|
|
180
|
+
```
|
|
153
181
|
|
|
154
|
-
|
|
182
|
+
> ⚠️ **这条网址里带着访问口令**——谁拿到它,谁就能操作这台电脑。别截图发出去,也别粘到公开的地方。要换口令,见设置页里「密码」那一块。
|
|
155
183
|
|
|
156
|
-
|
|
184
|
+
进去之后,这一页能做这些事:
|
|
157
185
|
|
|
158
|
-
|
|
186
|
+
- **指令发送与排队**:在底部输入框输入文字并发送。若 Agent 正处于执行中,后续消息自动进入有序队列,并在刻度尺中高亮展示。
|
|
187
|
+
- **斜杠指令交互**:输入 `/` 呼出当前会话绑定的系统级指令列表,支持按键过滤与参数提示。
|
|
188
|
+
- **多选提问与确认**:当 Agent 发起选项询问时,页面弹出答题卡,支持点选、改选或自定义输入补充文本。
|
|
189
|
+
- **回到底部**:在长文本翻阅时,右下角自动浮出「回到底部」悬浮球(单帧模式下不触发)。
|
|
190
|
+
- **权限档位切换**:点击顶栏状态区,可在「仅可查看(read-only)」、「工作区内修改(workspace-write)」与「完全权限(danger-full-access)」之间切换。
|
|
159
191
|
|
|
160
|
-
|
|
192
|
+
> ⚠️ **注意**:
|
|
193
|
+
> 1. 将权限档位提升至「完全权限」意味着 Agent 具备任意文件与系统级指令执行能力,请务必谨慎操作。
|
|
194
|
+
> 2. 系统底层触发的危险命令权限审批弹窗,属于电脑端 DSH 自己的安全边界——手机端没法直接批准,得回电脑上处理。
|
|
161
195
|
|
|
162
|
-
|
|
196
|
+
### 进阶设置:内嵌桌面端界面(手机或 PC 网页)
|
|
163
197
|
|
|
164
|
-
|
|
198
|
+
**手机遥控页不是只能在手机上用。** 在 PC 浏览器里打开同一个地址(扫码打开的那一条),界面一样能用——只是排版是按手机屏幕做的。而让这条路在 PC 上真正好用起来的,是设置里的「进阶设置」:它把完整的 DSH 电脑端界面嵌进来,于是不必额外去开一个 `dsh web`。
|
|
165
199
|
|
|
166
|
-
|
|
200
|
+
怎么打开:
|
|
167
201
|
|
|
168
|
-
|
|
202
|
+
1. 点右上角设置,找到「进阶设置」那一行(提示语是「打开电脑上的 DSH 界面,改那些手机上没有的设置」),切到「开」。
|
|
203
|
+
2. 它会再问你一次——**要点第二次才算开**。
|
|
204
|
+
3. 下面随即多出一行「电脑端界面」(提示语「电脑端 dsh 完整页面」),点「打开」。
|
|
205
|
+
4. 这一页里就嵌进一整屏完整的 DSH 电脑端界面:插件安装、模型配置、会话记录、全量日志都在里面。顶上那条横条可以退出、回到手机遥控页。
|
|
169
206
|
|
|
170
|
-
|
|
207
|
+
**它搬的是这台电脑自己的界面,不是另起一份。** 你在这里改的配置、发的对话,都发生在**这个 DSH 上**——桌面端和它处在同一个状态里。做法也不是"多开一个网页版":插件的服务端先按官方正门认证一次,然后把每个请求**实时转发**到本机那个界面(连实时的界面刷新都原样转,不攒批)。所以手机全程碰不到任何官方凭据。
|
|
171
208
|
|
|
172
|
-
|
|
209
|
+
> ⚠️ **注意**:
|
|
210
|
+
> 1. **这是一个权限开关,不是普通偏好。** 打开它,等于把这个令牌的访问面从"手机页暴露的那点事"扩到**整个电脑端设置面**——模型配置、凭据、插件装卸、会话记录全在内。所以它默认关,而且开着要点两次。
|
|
211
|
+
> 2. 嵌进来的就是电脑端原样的界面,手机窄屏下做了移动端适配;PC 浏览器上就是原样。
|
|
173
212
|
|
|
174
|
-
|
|
213
|
+
### 桌面端「远程窗口」
|
|
175
214
|
|
|
176
|
-
|
|
215
|
+
**一句话**:在 B 电脑的 DSH 桌面端里,直接打开 A 电脑的 DSH 界面。
|
|
177
216
|
|
|
178
|
-
|
|
217
|
+
**它解决什么**:两台电脑各跑各的 DSH 时,想在一台上看另一台的界面,原来只有两条路——开个浏览器窗口(于是要在两套窗口之间来回切),或者上远程桌面(整块屏幕搬过来,分辨率和快捷键全是麻烦)。这个入口把「那一台」变成主面板里的一屏:点开就是它,再点一下回到原来的面板。
|
|
179
218
|
|
|
180
|
-
|
|
219
|
+
#### 用起来是什么样
|
|
181
220
|
|
|
182
|
-
|
|
221
|
+
1. 点左侧栏的「远程窗口」,主面板列出你配对过的电脑——一行一台,带名字、地址、最近一次连上的时间。
|
|
222
|
+
2. 点其中一行,那一台的界面就嵌在面板里。
|
|
223
|
+
3. 再点一下左侧栏那一行(点图标、点文字、点整行空白都算),退出,回到进入前那个面板。
|
|
183
224
|
|
|
184
|
-
|
|
225
|
+
界面正常显示时顶上那行横条会**自动收起**,鼠标碰一下屏幕顶部就滑出来。横条里是「← 返回列表」、这是哪一台、以及「再试一次」——出问题时它是唯一的出口(和换条路重试的入口),所以正在换票、出错、框一直没打开这几种状态下它**不会收起**,一直在。
|
|
185
226
|
|
|
186
|
-
|
|
227
|
+
#### 安全上做了什么
|
|
187
228
|
|
|
188
|
-
|
|
229
|
+
- **凭据不过手**:打开窗口时,服务端当场签一张一次性票据(30 秒内有效、只能兑一次)。浏览器拿到的是这张票,**访问口令和长期凭据一个字节都不进浏览器**——既不留进浏览历史,也不进被嵌进来的那个页面。
|
|
230
|
+
- **只有带有效票据的页面才允许被嵌**:跨站嵌入默认禁止,带票的那一次才放开。外部页面即使拿到地址也进不来。
|
|
231
|
+
- **撤销是立即的**:在 A 的设置里撤销 B 这台设备之后,B 已经开着的窗口下一次请求就过不去,不需要等它自己断。
|
|
232
|
+
- **跟着 DSH 一起失效**:A 的 DSH 重启,那一屏的通行凭据自动作废,重新点一次就能再进。
|
|
189
233
|
|
|
190
|
-
|
|
191
|
-
先看手机和电脑是不是同一个 Wi-Fi。
|
|
234
|
+
#### 跨机使用(两台电脑)
|
|
192
235
|
|
|
193
|
-
|
|
194
|
-
等半分钟再试。还不行的话,配对页上会直接显示原因。最常见的一种是**电脑上开着代理或 VPN**——Clash 这类软件的「TUN 模式」会把隧道的连接掐断,进程看着好好的,其实一条连接都没建立起来,先把它关掉再试。还有一种:这条网络就是走不通 Cloudflare(国内时好时坏,不是你哪里配错了),那就别在公网上耗着,**改用 Tailscale 那条**。
|
|
236
|
+
下面把被连的那台电脑叫 A,去连的那台叫 B。
|
|
195
237
|
|
|
196
|
-
|
|
197
|
-
手机切后台再回来经常会这样,页面会自己重连,等几秒;还不行就进设置点「重连」。
|
|
238
|
+
**A 侧**
|
|
198
239
|
|
|
199
|
-
|
|
200
|
-
|
|
240
|
+
1. **装本插件,版本不低于 `0.2.1`。**「远程窗口」是 `0.2.1` 才有的功能——B 连的是 A 上跑着的那份代码,A 装的是旧版,B 看到的就还是旧界面。
|
|
241
|
+
2. 打开「设置 → 手机遥控 → 允许别的电脑连接」,把这个开关打开。它默认是关的;关着的时候,A 连配对请求也不受理。
|
|
242
|
+
3. 在同一个设置页的「密码」那一块点「复制」,取出 A 的口令。
|
|
201
243
|
|
|
202
|
-
|
|
203
|
-
说明你打开的链接里没带密码(比如自己手打的地址)。回电脑上重新扫一次二维码就好。
|
|
244
|
+
**B 侧**(在 B 的「设置 → 手机遥控」里操作)
|
|
204
245
|
|
|
205
|
-
|
|
206
|
-
在「设置 → 手机遥控」的密码那一块直接改,**至少 12 位**。改完要重启一次 DSH,重启之后手机上要重新扫一次码。
|
|
246
|
+
要用的那一块叫「其他电脑」,在设置页靠下。它和上面那块「设备」正好相反:那块是「谁进得来」,这块是「我连得上谁」。
|
|
207
247
|
|
|
208
|
-
|
|
248
|
+
1. 点「添加一台电脑」,摊开三个框。
|
|
249
|
+
2. **那台电脑的地址(它「手机遥控」页那条,不带 `/mini`)**:填 A 的地址。这一格填什么最关键,见下面「地址填哪一条」。
|
|
250
|
+
3. **那台电脑的口令(在它的「手机遥控」设置里复制)**:填 A 侧第 3 步复制来的那串。这一格是打码的。
|
|
251
|
+
4. **给它起个名字(可留空,留空就用地址当名字)**:方便你在名单里认出是哪一台。
|
|
252
|
+
5. 点「确认添加」。这一步会真的去 A 那边配一次对——成功之后 A 的设置页会多出一条「这台电脑」的记录,B 这边多出一行。
|
|
253
|
+
6. 点名单里那一行。
|
|
209
254
|
|
|
210
|
-
|
|
255
|
+
名单每一行显示:名字、地址、`最近成功 <时刻>`(没连成过就是「还没有记录」),右边两枚按钮——**「重连」**重新取一次通行凭据,**「断开」**删掉这条配对。断开前会问你一次,并说明对面那台电脑上的记录**还留着**;要彻底收回,得去 A 那边把这一台撤销。
|
|
211
256
|
|
|
212
|
-
|
|
257
|
+
**地址填哪一条**
|
|
213
258
|
|
|
214
|
-
|
|
259
|
+
- 填 A 的「手机遥控」页里那条地址(末尾不用带 `/mini`);**不要**填你在 A 上打开 DSH 界面时用的那条。
|
|
260
|
+
- **必须 `https://`。** 明文 `http://` 能配对、也能取票,但框里是白的:进门那一下,浏览器要替这一屏收下一枚 cookie(之后框里每个请求都靠它认人),而这枚 cookie 必须走加密连接浏览器才肯收。http 地址上它会被当场丢掉,于是之后每次请求都被挡在外面。本机 `127.0.0.1` 是个例外(浏览器把回环当可信来源)——所以这条限制实际只卡跨机。
|
|
261
|
+
- 推荐走 Tailscale:在 A 上打开「HTTPS 地址(Tailscale)」开关,B 填 `https://<机器名>.<你的 tailnet>.ts.net`,**不用写端口**。地址固定,设一次就完事。
|
|
262
|
+
- 「公网访问」隧道那条地址每次重启都会变,不适合跨机。
|
|
215
263
|
|
|
216
|
-
|
|
264
|
+
**怎么知道做对了**
|
|
217
265
|
|
|
218
|
-
|
|
266
|
+
点名单里那一行,框里出现那台电脑的界面。出问题时那一行底下会有说明——对面没开开关、被撤销了、连不上、地址填错,各有各的说法,照着改就行。
|
|
219
267
|
|
|
220
|
-
|
|
268
|
+
**以后要收回某一台的权限**
|
|
221
269
|
|
|
222
|
-
|
|
270
|
+
在 A 的「设置 → 手机遥控 → 设备」那一块——就是列出「谁进得来」的那份名单,每行带「改名」和「撤销」——找到那台电脑,点「撤销」,再点「确认撤销」。**立即生效**:对面已经开着的窗口,下一次请求就过不去,不用等它自己断。
|
|
223
271
|
|
|
224
|
-
|
|
272
|
+
### 飞书机器人配置流程
|
|
225
273
|
|
|
226
|
-
|
|
274
|
+
1. 登录 [飞书开放平台](https://open.feishu.cn/) 创建企业自建应用。
|
|
275
|
+
2. 记录「凭证与基础信息」中的 `App ID` 与 `App Secret`。
|
|
276
|
+
3. 进入「添加应用能力」页面,添加「机器人」能力。
|
|
277
|
+
4. 进入「事件与回调」页面,配置事件订阅方式为「使用长连接接收事件」,并添加 `im.message.receive_v1` 事件。
|
|
278
|
+
5. 进入「权限管理」页面,检索并开通以下 3 项权限:
|
|
279
|
+
- 接收消息(`im:message:receive_v1`)
|
|
280
|
+
- 以应用身份发消息(`im:message:send_as_bot`)
|
|
281
|
+
- 获取与发送单聊、群组消息(`im:message.group_at_msg:readonly` 等对应集合)
|
|
282
|
+
6. 创建并**发布应用版本**。
|
|
283
|
+
7. 返回 DSH 桌面端「设置」→「手机遥控」→「飞书」栏目,填入凭证并启用开关。首次交互机器人将在单聊中返回用户的 `open_id`,将其复制填入白名单保存后即可正常通讯。
|
|
227
284
|
|
|
228
|
-
|
|
285
|
+
### 核心配置参数表
|
|
229
286
|
|
|
230
|
-
|
|
287
|
+
配置项支持在 DSH 标准配置文件中声明,亦可通过桌面端「手机遥控」界面配置:
|
|
231
288
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
289
|
+
| 参数项 | 数据类型 | 默认值 | 生效方式 | 说明 |
|
|
290
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
291
|
+
| `port` | `number` | `3090` | 重启生效 | 遥控服务监听的本地 HTTP 端口(冲突时自动顺延) |
|
|
292
|
+
| `token` | `string` | *(随机生成)* | 重启生效 | 访问口令(支持手动修改,长度不得低于 12 位) |
|
|
293
|
+
| `defaultMode` | `string` | `"minimal"` | 即时生效 | 移动端默认呈现视图:`"minimal"`、`"chat"`、`"full"` |
|
|
294
|
+
| `externalNotify` | `boolean` | `true` | 即时生效 | 任务完成时是否触发系统通知音效与设备震动 |
|
|
295
|
+
| `tunnel.enabled` | `boolean` | `false` | 重启生效 | 是否启用 Cloudflare 临时公网隧道 |
|
|
296
|
+
| `tailscale.serve` | `boolean` | `false` | 重启生效 | 是否尝试配置并监听 Tailscale 专有 HTTPS 证书通道 |
|
|
297
|
+
| `feishu.enabled` | `boolean` | `false` | 即时生效 | 是否开启飞书应用长连接双向通道 |
|
|
240
298
|
|
|
241
299
|
---
|
|
242
300
|
|
|
243
|
-
##
|
|
301
|
+
## 开源协议
|
|
244
302
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
---
|
|
303
|
+
本项目采用 [MIT 许可证](LICENSE) 进行开源。
|
|
248
304
|
|
|
249
|
-
|
|
305
|
+
### 相关文档与资源索引
|
|
250
306
|
|
|
251
|
-
|
|
307
|
+
- [立绘与动画工艺规范](docs/character.md):记录图像生成工具、共享提示词模板、规格尺寸与验收标准。
|
|
308
|
+
- [立绘基准帧定义(2026-09-28 定稿)](docs/art-refs/2026-09-28/):归档标准帧原图与全量提示词基线。
|
|
309
|
+
- [版本变更历史](CHANGELOG.md):记录各阶段版本详细演进与问题修复依据。
|
|
310
|
+
- [项目代码仓库](https://github.com/xingzhen199186/dsh-mini-remote):GitHub 官方主页。
|
|
252
311
|
|
|
253
|
-
|
|
312
|
+
### 致谢
|
|
254
313
|
|
|
255
|
-
|
|
314
|
+
本项目在通道交互与配对界面设计上,参考了 [dsh-pocket](https://www.npmjs.com/package/dsh-pocket)(作者 @shaobeichen)在多路径独立二维码呈现方面的工程构思。
|