官方 dsh web 默認僅監聽 127.0.0.1,手機 App 無法直接連接。dsh-mobile-gateway 插件解決了這個問題。它通過覆蓋 webserver 配置,將服務器地址改爲 0.0.0.0,並掛載一條 token 門控的 /m/api 前綴路由,供手機 App 使用。
核心功能¶
本插件主要提供以下能力:
- 服務器監聽所有網卡:通過
cordis.patch.yml覆蓋配置,無需修改源碼或重新編譯。 - 手機調用全部 RPC:在官方
/api旁掛載/m/api路由,驗證 token 後進程內轉發給官方apiProxy,不觸碰官方安全圍欄。 - 實時消息推送:提供
/m/api/events.mux和/m/api/events.hostWebSocket 下行流,幀格式與官方一致。 - 審批 / 提問應答:通過
/m/api/respond接口直通官方 respond 通道。 - 大圖發送:放寬請求體上限,支持 500 MB 消息圖片。
- 管理頁:提供
/m/路徑,僅限本機訪問。用於生成/輪換 token、按網卡生成配對二維碼、管理設備列表與屏蔽。 - 側邊欄入口:在官方 Web GUI 側邊欄底部(設置旁)顯示手機圖標,點擊彈窗或轉新標籤頁打開管理頁。
- 掃碼配對:二維碼編碼
服務器\|令牌,配套 App 掃碼自動填入。
安裝¶
使用官方 CLI 安裝插件:
dsh plugin --profile web add github:agent-mobile/dsh-mobile-gateway
配置¶
安裝後需要配置 token。token 必填,其餘字段有默認值。有兩種配置途徑:
途徑一:profile patch
編輯 ~/.dsh/profiles/web/cordis.patch.yml:
- id: mobile-gateway
config:
token: 換成一個長隨機串
allowSettings: true # 放行 settings.*,默認 true
allowCredentials: true # 放行 credentials.*,默認 true
maxRequestBodyBytes: 750000000
途徑二:Web GUI
在 Web GUI 的“設置 → 插件配置 → mobile-gateway”中修改,支持熱生效。
配置字段說明¶
| 字段 | 默認 | 說明 |
|---|---|---|
token |
(必填) | App 側以 Authorization: Bearer <token> 呈現;留空插件拒絕啓動 |
allowSettings |
true |
放行 settings.describe/update/replace/mutate |
allowCredentials |
true |
放行 credentials.describe/set/unset |
maxRequestBodyBytes |
750000000 |
單請求體上限(須與官方 connection 行同步調大) |
啓動與使用¶
配置完成後,直接啓動 dsh web 即可:
dsh web
啓動後,終端會打印 LAN 地址(例如 LAN: http://192.168.1.5:3080)。手機 App(需 v1.0.35+)在同一 Wi-Fi 下,通過該 LAN 地址連接,並在請求頭中攜帶 Authorization: Bearer <token>。
App 端點映射¶
App 需將請求前綴從官方 /api 改爲 /m/api:
- 官方 fork 直連:
POST /api/<method> - 本插件路由:
POST /m/api/<method> - 官方 WebSocket:
ws://…/api/events.mux - 本插件 WebSocket:
ws://…/m/api/events.mux
注意事項¶
- 版本要求:已驗證兼容
@deepseek-ai/dsh0.1.2-rc.1,Node.js 版本需滿足^22.19 || >=24。 - 局域網邊界:本插件僅提供局域網訪問,不提供公網隧道。如需外網訪問,需自行搭建 Cloudflare named tunnel 等帶認證的通道。
- 禁用
--trusted-host:不要使用--trusted-host參數,本插件通過獨立路由實現安全隔離。 - 卸載:如需停用,執行以下命令並重啓:
dsh plugin --profile web remove dsh-mobile-gateway
生態背景¶
DeepSeek Harness(DSH)採用“一切皆插件”的設計理念。dsh-mobile-gateway 作爲社區插件,通過擴展官方接口,實現了無需改動源碼的局域網接入方案。