前言¶
DeepSeek Harness (DSH) 採用插件化架構,允許用戶通過配置擴展 Web GUI 的功能。原生的 Web 界面在移動端體驗上往往存在交互細節不足的問題,例如會話切換時輸入法意外彈出、長對話滾動不便、側邊欄操作邏輯與手勢衝突等。
dsh-qol 是一款針對 DSH Web GUI 的體驗優化插件,專注於解決這些移動端交互痛點。它不改變頁面佈局或字體大小,僅通過行爲修正和交互增強來提升可用性。插件由 john-walks-slow 維護,採用 MIT 許可證,所有邏輯均運行在客戶端。
核心功能¶
插件功能集中在設置頁的 QoL 分區,按功能分爲導航切換、輸入鍵盤、觸摸反饋和顯示設置四組。
導航與會話管理¶
- 活躍會話 Tab Bar
- 在頁面頂部橫向展示已打開的會話標籤。
- 操作支持:支持右鍵菜單(關閉、固定/取消固定、關閉其他);支持鼠標拖動排序;支持鼠標滾輪橫向滾動標籤欄;支持切換顯示模式(標準按打開順序,最近活躍按時間排序)。
- 防誤觸:新會話僅在發出首條消息後出現;固定頁籤不會被窗口截斷淘汰。
- 側欄交互
- 滑動開合:支持右滑展開、左滑收起,具備跟手拖拽、邊界回彈和慣性歸位效果。
- 佈局優化:展開時爲浮層覆蓋,不擠壓主內容寬度;支持主題感知的半透明遮罩關閉。
- 自動收起:窄屏(≤768px)下切換會話後自動收起側欄。
- 長對話處理
- 消息跳轉:提供“上一條/下一條用戶消息”定位按鈕,便於在長對話中逐條查看。
- 懶加載:滾動到對話頂部時自動觸發宿主的“加載更早”功能,保持視口錨定。
輸入與鍵盤適配¶
- 輸入法/鍵盤適配
- 修正 viewport meta 屬性,使用
100dvh高度鏈與visualViewportCSS 變量,解決 iOS 和 Android 的安全區域與鍵盤遮擋問題。
- 修正 viewport meta 屬性,使用
- 發送控制
- 默認情況下,輸入框中按回車鍵爲換行,需使用
Ctrl/⌘+Enter發送消息。
- 默認情況下,輸入框中按回車鍵爲換行,需使用
- 空間優化
- 隱藏輸入框內的權限選擇下拉框,節省橫向空間。
觸摸與反饋¶
- 觸摸反饋
- 啓用
touch-action: manipulation消除 300ms 點擊延遲。 - 提供無延遲的按壓視覺反饋,並尊重系統的
prefers-reduced-motion設置。
- 啓用
- 拖拽修復
- 禁用觸摸長按拖拽,修復 Android 設備上長按側邊欄會話行觸發系統拖拽導致頁面卡死的問題(桌面端鼠標拖拽排序不受影響)。
顯示與設置頁¶
- 設置頁重寫
- 在移動端(≤768px)將設置對話框改爲全屏堆疊佈局,支持標籤頁橫向滾動。
- 滾動控制
- 阻止主內容區產生橫向滾動;代碼塊與超長表格在容器內橫向滾動,防止頁面整體晃動。
- 動畫優化
- 將狀態指示的 SVG 動畫替換爲 CSS
transform,提升渲染性能。
- 將狀態指示的 SVG 動畫替換爲 CSS
安裝與啓用¶
插件安裝後,dsh 會自動掛載配置。刷新 Web 頁面後,設置頁會出現 QoL 分區。
安裝命令:
dsh plugin --profile web add dsh-qol
配置持久化:
所有開關狀態保存在瀏覽器的 localStorage 中,鍵名爲 dsh.qol.v1;分組摺疊狀態保存在 dsh.qol.groups。清空對應鍵值即可重置爲默認配置。
使用說明¶
- 打開 dsh Web GUI。
- 進入 設置 頁面,找到 QoL 分區。
- 根據需求點擊開關。插件採用“屬性總閘”機制,切換開關時會在
html標籤上添加或移除對應data-qol-<功能id>屬性,實現即時生效,無需刷新頁面。
注意事項¶
- 運行環境:純客戶端插件,零 npm 運行時依賴,不讀取會話內容,不進行網絡請求或文件系統寫入。
- 權限:無特殊權限要求,僅修改 CSS、DOM 事件與 viewport meta。
- 跨平臺:桌面端零影響,移動端專屬規則通過媒體查詢鎖定。
- 兼容性:可與
dsh-web-mobile-fix插件共存,兩者提供不同層面的優化。