dsh-gb:手机变成 DSH 的语音遥控外设

前言

DeepSeek Harness(DSH)采用插件化架构,允许开发者通过扩展来增强功能。在使用 DSH 进行开发或操作时,有时需要利用移动设备进行交互或远程控制。dsh-gb 是一个客户端插件,旨在将手机转化为 DSH 的语音遥控外设。它通过局域网通信或内置公网隧道,让手机具备状态监控、语音输入、审批处理及消息浏览的能力。

核心功能

dsh-gb 提供了以下核心功能:

  • 实时状态栏:在手机界面显示当前工作区、会话、Agent 状态(运行中/空闲/待审批)及消息浏览进度。
  • 语音输入:直接调用手机输入法的语音转文字功能,通过按键发送消息。
  • 审批与选择题:支持 YES/NO 审批逻辑,以及选择题选项的选择与提交。
  • 摇杆与按键:使用摇杆和按键浏览消息、翻页,以及暂停 Agent 运行。
  • 会话管理:支持在手机上切换工作区、会话或新建会话。
  • 公网隧道:通过内置的 cloudflared 实现异地访问,无需配置花生壳等外部服务。
  • 零运行时依赖:二维码编码器为内置实现,无额外 npm 依赖。

安装与启用

前置要求

安装前请确保环境满足以下条件:

  • Node.js ≥ 20
  • pnpm ≥ 10
  • git

安装命令

在 DSH 的 Web 配置目录下执行以下命令安装插件:

dsh plugin --profile web add github:zingzheng/dsh-gb

安装完成后,需要重启 DSH 以加载 Host 半部组件。重启后,在 GUI 设置页的「掌机」选项中,即可看到动态二维码进行连接。

使用说明

局域网连接(默认模式)

  1. 确保手机与运行 DSH 的电脑处于同一局域网。
  2. 在 DSH 的 GUI 设置页找到「掌机」选项,扫描显示的二维码。
  3. 手机界面会显示 Game Boy 风格的遥控面板。

基本操作

  • 语音输入:使用手机输入法进行语音转文字,按 A 键或回车发送。
  • 消息浏览:使用 ←→ 键切换消息,↑↓ 键滚动查看完整内容。
  • 审批与选择题:当有审批或选择题时,界面会有高亮提示。使用摇杆或方向键选择,按 A 键确认。

公网隧道

默认模式仅支持局域网连接。若需异地访问,可在 GUI 设置页切换至「公网模式」:

  • 快速隧道:首次启用时会自动下载 cloudflared(约 30-60MB,缓存于 ~/.dsh/cache),生成临时公网地址(*.trycloudflare.com)。地址在 DSH 重启后会变化,需重新扫码。
  • 命名隧道:需在 Cloudflare 控制台创建隧道并映射主机名,填入设置页后可获得固定地址。

技术细节

  • 端口:默认监听端口为 7788。若端口被占用,服务会自动顺延至 7795。
  • 鉴权:采用持久化令牌鉴权。令牌存储在 ~/.dsh/dsh-gb.token,可在设置页重置。
  • 架构:插件分为 Host 半部和 Client 半部。Host 半部运行在本地,提供 HTTP 服务器和 SSE 推送;Client 半部集成在浏览器中,负责二维码生成和 UI 渲染。
  • 安全:所有接口均要求随机令牌。/info 接口仅允许本地回环访问,动作接口收紧了 CORS 限制。

适用场景

  • 需要 DSH 在后台运行时,用手机随时查看状态或发送指令。
  • 在不操作电脑的情况下,通过手机处理审批流或选择题。
  • 在异地网络环境下,通过公网隧道安全地控制本地 DSH。
羽毛球分组比赛记分
小程序二维码

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

小夜