abbaababa/dsh-mobile-access

dsh-mobile-access

用 iPhone 或 iPad 的 Safari 打开 Mac 或 Windows 上的 DeepSeek Harness Web:8 位配对码、回环监听的局域网网关、可选 Tailscale Serve,以及仅 iOS 生效的 Safari 输入与触摸补丁。可用 dsh plugin add 安装。

待分类deepseek-harnessdshiphone

手机访问(dsh-mobile-access)

English (US) — plain-language guide: README.en.md

用 iPhone / iPad 自带的 Safari,安全打开 Mac 或 Windows 10/11 上的 DeepSeek Harness Web。
不用装 App,不用改 DSH 源码,不影响你原来在电脑上的使用。
Windows 10/11 用户也能用:同一份插件,不区分 Mac / Windows。
Windows 只是多一个“防火墙允许 Node.js”的步骤;完整小白步骤见
Windows 10/11 快速上手。

这是一个独立的 TypeScript DSH 插件(bundle)。它主要在 DSH 里增加三样东西:

  1. 左侧栏一个「手机访问」入口;
  2. 一个给手机用的短地址和 8 位配对码;
  3. 一组只在 iPhone/iPad 上生效的输入与触摸小补丁(Return 换行、防自动放大、侧栏手势等)。

其他东西都不动:不改 DSH 核心、不改登录方式、不替换页面、不装后台服务、不拦截现有请求。

安全吗?会偷看或上传我的文件吗?

结论:按 1.1.8 的源码和 npm 发布包检查,没有发现窃取文件、上传数据或远程控制的行为。

  • 没有生产依赖:dependencies 是空的;安装包只含运行所需的 JS、配置、图标和说明。
  • 没有危险能力:服务端只用到 Node 自带的 http、net、os 和 Web Crypto;没有读文件的 fs、没有执行命令的 child_process、没有 eval。
  • 没有第三方服务器:手机和电脑之间的配对、页面、WebSocket 只在你的局域网或你自己的 Tailscale 内;配对码和 Cookie 只发给这台 DSH。
  • 不主动读取或保存内容:插件不读取聊天记录、不扫描文件;局域网网关只转发你主动发起的 HTTP/WebSocket 请求,不另存一份。
  • 自动检查结果:npm audit --omit=dev 为 0 个漏洞;npm 已校验 1.1.8 发布包的 registry 签名;33 项自动测试和 Ubuntu/Windows CI 均通过。
  • 边界也要知道:插件运行在 DSH 进程权限内;请只从 npm 安装固定版本,不要把 8 位配对码给不信任的人;在公共 Wi-Fi 下建议关闭网关或改用 Tailscale。任何软件都有供应链风险,锁定 1.1.8 比盲目使用 @latest 更稳妥。

技术用户可以自己复核:

cd /path/to/dsh-mobile-access
npm view dsh-mobile-access@1.1.8 dependencies
npm audit --omit=dev
npm audit signatures
grep -RInE "child_process|exec\\(|eval\\(|https?://" src

English (US) — What This Is

This is a small, independent add-on for the official DeepSeek Harness (DSH) Web app. It lets Safari on an iPhone or iPad open the DSH Web app running on your Mac or Windows 10/11 PC — without installing a phone app or changing DSH itself.

DSH normally protects its page with a very long login link. That link is too long to type on a phone. This plugin adds a simpler, temporary way in:

  1. The DSH sidebar shows an 8-digit code on your computer.
  2. You open a short address on the iPhone, ending in /m.
  3. You type the 8 digits.
  4. Safari logs in and keeps a secure cookie for 30 days.

The long login token never appears in the phone’s address bar, browser history, or Referer header. The code expires after 10 minutes and locks after too many wrong attempts.

Install in one command

Mac Terminal:

dsh plugin --profile web add dsh-mobile-access@1.1.8 --registry=https://registry.npmjs.org/

Windows 10/11 PowerShell (no administrator mode needed):

dsh plugin --profile web add dsh-mobile-access@1.1.8 --registry=https://registry.npmjs.org/

Then refresh the DSH page, open Mobile Access in the left sidebar, and use the address and 8-digit code shown there.

If DSH only listens on 127.0.0.1, the plugin automatically starts a local gateway on port 3081; your computer keeps using 127.0.0.1, and the phone uses http://:3081/m. On Windows, allow Node.js on Private networks when the firewall asks.

This is not a public tunnel or a VPN. It is for your own trusted Wi-Fi/LAN. For access outside the home, the optional Tailscale Serve steps are in the full English guide.

iPhone-only fixes included

  • Return adds a new line; the send button sends.
  • Tapping the model switcher does not zoom the page or pop up the keyboard.
  • One tap switches a sidebar session and collapses the sidebar.
  • Swipe right to open the sidebar; tap the conversation content to close it.
  • Switching sessions dismisses the keyboard instead of reopening it.

Mac and Windows desktop behavior is left alone.

Read the full plain-English guide: README.en.md — it includes requirements, pairing steps, Windows firewall notes, Tailscale Serve, a troubleshooting table, security details, limits, and uninstall instructions.

先看结论:它到底帮你做了什么

假设你的电脑(Mac 或 Windows 10/11)上正在运行 DSH Web,地址是:

http://192.168.1.23:3080

以前 iPhone 直接打开这个地址,会看到:

dsh web authentication required; reopen the URL printed by dsh web.

这不是网络坏了,而是 DSH 的安全保护:它只认电脑终端(Mac 终端 / Windows PowerShell)里打印出来的那条带很长 token 的登录链接。这条链接太长,手机不可能手输。

这个插件做的事,就是把这个过程变成:

电脑面板显示 8 位配对码
        ↓
iPhone 打开短地址 /m
        ↓
输入 8 位数字
        ↓
自动登录,进入完整 DSH Web

用生活里的话说:

  • DSH 是一栋上锁的房子;
  • 原来的长 token 是一把很长的钥匙,手机没法输;
  • 插件在门口装了一个「临时门禁」;
  • 电脑前的人看到 8 位门禁码,告诉手机;
  • 手机输对后,屋里直接给它戴上 30 天有效的「手环」(HttpOnly 登录 Cookie)。

长钥匙不会出现在手机地址栏、浏览器历史或网页来源信息里。

Windows 10/11 快速上手(小白版)

这一段是专门写给“不写代码、不懂网络”的 Windows 用户的。
如果你用的是 Mac,可以直接看下面的安装。

先说结论

这个插件不是 Mac 专用的。

它在 Windows 10 / Windows 11 上使用的是同一个 npm 包、同一条安装命令、同一个「手机访问」面板。 Windows 和 Mac 最需要额外注意的区别是:

Windows 第一次运行时,系统防火墙会弹出一个“是否允许 Node.js 访问网络”的窗口,点一次“允许”即可。

不需要安装 iTunes,不需要买 Mac,不需要改 DSH 源码,也不需要在 iPhone 上装 App。

你需要准备什么

只需要 4 样东西:

  1. 一台 Windows 10 或 Windows 11 电脑;
  2. 电脑上的 DSH Web 已经能正常打开(平时启动 DSH 的那个窗口不要关);
  3. iPhone 和 Windows 电脑连的是同一个 Wi-Fi;
  4. Windows 上已经装好 DSH 需要的 Node.js(DSH 能启动,就说明已经装好)。

三步安装

第 1 步:打开 PowerShell

在 Windows 上:

  1. 按键盘上的 `Win + X`;
  2. 在弹出的菜单里选 “终端” 或 “Windows PowerShell”;
  3. 不需要“以管理员身份运行”;
  4. 看到类似 PS C:\Users\你的名字> 的提示符,就说明打开了。

第 2 步:复制下面这一条命令,粘贴,回车

dsh plugin --profile web add dsh-mobile-access@1.1.8 --registry=https://registry.npmjs.org/

这条命令只做三件事:

  1. 从 npm 下载插件;
  2. 装进 DSH 的 web profile;
  3. 自动把插件加入 DSH 的插件列表。
如果你的 DSH 平时用的不是 web 这个 profile,把命令里的 web 换成你实际使用的名字。
不确定时先照抄;如果提示 profile 不存在,再检查你平时启动 DSH 用的名称。

如果 PowerShell 提示“dsh 不是内部或外部命令”,说明 DSH 没有加入系统 PATH。 这不代表插件坏了:请先按你平时启动 DSH 的方式打开它的终端,再执行同一条命令;或者把 DSH 的 bin 目录加入 PATH。不要因此重装 Node.js 或 DSH。

第 3 步:回到 DSH 页面,按 Ctrl + R 刷新

刷新后,DSH 左侧栏会出现一个手机图标,名字叫「手机访问」。

如果插件管理器提示“需要重启”,请手动重启 DSH;不要连续反复重装。 正常情况下不需要重启。

第一次打开:Windows 防火墙会问你

第一次让手机访问时,Windows 可能弹出:

Windows Defender 防火墙已阻止此应用的部分功能
是否允许 Node.js 在专用网络上通信?

请这样选:

  1. 勾选 “专用网络”(英文是 Private networks);
  2. 点 “允许访问”(Allow access)。

不要勾“公用网络”(Public),除非你明确知道自己在做什么。

如果当时误点了“取消”,或者根本没弹窗,可以手动放行:

  1. 打开 Windows 安全中心;
  2. 点 “防火墙和网络保护”;
  3. 点 “允许应用通过防火墙”;
  4. 点 “更改设置”;
  5. 在列表里找到 Node.js;
  6. 勾选 “专用”;
  7. 点“确定”。

还要确认当前 Wi-Fi 被 Windows 当作“专用网络”:

  1. 打开 设置 → 网络和 Internet → Wi-Fi;
  2. 点当前连接的 Wi-Fi 名称;
  3. 把“网络配置文件类型”改成 “专用网络”。
如果 Wi-Fi 被设成“公用网络”,Windows 防火墙通常会更严格,iPhone 可能打不开页面。
如果 DSH 安装在 WSL(Windows 的 Linux 子系统)里:WSL 默认使用虚拟网卡,局域网里的 iPhone 通常无法直接访问 WSL 内部的端口。这不是插件本身的问题,而是 WSL 的网络隔离。建议把官方 DSH 直接安装在 Windows 本机;如果必须用 WSL,需要额外配置 WSL 端口转发和 Windows 防火墙,超出本插件“零配置”的范围。