前言¶
在手機上用 DSH 打開第三方插件面板時,常見問題往往不在插件組件內部能自行解決:觸控區域小於拇指可點範圍、面板根節點寬於手機內容區、列表末行被右下角懸浮控件擋住。宿主 dsh-mobile 提供 extensions/ 注入機制,但「改什麼、改哪一塊」需要單獨維護。dsh-adapt-packs 把這類修正做成可選適配包(pack),並附帶一份按插件記錄的兼容清單,便於在不動 DSH 本體、不 fork 已安裝組件的前提下按需啓用。
這是什麼¶
dsh-adapt-packs 由維護者 LUgABeEEE 發佈,分類爲客戶端插件。倉庫定位是:面向 DSH mobile 表面的 opt-in 適配包集合——通過 dsh-mobile 公開的 extensions/ 目錄投遞 mobile.css(及可選的 mobile.js),同時提供 catalog.json、兼容清單 compat.json、設置面板與 CLI。完整部署形態是 dsh-mobile(宿主)+ 本倉庫(內容與工具);本倉庫不 patch 已安裝的 DSH 或 dsh-mobile。
單個 pack 在磁盤上是一個目錄,典型結構如下(運行時忽略 README.md):
$DSH_HOME/mobile-access/extensions/<id>/
├── extension.json # schemaVersion, id, name, version, description — 僅此五項
├── mobile.css # 由宿主注入
├── mobile.js # 可選;window.dshMobile.define({ apiVersion: 1, id, activate })
└── README.md # 運行時忽略
拷貝進目錄後宿主約兩秒內加載;移出即失效,無需重啓、無需額外配置文件、也不引入第二套鑑權。
核心功能¶
適配包(packs)¶
README 中列出的 pack 均標註爲 experimental 且 默認關閉;啓用前應閱讀 catalog.json 裏各 pack 的 evidence 字段。
| pack | 作用範圍 | 主要行爲 |
|---|---|---|
core-panel |
插件面板 | 面板內 44px 觸控下限(0.8.x 上爲唯一來源;宿主自帶下限後會退讓);僅圖標按鈕寬度;寬度回收 |
shell-chrome |
Shell 本身 | 抽屜兩種狀態下會話/項目行(role="treeitem",32/34 → 44px)、側欄圖標與抽屜開關(36×36 / 28×28 → 44×44);「返回會話」條只做 rise-only 下限,不壓縮宿主已有 48px |
floaters |
懸浮控件 | 測量右下 fixed 控件高度並預留空間,避免末行被遮擋 |
dshmarket-mobile |
插件市場面板 | 針對 dshmarket 1.73.x,在 [data-dsh-market-root] 內做 44px 觸控下限 |
dsh-context-mobile |
上下文/成本面板 | 針對 dsh-context 0.79.x,僅 dsh-mobile 0.8.x(0.8.1+ 宿主已有相同下限時 pack 退讓) |
host-service-panel-mobile |
宿主可觀測面板 | 窄屏佈局 + dsh-host-service-panel 0.7.x 的 44px 下限,作用域 [data-dsh-hsp-root] |
兼容清單(compat.json)¶
記錄每個第三方插件在手機上是否「開箱可用」、是否需要某個 pack、是否應上游修復、或無法從外部修復。查詢方式:
dsh-adapt-packs compat # 完整列表
dsh-adapt-packs compat --verdict pack # 僅本倉庫有 pack 的條目
| verdict | 含義 |
|---|---|
native |
按發行版在手機上可用 |
pack |
本倉庫提供對應 pack(字段會指明 pack 名) |
upstream |
只能由插件作者修復 |
blocked |
無法從外部修復(如畫布、原生控件、不可達 DOM) |
dsh-adapt-packs status 可查看本機已安裝、已禁用、以及目錄中有但未安裝的 pack。
一鍵聚合安裝(bundle)¶
開發時 pack 仍是獨立單元;安裝時可經 tools/bundle.mjs 合併爲單個 extension id(如 build/dsh-ui-optimizer),便於宿主只暴露一個擴展目錄。也可逐個安裝:node tools/install.mjs pack <id>。
安裝與啓用¶
全局 npm CLI¶
npm install -g dsh-adapt-packs
dsh-adapt-packs list # 目錄中的 pack
dsh-adapt-packs install core-panel --dry-run # 僅預覽計劃
dsh-adapt-packs install core-panel --yes # 寫入 $DSH_HOME
dsh-adapt-packs uninstall core-panel --yes # 移出(可逆)
發佈 tarball 含 packs/、catalog.json、docs/ 及工具;dsh-adapt-packs check 與倉庫內 harness 一致。package.json 標明 Node >=20,許可證 MIT(當前資料中版本號爲 0.3.7)。
作爲 DSH 插件(設置面板)¶
安裝 bundle 後,Settings 會出現 插件適配 區塊,目錄、安裝狀態與兼容清單與 CLI 共用 lib/store.mjs,不會狀態不一致。宿主 API 路由爲 /api/adapt-packs/{state,install,uninstall}。
dsh plugin add dsh-adapt-packs # 或從市場安裝 tarball
從 checkout 使用工具鏈¶
node tools/check-pack.mjs # 先校驗所有 pack
node tools/install.mjs pack core-panel --dry-run
node tools/install.mjs pack core-panel --yes
npm run bundle
node tools/install.mjs plugin build/dsh-ui-optimizer --yes
install.mjs 默認 dry run,解析 $DSH_HOME(或 ~/.dsh),拒絕覆蓋已有 pack;卸載時移到 mobile-access-adapt-disabled/ 以便恢復。
典型用法¶
- 先查兼容結論,再決定是否裝 pack:
dsh-adapt-packs compat --verdict pack
dsh-adapt-packs list
dsh-adapt-packs install core-panel --dry-run
dsh-adapt-packs install core-panel --yes
dsh-adapt-packs status
-
若希望設置裏一鍵管理,用
dsh plugin add dsh-adapt-packs安裝插件 bundle,在 插件適配 中操作,與 CLI 同源。 -
僅需 shell / 懸浮區修正時,按 README 表格選擇
shell-chrome、floaters等 id,同樣走install/uninstall。
Windows 下 tools/ 爲純 Node 腳本,PowerShell 中命令與 README 一致;運行 fixture 檢查需 Playwright Chromium(見倉庫 README Windows 小節)。
適用場景與注意¶
適合在 dsh-mobile 手機表面 上長期使用第三方插件、且遇到觸控過小、面板過寬或懸浮遮擋的 DSH 用戶與插件作者。pack 是實驗性功能,默認關閉;啓用前應對照 catalog.json 的驗證說明,必要時查看各 pack 下 shots/ 證據截圖(npm 包內攜帶)。
DeepSeek Harness 生態強調「一切皆插件」;社區插件目錄站點與 DeepSeek / 幻方無官方從屬關係,本文僅介紹該開源倉庫能力。插件與 CLI 在 DSH 進程權限下運行,安裝前請自行審閱 GitHub 源碼 與 MIT 許可證。倉庫 engines.dsh 在資料中爲 >=0.2.1-rc.2 <0.3.0,需與本地 DSH 版本對照 README / package.json。
結尾¶
dsh-adapt-packs 把移動端觸控下限、側欄與懸浮區留白等修正拆成可逆、可選的 extension pack,並用 compat.json 把「能用、要靠 pack、要上游改、改不了」說清楚。目錄頁:https://www.skillhub.cn/plugins/LUgABeEEE/dsh-adapt-packs;源碼與文檔:https://github.com/LUgABeEEE/dsh-adapt-packs。