前言¶
在 DSH 上用手机或浏览器跟进会话时,常见问题是多端互相踢线、锁屏后白屏断线、以及各端输出流不一致。普通 Web 访问往往只能单端占线,切到后台再回来还要手动刷新。下面介绍社区插件 dsh-anywhere(维护者 liushQAQ),它面向 DSH iOS App 与桌面/浏览器等多端同时使用同一进程与会话,并在传输与前端代理层做了针对性改造。
DeepSeek Harness(DSH)生态奉行「一切皆插件」;插件目录由社区站点 SkillHub 收录,与 DeepSeek / 幻方无官方从属关系。安装前请自行查看仓库源码与 MIT 许可证,插件随当前 DSH 进程权限运行。
这是什么¶
dsh-anywhere 是 DSH 的客户端类插件(package.json 当前版本 1.0.9)。定位是:多设备同时在线、实时同屏收发、锁屏后快速自愈重连(Fast-Resume),统一以 3083 端口作为本机主控入口,并可选局域网直连或多种公网穿透方式。
核心能力¶
多端同屏与 Fast-Resume¶
插件在 README 中说明,其重构了底层传输与事件流,目标包括:
- 多终端同时在线:桌面客户端、浏览器、DSH iOS App、iPad 等可同时打开同一会话;任一端发送指令,各端流式输出尽量保持同步滚动。
- Fast-Resume:应用切后台或锁屏后,重新打开 DSH iOS App 时,在约 0.25 秒内完成静默换票重连并补齐断线期间的消息增量,减少白屏与整页重载。
- 跨场景切换:在电脑与手机之间切换时,上下文与进行中的任务可延续使用。
统一 3083 端口主控¶
无论桌面 DSH 还是无头模式,插件侧强调由单进程监听 3083,手机与公网入口对齐同一端口,以降低双进程、文件锁争抢导致的 stored session 丢失或多端状态分裂。
连接方式¶
README 推荐优先局域网,再按需配置外网。
局域网(首选)
手机与电脑连同一 Wi-Fi,在 DSH iOS App 中填写:
http://<电脑局域网IP>:3083
也可通过插件生成的二维码接入。局域网 IP 在典型家庭网络下相对稳定,无需额外穿透即可低延迟使用。
外网(可选)
配置文件 tunnelMode 区分三种模式(见下文配置表):
- quick:内置自动隧道,面向国内网络做了镜像与
http2协议等说明,开箱即用。 - named:绑定 Cloudflare Zero Trust 命名隧道与自定义域名、
tunnelToken。 - fixed:填入自建 FRP、异地组网或公网 IP 等外部地址(
fixedWanUrl),由插件接管访问认证与多端协同相关逻辑。
访问安全¶
- 局域网与公网可分别设置访问密码(
lanAuthEnabled等)。 - 单 IP 连续输错密码 5 次会封禁 24 小时,用于降低公网扫描与暴力破解风险。
旧版 iOS Safari 白屏兜底¶
DSH 官方前端部分正则使用 RegExp 后行断言((?<=…) / (?<!…)),在 iOS 16.4 以下 Safari 会在解析阶段抛出 SyntaxError,导致整页白屏。插件在代理层将已知形态的字面量正则改写为运行期 new RegExp(...),老系统走降级分支;未知形态则剥离后行断言以保页面可打开(匹配范围可能放宽)。含 v flag 的纯字面量正则出于误伤链式除法的风险,README 标明当前不做改写。
移动端抽屉「设置」入口¶
DSH 移动端设置原在账号菜单弹层中,抽屉展开时不易发现。插件在抽屉底部账号行右侧注入设置齿轮(v1.0.8 起与头像同行),点击后打开账号菜单并进入设置,并自动收起抽屉,避免遮挡设置面板。
安装与启用¶
不要用 npm 上的同名包。 README 写明 registry 中的 dsh-anywhere@0.1.2(维护者 tangwenhao)与本仓库无关;npm i dsh-anywhere 装到的不是本插件。
在 DSH Profile 目录(例如 ~/.dsh/profiles/desktop)下,使用 GitHub 源安装:
# pnpm
pnpm add github:liushQAQ/dsh-anywhere
# 或 npm
npm i github:liushQAQ/dsh-anywhere
若曾误装 npm 同名包,先移除再安装:
pnpm remove dsh-anywhere
pnpm add github:liushQAQ/dsh-anywhere
也可安装本地打包的 tgz(路径按实际替换):
pnpm add /path/to/dsh-anywhere-<version>.tgz
在 Profile 的 settings.yaml 中启用(键名与 package.json 的 name 一致):
plugins:
dsh-anywhere:
enabled: true
运行环境要求(来自 package.json):Node >=20,DSH >=0.1.0,@deepseek-ai/cordis >=4.0.0。
典型用法¶
局域网同屏¶
- 电脑端已启用插件并运行 DSH。
- 手机连接同一 Wi-Fi,打开 DSH iOS App。
- 地址栏输入
http://<电脑局域网IP>:3083或扫码连接。
公网接续¶
- 在
~/.dsh/dsh-anywhere/settings.json中按需设置tunnelMode及对应字段。 - 在 iOS App 中填写插件提供的公网地址,与家中 DSH 保持同一会话协同。
首次运行会自动生成 settings.json,README 说明默认不包含个人敏感链接。
配置文件说明¶
路径:~/.dsh/dsh-anywhere/settings.json
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
lanEnabled |
boolean |
true |
是否开启局域网多设备访问 |
lanAuthEnabled |
boolean |
true |
局域网访问是否需要密码验证 |
tunnelMode |
string |
"quick" |
"quick" / "named" / "fixed" |
tunnelHostname |
string |
"" |
named 模式下的完整自定义域名 |
tunnelToken |
string |
"" |
named 模式下的 Cloudflare Token |
fixedWanUrl |
string |
"" |
fixed 模式下的自定义外部穿透地址 |
适用场景与注意¶
适合需要在 电脑 + DSH iOS App(或多台移动设备)之间频繁切换、且希望同一会话实时同步的用户。若仅偶尔用手机浏览器访问、不需要多端同屏与 Fast-Resume,可先评估是否必须安装额外插件。
安装与公网暴露前请阅读 GitHub 仓库 源码与 issue;公网模式务必设置强密码并理解 IP 封禁策略。插件不替代你对穿透方案(Cloudflare、FRP、Tailscale 等)的安全评估。
结尾¶
经过上面的步骤,你可以在 Profile 中从 GitHub 源安装 dsh-anywhere,用 3083 统一入口做局域网或可选公网的多端协同。更多细节与更新记录见仓库 README。