dsh-adapt-packs:DSH 移动端可选适配包与第三方插件兼容清单

前言

在手机上用 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/ 以便恢复。

典型用法

  1. 先查兼容结论,再决定是否装 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
  1. 若希望设置里一键管理,用 dsh plugin add dsh-adapt-packs 安装插件 bundle,在 插件适配 中操作,与 CLI 同源。

  2. 仅需 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。

羽毛球分组比赛记分
小程序二维码

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

小夜