dsh-roam
Manifest valid★ 1把电脑上的 DeepSeek Harness 会话漫游到手机:浏览器扫码即用,AI-HUB App 共用同一地址和配对码。
dsh-roam
把电脑上正在运行的 DeepSeek Harness 会话带到手机浏览器:扫码即用,不安装 App,不依赖 AI-HUB,也不用把会话搬到云端。
1.0 起只保留浏览器客户端。AI-HUB 兼容版本停在 0.3.1,见 legacy/aihub。
它解决什么问题
DeepSeek Harness 的工作台在电脑上,人离开电脑后,正在跑的会话就不方便继续。dsh-roam 给官方 DSH 加一条本地优先的移动接入层:
- 手机浏览器零安装:扫码后看会话列表、继续对话、新建会话、切换模型与预设、发送、取消、回答提问。
- 不绑定中转账号:局域网直连;公网可用 Cloudflare 临时隧道,也可以接自己的固定域名和 frpc。
- 不复制整个桌面:手机端只做会话操作,设置、插件、终端和文件管理仍留在电脑上。
- 默认不敞开门:设置面板只接受本机回环请求;二维码令牌一次性、5 分钟有效;公网入口必须输入 6 位连接密码。
它不是远程桌面,也不会把 DSH 的完整界面投到手机上。
和旧版本的区别
| 能力 | 1.0 浏览器版 | 0.3.x AI-HUB 兼容版 |
|---|---|---|
| 手机浏览器扫码 | ✅ | ✅ |
| AI-HUB 原生 App | ❌ 已移除 | ✅ |
dsh-mobile-plugin 依赖 | ❌ 已移除 | ✅ |
| 设备台账 / App 在线状态 | ❌ 已移除 | ✅ |
| 独立的桌面配对页 | ❌ 已移除,统一进设置面板 | ✅ |
| 适用分支 | main | legacy/aihub |
如果你仍在使用 AI-HUB App,请固定在 0.3.1,不要升级到 1.0。
快速开始
要求:DeepSeek Harness 0.2.x、Node.js 22.19+,电脑和手机在同一 Wi-Fi(首次配对)。
dsh plugin --profile web add dsh-roam@1.0.0
重启 DSH,打开 设置 → 连接手机:
- 手机相机扫描 同一 Wi-Fi 里的二维码。
- 浏览器打开会话列表,选择会话继续。
- 二维码 5 分钟有效,过期或使用一次后点 换一张。
任意网络
两种方式,任选一种:
临时隧道:在 任意网络设置 里点 开启临时隧道。插件优先使用 cloudflared 快速隧道,失败时切到 pinggy。地址每次开启都会变化,适合临时外出。
固定域名:有自己的域名和 frpc / SakuraFrp 时,填 https://你的域名 并保存。要求:
- 域名直接解析到隧道节点,不要套 CDN;
- 开一条 HTTP 隧道(80 端口)用于 Let's Encrypt 验证和跳转,一条 HTTPS 隧道(443 端口)指向本机
43128; - frpc 的「自动 HTTPS」填同一个域名,并在自定义设置里加
auto_https_mode = http; - 面板里点 申请证书,插件会把
<域名>.crt/<域名>.key写进 frpc 工作目录。证书 90 天有效,剩 30 天时自动续期;续期后需要重启隧道才会加载新证书。
固定公网地址只接受 https://。只要请求带有 Forwarded、X-Forwarded-*、X-Real-IP 或 CF-* 转发头,就按公网入口校验密码;配置固定公网域名后,所有配对也一律要求密码。安全判定不依赖可被改写的 Host。
临时隧道每次开启都会换域名,手机需要重新扫码;需要长期使用请配置固定域名。
安全边界
/phone-bridge/*管理接口只接受本机回环请求,并校验 Host 与同源;面板不会把管理接口暴露到公网。- 局域网二维码里是 32 字节一次性令牌,5 分钟有效,配对后作废。
- 公网入口必须输入 6 位连接密码;连续输错会触发限速。带转发头的请求和配置了固定域名的实例一律按公网入口处理。
- 浏览器会话只认服务端签发的 Cookie,不按来源 IP 放行,也不会把客户端自带的 Cookie 提升为会话。会话 30 天绝对过期,插件重启后需要重新扫码。
- 修改连接密码会让已连接的浏览器立即失效。
- 本版本没有应用层端到端加密。 公网路径的 TLS 在 Cloudflare / Pinggy / frps 或反向代理处终止,运营方理论上能看到会话明文。对内容保密有更高要求时,请使用自己控制的固定域名与反向代理,或只在可信局域网内使用。
数据与网络
| 项目 | 位置 / 行为 |
|---|---|
| 数据目录 | %USERPROFILE%\.dsh\dsh-roam(设置 DSH_HOME 时跟随) |
| 设置 | settings.json |
| 连接密码 | mobile-pairing-pin.json,仅本机可读 |
| 证书状态 | acme/ |
| cloudflared | 首次开启临时隧道时下载到数据目录的 bin/ |
| 端口 | 默认 43128,被占用时自动顺延 |
网络请求只发生在:开启临时隧道时(Cloudflare / Pinggy)、申请或续期证书时(Let's Encrypt)。没有遥测,没有账号体系,不把会话内容上传到插件自己的服务器。
常见问题
手机打不开二维码里的地址:确认同一 Wi-Fi、电脑防火墙放行实际端口,并确认手机没有连访客网络。端口不是 43128 时以面板显示为准。
公网一直转圈:多半是 cloudflared 下载失败,换网络或改用固定域名。临时隧道地址每次开启都会变,出门前重新扫一次。
二维码提示失效:浏览器令牌 5 分钟过期,面板会自动换码;也可以点 换一张。
升级后 App 连不上:1.0 已移除 AI-HUB。需要 App 请回退 0.3.1 或使用 legacy/aihub 分支。
升级后浏览器要求重新扫码:浏览器会话只存在内存中,插件升级或 DSH 重启后需要重新扫码;这是为了不让旧 Cookie 长期有效。
开发
pnpm install
pnpm build # 清空 lib,tsc 编译 src/,client.js 原样复制
pnpm test # 先构建,再跑全部测试
src/是唯一源码:index.js(宿主入口)、client.js(设置面板,浏览器经典脚本)、bridge/*.ts(桥接、隧道、证书、手机页面)。lib/是构建产物,不提交、不手改。测试跑的是lib/,所以改完源码必须先构建。src/client.js不能加顶层import/export,否则设置页白屏。
发布前检查:
pnpm test
npm pack --dry-run
测试状态
- 已验证:Windows 11、DSH
0.2.0-rc.2、Android 14(API 34)浏览器。 - 未实测:iOS / iPadOS Safari、Firefox、低端 Android。插件没有平台锁定,遇到问题请附系统版本和浏览器版本提 issue。
- 公网验证使用固定域名 + frpc + Let's Encrypt 证书;临时隧道由 cloudflared 提供。
版本记录
- npm:https://www.npmjs.com/package/dsh-roam
- Releases:https://github.com/winlin926/dsh-roam/releases
- AI-HUB 兼容版:
0.3.1/legacy/aihub
许可证
MIT,Copyright (c) 2026 winlin926。第三方组件与许可证见 THIRD_PARTY_NOTICES.md。
Comments
Loading…
From the same category
by awesome-dsh-plugin
A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表
★ 20.4k
CC0-1.0
Python
Oct 23, 2026
by 0xsline
DeepSeek Harness (DSH) ecosystem: curated plugins, tools, and infrastructure from dsh-external/hub and the public dsh-plugin topic.
★ 1.3k
CC0-1.0
Python
Oct 16, 2026
by pax-beehive
Open-source CLI, schemas, resolver, and DSH agent tools for DSH Plugin Hub
★ 277
MIT
TypeScript
Oct 20, 2026
by xiajiajun516
DeepSeek Harness (DSH) backup & restore plugin — export, import, migrate and sync your complete DSH configuration, plugins, MCP servers, skills and workspace. One-click migration to another machine.
★ 230
MIT
TypeScript
Oct 23, 2026
dsh plugin --profile web add dsh-config-managerby yjh051108
推荐组件(非必须):DeepSeek Harness 运行时注入器;已随 dsh-routing-suite 单仓库化保留,本仓库继续维护/发布。
★ 166
TypeScript
Oct 16, 2026
dsh plugin --profile web add @dsh-external/dsh-super-injectorby jigjoy-ai
A CLI that turns a goal into a pull request - and a sandbox for testing concurrent AI coding agents on the Mozaik runtime.
★ 125
MIT
TypeScript
Oct 22, 2026