前言¶
DeepSeek Harness(DSH)的日常开发往往绑在一台固定机器上:工作区、会话历史、模型与工具调用都落在本机 Gateway 后面。若想在另一台电脑的官方 Harness 界面里继续同一套工作区与会话,常见做法是自建网页、同步数据库或换用非官方客户端,维护成本和界面一致性都偏高。
dsh-private-remote 走另一条路:保留官方 Desktop UI,通过 Tailscale 把 Client 端本机 Gateway 的 /api 与 /api/remote.mux 切到远端 Host,不复制会话数据库,也不另做网页。下面介绍它的角色划分、安装步骤与安全边界。
这是什么¶
dsh-private-remote 是社区维护的 DSH 客户端类插件,仓库 MikyWang/dsh-private-remote,维护者 MikyWang。目录页:skillhub.cn 插件页。
当前插件版本 0.1.0,要求 DeepSeek Harness 0.2.1-rc.3(见仓库 README)。简介与 README 一致:在官方 Desktop 界面中,对接已配对的 Harness Host,延续其工作区、会话、流式回复与审批流程。
两种角色与数据路径¶
插件在同一 bundle 里区分三种运行模式:
| 角色 | 位置 | 作用 |
|---|---|---|
client |
你正在使用的官方 Desktop | 将本机 Gateway 的 /api、/api/remote.mux 指向远端 Host;提供顶部状态胶囊与设置页。 |
host |
另一台电脑上的 Harness | 在 Tailscale 地址上监听,仅转发白名单内的官方会话、工作区、审批/提问接口;不复制会话数据库。 |
both |
同一台机器 | 既提供 Host,又连接另一台 Host。 |
核心路径为:
官方 UI → 本机 Harness Gateway → 远端 Harness Gateway → 官方 session/workspace API
前提条件¶
使用前需同时满足 README 中的四条前提:
- 两台机器均安装并登录 同一 tailnet 的 Tailscale。
- 两台机器均安装 DeepSeek Harness 0.2.1-rc.3。
- Host 端必须有 Tailscale IPv4(
100.64.0.0/10);若无,需启动并登录 Tailscale。 - 用 Tailscale ACL 限制哪些设备能访问 Host 端口;没有应用层配对令牌可替代这一步。
安装与启用¶
Host 与 Client 两台机器安装同一个 bundle。步骤来自 README「三、安装」:
- 打开官方 插件 / Plugins 页面。
- 添加 GitHub 仓库地址(不要用旧的
v0.1.0Release 资产):
https://github.com/MikyWang/dsh-private-remote
- 启用
dsh-private-remote。
本机开发时,README 提到可用 link: 指向本地 bundle 路径(示例:C:/git/dsh-private-remote/bundle)。
DSH 生态是「一切皆插件」;社区目录站点与 DeepSeek / 幻方无官方从属关系,安装前宜自行查看仓库源码与 MIT 许可证。插件以当前 dsh 进程权限运行,Host 白名单内的会话与工作区对能连上 Tailscale 端口的 peer 而言等价于 owner 操作面,安装前应理解这一点。
Host 端设置¶
- 打开 设置 → 私人远程。
- 运行模式选 Host 或 两者。
- 端口默认
18082,可修改;Host 只监听本机检测到的 Tailscale IPv4,不能选回环、私网或公网地址。 - 保存后 Host 桥自动启动。页面会显示 Tailscale 监听地址(形如
http://100.x.y.z:18082)、本机设备名与已连接设备。 - Windows 防火墙应只放行 Tailscale 网段 到该 TCP 端口,不要映射到公网。
Host 端没有令牌、没有「显示/轮换令牌」,也没有「删除令牌」。停止监听时点 停止 Host 桥;恢复时点 启动 Host 桥。
Client 端与典型用法¶
- 在 Client 的 设置 → 私人远程,运行模式选 客户端 或 两者。
- 在「Host 地址」填入 Host 设置页显示的 Tailscale 地址,例如:
http://100.x.y.z:18082
可省略 http:// 与端口;默认端口为 18082。
- 点 测试连接,成功后点 进入远程。页面刷新后,官方侧栏显示远端工作区。
- 顶部状态胶囊显示
远程 · <Host>;会话标题旁显示远端工作区。没有令牌输入框;远端显示名来自 Host 的设备名。
断开与重连(README「五、Client 设置」):
- 断开连接:关闭远端连接,卸载 Gateway switch,回到本地模式;保留上次 Host 地址以便预填。
- 切换回本机:回到本地并清除保存的 Host 地址。
- 意外断线:已加载页面进入
remote-offline,提交会被拒绝,不会悄悄在本机执行;需点断开或重新连接。 - Host 进程重启:客户端回到本地模式,仅预填地址;重新点「进入远程」即可,不需要令牌。
安全模型与暴露范围¶
README 强调:没有应用层配对令牌。任何能连上 TailscaleIP:port 的客户端都会被 Host 当作 owner 等价 Peer;真正边界是 Tailscale 设备身份与 ACL。
- 传输层有固定公开协议 key,用于协议分帧/版本隔离,不是认证秘密。
- 远程
settings/describe由 Host API 强制 redact secrets;settings/update|mutate|replace仍拒绝。 - 白名单限制会话、工作区、审批、提问等官方端点;终端、文件预览、插件管理、模型 Key、任意服务调用不暴露。
- 日志不记录业务负载、cookie 或模型 Key,只记录控制动作名、设备名、IP、错误码。
故障排查(常见项)¶
| 现象 | 处理 |
|---|---|
host/tailscale-missing |
本机无 Tailscale IPv4;启动并登录 Tailscale,确认 tailscale ip -4 有 100.x 地址。 |
Host 保存失败 host/config-invalid / host/bind-invalid |
端口须为 1–65535 且空闲;WSL2 mirrored 网络可能占用部分端口段,可改用 18082 等。 |
| 客户端测试连接失败 | 确认 Host 已启动、地址为当前 Tailscale IP/端口、防火墙放行 Tailscale 网段;可用 tailscale ping <host>。 |
| 旧 Release 安装后没有新界面 | v0.1.0 Release 早于 README 所述简化;用 GitHub 仓库地址安装最新提交。 |
更多条目见仓库 README「八、故障排查」。
卸载¶
- Client 先点 切换回本机。
- Host 点 停止 Host 桥。
- 在插件页移除
dsh-private-remote。 - 如需清理本机状态,删除
$DSH_HOME/private-remote/(含client.json、host-meta.json);无令牌文件。
结尾¶
dsh-private-remote 面向需要在官方 Desktop 里操作远端 Harness 工作区与会话、且已用 Tailscale 组网的用户:不复制会话库、不另建 UI,用 Gateway 切换与白名单转发完成远程续接。使用前务必配置 Tailscale ACL,并理解 Host 端口对 tailnet 内可达设备的信任模型。
- 目录页:https://www.skillhub.cn/plugins/MikyWang/dsh-private-remote
- GitHub:https://github.com/MikyWang/dsh-private-remote
- 架构与安全细节:仓库内
docs/ARCHITECTURE.md、docs/SECURITY.md等