前言¶
DSH Desktop 的 Web 界面默認只監聽 127.0.0.1,手機在同一局域網外或需要離開工位時,無法直接打開桌面上的會話與工具審批。常見做法是另做一套移動端前端或依賴遠程桌面,維護成本高,且容易和桌面能力不同步。下面介紹社區插件 dsh-mobile-bridge(維護者 msz-legend):在桌面與手機之間加一層邊緣網關,手機仍加載桌面同一套 Web UI,流式輸出、WebSocket、RPC 與工具審批與桌面一致。
這是什麼¶
dsh-mobile-bridge 是 DeepSeek Harness(DSH)的客戶端類插件,許可證 MIT,當前倉庫版本 0.5.0,運行環境要求 Node >= 22。它解決「手機安全、完整地使用本機 DSH Desktop」:掃碼配對獲得長期設備令牌,經可選 cloudflared 臨時隧道、Tailscale、局域網或 Cloudflare 命名隧道對外暴露入口,網關自動改寫 Host / Origin 指向 loopback,無需改 DSH 源碼。
插件目錄與源碼:GitHub — msz-legend/dsh-mobile-bridge;社區目錄頁:skillhub.cn/plugins/msz-legend/dsh-mobile-bridge。DSH 生態以「一切皆插件」爲理念,社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
核心功能¶
接入與配對¶
桌面在 設置 → 手機橋接 生成 6 位一次性配對碼與二維碼(默認 5 分鐘有效);手機掃碼後獲得 HttpOnly Cookie 形式的長期設備令牌,之後打開同一地址即可使用。默認手機來源配對需在桌面點一次「允許」;配置 autoApprovePairing: true 可跳過桌面確認,配對碼的時效與限次限制仍生效。默認最多綁定 5 臺設備,每臺獨立令牌。
外網接入可多檔切換:cloudflared quick 臨時隧道(零 Cloudflare 賬號)、Tailscale 私網、局域網 http://<LAN IP>:8787、Cloudflare 命名隧道 固定域名。開箱即用場景下,安裝後插件可自動拉起臨時隧道;固定公網域名需自備 Cloudflare 賬號、域名與隧道 token(僅存本地 tunnel.json,權限 0600)。
會話與工具審批¶
手機端複用桌面 Web UI:會話列表、新建會話、發送與停止流式輸出、模型與推理等級、插件、文件預覽、終端等與桌面一致。Agent 發起工具審批時,手機彈出卡片,可選 僅本次 / 始終允許 / 拒絕;「始終允許」按工具名與參數指紋記憶。審批超時、遠程會話下手機離線等場景按 fail-closed 處理,默認不執行工具。
窄屏側欄改爲浮層與遮罩、進入會話不自動聚焦輸入框、觸屏常顯複製等控件,並支持瀏覽器「添加到主屏幕」全屏使用。
設備管理與穩定性¶
桌面 設置 → 手機橋接 → 設備管理 可查看在線狀態、逐臺或全部撤銷綁定;撤銷後令牌作廢、已連接手機立即斷開。本機 loopback 還提供 devices.json 等 HTTP 端點供腳本調用(經 edge 從手機訪問這些管理接口會返回 403)。
插件含隧道健康探測、Tailscale / Cloudflare 固定地址嚮導,以及可選將 cloudflared 註冊爲系統服務,以便重啓後地址穩定、舊二維碼長期可用(quick 隧道地址每次重啓會變,舊鏈接易出現 Cloudflare 1033/530 類錯誤)。
安裝與啓用¶
插件以本地 bundle 形式安裝,官方 README 給出的方式爲將倉庫目錄裝進 DSH Desktop:
plugin_manager action=install_bundle target=<本目錄絕對路徑>
也可在 profile 的 dependencies 中寫 link:<本目錄> 並加入 dsh.profile.bundles,然後重啓 Desktop。依賴 npm 包 qrcode(缺失時配對頁降級爲文本地址 + 配對碼)。
安裝後重啓 Desktop;若啓用 tunnelEnabled: true 且 tunnelMode: 'quick',可自動得到臨時公網地址。典型最小配置片段如下(完整字段見倉庫 README):
- id: dsh-mobile-bridge
name: 'dsh-mobile-bridge'
config:
enabled: true
edgeHost: '127.0.0.1'
edgePort: 8787
tunnelEnabled: true
tunnelMode: 'quick'
autoApprovePairing: false
maxDevices: 5
publicBase 留空時按顯式配置、tunnel.json、cloudflared quick、Tailscale、LAN、loopback 的優先級自動探測。
典型用法¶
- 完成 bundle 安裝並重啓 Desktop,按需安裝 cloudflared(Windows 示例:
winget install Cloudflare.cloudflared)或登錄 Tailscale。 - 桌面打開 設置 → 手機橋接,點「生成配對碼」,用手機掃二維碼或輸入 6 位碼;若未開免確認,在桌面點「允許」。
- 配對成功後手機進入與桌面相同的 Web UI;之後收藏該 URL 或添加到主屏幕即可。Agent 需授權時在手機上完成審批卡片操作。
- 需要撤銷某臺手機時,在桌面設備管理中撤銷,或在本機執行(
<端口>爲 DSH 監聽端口):
curl http://127.0.0.1:<端口>/plugins/dsh-mobile-bridge/devices.json
curl -X POST -H 'content-type: application/json' -d '{"deviceId":"dev_xxx"}' \
http://127.0.0.1:<端口>/plugins/dsh-mobile-bridge/devices/revoke
適用場景與注意¶
適合:需要在通勤、會議或離席時用瀏覽器繼續 DSH 會話、看流式輸出、在手機上批准工具調用,且希望 UI 與桌面一致、不必維護第二套前端的開發者。
務必注意:經設備令牌訪問的瀏覽器與桌面同屬 owner 級權限;將入口暴露到公網相當於開放 owner 級遠程能力,只應配對自己的設備。插件在本機 DSH 進程權限下運行,安裝前應閱讀源碼與 MIT 許可證,自行評估隧道與 token 存放方式;敏感 tunnelToken 勿提交 git。
Tailscale 私網檔鏈路在 tailnet 內加密、不依賴公網暴露,README 將其列爲較穩妥選項;局域網 HTTP 檔 Cookie 在傳輸層不加密,README 建議配合 HTTPS 或僅可信網絡使用。
結尾¶
dsh-mobile-bridge 用邊緣網關把「只監聽 loopback 的 DSH Desktop Web UI」延伸到手機瀏覽器:掃碼配對、流式回顯與工具審批與桌面同源,並支持多種隧道與固定入口配置。進一步瞭解實現與截圖說明見 GitHub 倉庫 README,社區索引見 SkillHub 插件頁。