DeepSeek Harness (DSH) 插件:dsh-qol 体验优化

前言

DeepSeek Harness (DSH) 采用插件化架构,允许用户通过配置扩展 Web GUI 的功能。原生的 Web 界面在移动端体验上往往存在交互细节不足的问题,例如会话切换时输入法意外弹出、长对话滚动不便、侧边栏操作逻辑与手势冲突等。

dsh-qol 是一款针对 DSH Web GUI 的体验优化插件,专注于解决这些移动端交互痛点。它不改变页面布局或字体大小,仅通过行为修正和交互增强来提升可用性。插件由 john-walks-slow 维护,采用 MIT 许可证,所有逻辑均运行在客户端。

核心功能

插件功能集中在设置页的 QoL 分区,按功能分为导航切换、输入键盘、触摸反馈和显示设置四组。

导航与会话管理

  • 活跃会话 Tab Bar
    • 在页面顶部横向展示已打开的会话标签。
    • 操作支持:支持右键菜单(关闭、固定/取消固定、关闭其他);支持鼠标拖动排序;支持鼠标滚轮横向滚动标签栏;支持切换显示模式(标准按打开顺序,最近活跃按时间排序)。
    • 防误触:新会话仅在发出首条消息后出现;固定页签不会被窗口截断淘汰。
  • 侧栏交互
    • 滑动开合:支持右滑展开、左滑收起,具备跟手拖拽、边界回弹和惯性归位效果。
    • 布局优化:展开时为浮层覆盖,不挤压主内容宽度;支持主题感知的半透明遮罩关闭。
    • 自动收起:窄屏(≤768px)下切换会话后自动收起侧栏。
  • 长对话处理
    • 消息跳转:提供“上一条/下一条用户消息”定位按钮,便于在长对话中逐条查看。
    • 懒加载:滚动到对话顶部时自动触发宿主的“加载更早”功能,保持视口锚定。

输入与键盘适配

  • 输入法/键盘适配
    • 修正 viewport meta 属性,使用 100dvh 高度链与 visualViewport CSS 变量,解决 iOS 和 Android 的安全区域与键盘遮挡问题。
  • 发送控制
    • 默认情况下,输入框中按回车键为换行,需使用 Ctrl/⌘+Enter 发送消息。
  • 空间优化
    • 隐藏输入框内的权限选择下拉框,节省横向空间。

触摸与反馈

  • 触摸反馈
    • 启用 touch-action: manipulation 消除 300ms 点击延迟。
    • 提供无延迟的按压视觉反馈,并尊重系统的 prefers-reduced-motion 设置。
  • 拖拽修复
    • 禁用触摸长按拖拽,修复 Android 设备上长按侧边栏会话行触发系统拖拽导致页面卡死的问题(桌面端鼠标拖拽排序不受影响)。

显示与设置页

  • 设置页重写
    • 在移动端(≤768px)将设置对话框改为全屏堆叠布局,支持标签页横向滚动。
  • 滚动控制
    • 阻止主内容区产生横向滚动;代码块与超长表格在容器内横向滚动,防止页面整体晃动。
  • 动画优化
    • 将状态指示的 SVG 动画替换为 CSS transform,提升渲染性能。

安装与启用

插件安装后,dsh 会自动挂载配置。刷新 Web 页面后,设置页会出现 QoL 分区。

安装命令:

dsh plugin --profile web add dsh-qol

配置持久化:

所有开关状态保存在浏览器的 localStorage 中,键名为 dsh.qol.v1;分组折叠状态保存在 dsh.qol.groups。清空对应键值即可重置为默认配置。

使用说明

  1. 打开 dsh Web GUI。
  2. 进入 设置 页面,找到 QoL 分区。
  3. 根据需求点击开关。插件采用“属性总闸”机制,切换开关时会在 html 标签上添加或移除对应 data-qol-<功能id> 属性,实现即时生效,无需刷新页面。

注意事项

  • 运行环境:纯客户端插件,零 npm 运行时依赖,不读取会话内容,不进行网络请求或文件系统写入。
  • 权限:无特殊权限要求,仅修改 CSS、DOM 事件与 viewport meta。
  • 跨平台:桌面端零影响,移动端专属规则通过媒体查询锁定。
  • 兼容性:可与 dsh-web-mobile-fix 插件共存,两者提供不同层面的优化。
羽毛球分组比赛记分
小程序二维码

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

小夜