dsh-mobile-fix:把 DSH Web UI 調成手機優先可用

前言

DeepSeek Harness(DSH)的 web 配置默認按桌面三欄佈局設計:側邊欄、居中的對話區、右側 Files / 終端 / 代碼視圖。在手機上直接打開,常見結果是聊天區只剩一條縫、設置對話框擠在 188px 導航旁幾乎沒法讀、右側欄寬度爲 0 時根本進不去文件視圖;iOS Safari 還會在輸入框字號小於 16px 時自動放大整頁。

若你希望用手機或平板 PWA 訪問本機或局域網上的 dsh web,又不想改 DSH 核心代碼,dsh-mobile-fix 提供一層純客戶端補丁:抽屜側欄、邊緣滑動、可讀設置、全屏右欄,以及若干 iOS/Android 交互細節修復。

這是什麼

dsh-mobile-fix(包名仍爲 dsh-mobile-fix)是維護者 zven73 發佈的 客戶端類 DSH 插件:無 Host 側業務邏輯,通過 cordis.patch.yml 注入一行空 Host 記錄,瀏覽器加載 lib/client.js 客戶端 bundle。許可證爲 MIT;package.json 標明適用於 DSH >=0.2.0 <0.3.0-0,當前倉庫版本爲 0.17.0。社區目錄頁見 SkillHub,源碼與說明在 GitHub。

一句話定位:Phone-first UI patch for the DeepSeek Harness Web UI: drawer, edge swipes, readable settings, working right panel——不動核心,只改 Web 客戶端的樣式與 DOM 事件。

核心功能

下面按 README 中核實的能力歸納;寬屏桌面(≥1024px)刻意保持原樣。

佈局與導航

  1. 側欄改爲 56px 軌道 + 遮罩抽屜:會話列表以全屏覆蓋層打開,帶模糊遮罩;選會話、點外側或關閉按鈕會收起抽屜,並照顧底部 safe area。
  2. 邊緣滑動:從左緣滑入打開,向左滑關閉;垂直滾動與橫滑有閾值(36px 橫移、34px 縱漂、24px 觸邊區),避免和列表滾動搶手勢。
  3. 會話行首觸即開:在 iOS 上通過 pointerup 同步派發 click,避免「第一次點擊只關抽屜」的問題。

輸入、設置與右欄

  1. 消除 iOS 輸入自動縮放:觸摸設備上爲 input / textarea / contenteditable 強制 16px(依據設備類 html.dsh-mf-touch,而非僅視口寬度);並設置 touch-action: manipulation 減輕雙擊偏移。
  2. 設置對話框適配窄屏:分段導航改爲頂部橫向可滾條;賬戶卡片在窄屏縱向堆疊,避免名稱被擠在細列裏。
  3. 右欄全屏 sheet:768px 以下 DSH 本身已全屏;768–1023px 區間在 data-sidebar-right-open 時由插件提升爲全屏面板,便於 Files、終端、代碼查看器可用。

內容與文件

  1. 消息內代碼塊與表格:限制在消息寬度內獨立滾動;文件查看器代碼字號調整爲 12px(原爲 11px)。
  2. 應用內打開 /api/file 鏈接:攔截裸文件 URL 與部分 window.open,在疊加層內預覽圖片、PDF、音視頻、文本/JSON、ZIP 列表等,避免 iOS PWA 掉進無法返回的原生 Quick Look;多圖支持翻頁與保存當前項。
  3. 鍵盤收起後失焦:緩解 iOS 獨立 PWA 鍵盤工具條殘留。

遠程與主機操作

  1. 隱藏不適用的「在本機打開」:Open in Finder / VS Code 等只在運行 DSH 的機器上有意義;插件按 loopback、桌面殼、WebRTC 探測等判斷本地/遠程,遠程客戶端不顯示這些項。可在控制台強制:
localStorage['dsh-mobile-fix-local'] = '1'  // 當作本地
localStorage['dsh-mobile-fix-local'] = '0'  // 當作遠程

頁面控制台可調用 __dshMobileFixWhere() 查看當前判定。

安裝前:讓手機能連上 dsh web

默認 dsh --profile web 只監聽 127.0.0.1,同 Wi-Fi 的手機無法訪問。先做網絡暴露,再裝插件。

  1. 綁定本機局域網地址(不支持 0.0.0.0,需寫具體 IP):
# macOS: ipconfig getifaddr en0     Windows: ipconfig     Linux: hostname -I
dsh --profile web --host 192.168.0.54 --no-open
  1. 放行防火牆端口(macOS 允許 node 入站;Windows 需添加入站規則)。

  2. 在手機瀏覽器打開啓動日誌裏的地址,形如 dsh web: http://192.168.0.54:3080/?token=…。token 按進程生效,重啓後舊主屏快捷方式失效;當前鏈接也在 ~/.dsh/link.txt。

  3. 可選 HTTPS:明文 HTTP 在局域網上不是安全上下文,navigator.share 不可用,預覽底欄爲 Download file 而非 Save to Files,Chrome 也無法「安裝應用」。需要完整 PWA 體驗時可:

dsh --profile web --host 192.168.0.54 --tls-cert ./chain.pem --tls-key ./key.pem

經反代或隧道時:

dsh --profile web --public-url https://dsh.example.com/ --trusted-host dsh.example.com

安裝與啓用

官方 README 給出的安裝步驟如下(dsh plugin 需要系統 PATH 上有 pnpm):

git clone https://github.com/zven73/dsh-mobile-fix.git ~/.dsh/local-plugins/dsh-mobile-fix
dsh plugin --profile web add ~/.dsh/local-plugins/dsh-mobile-fix

安裝後重啓 dsh web(或等待 profile 重新 compose),在手機上刷新頁面即可。客戶端 bundle 帶內容修訂號,後續更新插件通常只需刷新頁面。

卸載:

dsh plugin --profile web remove dsh-mobile-fix

可在 ~/.dsh/profiles/web/package.json 的 bundles 中確認 dsh-mobile-fix 是否已編入 web profile。

典型用法與可選配置

在應用內打開外鏈

web profile 下默認禁用了沙箱瀏覽器 tab,外鏈可能走 window.open 並跳出到系統瀏覽器。若希望鏈接在右欄瀏覽器內打開(本插件在手機上會全屏展示該欄),可在 ~/.dsh/profiles/web/cordis.patch.yml 中啓用:

- id: ui-sidebar-browser
  name: "@deepseek-ai/dsh-client-ui-sidebar-browser"
  disabled: false

修改後重啓 dsh web。部分站點拒絕被 iframe 嵌入時會顯示空白,屬於對方 X-Frame-Options 策略,與插件無關。

Android 與快捷方式

README 單獨說明:Android 手勢返回區會佔用左緣,Opening 滑動可從更靠內的區域起始;首次打開若遇到認證頁,可刷新一次利用已寫入的 cookie;主屏快捷方式建議使用無 token 的 http://<host>:<port>/(cookie 約 30 天),token 鏈接主要用於 dsh web 重啓後的首次訪問。Android 上「安裝應用」同樣依賴 HTTPS。

排錯速查

現象 建議
手機仍像桌面佈局 強制刷新;檢查 web profile 是否包含該 bundle
設置打不開或偏屏 刷新;仍異常時在 issue 中註明機型與 DSH 版本
iOS 仍縮放輸入框 確認插件版本 ≥0.6.1(觸摸設備判定)
右欄空白 從會話頭進入;sheet 按會話而非全局

適用場景與注意

適合誰:需要在 iPhone / Android 上以 PWA 或移動瀏覽器使用 DSH web profile 的開發者;本機或局域網訪問運行 DSH 的主機,遠程只讀對話、文件預覽、設置調整。

工作方式:插件僅在瀏覽器執行 CSS 與 DOM 鉤子,依賴 DSH 0.2.x 現有的 CSS Module 類名片段與 data-slot;大規模 UI 改版可能需要更新選擇器。無 service worker、無 Host 代碼。

安全與信任:安裝前請閱讀 源碼 與 MIT 許可證。插件隨當前 DSH 進程提供的 Web 會話加載,與訪問 dsh web 的權限邊界一致;不要將帶 token 的 URL 長期分享在不可信環境。

生態說明:DSH 奉行「一切皆插件」;SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-mobile-fix 把 DSH 0.2.x 桌面優先的 Web UI 補成可在手機上完整使用的形態:抽屜與會話切換、可讀設置、可用的 Files / 代碼右欄,並處理 iOS 縮放、文件鏈接與遠程客戶端下主機操作顯示等細節。若你已在局域網暴露 dsh web,按 README 安裝到 web profile 後刷新移動瀏覽器即可驗證。

  • 目錄頁:https://www.skillhub.cn/plugins/zven73/dsh-mobile-fix
  • GitHub:https://github.com/zven73/dsh-mobile-fix
羽毛球分组比赛记分
小程序二维码

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

小夜