前言¶
DeepSeek Harness (DSH) 的 Web 界面主要針對桌面端設計,在手機上使用時存在控件過小、缺乏手勢交互、佈局錯位等問題。dsh-plugin-mobile-ui 是一個官方 slot 客戶端插件,旨在將 DSH 的 Web 界面改造成適合手機操作的界面。它通過注入樣式和替換部分組件,在不修改 DSH 源碼的前提下,實現抽屜導航、鍵盤適配、橫屏支持等功能。
插件概況¶
- 名稱: dsh-plugin-mobile-ui
- 維護者: loeissu
- 許可: MIT
- 定位: 官方 slot 客戶端插件,不 fork dsh-tether,不修改 DSH 源碼。
核心功能¶
插件主要解決移動端的交互體驗問題:
- 抽屜導航: 提供類似原生 App 的側滑導航面板。
- 啓動頁: 優化冷啓動和熱啓動的展示。
- 鍵盤適配: 使用 visualViewport 處理軟鍵盤遮擋。
- 橫屏支持: 適配橫屏場景的佈局。
- 工具卡: 替換部分官方工具卡(read/grep/edit/write),支持摺疊和失敗自動展開。
- 複製助手: 針對 Android WebView 中 async 剪貼板被拒的問題,提供兜底方案,確保複製功能可用。
- 自動重連: 程序回到前臺時自動嘗試重連。
安裝與啓用¶
安裝需要從 GitHub Releases 下載發佈包。
- 下載
dsh-plugin-mobile-ui-<版本>.tgz到固定目錄(不要放在%TEMP%)。 - 執行安裝命令:
dsh plugin --profile web add <那個 tgz 的完整路徑>
安裝完成後,必須重啓 dsh web 服務,插件纔會生效。如果後續需要重新加載插件內容(如修改了源碼),直接刷新手機頁面即可,無需重啓服務。
典型用法¶
安裝並重啓服務後,在手機上訪問 DSH Web 客戶端:
- 打開導航: 點擊頂欄最左的文字 「導航」。
- 管理會話: 在抽屜內,列表按分組顯示:剛剛 / 今天 / 昨天 / 更早。
- 新建會話: 點擊抽屜底部的 + 號。
- 查看設置: 點擊抽屜底部的 設置,支持左右滑動切換分區。
- 刷新連接: 如果連接看起來卡住,點擊抽屜底部的 刷新連接。
- 複製內容: 在消息下方點擊 複製。插件接管了 WebView 的剪貼板邏輯,解決了 Android 上靜默失敗的問題。
開關與配置¶
插件的核心邏輯通過 src/client/config.ts 中的 FEATURES 開關控制。主要配置項包括:
splash: 啓動頁開關。drawerOverlay: 抽屜導航覆蓋層開關。settings: 設置頁移動端分區及彈層排版。toolCards: 工具卡列表(默認替換 read/grep/edit/write)。keyboardFit: 鍵盤遮擋適配。resumeReconnect: 回到前臺自動重連。clipboardFallback: 剪貼板兜底邏輯。
適用場景與注意事項¶
- 適用場景: 主要用於在手機瀏覽器或 WebView 中使用 DSH 進行開發調試、查看日誌或簡單交互。
- 已知取捨: 工具卡替換了 4 張官方卡(
read/grep/edit/write),因此會失去官方的「在軌跡中查看」和點開文件的功能。 - 驗證方式: 插件未包含 CI 和單元測試,主要依賴
npm run verify進行離線契約校驗和 CDP 探針測試。 - 文件依賴: 安裝包必須保留
.tgz文件,否則在後續執行dsh plugin操作時會報錯找不到文件。
結語¶
該插件通過簡單的安裝和配置,顯著改善了 DSH 在移動端的可用性。對於需要在移動設備上頻繁使用 DSH 的開發者來說,它是解決交互痛點的有效方案。