前言¶
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)刻意保持原樣。
佈局與導航¶
- 側欄改爲 56px 軌道 + 遮罩抽屜:會話列表以全屏覆蓋層打開,帶模糊遮罩;選會話、點外側或關閉按鈕會收起抽屜,並照顧底部 safe area。
- 邊緣滑動:從左緣滑入打開,向左滑關閉;垂直滾動與橫滑有閾值(36px 橫移、34px 縱漂、24px 觸邊區),避免和列表滾動搶手勢。
- 會話行首觸即開:在 iOS 上通過
pointerup同步派發click,避免「第一次點擊只關抽屜」的問題。
輸入、設置與右欄¶
- 消除 iOS 輸入自動縮放:觸摸設備上爲
input/textarea/contenteditable強制 16px(依據設備類html.dsh-mf-touch,而非僅視口寬度);並設置touch-action: manipulation減輕雙擊偏移。 - 設置對話框適配窄屏:分段導航改爲頂部橫向可滾條;賬戶卡片在窄屏縱向堆疊,避免名稱被擠在細列裏。
- 右欄全屏 sheet:768px 以下 DSH 本身已全屏;768–1023px 區間在
data-sidebar-right-open時由插件提升爲全屏面板,便於 Files、終端、代碼查看器可用。
內容與文件¶
- 消息內代碼塊與表格:限制在消息寬度內獨立滾動;文件查看器代碼字號調整爲 12px(原爲 11px)。
- 應用內打開
/api/file鏈接:攔截裸文件 URL 與部分window.open,在疊加層內預覽圖片、PDF、音視頻、文本/JSON、ZIP 列表等,避免 iOS PWA 掉進無法返回的原生 Quick Look;多圖支持翻頁與保存當前項。 - 鍵盤收起後失焦:緩解 iOS 獨立 PWA 鍵盤工具條殘留。
遠程與主機操作¶
- 隱藏不適用的「在本機打開」: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 的手機無法訪問。先做網絡暴露,再裝插件。
- 綁定本機局域網地址(不支持
0.0.0.0,需寫具體 IP):
# macOS: ipconfig getifaddr en0 Windows: ipconfig Linux: hostname -I
dsh --profile web --host 192.168.0.54 --no-open
-
放行防火牆端口(macOS 允許 node 入站;Windows 需添加入站規則)。
-
在手機瀏覽器打開啓動日誌裏的地址,形如
dsh web: http://192.168.0.54:3080/?token=…。token 按進程生效,重啓後舊主屏快捷方式失效;當前鏈接也在~/.dsh/link.txt。 -
可選 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