安装前先看这几项
- 配置资料
- 配置资料完整
- 配置难度
- 较高
- 适合新手
- 建议具备相关经验
- 兼容状态
- 声明兼容,尚未实测
- 验证状态
- 源码已审阅,未标记运行实测
本页目录(9)
按照固定来源完成安装、配置与验证
教程包含独立 Profile、精确安装目标、配置证据、最小验证任务、回退和数据清理。
这个插件能做什么
为 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 中实际执行。
- 安装到
webProfile- DSH 基线
0.2.0-rc.2- 安装来源
- npm 预构建包(锁定版本)
0.5.3 声明的 DSH 版本范围包含 0.2.0-rc.2,本页固定 DSH 0.2.0-rc.2。仅静态复核,未在本站运行验证。
- 01检查 Node.js 与 pnpm
DSH 当前基线需要 Node.js 22.19 或 Node.js 24 及以上,并且
pnpm必须已在 PATH 中。先运行:环境检查node --version && pnpm --version - 02安装到 Web Profile
这条命令会把插件加入
webProfile,并在插件声明 DSH Bundle 时自动加入配置层。npm 预构建包(锁定版本)npx --yes @deepseek-ai/[email protected] plugin --profile web add [email protected] - 03确认 Bundle 已进入配置
安装成功后先导出组合配置,不启动 Agent。输出中应能找到包名 dsh-mobile或对应 Bundle 层。
检查配置npx --yes @deepseek-ai/[email protected] --profile web --dump-config - 04启动并完成最小验证
启动 Web Profile 后,只测试一个与插件功能直接相关的最小任务,并检查日志、文件、网络和凭据访问是否符合预期。
启动 DSH Webnpx --yes @deepseek-ai/[email protected] web
测试不通过时先停止 DSH,再从同一 Profile 移除插件。移除后重新运行配置检查,确认对应 Bundle 层已经消失;插件自己创建的数据和外部账号配置可能需要另行清理。
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。示例中的账号、路径和凭据占位符必须替换,不要提交真实密钥。
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。示例中的账号、路径和凭据占位符必须替换,不要提交真实密钥。
- 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'- 安装后重启 DSH。在左下角打开“移动访问 → 局域网”,确认面板显示的网卡和地址属于当前可信网络。插件市场安装或首次未运行 setup 时,也可以在面板里选择网卡、生成私有证书,然后重启一次 DSH。
- 只在需要配对时点击“生成并复制密钥”,配对窗口默认 2 分钟、只能使用一次。配对完成后在设备列表中核对新设备名称,确认没有陌生设备。
- 远程访问保持关闭。确实需要时只选择一种通道;cpolar、cloudflared、frpc 都会在确认后才下载。使用自有反向代理时,3444 后端只能留在可信私网,不要把 /api/mobile-access 管理路径转发到公网。
- 第三方 WebSocket 路径只放行确认过的精确路径,不要使用“全部允许”。需要 HTTP iframe 的社区页面不要处理敏感内容。
- 面板标题右侧的“更新插件”会把版本改为 npm 最新版,绕开 52DSH 审阅的 0.5.3。需要保持固定版本时不要点击;需要升级时先查看新版审阅记录。
配置检查与成功结果
- 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 行,启动日志中没有插件预检或加载错误。
- 02在同一局域网的手机上打开 App 或配对链接,用面板当前生成的密钥完成配对,然后打开一个可丢弃的测试会话。
期望结果:手机能看到与电脑相同的工作区和会话列表;电脑端设备列表出现这台手机。
- 03在电脑端撤销这台测试手机,再用手机刷新页面。
期望结果:手机的在线会话断开,或提示配对已过期/电脑端已移除,需要重新配对才能进入。
- 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 信任检查开启。
- 先在电脑端撤销所有已配对设备并关闭远程访问。手机上“删除本地记录”只删除手机端凭据,不会在电脑端撤销授权。
- 需要连同本机数据一起清理时,先备份要保留的扩展,再按顺序运行: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 防火墙规则。
- 只运行 remove 不会删除证书、设备记录、自定义文件和远程令牌。如果已经先 remove,需要手动检查并删除 $DSH_HOME/mobile-access/ 及 Windows 中名为“DSH Mobile HTTPS”“DSH Mobile Discovery”的入站规则。
- 远程通道需要在服务商处另行清理:在 Tailscale 管理台删除对应节点和 Funnel,吊销 cpolar Authtoken 或 Cloudflare 隧道令牌;FRP 托管部署需用面板卸载脚本清理 VPS。接入既有 frps 的方式不会改动 VPS,也不会替你清理。
- 卸载后 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
- 中文资料
- 有完整中文配置资料