DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Mobile — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

dsh-mobile

Mobile

DeepSeek Harness mobile adaptation and secure access plugin, supporting LAN, remote connections, Android App, and mobile browsers.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:saya-ch/dsh-mobile#6d5fffeb152af54f4624b0da3f030b14304600b7
READMECompatibilityVersions

Compatibility and provenance

Mobile is published as dsh-mobile and currently resolves to version 0.4.3. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
9/20/2026

Versions

0.4.3stable
9/19/2026
0.4.2stable
9/16/2026
0.4.1stable
9/15/2026
Show 62 more versionsCollapse versions
0.4.0stable
9/14/2026
0.3.16stable
9/12/2026
0.3.15stable
9/11/2026
0.3.14stable
9/8/2026
0.3.13stable
9/8/2026
0.3.12stable
9/7/2026
0.3.11stable
9/7/2026
0.3.10stable
9/7/2026
0.3.9stable
9/4/2026
0.3.8stable
9/3/2026
0.3.7stable
9/2/2026
0.3.6stable
9/2/2026
0.3.5stable
9/1/2026
0.3.4stable
8/31/2026
0.3.3stable
8/30/2026
0.3.2stable
8/29/2026
0.3.1stable
8/28/2026
0.3.0stable
8/28/2026

Related plugins

Loading related plugins…

Latest
0.4.3
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
Apache-2.0
Source
github
GitHub
★ 0
Weekly downloads
2,363
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
0.2.2stable
8/27/2026
0.2.1stable
8/25/2026
0.2.0stable
8/24/2026
0.1.4stable
8/23/2026
0.1.3stable
8/23/2026
0.1.2stable
8/23/2026
0.1.1stable
8/23/2026
0.1.0stable
8/23/2026
0.1.0-alpha.36prerelease
8/18/2026
0.1.0-alpha.35prerelease
8/18/2026
0.1.0-alpha.34prerelease
8/18/2026
0.1.0-alpha.33prerelease
8/18/2026
0.1.0-alpha.32prerelease
8/18/2026
0.1.0-alpha.31prerelease
8/18/2026
0.1.0-alpha.30prerelease
8/18/2026
0.1.0-alpha.29prerelease
8/18/2026
0.1.0-alpha.28prerelease
8/18/2026
0.1.0-alpha.27prerelease
8/18/2026
0.1.0-alpha.26prerelease
8/18/2026
0.1.0-alpha.25prerelease
8/18/2026
0.1.0-alpha.24prerelease
8/17/2026
0.1.0-alpha.23prerelease
8/17/2026
0.1.0-alpha.22prerelease
8/17/2026
0.1.0-alpha.21prerelease
8/17/2026
0.1.0-alpha.20prerelease
8/17/2026
0.1.0-alpha.19prerelease
8/17/2026
0.1.0-alpha.18prerelease
8/17/2026
0.1.0-alpha.17prerelease
8/17/2026
0.1.0-alpha.16prerelease
8/17/2026
0.1.0-alpha.15prerelease
8/17/2026
0.1.0-alpha.14prerelease
8/17/2026
0.1.0-alpha.13prerelease
8/17/2026
0.1.0-alpha.12prerelease
8/17/2026
0.1.0-alpha.11prerelease
8/17/2026
0.1.0-alpha.10prerelease
8/17/2026
0.1.0-alpha.9prerelease
8/17/2026
0.1.0-alpha.8prerelease
8/17/2026
0.1.0-alpha.7prerelease
8/17/2026
0.1.0-alpha.6prerelease
8/15/2026
0.1.0-alpha.5prerelease
8/15/2026
0.1.0-alpha.4prerelease
8/15/2026
0.1.0-alpha.3prerelease
8/15/2026
0.1.0-alpha.2prerelease
8/15/2026
0.1.0-alpha.1prerelease
8/15/2026

Related plugins

More verified plugins in security-access.

Doctor@linxin666/dsh-doctorTransactional rescue mode for DSH profiles with a supervised launcher, isolated recovery capsule, deterministic repairs, health monitoring, and a local Web recovery consolePocketdsh-pocketPut DeepSeek Harness in your pocket: one package, one settings page, and scan a QR code on your phone to access DSH on your computer in sync (LAN + public network, real-time screen mirroring).DSCODE@toddzheng024/dscode-bundleA complete DeepSeek coding agent with persistent shell, Ultra collaboration and automatic permission review.Auto Reviewdsh-auto-reviewSecond-model AI auto-review for DeepSeek Harness approval requests: a read-only reviewer subagent decides allow/deny on the approval answerer chain, with fail-closed fallback and full session-log audit.

README

用手机使用电脑中的 DeepSeek Harness

DSH Mobile

在手机上安全、实时地使用电脑中的 DeepSeek Harness。

能做什么 · 快速开始 · 连接教程 · 扩展与自定义 · 设备管理 · 第三方插件适配 · 安全 · 兼容性 · 更新记录 · English

DSH Mobile 是 DeepSeek Harness 社区插件,原生 App 仅支持 Android。

0.4.3 更新:Funnel、cpolar、cloudflared 远程通道支持 Linux(x64/arm64);保存的局域网网卡断开不再阻断整个 DSH 启动(休眠等网卡回来);插件多的用户手机端白屏修好(启动包分片 + 大 bundle 直通)。详细记录。

升级提醒:0.4.3 插件可继续使用现有 Android App,已有设备无需重新配对。若要使用本次 Android 构建,请同时安装 0.4.3 App。兼容说明。

DSH Mobile 安卓应用图标
下载 Android App 0.4.3
版本说明与校验文件

DSH Mobile 是一个 DeepSeek Harness 插件,让手机浏览器或 Android App 通过局域网,或可选的 Tailscale Funnel、cpolar、cloudflared、自建 FRP 或自有反向代理远程通道连接电脑,继续使用同一份会话、工作区、消息和工具。局域网与远程访问分别启停、分别管理设备,且都不修改 DeepSeek Harness 源码。

移动访问使用独立的 HTTPS 与证书固定,只有配对过的设备能通过校验接入。

它还能在 DSH 对话里用 /mobile <需求> 定制手机端。

能做什么

  • 在手机上继续电脑端的工作:同一份会话、工作区、消息和工具,实时同步。
  • 用对话定制手机端:直接在 DSH 对话里改手机页面的布局、交互和功能,几秒内刷新。
  • 专属触屏布局:会话抽屉、工具详情、设置、提问卡片和输入栏都按手机重新组织;App 跟随系统语言(简/英/意),插件界面跟随 DSH 语言。
  • 多种远程通道:Tailscale、cpolar、cloudflared 快速/命名隧道、自建 FRP、自有反向代理,按网络任选。
  • 配对与多设备:扫码、链接或密钥配对一次;切换 Wi-Fi、热点或 IP 后通常自动恢复;App 在一个设备列表中同时显示多台已配对电脑(局域网与全部远程),每台实时显示可达状态,一键切换、重新配对或删除。
  • 一键诊断与放行:检查版本、网关、网卡、防火墙和远程通道,生成脱敏报告;被拦截的第三方插件连接按确切路径一键放行。
  • 任务系统通知:任务完成与待输入以 Android 系统通知推送,在 App 前台菜单开启,锁屏文本脱敏。
  • 纵深安全:独立 HTTPS 与证书固定,凭据存 Keystore,设备令牌只发往精确 Origin,第三方 WS 默认拦截。

配对设备被视为完全信任,可以操作电脑上的 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 Mobile 局域网访问、配对二维码与设备管理

  1. 让手机和电脑连接同一个局域网,在 DeepSeek Harness 左下角打开 移动访问 → 局域网。
  2. 如果尚未开启,点击 开启局域网访问;随后点击 生成并复制密钥,面板会显示配对二维码。
  3. 在 Android App 中进入 局域网访问,扫描发现电脑并点击设备,再扫描二维码或粘贴配对密钥。
  4. 配对完成后会建立持久设备信任。以后打开 App 会自动发现并连接,切换 Wi-Fi、热点或 DHCP 地址通常不需要重新配对。

端口说明: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 长连接减少流量与等待,但无法突破服务商限额。

DSH Mobile 远程访问与通道选择

  1. 在 DeepSeek Harness 左下角打开 移动访问 → 远程,选择一种连接方式:
    • Tailscale Funnel:点击 启用远程访问,在打开的官方页面完成一次 Tailscale 登录;按面板提示继续允许 Funnel,然后返回 DSH 等待连接就绪。
    • cpolar:点击 安装官方组件,登录 cpolar 控制台取得 Authtoken,粘贴后点击 保存并连接。组件只会在确认后下载到插件私有目录;免费临时地址可能在 DSH 或 cpolar 重启后变化。
    • 自建 FRP(高级):展开 自建连接,填写 VPS、frps 端口、共享 Token 和公开 HTTPS 地址;公开地址可以是自己的域名,也可以直接是 VPS 公网 IPv4(例如 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 使用指南。
    • 自有反向代理:展开 自建连接 → 自有反向代理,填写公网 HTTPS 地址(支持自定义端口)、私有监听 IPv4、独立 HTTP 后端端口(默认 3444)和代理来源 CIDR,再点击 保存并启动后端。适合已有 Lucky/Nginx/Caddy 的用户,无需隧道组件;需要 Android App 0.4.0 或更高版本。详见 自有反向代理指南。
    • cloudflared 快速隧道:点击 安装官方组件,插件在确认后从官方发布页下载固定版本到插件私有目录,随后自动申请一个临时公网地址(quick tunnel),无需注册或登录。适合不想注册账号的用户;quick tunnel 地址每次重连都会变化,官方定位为测试用途、有限流且无可用性保证,请勿用于必须长期可达的生产访问,只适合临时或验证场景。
    • cloudflared 命名隧道:已有 Cloudflare 账号和域名时,把隧道类型切到 命名隧道,填入连接器令牌、公网域名与本机转发端口,即可获得重启后不变的固定地址(令牌只存私有目录、只经环境变量传给 cloudflared)。步骤见 Cloudflare 命名隧道。
  2. 状态变为“远程访问已就绪”后,点击 生成远程配对二维码。自有反向代理仅显示“后端已监听”:它不验证公网连通性,仍需检查代理 HTTPS、证书与 WebSocket 并用手机验收。
  3. 在 Android App 中进入 远程访问,扫描二维码完成独立配对。
  4. 此后 App 会保存当前地址和设备凭据并自动重连。若 cpolar 免费临时地址发生变化,请扫描电脑端当前远程二维码重新验证连接;无需清除 App 数据。旧设备 token 只会发送到原先保存的精确 Origin,不会发送给二维码中的新域名。

远程通知说明:浏览器的 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,不提供任意 FRP 配置、TCP/UDP 代理或 FRP 插件。VPS 的明文 vhost 必须只监听 127.0.0.1,由 Caddy 提供公网 HTTPS;插件会拒绝可从公网访问的明文端口,并在公开发现接口确认连接到当前电脑后才显示“已就绪”。

自有反向代理的 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 与本机程序拥有相同权限;仅创建和运行你理解并信任的电脑端扩展。

示例的实际效果:

/mobile 定制为老式终端界面 /mobile 定制为老式终端界面 /mobile 定制为赛博朋克监控面板 /mobile 定制为赛博朋克监控面板

设备管理

Android App 用一个“已配对设备”列表同时显示多台电脑:局域网、cpolar、cloudflared、Tailscale Funnel 和自建 FRP 配对共处一处。首次升级会自动迁移旧版局域网与远程凭据,不要求重新配对;地址变化时按 DSH 安装的稳定 instanceId 合并原记录,保留自定义名称。设备 Token 和局域网 CA 继续由 Android Keystore 加密保存,不会显示在列表或二维码中。

每条记录显示自定义名称、连接方式、Origin、实时可达状态和最近连接时间。绿色状态点表示“可达”,灰色状态点表示“检测中”“暂不可达”“配对已过期”或“电脑端已移除”;可达性检查直接验证 DSH Gateway,不依赖 ICMP,也不会把暂时断网误判成电脑端撤销。

  • 启动时打开 → 直接进入 DSH(默认):单设备直接连接;多设备优先连接上次使用的设备,其次按最近连接时间选择仍有效的设备。连接超过有限重试预算后自动回到列表,不会无限转圈。
  • 启动时打开 → 显示设备列表:每次启动先选择电脑,适合经常在多台设备之间切换。该选项位于列表右上角的设置按钮中,修改后立即保存。
  • 点按设备行可连接;右侧“…”和长按提供相同的操作面板,可编辑名称、立即检测、重新配对或删除本地记录。删除前会二次确认,并提供短暂撤销;撤销只恢复本机记录,不恢复电脑端已经撤销的授权。
  • 在 WebView 页面打开 DSH 设置 → 通用,选择 切换电脑 可回到已配对设备列表;该动作仅在 Android App 中显示。在线收到电脑端撤销通知后,App 保留该条目并显示“电脑端已移除”,停止自动重连,同时提供 重新配对 和 删除本地记录。

电脑端撤销会永久删除持久化存储中的设备记录及令牌摘要,而不是保留 revokedAt 标记;启动时也会清理旧版留下的已撤销记录。删除后,旧令牌与未知令牌一样返回 401 authentication_failed。现有 App 若在离线期间被撤销,再次检测时可能显示“配对已过期”,需要重新配对;在线会话仍会收到撤销通知并立即断开。

Android App 已配对设备列表
设备管理列表:查看已配对电脑、连接方式和可达状态
Android App 启动行为设置
启动行为设置:选择直接进入 DSH 或显示设备列表

第三方插件适配

移动适配保持 DSH 原有的工作区、任务管理、终端和文件面板入口,不会把第三方插件内容隔离成另一套页面。下面的宽屏截图展示 Android App 在宽屏下的布局。App 会根据屏幕宽度自适应:手机使用抽屉和浮层,宽屏使用并排面板;两种布局共享相同的功能和连接方式。第三方插件仍由 DSH 自己加载,移动层负责适配布局与连接,不修改 DeepSeek Harness 源码。

兼容条件与 WebSocket 放行规则:

代理页面为兼容部分社区插件允许嵌入 HTTP 页面;这类内容未加密,可能被篡改,浏览器也可能因混合内容策略拦截。处理敏感内容时请使用 HTTPS。通过 HTTPS 管理入口打开远程面板时,页面顶部会显示相同提醒。

  • 已发布的 0.4.3 按 DSH 0.1.6-alpha.2 做过 renderer-v2 合同检查。DSH 页面需要提供标准的会话、main/panelInfo 和 rightbar 插槽;插件自身需要通过 DSH 的标准面板或侧边栏入口注册内容。
  • 网关默认只允许 DSH 内置的第一方 WebSocket 路径。社区侧边栏插件使用的其他路径默认拦截,通常会在诊断页显示为待处理项目;截图中的/sidebar/ws/agent-opens 和/sidebar/ws/agent-terminals 就属于这类需要按实际插件确认的路径。
  • 在 连接诊断 → 第三方 WebSocket 路径 中,只对确认过的精确路径点击 允许。系统不接受带查询字符串或模糊前缀的路径;不建议使用“全部允许”。已允许的路径可以随时移除,局域网和远程连接使用同一套规则。
  • 放行只代表该路径可以通过已认证、同源的 DSH Mobile 网关,不会开放任意 TCP/UDP 端口,也不会绕过设备配对。若社区插件仍然连接失败,先看诊断页的实际拦截路径,再按一条路径放行。
Android App 宽屏布局与社区侧边栏插件适配
Android App 下社区侧边栏插件的兼容
Android App 第三方 WebSocket 路径诊断
连接诊断:检查第三方 WebSocket 路径并按需放行

App 与手机浏览器

方式适合场景说明
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 修改)都不会被改动,安装和卸载完全通过插件机制完成。

安全

  • 局域网监听只用于可信家庭、办公网络或可信热点;不要自行做端口转发。
  • 远程地址可从公网到达,但未配对请求无法进入 DSH;不使用时应关闭远程开关。
  • cpolar 仅在用户确认后下载固定官方版本并校验大小和 SHA-256;不会安装系统服务、写入 PATH 或设置开机启动,插件清理会删除其托管文件。
  • cloudflared 同样仅在用户确认后从官方 GitHub Release 下载固定版本并校验精确大小和 SHA-256,且启动时关闭自动更新,以保证运行的始终是已校验的那份二进制;快速隧道不需要账号、Token 或 DNS 记录;命名隧道令牌只存插件私有目录、只经环境变量传给 cloudflared,清理时删除插件托管的全部文件。
  • 自建 FRP 仅在用户确认后从官方 Release 下载固定版本 frpc,校验来源、精确大小、SHA-256、压缩包路径和可执行文件版本;共享 Token 不会出现在状态、诊断或日志中。复制服务器模板时 Token 会进入系统剪贴板,请粘贴后及时清除;本机清理只删除插件管理的文件,VPS 需要用面板提供的卸载脚本或一键清理单独清除。自动部署与一键清理前都会展示 SSH 主机指纹,必须到 VPS 控制台核对后才能继续。
  • 配对设备拥有控制电脑端 DeepSeek Harness 的能力,应视为完全可信设备;丢失手机后应在电脑端撤销设备。
  • 移动网关开启时才监听局域网;关闭后 DeepSeek Harness 仍正常在电脑本机运行。

完整说明见 SECURITY.md。

故障排查

  • 启动报 saved LAN interface "XXX" is not connected 且 DSH 起不来: 电脑切换过网络(WiFi/有线/扩展坞),之前保存的网卡当前未连接。处理方式 (三选一):连回原来的网络;按新网络重跑一遍 setup;暂时不用手机访问时, 在 cordis.patch.yml 把 mobile-access 设 disabled: true。新版本中该 情况不再阻断启动——插件记一条警告后休眠,等网卡回来自动恢复。

兼容性

下表列出各插件版本验证支持到的 DeepSeek Harness 版本(早于该版本的 0.1.x 均兼容)。0.3.6 起插件不再按版本号拒绝启动,未列出的更新版本由 CI 契约检查兜底。历史记录见 CHANGELOG.md。

系统支持矩阵

通道Windows x64Linux x64Linux arm64macOS
局域网支持(自动配防火墙)支持(防火墙自理)支持支持
Tailscale Funnel支持(随包提供)支持(随包提供)支持(随包提供)不支持
cpolar支持(按需下载)支持(按需下载)支持(按需下载)不支持
cloudflared 快速/命名隧道支持(按需下载)支持(按需下载)支持(按需下载)不支持
自建 FRP支持(按需下载)支持(按需下载)支持(按需下载)支持(按需下载)
自有反向代理支持(纯配置)支持(纯配置)支持(纯配置)支持(纯配置)

macOS 上局域网、自建 FRP 与自有反向代理可用;三个托管组件暂未提供 macOS 包。诊断页的防火墙检查目前仅覆盖 Windows,其他系统显示“不适用”。

DSH Mobile 插件验证支持的 DeepSeek Harness 版本
0.4.30.1.6-alpha.2(本机源码与 renderer-v2 契约检查)
0.4.20.1.6-alpha.1(本机源码与 renderer-v2 契约检查)
0.4.10.1.6-alpha.1(本机源码与 renderer-v2 契约检查)
0.3.15、0.3.16、0.4.00.1.5-rc.2(契约检查);0.1.5-rc.1(@idoall 局域网实测)
0.3.140.1.3-alpha.2
0.3.9-0.3.120.1.3-alpha.1
0.3.6-0.3.80.1.2-rc.1
0.3.4、0.3.50.1.2-alpha.2
0.3.0-0.3.30.1.2-alpha.1
0.1.4、0.2.x0.1.1-rc.2

现有 App(0.3.3 及更新)无需重新配对;cpolar 用户应使用 0.3.15 或更新 App,较早版本可能在免费线路的慢速首次加载完成前超时;更早的 App 还使用不同的状态栏策略。App 0.4.0 才支持多设备列表、启动行为设置和电脑端撤销状态同步;旧版 App 仍可连接已保存的单台设备。App 0.1.3 及更早版本需卸载重装并重新配对。

卸载

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。

开发

npm ci
npm run verify

Android 构建见 App 文档。

Apache-2.0,详见 LICENSE。