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 插件共存,兩者提供不同層面的優化。
羽毛球分组比赛记分
小程序二维码

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

小夜