dsh-mobile-adaptive:dsh web 的移动端适配插件

前言

DeepSeek Harness(DSH)采用“一切皆插件”的架构理念。在实际开发场景中,开发者常需在移动设备上调试,或通过远程访问进行协作。默认的桌面端布局在手机屏幕上往往难以操作,侧边栏、设置面板及文件选择器均缺乏适配。

dsh-mobile-adaptive 是一个挂载在 dsh 客户端的适配插件。它通过纯 CSS/JS 注入的方式,在不修改 dsh 业务逻辑的前提下,对移动端界面进行重构。桌面端(宽度 >= 1024px)保持零改动,仅针对移动端进行响应式调整。

安装与挂载

插件以组合包(dsh.bundle)和客户端插件(dsh.client)形式提供。安装后,浏览器半边和宿主半边会自动激活。

安装命令:

dsh plugin --profile web add dsh-mobile-adaptive

本地开发调试(热更):
如果需要修改源码并立即生效,建议使用本地链接方式:

dsh plugin --profile web add link:<本机仓库绝对路径>

安装完成后,务必先停止正在运行的 dsh web,再重新启动,使新插件生效。

功能说明

插件主要解决布局适配、目录浏览和文件上传三个问题。

1. 布局适配

针对宽度小于 1024px 的屏幕,插件调整了界面结构:

  • 侧边栏折叠:侧栏隐藏为覆盖式抽屉,通过汉堡按钮、遮罩层或 Escape 键关闭。
  • 设置页单列:设置面板全屏化,采用两层导航(分区列表 → 具体设置项)。控件拉满宽度,触控区域 ≥44px。
  • 顶部工具条:在 ≤1023px 时,将权限选择和模型选择从输入栏上移至会话头部,原头部条目收进“+”号弹出面板。

2. 目录浏览移动端化

插件仅对 dsh 内置的 browse(应用内目录树)对话框做适配。

  • 固定为 browse 模式:插件强制使用 browse 而非系统原生选择器。这是为了解决 dsh 由 launchd 托管时的回环网络误判问题——directory-picker-auto 在远程访问场景下会误挂载原生 Finder,导致手机端无 UI。需在 ~/.dsh/profiles/web/cordis.patch.yml 中禁用 directory-picker 并静态装配 directory-picker-browse。
  • 样式调整:窄屏下浏览对话框全屏,Miller 双栏布局收敛为单栏,行高 ≥44px。

3. 本地上传

上传功能从输入栏移至顶部工具条,支持批量操作。

  • 传输机制:客户端按 1 MiB 切片,将文件转换为 base64,通过通用 RPC 通道 /dsh-mobile-adaptive 传输。宿主端只写工作区的 <cwd>/上传/ 目录。
  • 文件处理:文件名清洗为单路径段,重名自动改名(格式如 文件名(1).txt),拒绝空文件,上限 2 GiB。
  • 状态管理:支持失败重试,使用 .part 临时文件,1 小时后自动清扫。

技术细节与限制

  • 兼容性:100dvh 需 iOS 15.4+,旧版系统自动回退 100vh。
  • 桌面端:宽度 >= 1024px 时,除附件按钮位置微调外,无其他回归改动。
  • 权限:插件以当前 dsh 进程权限运行,请确保源码与许可证可信赖。
羽毛球分组比赛记分
小程序二维码

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

小夜