dsh-compat-optimize: Zero-Token Fast Path for DSH Plugin Compatibility Checks

前言

在 DSH 里做插件兼容性排查时,若依赖上游的 dsh-compat-check 工具,每次检查都要把完整工具 schema 随请求发给模型,一次检查往往要 4–8 轮往返,每轮输入 token 在 40–100K 量级,而实际计算都在本机完成。对日常开发或 CI 门禁来说,这既慢又贵。下面介绍社区插件 dsh-compat-optimize(维护者 dongchiluo,分类:客户端):在保持与原有判定逻辑一致的前提下,用磁盘缓存预热、单次返回报告,并提供不经过模型的离线 CLI。

这是什么

dsh-compat-optimize 是 DSH 插件,同时附带可独立运行的 Node CLI。仓库说明为:Fast path for DSH plugin compatibility checks: cache warm-up, one-shot reports, zero-token CLI。无需构建步骤,也无额外 npm 依赖。载入 DSH 后注册工具 compat_optimize(插件 id:tool-compat-optimize)。可选依赖同目录下的 dsh-compat-check 加载上游检查逻辑;未安装时使用内置 fallback。

与 dsh-compat-check 的差异

阶段 使用 dsh-compat-check(LLM 工具) 使用本插件
工具 schema 每次请求重传(约 1,198 字符描述) compat_optimize 描述压缩至约 104 字符
单次检查 4–8 轮往返 action=run 一次返回摘要、报告路径与报告正文
本地计算 反复解析约 4.76 MB 的 app.asar 头(冷路径约 183 ms) 头信息解析一次并落盘,跨进程复用(暖缓存约 85 ms)
离线 / CI 只能经模型调用 bin/compat-check-cli.mjs,0 token

资料中说明:deferLoading 不能省 token,宿主仍会在每次请求中投影工具定义;缩短 description 才是省 token 的手段。

核心功能

DSH 工具动作

通过 compat_optimize 的 action 参数调用(action 必填):

action 作用 是否联网
status 缓存状态、上次运行摘要 否
warm 解析 app.asar 头并持久化 否(除非 withNetwork: true)
run 执行检查,返回紧凑摘要与报告 否
bench 重复 N 次并报告中位数/最小/最大耗时 否
notes 与上游 GitHub release、npm 对照 缓存未命中时需联网

还可传 installDir、pluginsDir、outDir、cacheDir、iterations、refresh、withNetwork、source 等参数。

离线 CLI

node bin/compat-check-cli.mjs [command] [options]

命令:check(默认)、status、warm、notes、bench。

退出码:0 无损坏插件;1 发现不兼容插件;2 运行时错误。

默认不访问网络,除非指定 --notes、--refresh 或 --network。

磁盘缓存

默认目录 <baseDir>/.cache/compat-check/,与 dsh-compat-check 字节级兼容,包含 asar-header、asar-entry、upstream、last-run.json 等。条目用内容指纹(首 64 KB 的 sha1)校验,避免 Electron 下 app.asar 合成 stat 导致缓存失效。

安装与启用

将仓库放入 DSH 插件目录(默认 <baseDir>/plugins),无需 npm install:

git clone https://github.com/dongchiluo/dsh-compat-optimize.git <baseDir>/plugins/dsh-compat-optimize

<baseDir> 解析顺序:$DSH_COMPAT_BASE_DIR → $DSH_HOME → 用户主目录。CLI 可单独指定根目录,例如:

DSH_COMPAT_BASE_DIR=/opt/dsh node bin/compat-check-cli.mjs check

配置默认值在 cordis.patch.yml,可在个人 profile 中按插件 id 覆盖(整段替换,不合并;省略字段则回退 schema 默认)。常用字段包括:

字段 默认 含义
baseDir 空则见上 插件、报告、缓存根目录
pluginsDir 空则 baseDir/plugins 待检查插件目录
installDir 空则自动检测 DSH 安装目录(可指向 resources/app.asar)
outDir 空则 baseDir/out/compat 报告输出目录
cacheDir 空则 baseDir/.cache/compat-check 缓存目录
warmOnStart false 插件启动时是否预热缓存
mainPluginDir 空则同级 dsh-compat-check 上游检查逻辑路径

典型用法

在插件目录下,零 token 做一次检查(退出码即结论):

node bin/compat-check-cli.mjs check

CI 门禁与 JSON 输出:

node bin/compat-check-cli.mjs check --json

先预热再检查:

node bin/compat-check-cli.mjs warm && node bin/compat-check-cli.mjs check

性能采样:

node bin/compat-check-cli.mjs bench --bench 10

自测(约 60 条断言,无 DSH 安装也可跑大部分用例):

node _selftest.mjs

适用场景与注意

  • 适合:需要在对话外批量或自动化做 DSH 插件兼容性检查、希望减少 compat_check 多轮 token 消耗、或在 cron/CI 里用退出码做门禁的开发者。
  • 环境:Node.js ≥ 20;作为 DSH 插件时需 DSH >=0.2.1-rc.5 <0.3.0(package.json 版本 0.1.0,MIT 许可证)。
  • 安全与权限:插件在当前 DSH 进程权限下运行,会读取安装目录、插件目录并写入缓存与报告。安装前请自行审阅仓库源码与许可证,社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-compat-optimize 把兼容性检查从「多轮 LLM 工具调用」收成「本地缓存 + 一次 run 或一条 CLI」,判定与上游逻辑对齐,并给 CI 提供了明确的退出码。进一步了解可访问目录页与仓库:

  • 目录页:https://www.skillhub.cn/plugins/dongchiluo/dsh-compat-optimize
  • GitHub:https://github.com/dongchiluo/dsh-compat-optimize
羽毛球分组比赛记分
小程序二维码

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

Xiaoye