
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
dsh-mobile
Advanced tools
在手机上安全、实时地使用电脑中的 DeepSeek Harness。
能做什么 · 快速开始 · 连接教程 · 扩展与自定义 · 设备管理 · 第三方插件适配 · 安全 · 兼容性 · 贡献者 · 更新记录 · English
DSH Mobile 是 DeepSeek Harness 社区插件,原生 App 仅支持 Android。
当前版本:0.5.0。适配 DSH 官方桌面端,支持移动端文件上传与语音输入权限,并优化窄屏操作和远程故障提示。更新记录。
升级提醒:建议插件与 Android App 同步更新至 0.5.0,已有配对会保留。App 的麦克风权限适配需要 0.5.0;旧版 App 的既有连接方式不受影响。兼容说明。
下载 Android App 0.5.0
版本说明与校验文件
DSH Mobile 是一个 DeepSeek Harness 插件,让手机浏览器或 Android App 通过局域网,或可选的 Tailscale Funnel、cpolar、cloudflared、自建 FRP 或自有反向代理远程通道连接电脑,继续使用同一份会话、工作区、消息和工具。局域网与远程访问分别启停、分别管理设备,且都不修改 DeepSeek Harness 源码。
移动访问使用独立 HTTPS 与设备配对;Android App 固定局域网私有 CA,公开远程通道使用系统信任的证书;自签 FRP 入口还需由 0.4.6 App 在配对时固定远程 CA。
它还能在 DSH 对话里用 /mobile <需求> 定制手机端。
配对设备被视为完全信任,可以操作电脑上的 DSH;建议只在可信的家庭、办公局域网或可信 VPN 中使用。
已经安装 dsh 命令:
dsh plugin --profile web add dsh-mobile@latest
dsh plugin --profile web exec dsh-mobile setup
dsh --profile web
直接使用 DeepSeek Harness 源码:
corepack enable; pnpm install
pnpm dsh plugin --profile web add dsh-mobile@latest
pnpm dsh plugin --profile web exec dsh-mobile setup
pnpm dsh --profile web
也可以通过插件市场安装(可选):
dsh plugin --profile web add dshmarket
重启 DSH 后,在 设置 → 插件市场 里搜索 dsh-mobile 并安装。首次打开“移动访问”时,局域网页会列出电脑当前网络;确认网卡后由插件生成私有证书并配置局域网,按提示重启一次 DSH 即可使用,无需再打开终端运行 setup。
setup 会自动选择并记住当前局域网,切换 Wi-Fi、热点或 IP 后通常自动恢复;仅在自动选择失败时使用 --address 192.168.x.x。设置、证书、设备和自定义文件保存在 $DSH_HOME/mobile-access/。
安装并启动 DSH 后,按照下一节选择局域网或远程连接。
通过 npm 安装的插件会在桌面界面加载时检查新版本,有更新时在访问面板标题右侧显示“更新插件”,安装后需重启 DSH。App 下载入口展示最新版本;本地开发包不会被自动覆盖,Android App 不会主动检查或推送版本更新。
局域网和远程访问是两套相互独立的连接:在电脑附近优先使用局域网,延迟最低;离开当前网络时再启用远程访问。两边分别管理开关、设备和登录状态,互不影响。
适合同一 Wi-Fi、以太网或手机热点,是默认且最简单的连接方式。
端口说明:dsh web --port 修改 DSH Web 上游端口(默认 3080),插件会自动跟随;dsh-mobile setup --port 修改 Mobile HTTPS 监听端口(默认 3443),配对二维码会包含实际端口。
无图形界面的 Linux 主机,或通过局域网 IP / 反向代理打开 DSH Web 时,左下角 移动访问 管理口同样可用。管理 API 仍要求 TCP 对端是本机回环(例如本机 socat / 反向代理连到 127.0.0.1),不会把插件自己暴露到公网;浏览器 Host 可以是 localhost、RFC1918 或 IPv4 链路本地地址,公网 IP 和任意域名仍会返回 403。反向代理必须只对可信的本机或内网请求开放,不能把 /api/mobile-access 管理路径公开转发到互联网。手机走的独立 HTTPS 入口(默认 3443)仍是移动端界面,不会变成桌面管理口。
不安装 App 也可以访问:点击 复制配对链接,在手机浏览器中打开;首次访问需要按浏览器提示手动信任插件证书。
手机浏览器中的配对和重新连接页面会按浏览器的 Accept-Language 显示简体中文、英文或意大利文;Android App 则跟随系统语言。DSH 内的插件控制面板继续跟随 DSH 当前语言。
适合手机离开电脑所在网络后使用。远程访问默认关闭,手机不需要另外安装 Tailscale、cpolar、cloudflared 或 FRP。
远程服务可能受带宽和连接限额影响:cpolar 免费方案 当前为 1 Mbps,Tailscale Funnel 也存在不可配置的带宽限制,cloudflared 的 quick tunnel 由 Cloudflare 免费提供、地址随机且有限流。DSH Mobile 通过 10 条分页、顶部按需加载、gzip 和 WebSocket 长连接减少流量与等待,但无法突破服务商限额。
https://203.0.113.10,请换成你自己的真实地址,文档示例网段会被拒绝)。可以复制受限模板手动部署,也可以填写 SSH 用户、SSH 端口和本机私钥路径,点击 部署 frps + Caddy 自动部署。自动部署支持 Ubuntu/Debian + systemd,使用 OpenSSH 密钥或 ssh-agent,不接受密码,也不会覆盖非 DSH Mobile 管理的 Caddyfile;部署与清理前都会展示服务器主机指纹,需到 VPS 控制台核对后才能继续。公网 IP 模式会申请约 6 天有效的 Let’s Encrypt IP 证书并配置每日自动续期。部署完成后再安装官方 frpc 并验证连接。不再需要服务器时可用“复制 VPS 卸载脚本”或一键清理,只删除 DSH Mobile 自己的服务与配置。需要 Android App 0.3.3 或更高版本。详见 自建 FRP 使用指南。远程通知说明:浏览器的
Notification权限按 Origin 分别授权,网页系统通知只显示在运行该网页的设备上。Android App 的任务提醒是独立的 0.4.0 功能,需要在 App 前台菜单中主动开启,且依赖 WebView 页面仍存活;它不是通用的后台推送。需要可靠的后台推送时,请使用你已配置的服务端 webhook 或机器人通道。
Tailscale Funnel 覆盖范围广,但在中国大陆网络下可能不稳定。其运行组件把公开监听生命周期绑定到父进程和受限控制通道;父进程退出、控制通道关闭或显式停止时会结束当前代次并清理资源。cpolar 更适合国内网络;自建 FRP 适合已有 VPS、希望避开公共服务带宽限制的用户。cloudflared 有两种模式:快速隧道不需要账号或登录,但地址随机、每次重连都会变化,官方定位为测试用途且无可用性保证,因此只适合临时或验证场景;命名隧道使用 Cloudflare 账号令牌,能保留重启后不变的固定公网域名。中国大陆 VPS 上的未备案域名可能被云厂商拦截,此时可使用公网 IPv4 模式。插件会校验按需下载的固定版本组件,配置与程序均保存在 $DSH_HOME/mobile-access/,可随时在面板中彻底清除。
自建 FRP 的托管部署使用指向 DSH 回环网关的 HTTP vhost:VPS 上的明文 vhost 只允许回环访问,由 Caddy 提供公网 HTTPS。0.4.6 新增“接入既有 frps”,不会安装或改动服务器;公开 CA 档仍需受限 HTTP vhost 与 Caddy,自签档则用 frps TCP 透传至电脑端 HTTPS 网关,须由 0.4.6 Android App 在配对时固定 CA。自签档目前面向公网 IPv4,旧版 App 不支持;两档都不开放任意 FRP 配置。frps 的 proxyBindAddr 是全局代理监听设置,不能只为新增 TCP 入口调整而忽略已有明文 vhost。接入指南。
自有反向代理的 HTTP 后端只允许留在可信私网;不要把它映射到公网,也不要绕过它直连 DSH 或现有 LAN 3443。来源 CIDR 匹配代理的直接 TCP 来源,不信任转发头;反代须保留外部 Host(含端口)、Origin、Cookie 和 WebSocket。清除代理配置不会删除已配对远程设备。
远程公开地址仍受 DSH 设备配对保护。内置 Funnel 与托管 cpolar、cloudflared 支持 Windows x64 与 Linux x64/arm64;按需安装的 FRP 0.70.1 支持 Windows、Linux、macOS 的 x64 与 arm64。各通道的系统支持矩阵见兼容性。
在 DSH 对话里输入 /mobile <需求>,DSH 会直接修改手机端的文件,几秒内生效。例如:
/mobile 把手机端做成老式终端的样子,让消息像终端输出一样逐行滚动
也可以让手机端调用电脑端的能力,比如实时读取电脑状态:
/mobile 为手机端添加赛博朋克风格的电脑监控面板,实时显示电脑的 CPU、内存和磁盘占用
/mobile 把需求交给 DSH 对话中的 agent,由它直接修改本机 $DSH_HOME/mobile-access/ 下的文件,保存后手机端自动生效。改动分两类:界面和交互在 mobile.css/mobile.js;需要电脑能力时用 extensions/ 下的扩展,其 host.mjs 以本机用户权限在电脑上运行。不修改 DeepSeek Harness 源码。
扩展清单及其脚本、样式和资源按版本标识刷新。插件监听到 /mobile 或扩展文件变化后,会通过已认证连接通知手机立即更新;页面可见时每 45 秒、隐藏时每 5 分钟的检查只作为断线兜底。Host 暂存失败会继续使用现有版本;若 Host 已更新但新手机界面激活失败,则关闭该扩展并自动重试,避免混用新旧能力。
扩展动作的 input 可以直接使用 api.schema.object(...) 等 Schemastery schema,也可以使用带 parse(value) 的适配器;手机端 api.host.invoke() 会按 JSON 请求发送,输入会在电脑端动作执行前完成校验和规范化。
你甚至可以通过扩展连接电脑上运行的酒馆,并从同一 App 打开它的简易移动前端。
host.mjs与本机程序拥有相同权限;仅创建和运行你理解并信任的电脑端扩展。
示例的实际效果:
Android App 用一个“已配对设备”列表同时显示多台电脑:局域网、cpolar、cloudflared、Tailscale Funnel 和自建 FRP 配对共处一处。首次升级会自动迁移旧版局域网与远程凭据,不要求重新配对;地址变化且 instanceId 与原记录一致时会合并条目,保留自定义名称。自签 FRP 使用独立 CA 指纹作为身份,首次与局域网配对时可能显示为另一条记录。设备 Token 和局域网 CA 由 Android Keystore 加密保存;0.4.6 App 还会加密保存自签 FRP 入口固定的远程 CA。这些信息不会显示在设备列表或二维码中。
每条记录显示自定义名称、连接方式、Origin、实时可达状态和最近连接时间。绿色状态点表示“可达”,灰色状态点表示“检测中”“暂不可达”“配对已过期”或“电脑端已移除”;可达性检查直接验证 DSH Gateway,不依赖 ICMP,也不会把暂时断网误判成电脑端撤销。
电脑端撤销会永久删除持久化存储中的设备记录及令牌摘要,而不是保留 revokedAt 标记;启动时也会清理旧版留下的已撤销记录。删除后,旧令牌与未知令牌一样返回 401 authentication_failed。现有 App 若在离线期间被撤销,再次检测时可能显示“配对已过期”,需要重新配对;在线会话仍会收到撤销通知并立即断开。
![]() 设备管理列表:查看已配对电脑、连接方式和可达状态 |
![]() 启动行为设置:选择直接进入 DSH 或显示设备列表 |
移动适配保持 DSH 原有的工作区、任务管理、终端和文件面板入口,不会把第三方插件内容隔离成另一套页面。下面的宽屏截图展示 Android App 在宽屏下的布局。App 会根据屏幕宽度自适应:手机使用抽屉和浮层,宽屏使用并排面板;两种布局共享相同的功能和连接方式。第三方插件仍由 DSH 自己加载,移动层负责适配布局与连接,不修改 DeepSeek Harness 源码。
兼容条件与 WebSocket 放行规则:
代理页面为兼容部分社区插件允许嵌入 HTTP 页面;这类内容未加密,可能被篡改,浏览器也可能因混合内容策略拦截。处理敏感内容时请使用 HTTPS。通过 HTTPS 管理入口打开远程面板时,页面顶部会显示相同提醒。
0.1.7-alpha.2、0.1.7-rc.1 和 0.1.7-rc.2 的契约及启动检查。官方 DSH Desktop 0.1.7-rc.2 使用 dsh-app://app/ 页面;移动访问管理入口仍要求桌面端转发的已认证 DSH 会话,不放宽普通 Web 页面的管理请求。/sidebar/ws/agent-opens 和/sidebar/ws/agent-terminals 就属于这类需要按实际插件确认的路径。若另一个远程访问插件在 DSH Mobile 页面上显示自己的“未配对”提示,那是两套不同的授权。可先在电脑端暂时关闭另一插件的远程访问,确认 Mobile 链路是否恢复;不要把 DSH Mobile 密钥输入它的配对页。仅用下面的模块排除选项不能保证移除该插件在页面启动前注入的请求改写脚本,参见 #111。
若某个不需要的客户端插件显著增加手机首次加载流量,高级用户可在当前 profile 的 mobile-access 插件配置中设置 excludedClientModules,填入启动清单中的准确包名,重启 DSH 后生效。它只改变经网关提供的专用移动页面;电脑端和 ?frontend=stock 页面不变。例如,若当前启动清单同时包含以下两个包,下面的配置会移除文档预览及依赖它的“在应用中打开”功能:
excludedClientModules:
- '@deepseek-ai/dsh-client-ui-sidebar-documentpreview'
- '@deepseek-ai/dsh-client-ui-open-in-app'
这是按安装环境选择的高级配置,没有默认排除列表。插件会拒绝不存在的包、启动必需模块,以及仍被保留模块通过 inject 或 external 引用的包;配置不匹配当前 DSH 或社区插件时,移动页面返回 409 excluded_client_modules_invalid 和冲突详情,电脑端也会提示,移除或调整配置即可恢复。模块内容与依赖会随 DSH 版本变化,不能把其他人的节省比例当作自己的预期。
![]() Android App 下社区侧边栏插件的兼容 |
![]() 连接诊断:检查第三方 WebSocket 路径并按需放行 |
| 方式 | 适合场景 | 说明 |
|---|---|---|
| Android App | 日常使用 | 首屏分开显示局域网与远程入口;局域网自动发现,远程使用系统信任的 HTTPS 通道 |
| 手机浏览器 | 临时或跨平台访问 | 打开“移动访问”卡片显示的 HTTPS 地址;首次连接需在浏览器手动信任该证书 |
Android App 只是 Kotlin WebView 薄壳,不内置另一份网页;手机浏览器访问的是同一页面。需要排查兼容性时,可在浏览器地址后追加 ?frontend=stock,临时回到旧的桌面页面适配模式。
专用移动页面会在 DSH 的第一个启动脚本之前,同步加载经网关鉴权的同源 /mobile-access/compat.js,为缺少 Iterator / Iterator helpers 的 WebView 提供随插件打包的 core-js 兼容实现,避免启动时出现 Iterator is not defined。兼容层按能力检测保留或修正原生 helper,不依赖 CDN,也不会放宽 CSP;不修改 Android APK、桌面页面或 ?frontend=stock 页面。此修复并不承诺支持所有旧内核,前端仍以 ES2022 为构建目标;若还有其他兼容错误,请优先更新 Android System WebView / Chrome。
社区客户端(非官方):微信小程序客户端 原生微信小程序实现,复用「移动访问」的配对与 Remote 流协议(需 dsh-mobile ≥ 0.3.8)。 因微信正式版强制「合法域名」(需 ICP 备案的自有 HTTPS 域名),目前需通过微信开发者工具 / 真机调试使用,详见其 README。
flowchart LR
Phone["Android App / 手机浏览器"] -->|"局域网 HTTPS"| Lan["局域网网关"]
Phone -->|"远程 HTTPS"| Remote["独立远程网关"]
Lan --> Gateway["DSH Mobile Gateway Core"]
Remote --> Gateway
Gateway -->|"回环代理"| DSH["原生 DSH Web 与 Host"]
DSH -->|"同一工作区、会话和事件流"| Phone
插件包含三层:Host face 负责发现、配对、HTTPS、回环代理和扩展注册表;Client face 提供独立的移动布局与扩展 SDK;Android App 提供受限的原生 Bridge。Bridge 使用 androidx.webkit WebMessage,每条消息都校验精确顶层 Origin 和主 Frame,并限制消息大小;不使用 addJavascriptInterface。DeepSeek Harness 的源码和当前 Web 页面(默认端口 3080,可通过 dsh web --port 修改)都不会被改动,安装和卸载完全通过插件机制完成。
frpc,校验来源、精确大小、SHA-256、压缩包路径和可执行文件版本;共享 Token 不会出现在状态、诊断或接入清单响应中。复制服务器模板,或重新输入 Token 后显式复制含 Token 的接入配置时,它会进入系统剪贴板,请粘贴后及时清除。本机清理只删除插件管理的文件;托管部署的 VPS 需用面板卸载脚本或一键清理单独清除,接入既有 frps 则不会改动或清理你的 VPS。自动部署与一键清理前都需核对 SSH 主机指纹。完整说明见 SECURITY.md。
dsh-remote-web-ui 与 DSH Mobile 各有独立的远程通道和配对码,不能交叉使用。若电脑端连接诊断提示“第三方远程插件”,先关闭该插件的远程访问并刷新,再扫描 DSH Mobile 当前二维码。仅安装该插件而未启用它的远程接管,不会触发这条诊断。NO_PROXY 可排除目标。此结果只说明电脑经代理完成 HTTPS 探测,不代表手机或实际隧道可用。请用手机流量实际连接;若直连和代理都失败,报告仍为不可达,不会把离线误报为就绪。saved LAN interface "XXX" is not connected 且 DSH 起不来:
电脑切换过网络(WiFi/有线/扩展坞),之前保存的网卡当前未连接。处理方式
(三选一):连回原来的网络;按新网络重跑一遍 setup;暂时不用手机访问时,
在 cordis.patch.yml 把 mobile-access 设 disabled: true。新版本中该
情况不再阻断启动——插件记一条警告后休眠,等网卡回来自动恢复。下表记录已验证的 DSH 与插件版本组合,不表示其他版本自动兼容。0.3.6 起插件不会仅凭版本号拒绝启动;升级 DSH 后若遇到移动端异常,请先核对兼容表并更新插件。历史记录见 CHANGELOG.md。
| 通道 | Windows x64 | Linux x64 | Linux arm64 | macOS |
|---|---|---|---|---|
| 局域网 | 支持(自动配防火墙) | 支持(防火墙自理) | 支持 | 支持 |
| Tailscale Funnel | 支持(随包提供) | 支持(随包提供) | 支持(随包提供) | 不支持 |
| cpolar | 支持(按需下载) | 支持(按需下载) | 支持(按需下载) | 不支持 |
| cloudflared 快速/命名隧道 | 支持(按需下载) | 支持(按需下载) | 支持(按需下载) | 不支持 |
| 自建 FRP | 支持(按需下载) | 支持(按需下载) | 支持(按需下载) | 支持(按需下载) |
| 自有反向代理 | 支持(纯配置) | 支持(纯配置) | 支持(纯配置) | 支持(纯配置) |
macOS 上局域网、自建 FRP 与自有反向代理可用;三个托管组件暂未提供 macOS 包。诊断页的防火墙检查目前仅覆盖 Windows,其他系统显示“不适用”。
| DSH Mobile 插件 | 验证支持的 DeepSeek Harness 版本 |
|---|---|
0.5.0 | 0.1.7-alpha.2、0.1.7-rc.1、0.1.7-rc.2;官方 Desktop 0.1.7-rc.2(桌面管理入口) |
0.4.7 | 0.1.7-alpha.2、0.1.7-rc.1、0.1.7-rc.2(源码契约、隔离配对及 WebSocket 工作区读取) |
0.4.6 | 0.1.7-alpha.2、0.1.7-rc.1(源码契约、隔离配对及 WebSocket 工作区读取) |
0.4.5 | 0.1.7-alpha.2(源码契约检查、本机局域网及远程网关联调) |
0.4.4 | 0.1.6-alpha.2(本机源码与 renderer-v2 契约检查) |
0.4.3 | 0.1.6-alpha.2(本机源码与 renderer-v2 契约检查) |
0.4.2 | 0.1.6-alpha.1(本机源码与 renderer-v2 契约检查) |
0.4.1 | 0.1.6-alpha.1(本机源码与 renderer-v2 契约检查) |
0.3.15、0.3.16、0.4.0 | 0.1.5-rc.2(契约检查);0.1.5-rc.1(@idoall 局域网实测) |
0.3.14 | 0.1.3-alpha.2 |
0.3.9-0.3.12 | 0.1.3-alpha.1 |
0.3.6-0.3.8 | 0.1.2-rc.1 |
0.3.4、0.3.5 | 0.1.2-alpha.2 |
0.3.0-0.3.3 | 0.1.2-alpha.1 |
0.1.4、0.2.x | 0.1.1-rc.2 |
现有 App(0.3.3 及更新)无需重新配对;cpolar 用户应使用 0.3.15 或更新 App,较早版本可能在免费线路的慢速首次加载完成前超时;更早的 App 还使用不同的状态栏策略。App 0.4.0 才支持多设备列表、启动行为设置和电脑端撤销状态同步;旧版 App 仍可连接已保存的单台设备。App 0.1.3 及更早版本需卸载重装并重新配对。
GitHub Release 的正式 APK 使用固定签名,可从同一签名的旧正式版原位升级并保留配对。自行构建的 Debug APK 若使用不同签名,不能直接覆盖安装正式版;切换前请准备重新配对。
dsh plugin --profile web remove dsh-mobile
同时清除插件数据:
dsh plugin --profile web exec dsh-mobile purge --yes
dsh plugin --profile web remove dsh-mobile
源码模式把上述 dsh 换成 pnpm dsh。
感谢提交 PR、复现问题和提出建议的社区成员。贡献者名单按已合并 PR、后来吸收的 PR 工作和 issue 反馈分别致谢;GitHub 右侧的 Contributors 区域由进入默认分支的提交自动生成,不能手动加入仅反馈问题的成员。
npm ci
npm run verify
真实启动冒烟另用临时 DSH Home、随机回环端口和 Chromium 配对,不访问现有用户配置,也不发送模型请求。CI 分别测试 DSH 0.1.7-alpha.2、0.1.7-rc.1 与 0.1.7-rc.2;本机可把 rc.2 装在独立目录,避免替换插件的开发依赖:
$dshMobileTestRuntime = Join-Path $env:TEMP 'dsh-mobile-test-runtime'
npm install --prefix $dshMobileTestRuntime --no-save --package-lock=false @deepseek-ai/dsh@0.1.7-rc.2
$env:DSH_BOOT_SMOKE_BIN = Join-Path $dshMobileTestRuntime 'node_modules/@deepseek-ai/dsh/lib/bin.js'
npx playwright install chromium --only-shell
npm run smoke:dsh-boot
Android 构建见 App 文档。
Apache-2.0,详见 LICENSE。
FAQs
DeepSeek Harness 移动端适配与安全访问插件,支持局域网、远程连接、Android App 和手机浏览器。
The npm package dsh-mobile receives a total of 2,382 weekly downloads. As such, dsh-mobile popularity was classified as popular.
We found that dsh-mobile demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.