官方 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 作为社区插件,通过扩展官方接口,实现了无需改动源码的局域网接入方案。