DSH Remote Desktop · 远程桌面
在另一台电脑的 DSH 中,连接并操作主机上的同一个 DSH 工作环境。
DSH Remote Desktop 是 DeepSeek Harness 的远程访问插件。电脑 A 负责运行 DSH、执行任务和保存文件,电脑 B 显示 A 的 DSH 界面,并接收审批与任务完成事件。你可以在 B 上继续对话、查看执行过程、处理审批,也可以随时切回 B 本机的 DSH。
适合让办公室电脑、工作站或常开设备持续执行任务,再从另一台电脑接着操作。
安装 · 快速开始 · 网络与部署 · 配置参考 · 常见问题
功能
- 同一份工作环境:会话、文件读写、终端命令、模型调用与审批都在主机 A 上发生。
- 设置页配对:填写地址和令牌即可连接,支持粘贴整段配对信息,日常使用无需编辑配置文件。
- 主机与从机切换:两台电脑安装同一个插件,在设置页选择角色,配对信息持久保存。
- 本机与远程切换:从机可以返回本机工作,主机上的任务继续运行。
- 审批与完成提醒:待审批角标、事件时间线、标题闪烁和提示音;后台系统通知取决于运行环境与通知权限。
- 断线恢复:在断线面板修改地址与令牌、重试连接,或改用本机。
- 多种网络方式:支持局域网、虚拟组网与域名访问;支持 HTTP、HTTPS 和 WebSocket 转发。
- 共享开关:关闭「共享本机」会断开从机连接并释放中继端口。
工作方式
电脑 B · 从机 电脑 A · 主机
B 的 DSH 界面 A 的 DSH 工作环境
↓ ↑
本地代理 127.0.0.1:9528 ── HTTP(S) + WS ──→ 插件中继 :9527
配对令牌鉴权 文件 / 工具 / 审批
这里的“远程桌面”指 DSH 的 Web 界面,功能范围限于 DSH。两台电脑均需安装 DSH 和本插件;从机仍运行自己的 DSH 与本地代理。远程会话使用主机的模型配置和文件环境。
安装
使用前准备
- 两台电脑均已安装并能正常打开 DeepSeek Harness 的 Web 界面或桌面客户端。
- 两台电脑网络可达,主机中继端口可访问。
- 插件提供可直接加载的 JavaScript,无需自行编译。
- 插件使用 DSH 的 Web 服务与客户端扩展接口,目前未声明最低兼容版本;旧版宿主遇到加载问题时,请先更新并检查实际使用的 profile。
从 GitHub 安装
两台电脑都要安装。 普通 dsh web 用户执行:
dsh plugin --profile web add github:qlings/DSH-Remote-Desktop
固定到指定版本:
dsh plugin --profile web add "github:qlings/DSH-Remote-Desktop#v1.4.5"
自定义 profile 请将 web 替换为实际名称。安装后按宿主提示重新加载或重启 DSH,打开 设置 → 远程桌面。
DSH Desktop 用户:优先使用应用内的插件安装入口,填写 github:qlings/DSH-Remote-Desktop;也可以让 DSH 助手通过插件安装工具安装这个 GitHub bundle。桌面客户端的 profile 由应用管理,命令行安装到 web 不一定会显示在桌面客户端中。
如果 GitHub 安装出现
allowBuilds提示,请核对来源,并按 DSH 给出的提示处理后重试。
从本地目录安装
下载并解压仓库,或克隆到本地:
git clone https://github.com/qlings/DSH-Remote-Desktop.git
在宿主插件安装工具中选择该目录。Web profile 也可以安装绝对路径:
dsh plugin --profile web add /absolute/path/to/DSH-Remote-Desktop
插件包名为 @local/dsh-remote-desktop,与 GitHub 仓库名不同。当前通过 GitHub / 本地目录分发,未提供 npm 安装方式。
更新与卸载
通过宿主插件管理器更新或移除。CLI 用户可重新执行 GitHub 安装命令更新默认分支;固定标签安装时,需显式改为目标版本。
dsh plugin --profile web remove @local/dsh-remote-desktop
移除插件不会主动清理已保存的配对状态文件。
快速开始
全新安装且未预设角色、共享配置时,插件默认不共享本机。先在设置页选择这台电脑的用途。
1. 电脑 A:共享工作环境
- 正常启动并打开 A 的 DSH。
- 进入 设置 → 远程桌面,选择用于执行任务的主机角色,打开 共享本机。
- 复制 配对地址 和 配对令牌,或使用合并复制配对信息的按钮。
- 确认 B 能访问 A 的中继端口,默认 TCP
9527。
可以给 A 设置容易识别的本机名称,例如“办公室工作站”;B 的状态栏会显示它。
2. 电脑 B:保存配对并连接
- 打开 B 的 设置 → 远程桌面,选择连接其他电脑的从机角色。
- 填写 A 的地址和令牌,或点击 粘贴配对信息。
- 点击 保存并连接,等待状态显示已连接,进入远程桌面。
地址示例:192.168.0.33:9527。也支持把 地址|令牌 整串粘到地址框,或粘贴包含 host:、token: 的两行配对信息。配对修改即时生效,通常无需重启。
3. 返回本机与停止共享
- B 返回本机:关闭「连 A / 连本机」开关,或点击工具栏的「回到本机」。A 的任务继续运行。
- A 停止共享:关闭「共享本机」,现有远程连接会断开;再次打开后可重新连接。
- 换主机:在 B 的设置页修改地址和令牌后重新保存。
网络与部署
| 场景 | 主机端准备 | 从机地址示例 |
|---|---|---|
| 局域网 | 打开共享,允许 B 访问 TCP 9527 | 192.168.0.33:9527 |
| Tailscale 等虚拟组网 | 两台电脑加入可互通的网络 | 100.x.y.z:9527 |
| 域名与 HTTPS 反向代理 | 代理根路径与 WebSocket,配置 advertise |
https://dsh.example.com |
| 主机直接提供 HTTPS | 配置 tlsCert、tlsKey 与对外地址 |
https://dsh.example.com:9527 |
不带协议的地址默认使用端口 9527;显式使用 http:// 或 https:// 时,未填端口分别使用 80 或 443。不支持 URL 子路径。
HTTPS 反向代理
Caddy 示例:
dsh.example.com {
reverse_proxy 127.0.0.1:9527
}
主机将 advertise 设为 https://dsh.example.com,从机填写同一地址。advertise 只控制展示的配对地址,不会自动配置 DNS、证书或防火墙。
nginx 需要转发 WebSocket,在已有 HTTPS 站点内配置:
location / {
proxy_pass http://127.0.0.1:9527;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
}
代理需挂在根路径 /,不支持 https://example.com/dsh/。
配置参考
日常配对、角色切换、共享开关、本机名称和本机 / 远程切换可在设置页完成。高级配置由宿主的插件配置提供。
状态文件位于 $DSH_HOME/dsh-remote-desktop.json;未设置 DSH_HOME 时使用 ~/.dsh/dsh-remote-desktop.json。
| 配置项 | 默认值 | 说明 |
|---|---|---|
role |
"" |
自动选择;也可设为 host、client 或 off |
host |
"" |
从机连接的主机地址 |
token |
自动生成 | 配对令牌,两端需一致 |
name |
系统主机名 | 本机显示名称 |
bind / port |
0.0.0.0 / 9527 |
主机中继监听地址与端口 |
share |
见下文 | 主机共享开关 |
localPort |
9528 |
从机本地代理端口,仅监听 127.0.0.1 |
autoOpen |
true |
从机自动进入远程界面 |
mode |
"" |
跟随保存的模式;可显式设为 remote 或 local |
advertise |
"" |
展示的主机对外地址 |
allow |
[] |
来源 IP 白名单;为空时仍需令牌 |
tlsCert / tlsKey |
"" |
主机 HTTPS 证书与私钥路径 |
caFile |
"" |
从机使用的自定义 CA 证书路径 |
insecure |
false |
从机是否跳过 TLS 证书校验,仅供调试 |
dshPort |
自动探测 | 主机本地 DSH Web 端口,探测失败时可指定 |
secret |
自动读取 | 高级选项:主机 browser-session 密钥 |
stateFile |
默认状态文件 | 自定义状态文件路径 |
持久化与优先级: 设置页保存的地址、令牌、角色等优先于配置初始值;role: off 始终停用插件,显式 mode 优先于保存的模式。全新状态且未显式设置 role / share 时共享关闭;已有状态或显式配置角色时,请同时检查 share,其配置默认值为 true。
高级配置示例(调整已有插件行的 config,不要重复插入):
- id: dsh-remote-desktop
name: '@local/dsh-remote-desktop'
config:
role: host
share: false
bind: 0.0.0.0
port: 9527
advertise: https://dsh.example.com
访问边界
- 配对令牌允许从机操作主机 DSH,包括其中可用的文件、工具与审批能力。只交给可信设备与使用者。
- 主机使用自己的 browser-session 密钥为上游请求签名;从机不需要主机 DSH 启动 token。从机代理注入配对令牌,并隔离两端 Cookie。
- 令牌由 18 字节随机数据生成并以 Base64URL 保存;状态文件与本机设置接口含配对信息,应按敏感配置保管。
- 公网连接请使用 HTTPS 或可信虚拟组网;HTTP 不加密传输内容。
allow检查直接连接中继的来源 IP;反向代理部署需结合代理端访问控制。- 需要立即中止访问时关闭共享;更换令牌可使旧配对失效。
常见问题
| 现象 | 检查方式 |
|---|---|
| 安装后找不到设置入口 | 确认装到了当前宿主的 profile,重新加载或重启 DSH |
| 未拿到 DSH Web 端口 | 在 A 上打开一次 DSH;仍无法探测时设置 dshPort |
| 连接被拒绝或超时 | 检查共享开关、地址、端口、防火墙与组网连通性 |
| 返回 401 | 检查令牌;设置了 allow 时还需检查来源 IP |
| 证书校验失败 | 检查域名与证书,私有 CA 可配置 caFile |
| 能打开界面但操作无响应 | 检查反向代理的 WebSocket Upgrade 转发 |
| 从机显示 502 | 检查主机中继、本机 DSH 服务与网络连接 |
| 本地代理端口被占用 | 更换从机的 localPort 后保存 |
| 没有系统通知 | 检查通知权限与系统设置;前台主要使用闪烁与角标 |
| 重启后仍连接之前的主机 | 配对信息会持久保存,在设置页修改后重新连接 |
反馈请前往 Issues,附插件版本、DSH 版本、主机 / 从机角色和脱敏错误信息。请勿提交配对令牌、凭据文件或生产证书私钥。
开发与验证
node verify.mjs
自检脚本覆盖配对鉴权、状态与配置路由、角色切换、共享开关、HTTP / HTTPS、WebSocket、持久化及异常连接等行为。它使用临时插件状态目录;部分完整代理检查需要本机 DSH 凭据与可访问的 DSH Web 服务,缺少条件时会跳过相应检查。
通过 DSH_WEB_URL 指定运行中的 DSH Web 地址,例如 PowerShell:
$env:DSH_WEB_URL = 'http://127.0.0.1:58414'
node verify.mjs
test/cert.pem 与 test/key.pem 是公开的自签测试夹具,仅用于自检,禁止用于实际部署。
| 文件 | 用途 |
|---|---|
index.js |
主机中继、从机代理、事件流与设置接口 |
client.js |
设置页、远程界面、工具栏与提醒 |
cordis.patch.yml |
DSH bundle 注册,初始 config: {} |
locale/、icon.svg |
中英文元信息与插件图标 |
verify.mjs、test/ |
自检脚本与测试证书 |
No comments yet. Be the first to write one.