dsh-mobile

为 DSH 提供经设备配对的局域网 HTTPS 网关、可选远程通道(Tailscale Funnel、cpolar、cloudflared、自建 FRP、自有反向代理)、手机专用布局和 Android App,让可信手机访问电脑上的同一工作区与会话。

快速判断

安装前先看这几项

配置资料
配置资料完整
配置难度
较高
适合新手
建议具备相关经验
兼容状态
声明兼容,尚未实测
验证状态
源码已审阅,未标记运行实测
你正在查找符合当前筛选条件的插件
← 返回原筛选结果
本页目录(9)
中文教程

按照固定来源完成安装、配置与验证

教程包含独立 Profile、精确安装目标、配置证据、最小验证任务、回退和数据清理。

查看 dsh-mobile 安装与配置教程 →
功能

这个插件能做什么

为 DSH 提供经设备配对的局域网 HTTPS 网关、可选远程通道(Tailscale Funnel、cpolar、cloudflared、自建 FRP、自有反向代理)、手机专用布局和 Android App,让可信手机访问电脑上的同一工作区与会话。

适合谁

需要远程通知、消息、Telegram能力的用户。

使用门槛

该插件涉及较高配置难度或敏感权限,不建议在生产工作区直接试装。

准备

安装前准备

  • DSH 版本组合(必需):本页固定使用 DSH 0.2.0-rc.2 和 dsh-mobile 0.5.3。插件 peer 为 *,元数据不会拦截任何 DSH 版本,但作者只列出 0.1.7-alpha.2 至 0.2.0-rc.2 经过检查。52DSH 未在 rc.2 上运行验证。
  • Node.js 与独立 web Profile(必需):Node.js 需满足 ^22.19.0 或 >=24。在独立的 web Profile 和可丢弃的测试工作区中安装,不要直接连接生产目录。
  • 可信局域网(必需):只在家庭、办公室或自己的热点等可信网络中开启局域网访问。不要在路由器上做端口转发;Windows 防火墙规则对公用网络配置文件同样生效,在公共 Wi-Fi 下应关闭局域网访问。
  • Android App 或手机浏览器(可选):原生 App 仅支持 Android 10 及以上,请从作者 GitHub Release v0.5.3 下载,并核对随附的 SHA-256 文件。不安装 App 时,可在手机浏览器中打开配对链接;局域网私有证书首次访问会出现警告。不提供 iOS App。
  • 远程通道账号或服务器(可选):只有需要远程访问时才准备:Tailscale 账号、cpolar Authtoken、Cloudflare 账号与域名、自有 VPS 与 SSH 密钥,或已有的 HTTPS 反向代理,任选其一。远程访问默认关闭,不使用时不要开启。
安装

如何安装 dsh-mobile

本页命令固定使用 DSH 0.2.0-rc.2,与 npm 默认版本分别维护。切换 DSH 前核对本插件的兼容记录;新版 Session API 与格式变化见0.1.3-alpha.1 升级说明。源码审阅不等于运行验证。

下面的命令使用本站核验的 DSH 基线,并锁定插件版本或 Git commit,避免默认分支变化导致安装内容漂移。本站已核对安装目标,但尚未在你的系统和 Profile 中实际执行。

安装到
web Profile
DSH 基线
0.2.0-rc.2
安装来源
npm 预构建包(锁定版本)
固定目标
[email protected]

0.5.3 声明的 DSH 版本范围包含 0.2.0-rc.2,本页固定 DSH 0.2.0-rc.2。仅静态复核,未在本站运行验证。

  1. 01
    检查 Node.js 与 pnpm

    DSH 当前基线需要 Node.js 22.19 或 Node.js 24 及以上,并且 pnpm 必须已在 PATH 中。先运行:

    环境检查
    node --version && pnpm --version
  2. 02
    安装到 Web Profile

    这条命令会把插件加入 web Profile,并在插件声明 DSH Bundle 时自动加入配置层。

    npm 预构建包(锁定版本)
    npx --yes @deepseek-ai/[email protected] plugin --profile web add [email protected]
  3. 03
    确认 Bundle 已进入配置

    安装成功后先导出组合配置,不启动 Agent。输出中应能找到包名 dsh-mobile或对应 Bundle 层。

    检查配置
    npx --yes @deepseek-ai/[email protected] --profile web --dump-config
  4. 04
    启动并完成最小验证

    启动 Web Profile 后,只测试一个与插件功能直接相关的最小任务,并检查日志、文件、网络和凭据访问是否符合预期。

    启动 DSH Web
    npx --yes @deepseek-ai/[email protected] web
卸载与回退

测试不通过时先停止 DSH,再从同一 Profile 移除插件。移除后重新运行配置检查,确认对应 Bundle 层已经消失;插件自己创建的数据和外部账号配置可能需要另行清理。

从 Web Profile 移除
npx --yes @deepseek-ai/[email protected] plugin --profile web remove dsh-mobile
配置

插件专属配置

$DSH_HOME/mobile-access/setup.json 与 tls/
setup 写入的网卡、Mobile HTTPS 端口(默认 3443)、DSH 上游端口,以及私有 CA、服务器证书和私钥,文件权限设为私有。
$DSH_HOME/mobile-access/control.json 与 devices.json
局域网访问的开关状态,以及已配对设备记录(只保存令牌的 SHA-256 摘要);电脑端撤销设备时会删除对应记录。
$DSH_HOME/mobile-access/mobile.css、mobile.js、extensions/
/mobile 定制写入的位置。mobile.js 以配对页面的同源权限运行;extensions/<id>/host.mjs 会被自动加载,并以桌面用户权限运行。
$DSH_HOME/mobile-access/remote/
远程通道的状态:Tailscale 登录状态,以及 cpolar Authtoken、cloudflared 命名隧道令牌、FRP 共享 Token 等私有文件,还有按需下载的组件。
Profile 中 id 为 mobile-access 的 Loader 行 config
高级选项:excludedClientModules(精简手机启动包)、deviceTtlMs、sessionTtlMs、pairingTtlMs、maxDevices、maxBodyBytes(默认 160 MiB)。默认值即可使用。

环境变量

DSH_HOME · 可选
DSH 数据目录。插件的证书、设备、自定义文件和远程组件都存放在 $DSH_HOME/mobile-access/ 下,purge 也会删除这个目录。

固定版本安装与局域网 setup · bash。示例中的账号、路径和凭据占位符必须替换,不要提交真实密钥。

复制 固定版本安装与局域网 setup 配置
npx --yes @deepseek-ai/[email protected] plugin --profile web add [email protected]
npx --yes @deepseek-ai/[email protected] plugin --profile web exec dsh-mobile setup
npx --yes @deepseek-ai/[email protected] --profile web --dump-config

核对配置证据(外部链接,在新标签页打开)

自动选网卡失败时指定地址与端口(占位符需替换) · bash。示例中的账号、路径和凭据占位符必须替换,不要提交真实密钥。

复制 自动选网卡失败时指定地址与端口(占位符需替换) 配置
npx --yes @deepseek-ai/[email protected] plugin --profile web exec dsh-mobile setup --address 192.168.x.x --port 3443

核对配置证据(外部链接,在新标签页打开)

插件随包附带的 Bundle 挂载行(由 plugin add 自动合并,无需手写) · yaml。示例中的账号、路径和凭据占位符必须替换,不要提交真实密钥。

复制 插件随包附带的 Bundle 挂载行(由 plugin add 自动合并,无需手写) 配置
- id: directory-picker
  name: '@deepseek-ai/dsh-host-directory-picker-auto'
  disabled: true
- insert:
    - id: mobile-access
      name: dsh-mobile
      inject: [webServer, connection]
      config:
        initiallyEnabled: false
        listenHost: 127.0.0.1
        listenPort: 3443
        allowedCidrs: [127.0.0.0/8]
        tls:
          mode: disabled
    - id: dsh-ui-fixes
      name: dsh-mobile-question-fixes

核对配置证据(外部链接,在新标签页打开)

可选:从手机启动包排除指定客户端模块(填当前启动清单中的准确包名) · yaml。示例中的账号、路径和凭据占位符必须替换,不要提交真实密钥。

复制 可选:从手机启动包排除指定客户端模块(填当前启动清单中的准确包名) 配置
excludedClientModules:
  - '@deepseek-ai/dsh-client-ui-sidebar-documentpreview'
  - '@deepseek-ai/dsh-client-ui-open-in-app'

核对配置证据(外部链接,在新标签页打开)

  1. 安装后重启 DSH。在左下角打开“移动访问 → 局域网”,确认面板显示的网卡和地址属于当前可信网络。插件市场安装或首次未运行 setup 时,也可以在面板里选择网卡、生成私有证书,然后重启一次 DSH。
  2. 只在需要配对时点击“生成并复制密钥”,配对窗口默认 2 分钟、只能使用一次。配对完成后在设备列表中核对新设备名称,确认没有陌生设备。
  3. 远程访问保持关闭。确实需要时只选择一种通道;cpolar、cloudflared、frpc 都会在确认后才下载。使用自有反向代理时,3444 后端只能留在可信私网,不要把 /api/mobile-access 管理路径转发到公网。
  4. 第三方 WebSocket 路径只放行确认过的精确路径,不要使用“全部允许”。需要 HTTP iframe 的社区页面不要处理敏感内容。
  5. 面板标题右侧的“更新插件”会把版本改为 npm 最新版,绕开 52DSH 审阅的 0.5.3。需要保持固定版本时不要点击;需要升级时先查看新版审阅记录。
验证

配置检查与成功结果

  1. 01
    确认 Profile 中有一条启用的 mobile-access(dsh-mobile)行和 dsh-ui-fixes 行,并且没有重复挂载。
    复制验证命令
    npx --yes @deepseek-ai/[email protected] --profile web --dump-config

    期望结果:出现 name 为 dsh-mobile 和 dsh-mobile-question-fixes 的 Loader 行,启动日志中没有插件预检或加载错误。

  2. 02
    在同一局域网的手机上打开 App 或配对链接,用面板当前生成的密钥完成配对,然后打开一个可丢弃的测试会话。

    期望结果:手机能看到与电脑相同的工作区和会话列表;电脑端设备列表出现这台手机。

  3. 03
    在电脑端撤销这台测试手机,再用手机刷新页面。

    期望结果:手机的在线会话断开,或提示配对已过期/电脑端已移除,需要重新配对才能进入。

  4. 04
    关闭局域网访问后,用另一台未配对设备访问 https://<电脑局域网地址>:3443/。

    期望结果:连接被拒绝或只看到登录/配对页;未配对设备无法进入 DSH 会话。

使用

第一次使用建议这样验证

  • 在手机上打开可丢弃的测试工作区,只让 Agent 列出文件并解释项目结构,不批准写入或命令执行。
  • 在 DSH 对话中输入 /mobile 并提出一个纯样式需求(例如调整强调色),确认只修改 mobile.css,手机端自动刷新。
权限

它可能接触哪些数据和能力

控制浏览器写入本地文件读取本地文件

局域网访问启用后,在所选网卡地址监听 HTTPS(默认 3443),来源限定为该网段;Windows 上会经 UAC 添加 LocalSubnet 入站规则(Profile 为 Any)。远程通道会把网关发布到公网。配对设备可以操作电脑上的 DSH,包括发送任务、批准工具和上传附件,还能浏览本机任意目录并读取 20 MiB 以内的图片。extensions 下的 host.mjs 以桌面用户权限运行,mobile.js 拥有配对页面的同源权限。

数据存储:电脑端:$DSH_HOME/mobile-access/ 保存 setup.json、control.json、devices.json(设备令牌摘要)、私有 CA 与证书私钥、mobile.css/mobile.js、extensions/,以及 remote/ 下的 Tailscale 登录状态、cpolar/cloudflared/FRP 令牌和下载的组件。会话在内存中保存,DSH 重启后失效。手机端:Android App 把设备令牌和私有 CA 加密存放在 Keystore;浏览器使用 HttpOnly 会话 Cookie 与 CSRF Cookie。远程通道服务商和 VPS 上的状态不在本机。

请注意:“源码已审阅”说明本站检查到的证据范围,不等于安全认证。重要工作区应锁定版本、备份数据并在最小权限下测试。

排查

故障排查与数据清理

从 0.1.0-alpha.36 升级后手机无法连接
alpha 线与 0.5.x 之间跨越了 App 签名更换和多处协议变化,旧版 App 需要卸载后重新安装。应预期要重新运行 setup 并重新配对;不要为此关闭认证或开放端口。
手机提示输入另一插件的配对码
dsh-remote-web-ui 等其他远程插件使用独立授权。先在电脑端临时关闭另一插件的远程访问并刷新,再扫描 DSH Mobile 当前的二维码,不要交叉输入密钥。
切换网络后局域网访问不可用
日志提示 saved LAN interface is not connected 时,说明保存的网卡当前未连接,等它恢复或重新运行 setup 即可;DSH 本身会继续运行。
社区插件在手机端连接失败
打开连接诊断 → 第三方 WebSocket 路径,只放行这个插件实际被拦截的精确路径;放行不会绕过设备配对。
设置无法保存或报 profile reload requires the root Include entry
作者在 issue #132 中归因于全局 CLI 与 Profile 各自加载了一份 dsh-app-boot,不是 Mobile 本身的问题。核对实际运行的 DSH 命令和 Profile 版本,保持 Host/Origin 信任检查开启。
卸载后的清理步骤
  1. 先在电脑端撤销所有已配对设备并关闭远程访问。手机上“删除本地记录”只删除手机端凭据,不会在电脑端撤销授权。
  2. 需要连同本机数据一起清理时,先备份要保留的扩展,再按顺序运行:npx --yes @deepseek-ai/[email protected] plugin --profile web exec dsh-mobile purge --yes,然后运行 npx --yes @deepseek-ai/[email protected] plugin --profile web remove dsh-mobile。purge 会删除整个 $DSH_HOME/mobile-access/,并移除插件创建的两条 Windows 防火墙规则。
  3. 只运行 remove 不会删除证书、设备记录、自定义文件和远程令牌。如果已经先 remove,需要手动检查并删除 $DSH_HOME/mobile-access/ 及 Windows 中名为“DSH Mobile HTTPS”“DSH Mobile Discovery”的入站规则。
  4. 远程通道需要在服务商处另行清理:在 Tailscale 管理台删除对应节点和 Funnel,吊销 cpolar Authtoken 或 Cloudflare 隧道令牌;FRP 托管部署需用面板卸载脚本清理 VPS。接入既有 frps 的方式不会改动 VPS,也不会替你清理。
  5. 卸载后 Bundle 不再禁用 DSH 默认的 auto 目录选择器。重启 DSH 后,确认 mobile-access 行消失,原生目录选择恢复正常。
深入审计:兼容性、数据流与来源
证据

兼容性与审阅记录

兼容性说明

0.5.3 的四个 @deepseek-ai/dsh-* 可选 peer 均为 *,可通过 DSH 0.2.0-rc.2 的启动预检;作者兼容表声明 0.1.7-alpha.2 至 0.2.0-rc.2 已通过源码契约、npm 打包安装、隔离配对与移动页面启动检查。52DSH 仅静态审阅固定提交与 npm 包,未在 0.2.0-rc.2 上运行,也未做真实手机配对或远程通道测试。

数据流

手机 App 或浏览器通过以下任一入口连接:局域网 HTTPS 网关,或 Funnel、cpolar、cloudflared、FRP、自有反代转发到的独立回环远程网关。网关用设备令牌换取短期会话并校验 CSRF,再转发到回环 DSH Web/Host;会话、工具、文件与事件结果沿原路返回手机。面板检查版本时会访问 registry.npmjs.org 与 GitHub,远程组件在确认后从官方发布页下载。

源码审阅结论

已审阅 v0.5.3 固定提交与 npm 包。tarball 的 SHA-512 与 registry integrity 一致,provenance 指向同一标签提交;sourcemap 中的源码、三个 Funnel 二进制都与提交逐字节一致。安装后默认关闭,只监听回环,TLS 只能在回环上关闭;setup 生成私有 CA 后才对局域网开放。配对令牌 256 位,单次有效,默认 2 分钟过期;设备令牌只保存 SHA-256 摘要,默认 90 天;会话 8 小时,写操作必须带 CSRF。远程访问默认关闭,使用独立的设备库。注意事项:配对设备等同完全可信的操作者;CSP 仍允许 unsafe-inline/unsafe-eval,并为兼容放行 HTTP iframe;面板“更新插件”会执行 pnpm add 安装 npm 最新版,绕开固定版本;Bundle 会用 browse 版目录选择器替换 DSH 默认的 auto 版。52DSH 没有运行插件,没有配对手机,也没有测试任何远程通道。

来源与维护信息

本页根据固定提交的仓库、包清单和本站审阅资料生成。版本变化后,请重新核对作者说明。

来源快照
e483a501cec7
固定提交
0afa58f481c8
许可证
Apache-2.0
主要语言
TypeScript
中文资料
有完整中文配置资料