前言¶
在手机上用 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。