前言¶
DeepSeek Harness (DSH) 的默认 Web 界面采用三栏桌面布局。在手机宽度视口下(≤ 820px),侧边栏轨道、188px 设置导航栏以及仅悬停显示的工具行会变得拥挤或无法触及。dsh-client-ui-mobile 插件在 max-width: 820px 断点以下重塑外壳,且不触碰上游代码。这是一个纯客户端(浏览器)插件,包含一个 <style> 块以及一个微小的 React 覆盖层。
功能¶
抽屉式侧边栏
在 820px 以下,侧边栏变为左侧抽屉。有两种入口方式:
1. 在会话页面上,在官方顶部栏的“Session log”按钮旁边注入一个“expand sidebar”按钮。
2. 在主页(无对话头)上,右上角出现一个 FAB(浮动操作按钮)。
两者互斥。一旦顶部栏按钮出现,FAB 即让出位置。它带有一个覆盖对话的背景,支持 Esc 关闭,并在会话切换时自动关闭。
全屏设置表单
设置对话框(桌面端为 188px 导航轨道 + 内容)变为全屏表单,包含顶部标题、水平滚动的选项卡、绝对定位的关闭按钮以及安全区域插入。
设置入口动画
遮罩淡入 + 面板上滑。受 prefers-reduced-motion 约束。
详情面板作为底部表单
工具调用详情列(默认在小屏幕上隐藏)变为由布局的 data-details-collapsed 状态驱动的上滑底部表单。
工具行“Inspect”按钮
在桌面端为悬停显示,在小屏幕上可见并放大为 32px 触摸目标。
安全区域与触摸优化
env(safe-area-inset-*),16px 输入字体,touch-action: manipulation,更密集的输入框间距。
升级抗性选择器
针对稳定属性([role="dialog"][aria-modal="true"]:has(>nav),[data-shell-overlay])以及 CSS 模块本地名称后缀([class*="_options"]),而非哈希类名,以在 DSH 前端重建后生存。
安装与启用¶
此插件为纯 ESM,无构建步骤,无安装脚本。
dsh plugin --profile web add github:raomaiping-hash/dsh-client-ui-mobile
# 固定提交哈希以实现可重复性:
dsh plugin --profile web add github:raomaiping-hash/dsh-client-ui-mobile#<sha>
重启 DSH Web 进程,并在手机宽度视口(或 ≤ 820px 的浏览器窗口)下打开 GUI。
典型用法¶
- 在手机宽度下打开 GUI。
- 使用顶部栏按钮或 FAB 打开抽屉。
- 使用设置表单访问设置。
- 触摸目标上显示检查按钮。
兼容性与注意事项¶
- 目标版本:DSH
0.1.5-rc.2(在package.json中声明为dshTarget)。 - 执行环境:此插件为 UI 仅 插件。它不处理主机路由、文件访问、网络或设置持久化。它读取
ctx.layout(侧边栏/详情切换)和ctx.slots;仅写入 DOM 节点和<style>标签,所有内容在停止/更新时被拆除。 - 安全:受限的执行环境不是安全边界。仅安装您信任的来源的插件。固定提交哈希以实现可重复性。
生态背景¶
DeepSeek Harness 理念是“一切皆插件”。社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。