前言¶
在 DSH 上用手機或 iPad 跟進同一會話時,常見問題是:一端連上另一端被擠下線、鎖屏再打開白屏要重載、各端流式輸出不同步。普通 Web 反代往往只解決「能連上」,不處理多端廣播和移動端掛起恢復。
下面介紹社區插件 dsh-anywhere-hub(維護者 liushQAQ,分類:客戶端)。它在 DSH 側統一主控 3083 端口,重構傳輸與事件流,面向 DSH iOS App 與桌面端實現多設備同時在線、實時同屏,並內置鎖屏後的 Fast-Resume 自愈與外網多種接入方式。插件當前版本 1.2.8(MIT),倉庫星標爲 0;安裝與配置以 GitHub README 爲準。
這是什麼¶
dsh-anywhere-hub 是 DeepSeek Harness(DSH)生態下的客戶端類插件:包名、實例 id 與 settings.yaml 配置鍵均爲 dsh-anywhere-hub,狀態目錄爲 $DSH_HOME/dsh-anywhere-hub/。宿主要求 Node ≥ 20、dsh ≥ 0.1.0,並依賴 @deepseek-ai/cordis ≥ 4.0.0。
除 DSH 本體多端協同外,插件還內置 zcode-rc/ 網關,可把桌面端「手機遠程頁」類 Web 上游(首個對接 ZCode)經改寫層代理到手機,與 DSH 共用同一套語法降級與緩存擊穿邏輯。社區目錄頁:SkillHub 插件頁。該目錄爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
核心能力¶
多終端同時在線、實時同屏¶
電腦(桌面客戶端或瀏覽器)、iPhone / iPad(DSH iOS App)可同時打開同一會話。任一端發送指令,各端屏幕同步滾動,AI 流式回覆在各端一致展示,避免「各打各的、消息看不見」。
Fast-Resume(鎖屏秒級自愈)¶
手機切後臺或鎖屏後,重新打開 DSH iOS App 時,插件側協調 靜默換票重連;README 描述在約 0.25 秒 內完成重連並補齊斷線期間的消息增量,減輕白屏與整頁重載。
3083 端口統一主控¶
無論桌面 DSH 還是無頭模式,由單進程監聽 3083,手機與公網接入同一進程,減少雙進程搶鎖、stored session 丟失類問題,多端狀態由同一主控聚合。
連接方式(局域網優先)¶
- 局域網(推薦):手機與電腦同一 Wi-Fi,在 DSH iOS App 中填寫
http://<電腦局域網IP>:3083,或掃碼接入。延遲低、無需額外穿透。 - 外網(按需):README 列出多檔方案——默認內置隧道(含國內鏡像與
http2協議選項)、Cloudflare Zero Trust 命名隧道、以及 SakuraFrp / OpenFrp / 自建 FRP、Tailscale、ZeroTier 或公網 IP 等自定義地址;在設置中填入穿透地址後可生成二維碼並由插件接管訪問認證與多端協同。
簡介中提到的 局域網 3082/3083 隔離與公網通道分層,與「3083 統一主控、局域網優先」一併使用;具體端口分工以實現機 README 與插件設置爲準。
訪問安全¶
局域網與公網可使用獨立訪問密碼,支持自定義固定密碼。連續輸錯密碼 5 次 的同一 IP 會被封禁 24 小時,用於降低公網掃描與暴力嘗試風險。
老版本 iOS / Safari 語法降級¶
DSH 官方前端使用的 ES2022 類靜態初始化塊、RegExp 後行斷言等語法,在 iOS 16.3 及以下 會在解析期報錯導致白屏。插件在 代理改寫層 自動做等價降級(含 static { } 改寫、new RegExp 分支、部分後行斷言語義等價或剝離、v flag 降爲 u 等),並對改寫結果做 ETag / Cache-Buster,減輕手機強緩存「服務端已修、客戶端仍舊白屏」的問題。README 註明:不含後行斷言但帶 v flag 的純字面量正則不改寫,以避免誤傷除法表達式。
版本與 UI 細節¶
插件採用「識別舊版本、代理層向下自適應」思路,不在操作路徑上強制升級彈窗;舊包名 dsh-anywhere 僅作兼容別名(狀態目錄遷移、舊 RPC、layout 鍵等),正式名稱僅爲 dsh-anywhere-hub。移動端抽屜底部賬號行右側增加「設置」齒輪入口,點擊後打開賬號菜單並進入設置,同時收起抽屜,避免 280px 抽屜遮擋設置面板。
ZCode 手機頁(內置網關)¶
從 v1.1.0 起,zcode-rc/ 隨包發佈。典型部署(在 Profile 目錄執行):
npx zcode-rc --target D:\zcode-rc\zcode-rc-gateway --task
或:
node node_modules/dsh-anywhere-hub/zcode-rc/install.mjs --target D:\zcode-rc\zcode-rc-gateway --task
--task 用於註冊開機自啓。完整 ZCode 鏈路需手機端 DSH iOS App、本插件、zcode-rc-gateway 與 ZCode 桌面端原版,README 中有分步說明(本文截斷處之後仍可在倉庫查看)。
安裝與啓用¶
在 DSH Profile 目錄(例如 ~/.dsh/profiles/desktop)下安裝:
# pnpm
pnpm add github:liushQAQ/dsh-anywhere-hub
# 或 npm
npm i github:liushQAQ/dsh-anywhere-hub
若曾安裝 npm 上他人佔用的舊名 dsh-anywhere,應先移除再安裝本倉庫:
pnpm remove dsh-anywhere
pnpm add github:liushQAQ/dsh-anywhere-hub
也可從本地 tgz 安裝(路徑按實際替換):
pnpm add /path/to/dsh-anywhere-hub-<version>.tgz
在 settings.yaml 中啓用:
plugins:
dsh-anywhere-hub:
enabled: true
安裝前建議閱讀倉庫源碼與 MIT 許可證。插件在當前 DSH 進程權限下運行,反代與隧道能力會擴大本機網絡暴露面,公網場景務必設置強密碼並理解封禁策略。
典型用法¶
局域網同屏¶
- 手機連接與電腦相同的 Wi-Fi。
- 打開 DSH iOS App,地址填
http://<電腦局域網IP>:3083,或掃描插件提供的二維碼。
公網隨身¶
- 按 README 開啓並配置任意外網方案,獲得穩定訪問地址。
- 在 DSH iOS App 中填寫該公網地址,與家中電腦上的同一會話實時接續。
適用場景與注意¶
適合誰:已使用或計劃使用 DSH iOS App,需要在手機、平板與電腦間切換且希望保持同屏與流式一致的用戶;需要在 iOS 14.5+ / 15 / 16.3 等老系統上打開 DSH Web 前端的用戶;想把 ZCode 等桌面「遠程頁」接到同一套手機殼的用戶。
注意:
- 依賴 GitHub 源安裝時,需本機能訪問 GitHub;README 推薦
github:liushQAQ/dsh-anywhere-hub以繞開 npm 發包與同名包混淆。 - 語法降級對未知正則形態可能放寬匹配範圍,換取「不崩頁」;極端前端寫法仍可能有邊界,見 README「已知邊界」。
- 外網穿透與安全策略由使用者自行選型;插件提供密碼與 IP 封禁,不替代防火牆與 Zero Trust 整體設計。
結尾¶
dsh-anywhere-hub 把 DSH 多端協同收攏到 3083 主控 + 代理改寫層:同屏廣播、Fast-Resume、老 iOS 兼容與外網通道在同一插件內完成,並可擴展更多 Web 上游。進一步瞭解功能與版本說明,見 SkillHub 目錄頁 與 GitHub 倉庫。