dsh-phone-remote:把手机变成 Mac 的外接终端

前言

在 DeepSeek Harness(DSH)里跑 agent 时,常见情况是人坐在电脑前,但 Mac 屏幕只有一块,输入也绑在键盘上。想远一点看画面、用语音打字、或在沙发里用触控板滚动当前前台窗口,往往要另开远程桌面或自己拼一套脚本,权限和端口还不好管。

dsh-phone-remote 是维护者 g524843184-maker 发布的客户端类 DSH 插件(当前 GitHub 星标为 0)。它把同一局域网里的手机变成 Mac 的外接终端:语音输入、1:1 屏幕镜像、MacBook 触控板手势、语音回读,以及三个 agent 一键切换。插件在 DSH 启动时拉起本地服务 server/server.cjs,绑定 0.0.0.0:8787,以便手机访问;子进程由 DSH 负责,继承 DSH 的系统权限,无需再单独授权一个独立应用。

这是什么

  • 名称:dsh-phone-remote(手机遥控器)
  • 分类:客户端
  • 许可证:MIT(见仓库 package.json,版本 0.1.0)
  • 定位:在 Mac 上通过 DSH 插件,让手机浏览器(可加主屏幕)操作当前 Mac 前台窗口并查看 1:1 镜像。

生态上,DSH 奉行「一切皆插件」;社区目录站 skillhub.cn 与 DeepSeek、幻方无官方从属关系,安装前应自行查看源码与许可证。

核心功能

下面能力均来自官方 README,按界面区域说明。

本地服务与自检

插件启动后会监听 0.0.0.0:8787(与仅监听 127.0.0.1 的 DSH Web 服务不同,必须为局域网手机可达)。运行后可请求 GET /selfcheck,返回 {accessibility, screenRecording, voice, ok, hint},用于检查辅助功能、屏幕录制与语音相关状态。

手机端界面

  • 左侧主界面:状态栏、输入框、1:1 镜像区、动作行(清空·退格·语音·发送·换行)、⌘ 快捷键行、触控板、三个 agent 键。
  • 触控放大面板:按住触控区时弹出,固定盖住动作行那两行,放大指针周围横幅;中间小黄点为指针在放大区内的真实位置,便于贴边操作。

输入与镜像

能力 说明
输入框 + 发送 支持语音或打字;发送时以 ⌘V 等方式注入到当前前台窗口
镜像区 1:1 显示 Mac 屏幕(依赖屏幕录制权限)
触控区 单指移/轻点/双击/长按拖;双指滚动/右键/捏合;三指四指切桌面

语音回读(可选)

语音不是必需。插件向本机 127.0.0.1:9899(GENIE)发 HTTP 请求;有服务则回复会被念出,手机/桌面按「这条是谁发起的」决定出声位置。无服务时其它功能正常,只是不念。本插件不包含语音模型;模型(约 3.9GB)在 ~/.hermes/tools/genie-tts,属本机共享服务,插件不会打包或独占模型。

三个 agent 键

默认按钮文案与目标(大聪明 / 小聪明 / 大管家)是作者本人机器上的配置,其他环境需用 ~/.dsh/phone-remote.json 覆盖,无需改代码。详见下文「典型用法」。

系统权限(必须)

权限 用途 不授权的后果
辅助功能 把键盘、鼠标事件打进当前前台窗口 发送、⌘C/V、触控板无效
屏幕录制 截屏做 1:1 镜像 镜像区全黑(仅剩壁纸)

macOS 授权方式:

系统设置 → 隐私与安全性 → 辅助功能  → 勾选 / 添加  DeepSeek Harness.app
系统设置 → 隐私与安全性 → 屏幕录制 → 勾选 / 添加  DeepSeek Harness.app

勾选项后需重启一次 DSH(TCC 对已在运行进程不即时生效)。

安装与启用

官方 README 未提供 dsh plugin add github:... 一类命令,安装步骤如下。

  1. 把本插件目录放到 ~/.dsh/profiles/<profile>/node_modules/dsh-phone-remote(或使用 link: 链到该位置)。
  2. 在该 profile 的 cordis.patch.yml 末尾追加:
- insert:
    - id: phone-remote
      name: dsh-phone-remote
  1. 重启 DSH。
  2. 在终端启动日志中确认:[phone-remote] phone-remote 已启动 / 手机访问: http://<IP>:8787/?t=<token>。
  3. 手机与 Mac 处于同一局域网,用浏览器打开上述地址;Safari 可通过「分享 → 添加到主屏幕」固定入口。

安全与权限说明:插件以当前 DSH 进程权限运行,并继承 DSH 已授予的辅助功能、屏幕录制等能力。安装前建议在 GitHub 仓库阅读 server/server.cjs 与相关源码,确认行为符合你的环境策略。

典型用法

手机上各区域

区域 作用
输入框 + 发送↵ 语音/打字输入,注入到前台窗口
镜像区 1:1 看 Mac 屏幕;触摸下方触控区操作
触控区 见上文手势说明
红点 复读 / 结束(与语音回读相关)
三个 agent 键 默认对应大聪明 / 小聪明 / 大管家,激活并全屏

覆盖 agent 切换配置

默认三个键指向作者本机的 DeepSeek Harness.app、Hermes.app 及 DSH 侧边栏「DS Bot」坐标点击等,你机器上大概率需要对不上。在 ~/.dsh/phone-remote.json 中只写需要覆盖的项,例如:

{
  "switch": {
    "dsh":   { "label": "我的助手", "open": ["-a", "YourAgentApp"] },
    "hermes":{ "label": "另一个", "open": ["-a", "SomeOtherApp"] },
    "dsbot": { "label": "第三个", "open": ["-a", "AnotherApp"] }
  },
  "apps": {
    "cc": { "label": "Claude Code", "cmd": "claude" }
  }
}
  • open 数组直接传给 open 命令:["-a", "应用名"] 或 ["/path/to/App.app"]。
  • enter 用于坐标点击,随窗口尺寸变化,他人机器通常对不准,不需要时可从配置中删掉。
  • 修改后重启插件(重启 DSH)生效;不需要的键可从配置删掉,前端仍可能显示,点击会提示未知目标。

适用场景与注意

适合谁:长期在 Mac 上用 DSH / 多个 agent,希望同一 Wi‑Fi 下用手机看 1:1 画面、远程点按和滚动、顺便切换常用应用,且能接受给 DSH 开辅助功能与屏幕录制。

需注意:

  • 仅 macOS;依赖局域网访问 8787 端口。
  • 镜像全黑、按键无反应时,先查 TCC 是否勾选 DeepSeek Harness.app 并重启 DSH,再用 /selfcheck 核对。
  • 8787 被占用时(例如旧版独立服务仍在跑),可尝试:launchctl bootout gui/$(id -u)/com.example.phone-remote。
  • 语音回读依赖 127.0.0.1:9899,未运行时不影响镜像与触控。
  • 「大管家」类坐标点击若 DSH 窗口非全屏可能漂位;插件会先尝试全屏再点,仍失败则需手动切换。

想改插件实现可参考仓库内 DEVELOPMENT.md(架构、机制与调试)。

结尾

dsh-phone-remote 把「手机 + 浏览器」收成 Mac 旁路终端:在 DSH 权限模型下统一处理注入、镜像与可选 TTS,并用独立端口服务手机端。目录与源码:

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

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

Xiaoye