dsh-plugin-mobile-ui: DeepSeek Harness 移动端界面适配插件

前言

DeepSeek Harness (DSH) 的 Web 界面主要针对桌面端设计,在手机上使用时存在控件过小、缺乏手势交互、布局错位等问题。dsh-plugin-mobile-ui 是一个官方 slot 客户端插件,旨在将 DSH 的 Web 界面改造成适合手机操作的界面。它通过注入样式和替换部分组件,在不修改 DSH 源码的前提下,实现抽屉导航、键盘适配、横屏支持等功能。

插件概况

  • 名称: dsh-plugin-mobile-ui
  • 维护者: loeissu
  • 许可: MIT
  • 定位: 官方 slot 客户端插件,不 fork dsh-tether,不修改 DSH 源码。

核心功能

插件主要解决移动端的交互体验问题:
- 抽屉导航: 提供类似原生 App 的侧滑导航面板。
- 启动页: 优化冷启动和热启动的展示。
- 键盘适配: 使用 visualViewport 处理软键盘遮挡。
- 横屏支持: 适配横屏场景的布局。
- 工具卡: 替换部分官方工具卡(read/grep/edit/write),支持折叠和失败自动展开。
- 复制助手: 针对 Android WebView 中 async 剪贴板被拒的问题,提供兜底方案,确保复制功能可用。
- 自动重连: 程序回到前台时自动尝试重连。

安装与启用

安装需要从 GitHub Releases 下载发布包。

  1. 下载 dsh-plugin-mobile-ui-<版本>.tgz 到固定目录(不要放在 %TEMP%)。
  2. 执行安装命令:
dsh plugin --profile web add <那个 tgz 的完整路径>

安装完成后,必须重启 dsh web 服务,插件才会生效。如果后续需要重新加载插件内容(如修改了源码),直接刷新手机页面即可,无需重启服务。

典型用法

安装并重启服务后,在手机上访问 DSH Web 客户端:

  1. 打开导航: 点击顶栏最左的文字 「导航」。
  2. 管理会话: 在抽屉内,列表按分组显示:刚刚 / 今天 / 昨天 / 更早。
  3. 新建会话: 点击抽屉底部的 + 号。
  4. 查看设置: 点击抽屉底部的 设置,支持左右滑动切换分区。
  5. 刷新连接: 如果连接看起来卡住,点击抽屉底部的 刷新连接。
  6. 复制内容: 在消息下方点击 复制。插件接管了 WebView 的剪贴板逻辑,解决了 Android 上静默失败的问题。

开关与配置

插件的核心逻辑通过 src/client/config.ts 中的 FEATURES 开关控制。主要配置项包括:

  • splash: 启动页开关。
  • drawerOverlay: 抽屉导航覆盖层开关。
  • settings: 设置页移动端分区及弹层排版。
  • toolCards: 工具卡列表(默认替换 read/grep/edit/write)。
  • keyboardFit: 键盘遮挡适配。
  • resumeReconnect: 回到前台自动重连。
  • clipboardFallback: 剪贴板兜底逻辑。

适用场景与注意事项

  • 适用场景: 主要用于在手机浏览器或 WebView 中使用 DSH 进行开发调试、查看日志或简单交互。
  • 已知取舍: 工具卡替换了 4 张官方卡(read/grep/edit/write),因此会失去官方的「在轨迹中查看」和点开文件的功能。
  • 验证方式: 插件未包含 CI 和单元测试,主要依赖 npm run verify 进行离线契约校验和 CDP 探针测试。
  • 文件依赖: 安装包必须保留 .tgz 文件,否则在后续执行 dsh plugin 操作时会报错找不到文件。

结语

该插件通过简单的安装和配置,显著改善了 DSH 在移动端的可用性。对于需要在移动设备上频繁使用 DSH 的开发者来说,它是解决交互痛点的有效方案。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜