前言¶
DeepSeek Harness(DSH)的 web 配置默认按桌面三栏布局设计:侧边栏、居中的对话区、右侧 Files / 终端 / 代码视图。在手机上直接打开,常见结果是聊天区只剩一条缝、设置对话框挤在 188px 导航旁几乎没法读、右侧栏宽度为 0 时根本进不去文件视图;iOS Safari 还会在输入框字号小于 16px 时自动放大整页。
若你希望用手机或平板 PWA 访问本机或局域网上的 dsh web,又不想改 DSH 核心代码,dsh-mobile-fix 提供一层纯客户端补丁:抽屉侧栏、边缘滑动、可读设置、全屏右栏,以及若干 iOS/Android 交互细节修复。
这是什么¶
dsh-mobile-fix(包名仍为 dsh-mobile-fix)是维护者 zven73 发布的 客户端类 DSH 插件:无 Host 侧业务逻辑,通过 cordis.patch.yml 注入一行空 Host 记录,浏览器加载 lib/client.js 客户端 bundle。许可证为 MIT;package.json 标明适用于 DSH >=0.2.0 <0.3.0-0,当前仓库版本为 0.17.0。社区目录页见 SkillHub,源码与说明在 GitHub。
一句话定位:Phone-first UI patch for the DeepSeek Harness Web UI: drawer, edge swipes, readable settings, working right panel——不动核心,只改 Web 客户端的样式与 DOM 事件。
核心功能¶
下面按 README 中核实的能力归纳;宽屏桌面(≥1024px)刻意保持原样。
布局与导航¶
- 侧栏改为 56px 轨道 + 遮罩抽屉:会话列表以全屏覆盖层打开,带模糊遮罩;选会话、点外侧或关闭按钮会收起抽屉,并照顾底部 safe area。
- 边缘滑动:从左缘滑入打开,向左滑关闭;垂直滚动与横滑有阈值(36px 横移、34px 纵漂、24px 触边区),避免和列表滚动抢手势。
- 会话行首触即开:在 iOS 上通过
pointerup同步派发click,避免「第一次点击只关抽屉」的问题。
输入、设置与右栏¶
- 消除 iOS 输入自动缩放:触摸设备上为
input/textarea/contenteditable强制 16px(依据设备类html.dsh-mf-touch,而非仅视口宽度);并设置touch-action: manipulation减轻双击偏移。 - 设置对话框适配窄屏:分段导航改为顶部横向可滚条;账户卡片在窄屏纵向堆叠,避免名称被挤在细列里。
- 右栏全屏 sheet:768px 以下 DSH 本身已全屏;768–1023px 区间在
data-sidebar-right-open时由插件提升为全屏面板,便于 Files、终端、代码查看器可用。
内容与文件¶
- 消息内代码块与表格:限制在消息宽度内独立滚动;文件查看器代码字号调整为 12px(原为 11px)。
- 应用内打开
/api/file链接:拦截裸文件 URL 与部分window.open,在叠加层内预览图片、PDF、音视频、文本/JSON、ZIP 列表等,避免 iOS PWA 掉进无法返回的原生 Quick Look;多图支持翻页与保存当前项。 - 键盘收起后失焦:缓解 iOS 独立 PWA 键盘工具条残留。
远程与主机操作¶
- 隐藏不适用的「在本机打开」:Open in Finder / VS Code 等只在运行 DSH 的机器上有意义;插件按 loopback、桌面壳、WebRTC 探测等判断本地/远程,远程客户端不显示这些项。可在控制台强制:
localStorage['dsh-mobile-fix-local'] = '1' // 当作本地
localStorage['dsh-mobile-fix-local'] = '0' // 当作远程
页面控制台可调用 __dshMobileFixWhere() 查看当前判定。
安装前:让手机能连上 dsh web¶
默认 dsh --profile web 只监听 127.0.0.1,同 Wi-Fi 的手机无法访问。先做网络暴露,再装插件。
- 绑定本机局域网地址(不支持
0.0.0.0,需写具体 IP):
# macOS: ipconfig getifaddr en0 Windows: ipconfig Linux: hostname -I
dsh --profile web --host 192.168.0.54 --no-open
-
放行防火墙端口(macOS 允许 node 入站;Windows 需添加入站规则)。
-
在手机浏览器打开启动日志里的地址,形如
dsh web: http://192.168.0.54:3080/?token=…。token 按进程生效,重启后旧主屏快捷方式失效;当前链接也在~/.dsh/link.txt。 -
可选 HTTPS:明文 HTTP 在局域网上不是安全上下文,
navigator.share不可用,预览底栏为 Download file 而非 Save to Files,Chrome 也无法「安装应用」。需要完整 PWA 体验时可:
dsh --profile web --host 192.168.0.54 --tls-cert ./chain.pem --tls-key ./key.pem
经反代或隧道时:
dsh --profile web --public-url https://dsh.example.com/ --trusted-host dsh.example.com
安装与启用¶
官方 README 给出的安装步骤如下(dsh plugin 需要系统 PATH 上有 pnpm):
git clone https://github.com/zven73/dsh-mobile-fix.git ~/.dsh/local-plugins/dsh-mobile-fix
dsh plugin --profile web add ~/.dsh/local-plugins/dsh-mobile-fix
安装后重启 dsh web(或等待 profile 重新 compose),在手机上刷新页面即可。客户端 bundle 带内容修订号,后续更新插件通常只需刷新页面。
卸载:
dsh plugin --profile web remove dsh-mobile-fix
可在 ~/.dsh/profiles/web/package.json 的 bundles 中确认 dsh-mobile-fix 是否已编入 web profile。
典型用法与可选配置¶
在应用内打开外链¶
web profile 下默认禁用了沙箱浏览器 tab,外链可能走 window.open 并跳出到系统浏览器。若希望链接在右栏浏览器内打开(本插件在手机上会全屏展示该栏),可在 ~/.dsh/profiles/web/cordis.patch.yml 中启用:
- id: ui-sidebar-browser
name: "@deepseek-ai/dsh-client-ui-sidebar-browser"
disabled: false
修改后重启 dsh web。部分站点拒绝被 iframe 嵌入时会显示空白,属于对方 X-Frame-Options 策略,与插件无关。
Android 与快捷方式¶
README 单独说明:Android 手势返回区会占用左缘,Opening 滑动可从更靠内的区域起始;首次打开若遇到认证页,可刷新一次利用已写入的 cookie;主屏快捷方式建议使用无 token 的 http://<host>:<port>/(cookie 约 30 天),token 链接主要用于 dsh web 重启后的首次访问。Android 上「安装应用」同样依赖 HTTPS。
排错速查¶
| 现象 | 建议 |
|---|---|
| 手机仍像桌面布局 | 强制刷新;检查 web profile 是否包含该 bundle |
| 设置打不开或偏屏 | 刷新;仍异常时在 issue 中注明机型与 DSH 版本 |
| iOS 仍缩放输入框 | 确认插件版本 ≥0.6.1(触摸设备判定) |
| 右栏空白 | 从会话头进入;sheet 按会话而非全局 |
适用场景与注意¶
适合谁:需要在 iPhone / Android 上以 PWA 或移动浏览器使用 DSH web profile 的开发者;本机或局域网访问运行 DSH 的主机,远程只读对话、文件预览、设置调整。
工作方式:插件仅在浏览器执行 CSS 与 DOM 钩子,依赖 DSH 0.2.x 现有的 CSS Module 类名片段与 data-slot;大规模 UI 改版可能需要更新选择器。无 service worker、无 Host 代码。
安全与信任:安装前请阅读 源码 与 MIT 许可证。插件随当前 DSH 进程提供的 Web 会话加载,与访问 dsh web 的权限边界一致;不要将带 token 的 URL 长期分享在不可信环境。
生态说明:DSH 奉行「一切皆插件」;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-mobile-fix 把 DSH 0.2.x 桌面优先的 Web UI 补成可在手机上完整使用的形态:抽屉与会话切换、可读设置、可用的 Files / 代码右栏,并处理 iOS 缩放、文件链接与远程客户端下主机操作显示等细节。若你已在局域网暴露 dsh web,按 README 安装到 web profile 后刷新移动浏览器即可验证。
- 目录页:https://www.skillhub.cn/plugins/zven73/dsh-mobile-fix
- GitHub:https://github.com/zven73/dsh-mobile-fix