DeepSeek Harness(DSH)採用插件化架構,官方 Web UI 默認綁定在 0.0.0.0 時存在遠程代碼執行風險,綁定在 127.0.0.1 時手機無法訪問。dsh-ios-control 插件通過在獨立端口運行一個經過認證的反代網關,將官方 UI 安全地暴露到局域網,實現手機掃碼遙控電腦上的 agent。
插件定位¶
這是一個基於 dsh-remote-link 的個人定製版插件(MIT 許可證),由開發者 Hjay1101 維護。它主要解決“如何在不犧牲安全性的前提下,從移動端控制 DSH agent”的問題。
核心功能¶
- 手機掃碼遙控:通過二維碼或短碼進行一次性配對,手機瀏覽器可直接打開官方 UI 進行控制。
- 會話持久化:開啓
pairing.persistSessions後,DSH 進程重啓,已配對設備保持登錄狀態。 - 會話分叉工具 (
fork_session):模型可調用該工具,以最近一個回合爲邊界創建子會話,繼承上下文但不影響當前會話。 - 鏈路保活:針對 DSH 事件下行流缺乏心跳的問題,網關在空閒時注入 WS ping,避免連接被運營商 NAT 靜默斷開。
- 狀態監控:提供
/status狀態頁,實時展示連接的 RTT、設備身份、上游健康狀態及保活計數。 - 設備管理:支持查看已連接設備列表、踢出舊設備或生成新的配對碼。
- MiMo Code 支持:可作爲認證網關,將 MiMo Code 服務的移動端 UI 也轉化爲手機可遙控的形式。
- 認證網關:基於 Loopback 反代,提供 HMAC 挑戰-響應認證和 HttpOnly Cookie 會話管理。
安裝與啓用¶
通過官方 CLI 安裝插件:
dsh plugin --profile web add ./dsh-ios-control
安裝後,插件會接管 DSH 的 Web profile,在配置文件中添加 remote-link 配置項。默認綁定地址爲 0.0.0.0,端口爲 3081。
典型用法¶
配對設備:在聊天框輸入指令獲取一次性配對信息。
輸入:
給我配對碼
輸出:包含二維碼 URL、ASCII 二維碼圖及 6 位短碼。
管理設備:查詢或清理已配對的設備。
輸入:
看看誰連過我 / 踢掉我的舊 iPad
工具:remote_devices
創建子會話:嘗試不同的對話分支。
輸入:
分個叉試試別的方向
工具:fork_session
手動配對:若手機無法掃碼,可在任意設備打開配對地址。
訪問:
http://<IP>:3081/pair並輸入短碼。
查看狀態:在桌面瀏覽器查看鏈路健康度。
訪問:
http://127.0.0.1:<port>/status
適用場景與注意事項¶
該插件適用於需要隨時隨地對本地運行的 DSH agent 進行調試或交互的開發者。
安全限制:
* 基於 HTTP 傳輸,LAN 嗅探者可複製 cookie 接管會話(存在 HTTP 天花板)。
* 非 loopback 綁定且既無密碼又關閉配對時,網關將拒絕加載。
* 配對祕密僅在 URL fragment 中存在,服務器端只存儲 SHA-256 摘要,5 分鐘過期。
MiMo 模式:
* 在 MiMo Code 模式下,聊天框內的管理工具(如 remote_qr、fork_session)不可用,配對由 /qr 頁面承擔。
依賴與運行:
* 零運行時依賴,純 Node.js 實現。
* 配置文件中 persistSessions 設爲 true 時,會話摘要會以 0600 權限寫入 $DSH_HOME/remote-link/ 目錄。