dsh-mobile-plugin:DSH 移动端远程连接与移动 API

前言

DeepSeek Harness(DSH)的会话、工具和工作区通常跑在桌面宿主上。如果你需要在手机上查看进度、创建或排序会话,或者希望有一台 Linux 机器在后台充当宿主而不开桌面客户端,单靠 SSH 或自写 HTTP 层往往还要自己处理配对、隧道和与 DSH 会话模型对齐的细节。dsh-mobile-plugin(仓库 WNLUO/dsh-mobile-plugin)由维护者 WNLUO 发布,在 DSH 插件市场里归类为客户端插件:它通过 relay v2 隧道对接 AI-HUB 手机 App,暴露受限的 /api/mobile/v1/* 移动 API,并支持局域网代理与配对策略;同一套插件也可作为无头 Cordis Host 独立运行,不依赖桌面外壳或 Electron。

这是什么

一句话:dsh-mobile-plugin 是 DSH 的移动端插件,负责移动 API、远程连接(relay)和局域网代理,并与 AI-HUB 手机 App 配对使用。

维护者与来源:GitHub 仓库 https://github.com/WNLUO/dsh-mobile-plugin,npm 包名 dsh-mobile-plugin(资料中版本为 0.1.96,MIT 许可证)。社区目录页:https://www.skillhub.cn/plugins/WNLUO/dsh-mobile-plugin(SkillHub 等为独立插件目录,与 DeepSeek / 幻方无官方从属关系)。

手机端需安装 AI-HUB App:Android 可从 app.wnluo.com 或 GitHub Releases 的 ai-hub-android.apk 获取;iOS 见 App Store(id6821681438)或 TestFlight 测试链接(见仓库 README)。

核心功能

以下能力均来自仓库 README 说明:

  • 通过 relay v2 隧道连接手机 App,并支持 局域网代理。
  • 提供受限的 /api/mobile/v1/* 移动 API(需 Bearer token)。
  • 会话:支持创建、工作区归属(workspaceId 或 cwd,前者优先)、与会话排序同步到宿主工作区。
  • 设备事件:GET /api/mobile/v1/events/stream 以 SSE 转发宿主事件。
  • 运维侧:自动归档闲置会话(仅隐藏,不删日志)、session_cleanup 工具可归档或永久删除已归档会话(删除需显式确认,且为排进待删队列,磁盘清理在宿主下次启动时进行)。
  • 本机配置接口与 配对授权策略(默认 code 凭配对码;deny 拒绝所有新配对)。

无头运行时,Web 服务默认监听 127.0.0.1:3080,配置接口仅限本机访问,不对局域网直接开放。

安装与启用

在 DSH 桌面端

官方方式是在 DSH 内置插件市场安装,而不是自行拼接 dsh plugin add github:... 命令。

  1. 打开 DSH 设置 → 插件,搜索并安装 dsh-mobile-plugin。
  2. 安装后进入 设置 → 移动端 → 打开配置页面,配置连接与配对。
  3. 插件市场负责检查与安装更新;通常更新后无需重启 DSH(首次带「本机调试 OTA」能力的 npm 包需重启一次 DSH,见 README)。

正式安装请使用 DSH 插件市场;README 明确不建议用 npm install --legacy-peer-deps 安装插件。

无头 Host(Linux)

需要 Node.js、pnpm,以及可用的 DSH 插件宿主依赖。在插件源码目录执行:

pnpm install --frozen-lockfile
DSH_HOME=/opt/dsh-mobile/.dsh DSH_MOBILE_PROFILE=mobile node host.js
  • DSH_HOME:数据根目录,默认 ~/.dsh。
  • DSH_MOBILE_PROFILE:profile 名称,默认 mobile。

生产部署时,启动器与插件本体分开管理:启动器同步到 /opt/dsh-mobile/,插件安装在 profile 中,例如:

cd <DSH_HOME>/profiles/<profile>
pnpm add dsh-mobile-plugin@<版本>

宿主会优先挂载 profile 中安装的插件;设备凭据库随 npm 包提供,无需单独安装。

典型用法

查看 relay 状态与配对信息(无头本机)

在无头 Host 本机执行:

curl http://127.0.0.1:3080/api/relay/status
curl http://127.0.0.1:3080/api/relay/pairing

管理远程连接(本机 POST)

无头运行时可通过本机接口管理远程连接,例如:

  • POST /api/relay/toggle:启用或关闭远程控制。
  • POST /api/relay/regenerate:重新生成配对码。
  • POST /api/relay/config:设置 relayUrl、lanEnabled、lanPort、name 和 pairingPolicy。
  • POST /api/relay/reconnect:重新连接隧道与局域网代理。

移动 API 调用需携带 Bearer token;创建会话时可传 workspaceId 或 cwd 以归入工作区。

配对请求可携带设备元数据(App 侧发送 id、deviceId、name、platform、osVersion、appVersion 等;局域网代理与中转会补充观察到的手机 IP)。

适用场景与注意

适合谁

  • 已在用 DSH,希望用 AI-HUB 手机 App 远程查看或轻量操控宿主、同步会话与工作区排序的开发者。
  • 需要在 Linux 上以无头方式跑 Cordis Host,并通过本机 relay 接口完成配对与隧道配置的场景。

权限与安全

  • 插件以当前 DSH / 宿主进程权限运行;安装前应阅读源码与 PRIVACY.md、SUPPORT.md,并确认许可证(MIT)是否符合你的合规要求。
  • 无头模式 Web 与配置接口默认只绑本机;远程能力依赖 relay 与配对策略,应妥善保管配对码,并按需设置 pairingPolicy。
  • 永久删除已归档会话不可恢复,且实现上与宿主「无运行时删会话文件」的约束一致,避免在进程存活时直接删磁盘日志导致宿主崩溃。

生态说明

DSH 采用「一切皆插件」的扩展方式;dsh-mobile-plugin 通过 npm 与插件市场分发,与 AI-HUB App、中转服务协同完成移动端连接,具体中转 URL 与 relay 配置在无头场景下通过 /api/relay/config 等本机接口设置。

结尾

dsh-mobile-plugin 把移动端连接、受限移动 API 和无头 Host 入口收拢到同一插件:桌面用户在插件市场安装后在「移动端」设置里完成配对;服务器侧可用 host.js 与 profile 内 npm 包做无头部署,并用本机 3080 端口的 relay API 管理隧道与局域网代理。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye