dsh-mobile-layout
DeepSeek Harness Web UI 移动端体验套件:让 dsh web 在手机上好看、好用。
零依赖,装上即用;关闭皮肤即完全还原 stock 外观。
0.9.1 起适配 dsh 0.1.5:文件浏览已由 0.1.5 内置能力(右侧边栏「文件」
标签 + 文档预览)接管,本插件不再自带文件浏览器。下载与上传能力保留,
以「下载到设备」/「上传」按钮挂接到内置文件面板上:文件行下载、目录行
上传到该目录、工具栏上传到工作区 upload/。同时修复手机视口下内置面板
在玻璃/半透明皮肤下的透明问题。
功能一览
1. 移动端阅读布局(<1024px 自动生效)
banner
- 侧栏抽屉化:无常驻窄栏,会话区占满全宽;顶栏左上角鲸鱼按钮开合会话抽屉
- 字体密度:正文 / 标题 / 代码适度收缩,一屏容纳更多内容
- 表格:自然宽度 + 横向触摸滚动;长词、链接自动换行不再溢出
- 输入框:上滑阅读、切换已有会话或刷新恢复已有会话时默认收起(不会唤起手机输入法),点击消息文字即可显示并聚焦;空白新会话保持可见,桌面端不受影响
- 设置面板:导航横排适配手机宽度;模型编辑等长表单在内容区独立触摸滚动,底部操作不会被截断
2. 换肤(侧边栏「主题与背景」按钮)
banner
- 模式:无 / 玻璃 / 半透明,表面不透明度滑杆 0–100%
- 极光背景:四套预设——蓝紫 / 暖阳 / 青绿(浅色底)+ 单色·墨(深色底),
彩色光斑缓慢漂移 + 电影颗粒质感
- 自定义背景:图片 URL 或手机相册选图
- 文字对比度自动适配:按背景明暗自动切换应用的深/浅文字主题,文字始终清晰
- 透明化:用户气泡、代码块、滚动条滑杆随表面同源半透明,文字保持不透明
- 0.1.5 右侧边栏覆盖:玻璃/半透明模式同样覆盖新右栏列(
_rightbarCol),
内置文件面板保持磨砂可读,不会透出底层内容
3. 内置文件面板「下载到设备」挂接(0.9.0 新形态)
- 0.1.5 内置的右侧边栏「文件」标签负责浏览,点击文件由内置文档预览打开;
本插件用 MutationObserver 给文件树的文件行与文档预览头注入一个
下载按钮(
data-dml-* 标记,样式与面板自带工具按钮一致),点击即把该
工作区文件真实下载到设备(XHR 进度显示在按钮上)
- 下载走本插件保留的流式端点
GET /mobile-files/download,不受预览大小
上限影响,可下任意大小的二进制
- 路径直接取自内置面板 DOM(
data-files-path / data-textpreview-path),
不复活任何浏览 UI;sessionId 取当前会话,Host 在服务端重新解析工作区
根并拒绝越界路径——会话失效只会得到可见报错,绝不会下错文件
- 上传能力保留(0.9.1 恢复):工具栏「上传」按钮维持原语义——进
<workspace>/upload(自动创建,不污染根目录);每个目录行另有「上传到
此目录」按钮(dir=<该目录>),与下载按钮同款式。仍走本插件端点
POST /mobile-files/upload:名字强制单段、dir 必须 realpath 落在工作区内、
重名自动 (n) 不覆盖、默认 500 MB 上限
4. 稳定性增强
- 历史加载 abort 错误自动重试愈合(全端生效)
- 移动端从阅读态新建空白会话时强制恢复输入区,避免 body 级收起状态跨会话残留而只剩背景
安装
dsh plugin --profile <name> add github:crwsr124/dsh-mobile-layout
# 或本地源码: dsh plugin --profile <name> add file:<本目录绝对路径>
首次安装后重启一次 dsh web 进程(host 半的下载路由是冷路径;改 host 半
代码后同样需要重启)。client 半(布局/皮肤/下载按钮)随新页面热生效。
下载无需配置目录:根目录自动取当前会话所属的已注册工作区,无任何可选配置项。
Host 根据 sessionId 从服务端 Workspace 注册表解析 canonical path;浏览器传入的绝对路径只能位于该根内(含符号链接逃逸拒绝)。
作用范围
- 仅移动端(媒体查询门控):阅读布局、输入框滚动收起、Session log 隐藏、
设置面板移动端布局
- 跨端功能(有意为之):换肤、内置文件面板下载/上传挂接、abort 自愈
- 皮肤关闭 / 卸载插件 = 完全还原 stock 外观
已知限制
- 会话轨迹(details)列在手机上无法打开(app shell 框架限制,CSS 无法干预)
- 下载/上传路由无内置认证——公网部署务必保持 nginx basic auth 等外部防护
- 0.8.x 的
/mobile-files/list|read 已从代码移除(/download 保留、
/upload 于 0.9.1 恢复);已运行的 dsh web 进程在重启前仍会挂载旧版
四动作路由面(冷路径),属预期过渡态
- 老内核浏览器:无毛玻璃模糊(透明与背景仍生效,面板内有支持诊断)
开发与设计细节
实现原理、兼容性处理、选择器约定与版本历史见 docs/DESIGN.md。
License
MIT