前言¶
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 进程权限运行,请确保源码与许可证可信赖。