dsh-mobile-layout
DeepSeek Harness Web UI 移动端体验套件:让 dsh web 在手机上好看、好用。 零依赖,装上即用;关闭皮肤即完全还原 stock 外观。
功能一览
1. 移动端阅读布局(<1024px 自动生效)

- 侧栏抽屉化:无常驻窄栏,会话区占满全宽;顶栏左上角鲸鱼按钮开合会话抽屉
- 字体密度:正文 / 标题 / 代码适度收缩,一屏容纳更多内容
- 表格:自然宽度 + 横向触摸滚动;长词、链接自动换行不再溢出
- 输入框:上滑阅读、切换已有会话或刷新恢复已有会话时默认收起(不会唤起手机输入法),点击消息文字即可显示并聚焦;空白新会话保持可见,桌面端不受影响
- 设置面板:导航横排适配手机宽度;模型编辑等长表单在内容区独立触摸滚动,底部操作不会被截断
2. 换肤(侧边栏「主题与背景」按钮)

- 模式:无 / 玻璃 / 半透明,表面不透明度滑杆 0–100%
- 极光背景:四套预设——蓝紫 / 暖阳 / 青绿(浅色底)+ 单色·墨(深色底),
彩色光斑缓慢漂移 + 电影颗粒质感
- 自定义背景:图片 URL 或手机相册选图
- 文字对比度自动适配:按背景明暗自动切换应用的深/浅文字主题,文字始终清晰
- 透明化:用户气泡、代码块、滚动条滑杆随表面同源半透明,文字保持不透明
3. 文件浏览器(「文件」页签,与对话/轨迹并列)

- 文件根目录自动跟随当前会话所属工作区;同一工作区切换会话会保留当前目录、列表缓存和滚动位置(不刷新),只有切换到不同工作区才取消旧请求并从新根加载
- 在工作区内浏览:面包屑导航、手动刷新、md / 代码 / 图片 / PDF 预览、「新标签页打开」和「下载到设备」
- 下载走独立流式端点,不受 2 MB / 40 MB 预览大小上限影响
- 客户端只传 sessionId;Host 从服务端 Workspace 注册表解析可信根目录,跨工作区路径与符号链接逃逸均拒绝
- 对话页保持原生滚动;文件页签使用独立列表滚动,切换页签不会锁死或复用对话滚动位置
4. 上传文件(侧边栏「上传文件」按钮)
- 侧边栏底部动作区新增「上传文件」按钮(回形针图标,与主题按钮同款式),
点击选文件(支持多选),逐个上传,状态卡实时显示进度与结果
- 上传到当前工作区专用目录:Host 根据发起时的 sessionId 解析工作区,自动创建并写入
<workspace>/upload,不污染工作区根目录 - 绝不覆盖:文件名强制单段(无路径穿越),同名自动追加
(1)序号,
单个文件默认上限 500 MB(可配 uploadMaxBytes),失败自动清理半截文件
- 上传成功后文件页签自动刷新;成功显示落盘完整路径,8 秒自动收起
5. 稳定性增强
- 历史加载 abort 错误自动重试愈合(全端生效)
- 移动端从阅读态新建空白会话时强制恢复输入区,避免 body 级收起状态跨会话残留而只剩背景
安装
dsh plugin --profile <name> add github:crwsr124/dsh-mobile-layout
# 或本地源码: dsh plugin --profile <name> add file:<本目录绝对路径>首次安装后重启一次 dsh web 进程(host 半的文件路由是冷路径;改 host 半 代码后同样需要重启)。
文件浏览和上传无需配置目录:根目录自动取当前会话所属的已注册工作区。只有上传大小上限是可选配置:
- id: dsh-mobile-layout
config:
uploadMaxBytes: 524288000 # 可选;缺省 500 MB> Host 根据 sessionId 从服务端 Workspace 注册表解析 canonical path;浏览器传入的绝对路径只能位于该根内。上传固定进入 <workspace>/upload。 > 反代部署注意:若经 nginx 等网关访问,上传大文件需在网关侧放开 > client_max_body_size(nginx 默认仅 1 MB,超限返回 HTML 413 页)。
作用范围
- 仅移动端(媒体查询门控):阅读布局、输入框滚动收起、Session log 隐藏、
设置面板移动端布局
- 跨端功能(有意为之):换肤、文件页签、上传文件、abort 自愈
- 皮肤关闭 / 卸载插件 = 完全还原 stock 外观
已知限制
- 会话轨迹(details)列在手机上无法打开(app shell 框架限制,CSS 无法干预)
- 上传路由无内置认证——公网部署务必保持 nginx basic auth 等外部防护(与
文件浏览路由同一威胁模型)
- 老内核浏览器:无毛玻璃模糊(透明与背景仍生效,面板内有支持诊断)
开发与设计细节
实现原理、兼容性处理、选择器约定与版本历史见 [docs/DESIGN.md](docs/DESIGN.md)。
License
MIT