wlxyxykj/dsh-phone-remote ↗★ 0
dsh-phone-remote
Phone control for DeepSeek Harness: a token-protected mobile page served from this computer, with an optional IP allowlist, so you can drive the agent from your phone — list sessions, send prompts, watch live output, cancel a turn. 手机遥控:打开链接/扫码即可在手机上指挥电脑上的 DSH Agent 干活,支持 IP 白名单与 Tailscale。
安裝
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:wlxyxykj/dsh-phone-remote說明文件
閱讀完整 README ↗使用:三步上手
第 1 步:在电脑上打开控制台
浏览器打开 http://127.0.0.1:8790/
这个页面只在本机能开(手机打不开,故意的),里面是:手机链接 + 二维码 + 口令 + 访问控制 + 会话概览。
第 2 步:手机扫码进来
手机连和电脑同一个 Wi-Fi,然后用相机扫面板上的二维码:
- 二维码里已经带了口令,扫完直接进入,不用手输;
- 手机浏览器会记住口令(存成 Cookie,重启电脑也还在);
- 也可以在手机浏览器里手动输入面板上那条链接(形如
http://192.168.1.23:8790/m?t=xxxxxxxx)。
第 3 步:指挥 Agent
| 想做的事 | 在手机上怎么操作 |
|---|---|
| 切换会话 | 左上角 ☰ → 点会话 |
| 新建会话 | ☰ → 底部「+ 新建会话并接管」,可填工作目录 |
| 发指令 | 底部输入框输入,点 ↑ 发送 |
| 看输出 | 自动流式显示;工具调用是一条可展开的卡片,点开看完整输出 |
| 叫停 | 运行中发送按钮变成 ■,点一下停止当前回合 |
不需要在手机上确认任何授权弹窗——远程会话默认已经设成 approvalPolicy: never,发指令就直接执行。
第 4 步(可选):传文件 / 收文件
手机 → 电脑:给 Agent 喂文件
- 手机页面底部点 📎,选文件(可多选,单个最大 25 MB);
- 上传完成后输入框上方出现文件小标签(⏳ 上传中 → 📎 已就绪,点 ✕ 可移除);
- 正常发指令即可——文件会写进这个会话的工作目录下的
.phone-uploads/, 指令里自动附上路径,Agent 用它自带的文件工具直接读。
落地路径形如
.phone-uploads/20260930-220145-合同.pdf。 你只要说「读一下我刚传的合同,把关键条款列出来」就行。
电脑 → 手机:把产出拿回来
Agent 需要把文件给你时,它会调用工具 phone_send_file;你也可以直接说:
把这个报告发我手机上
手机页面上会出现一张下载卡片(文件名 + 大小 + 备注),点一下就存到手机。 卡片刷新后仍在(有效期 2 小时,单文件最大 25 MB)。
如果点下载没反应,长按卡片选「在新标签页打开」——部分手机浏览器对内联下载有限制。
配置
两种改法,任选一种(改配置不用重启,保存即生效):
A. 在 DSH 里改:设置 → 插件 → dsh-phone-remote → 配置
B. 改 profile 的 cordis.patch.yml($DSH_HOME/profiles/ /cordis.patch.yml),加一行:
- id: phone-remote
name: 'dsh-phone-remote'
config:
port: 8790
cwd: 'D:\work\my-project'
allowCancel: false
配置项
| 键 | 默认 | 说明 |
|---|---|---|
enabled | true | false 时插件完全不启动(不监听、不注册工具) |
host | 0.0.0.0 | 监听地址。0.0.0.0 = 所有网卡都能访问;改成 127.0.0.1 就只有本机能用 |
port | 8790 | 起始端口;被占用时自动向后找,最多试到 8799 |
token | 空 | 访问口令。留空 = 复用已保存的,没有就随机生成 24 位并写入 $DSH_HOME/dsh-phone-remote.json |
cwd | 空 | 手机上新建会话时的默认工作目录 |
agentPreset | 空 | 手机上新建会话使用的 Agent preset(如 standard) |
approvalPolicy | never | 远程会话的授权策略。never = 不再逐条询问(推荐);ask = 跟随桌面端弹窗 |
allowCreate | true | 是否允许手机新建会话 |
allowCancel | true | 是否允许手机叫停回合 |
exposePanel | true | 是否提供本机控制台 / |
allowFrom | [] | IP 白名单(写死在配置里)。非空 = 只有名单里的客户端能访问,且面板不能改;留空则在面板上管理 |
配置项
| 键 | 默认 | 说明 |
|---|---|---|
enabled | true | false 时插件完全不启动(不监听、不注册工具) |
host | 0.0.0.0 | 监听地址。0.0.0.0 = 所有网卡都能访问;改成 127.0.0.1 就只有本机能用 |
port | 8790 | 起始端口;被占用时自动向后找,最多试到 8799 |
token | 空 | 访问口令。留空 = 复用已保存的,没有就随机生成 24 位并写入 $DSH_HOME/dsh-phone-remote.json |
cwd | 空 | 手机上新建会话时的默认工作目录 |
agentPreset | 空 | 手机上新建会话使用的 Agent preset(如 standard) |
approvalPolicy | never | 远程会话的授权策略。never = 不再逐条询问(推荐);ask = 跟随桌面端弹窗 |
allowCreate | true | 是否允许手机新建会话 |
allowCancel | true | 是否允许手机叫停回合 |
exposePanel | true | 是否提供本机控制台 / |
allowFrom | [] | IP 白名单(写死在配置里)。非空 = 只有名单里的客户端能访问,且面板不能改;留空则在面板上管理 |