dsh-plugin-dshm
Verifieddsh-plugin-dshm · v0.1.1 · MIT · Web UI
Pair your iPhone or iPad with DeepSeek Harness over a private, authenticated connection
Install
dsh plugin add dsh-plugin-dshm Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
DSHM 桥接插件
通过 iPhone 或 iPad 上的 DSHM,查看和控制电脑里的 DeepSeek Harness 会话。 智能体仍在你的电脑上运行;手机通过局域网或你自己的 VPN 连接桥接插件。
环境与兼容性
- DeepSeek Harness 0.2.1-rc.3 或 0.2.1-rc.5。插件 0.1.1 新增对
0.2.1-rc.5 的支持,这是 2026-10-30 验证的 npm
latest版本。 仅支持这些已测试的精确版本;其他版本(包括独立的 0.2.2 alpha 通道) 不会自动视为兼容。 - 电脑正在运行 DSH 桌面应用或
dsh web,手机或平板已安装兼容的 DSHM 构建版本。这个 npm 包不会安装 iOS 应用。 - DSH 运行环境使用 Node 24 或更新版本,且 PATH 中有
openssl,供首次 创建本地 TLS 证书使用。 - 两台设备之间能够直接通信,或已连接到你自己的 Tailscale 等 VPN。
目前已在 macOS 上使用 DSH 0.2.1-rc.3 验证桌面应用及隔离的 dsh web。
插件 0.1.1 还在真实 DSH 0.2.1-rc.5 的隔离 dsh web 中通过了审批、重连、
文件传输、路径限制及重启测试。新的 0.1.1 / rc.5 组合仍需 Windows 原生验证;
macOS 通过的测试不能代替 Windows 验证。真实手机的网络测试也与本地测试客户端、
Simulator 的结果分别记录。v1 不包含中国大陆市场,也不声明已验证大陆网络可达性。
在 DSH 中安装
在需要远程控制的 DSH 实例中打开 Plugins(插件) 页面。
使用页面上的包安装入口,输入以下包名:
dsh-plugin-dshm让 DSH 插件管理器安装插件及依赖。按提示重启 DSH,然后打开 Settings(设置)→ DSHM。
请使用 DSH 插件管理器,不要手动修改配置文件,也不要把文件复制进已安装的 DSH 应用目录。安装只作用于所选的 DSH profile,不会自动启用其他 profile。
DSH 0.2.1 通过包名从 npm 安装插件,没有中央插件市场。本版本未发布 DSHM 自定义插件索引。
配对手机或平板
- 保持 DSH 运行。在电脑上打开 Settings → DSHM → Pair a device(配对设备)。
- 在 iPhone 或 iPad 的 DSHM 中添加电脑,扫描显示的二维码。
- 出现提示时允许本地网络访问。电脑上的 DSHM 设置卡片应显示该设备为 Connected(已连接)。
二维码只能使用一次,五分钟后过期。它包含临时配对凭据,请勿转发,也不要 放进截图或问题报告。点击 Cancel pairing(取消配对) 可以提前关闭;过期 后重新开始配对即可。只配对你信任的设备:已配对设备可以查看会话和文件、 发送提示词、回答工具审批。
手机丢失或不再需要访问时,在 Settings → DSHM 中点击该设备的 Revoke(撤销),再确认 Revoke device(撤销设备)。插件会关闭其当前 连接,并阻止旧配对重新连接。以后需要恢复访问时,可以重新配对。
网络设置
引导设置远程连接
手机和这台电脑不在同一 Wi-Fi?使用 Tailscale。在同一 Wi-Fi 下无需其他设置。 打开 Settings → DSHM → 不在同一 Wi-Fi。这个可选向导检查 Windows/ macOS 上的官方 Tailscale 程序,提供官方安装说明,并可打开 DSH 宿主电脑上的 Tailscale。安装、系统授权和浏览器登录由你亲自完成。如果从另一台电脑打开 DSH Web UI,请把 Tailscale 安装在 运行 DSH 的电脑 上。
手机安装 Tailscale,使用同一个个人账号登录,并连接两端。组织账号需确保 两台设备处于同一且允许通信的 tailnet;登录相同账号不会绕过组织访问策略。 连接后点 Pair for remote access,在 DSHM 扫描新二维码。旧的仅局域网配对 不会自动获得新 VPN 地址:先在 DSHM 忘记旧电脑,在宿主撤销旧设备条目,再 重新配对。主动生成新二维码会替换尚未使用的旧二维码。
向导区分“电脑已就绪”和“设备已通过 Tailscale 连接”。请让手机使用蜂窝网络 或其他 Wi-Fi 进行测试。Pair a device 始终保留局域网配对入口,无须 安装 Tailscale。取消安装、未登录或状态检查失败都不会关闭局域网配对。
插件不会自动安装 VPN,不修改 Tailscale 账号、DNS、路由、出口节点、防火墙 或代理设置,也不收集登录凭据。卸载插件会保留已安装的 Tailscale。新向导的全新安装及 远程手机验收尚未完成;此前 Windows 局域网/远程测试使用旧版包,不能代替 新向导验收。
- macOS: 在 系统设置 → 隐私与安全性 → 本地网络 中允许
DeepSeek Harness。如果通过终端运行
dsh web,也要允许相应的终端 应用。iOS 上的 DSHM 同样需要“本地网络”权限。 - Windows: Windows 防火墙询问 DSH 宿主程序的联网权限时,允许你信任的 专用网络(Private networks),保持 公用网络(Public networks) 禁用。桥接插件不会替你修改防火墙规则;Windows 的运行验证仍待完成。
- Wi-Fi: 建议先让两台设备连接同一个可信的家庭或办公 Wi-Fi。访客网络、 手机热点或路由器的客户端隔离功能,可能让设备都能上网却无法互相连接。
- 代理和 VPN: 在两台设备上开启 绕过局域网/本地网络(bypass LAN), 或暂时关闭影响连接的代理以检查路由。局域网地址和所用 VPN 的设备地址都 必须可达;把全部流量送入代理的规则可能阻止配对。
- 不在同一 Wi-Fi: 让电脑和手机加入同一个 Tailscale 网络或你管理的其他 VPN, 并允许两台设备之间通信。电脑需要保持唤醒,DSH 需要保持运行。DSHM 没有 自营会话流量中继。Bonjour 发现通常不会穿过 VPN;配对时应确保手机能够 连接电脑提供的某个地址。
桥接插件默认在局域网/私有地址及 Tailscale 地址的 TCP 47390 端口监听, 与 DSH Web UI 使用不同的监听端口。不要为它设置路由器公网端口转发,也不要 把 DSH Web 服务改成公网监听。Bonjour 使用本地网络;如果能够发现电脑却 连接不上,先检查权限、代理/VPN 绕过设置及客户端隔离。
数据会发送到哪里
只有打开远程设置或请求远程配对时,向导才读取本机 Tailscale 状态;返回连接 状态和本机 VPN 地址,不返回账号身份、登录链接或其他设备清单。Tailscale 是 独立服务,有自己的账号和隐私条款;DSHM 在 VPN 上仍使用固定证书的 TLS。
桥接插件通过固定证书的 TLS 连接,把会话消息、工具结果、审批、所选文件及 已声明的交付文件发送给经过认证的已配对设备。手机发送的提示词、回答和附件 会交给电脑上的 DSH。桥接插件不运行云端智能体,也不使用分析服务或 DSHM 会话流量中继;它不会读取或转发 DSH 的模型服务凭据存储。DSH 本身仍会按照你 自己的配置连接模型服务和工具,遵循这些服务的设置。
Bonjour 会在局域网内公布桥接宿主的标识、协议版本和私有网络地址,供发现
使用。本地桥接身份和配对记录保存在 $DSH_HOME/dshm/,使用默认 DSH home
时为 ~/.dsh/dshm/。请勿把其中的私有文件粘贴到问题报告。安装插件或使用
远程索引时,DSH 会访问相应的包仓库和索引服务器。
可选的推送通知经过独立代理及 Apple 推送通知服务(APNs)。 未配置
pushProxyUrl 时,桥接插件不会发起推送网络请求,也不会声明支持推送。
配置地址后会定期检查代理健康状态;只有代理可达且会话观察功能正常时,才
声明支持推送。本软件包包含桥接发送端,代理及应用另行提供。iOS 推送注册、
通知服务扩展及真实锁屏手机的通知送达仍是独立工作,本地后端测试不代表
这些环节已经验证。
注册推送时,应用将 APNs 设备令牌及沙盒/生产环境标识发送给所选的 HTTPS
代理。代理保存这份路由映射,以及用独立包装密钥加密的认证密钥。应用通过
DMP 将返回的注册信息和另一把通知内容密钥交给已配对的桥接插件。桥接插件
把这些密钥和偏好保存在私有的 $DSH_HOME/dshm/push.json(权限 0600)中。
APNs 提供方密钥只存在代理的密钥配置中,不会交给桥接插件。
配置并完成注册后,桥接插件会把加密的会话标题、简短事件摘要,以及不透明 推送 ID、事件类别、分组 ID 和请求签名发送给代理。代理将密文和通用备用 提示转交 APNs。代理及 APNs 都不会收到通知内容密钥,也无法直接读取解密后 的标题/摘要;路由元数据、时间和载荷大小仍然可见,代理在网络层也会收到 客户端 IP。应用仅记录计数,并保存用于限流的 IP 哈希。推送不会上传文件或 完整会话记录;设备保持已认证的实时连接时,不会向该设备发送推送。
取消推送注册或撤销设备会先删除本地推送注册,再尽力请求代理删除相应映射。 代理不可达时,无法确认远端删除成功;仅卸载软件包不会删除远端映射。 APNs 已经接收的通知无法撤回。终端输出仍仅供查看;桥接插件不提供可交互的 远程终端。
卸载
- 在 Settings → DSHM 中撤销不再需要授权的设备。
- 打开 Plugins,找到
dsh-plugin-dshm,通过 DSH 插件管理器从当前 profile 中移除。如果其他 profile 也安装过,包括可选的dshmCLI profile,请分别移除。 - 按提示重启受影响的 DSH 宿主。该宿主的 DSHM 设置卡片和监听端口应已消失。
卸载软件包与删除私有身份、配对记录是两件事。如果打算重新安装,请保留
$DSH_HOME/dshm/。如果你明确选择完整重置,应先停止所有使用该 home 的 DSH
宿主,然后仅删除桥接插件的 dshm 状态目录;已有设备需要忘记旧电脑并重新
配对。不要删除整个 DSH home,也不要删除模型服务凭据或会话目录。卸载桥接
插件不会删除 DSH 会话。
新 DSH 版本发布检查清单(维护者)
- 先阅读上游改动,尤其是 projection 接口和插件加载器。在尚未发布的候选包中,
同步更新显式运行时允许列表及
engines.dsh,以便通过 DSH 安装并进行隔离 验证。以下测试通过前,不发布该包,也不对外声明支持新版本。 - 通过 DSH 的正常发布渠道安装候选运行时,在隔离的
.dsh-testhome 中对 该候选版本运行pnpm -C bridge test:integration。兼容性改动必须同时 审查bridge/src/projection/native.ts中的显式运行时版本保护;只改包元数据 不会启用新运行时。必要时调整测试宿主路径,但不要跳过失败,也不要用旧 运行时的结果冒充新版本验证。 记录实际版本和结果;声明新的 Windows 组合已支持前,完成 Windows 清单。 - 运行
pnpm -C bridge test、pnpm -C protocol validate和pnpm -C protocol gen:check。在正确的架构边界内修复兼容性问题并审查结果。 - 只有真实 DSH 集成测试通过后,才最终确定
engines.dsh中明确验证过的 版本或范围。不要假定未来整个小版本都兼容。根据实际验证记录,更新tools/release-plugin/check-release.mjs中的已测试范围,并与运行时版本保护 保持一致。从bridge/package.json重新生成并验证插件索引,保证两处兼容性字段一致。 - 提升插件版本,更新中英文 README,检查
npm pack --dry-run,并通过隔离 profile 的插件管理器安装和启动准备发布的同一个 tarball。 - 发布前审计准备发布的同一个 tarball,记录 SHA-256。所有者亲自登录 npm, 禁用生命周期脚本后发布该文件。通过隔离 profile 的 DSH 插件管理器验证按名 安装。已经发布的版本不能通过覆盖来修复。
公开仓库仅保存插件源码快照。共用协议源码、fixtures 及集成工具保留在私有 开发仓库中;上述 monorepo 构建和测试命令需要维护者的开发检出。npm 包已包含 协议运行时和依赖许可证,用户不需要这些开发源码。公开仓库不包含私有仓库 历史、iOS 应用或推送代理源码。