Chuyển đến nội dung chính

dsh-bench

Đã xác minh

dsh-bench · v0.1.0

虚拟 DSH 环境跑分机 — 插件/Skill 加载与工具调用基准(L1 零 token)。dsh-plugin-hub 生态的可扩展类插件:为 hub 提供独立性能评分(加载/工具调用各环节耗时)。

Cài đặt

dsh plugin add dsh-bench

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Thẻ

Tác giả

Readme

dsh-bench — 虚拟 DSH 环境跑分机

在隔离的虚拟 DSH 环境中为插件 / Skill 测量加载与工具调用耗时,建立独立的性能评分体系。

归属:本包是 dsh-plugin-hub 生态的可扩展类插件(官方自研,hub 内标记为「可扩展类 / Hub Extensions」)。 跑分报告由 hub 商店消费(插件详情页「跑分」tab);脱离 hub 单独运行无法发挥完整价值,请配合 hub 使用。

状态

  • M1 完成:虚拟环境工厂 + L1 加载基准 + benchmark.json(已验证零 token)
  • M2 规划:L2 Mock 工具基准 + 综合性能分 + 对比视图
  • M3 规划:端到端模式(token 预算保护,用户授权制)
  • M4 规划:hub 消费(详情「跑分」tab)

用法

# 跑本机已装插件(自动枚举)
node src/index.js

# 跑指定插件(包名或目录路径)
node src/index.js gal-view
node src/index.js "E:/path/to/plugin-dir"

# 指定输出
node src/index.js --out benchmark.json

原理

  1. 虚拟环境:每个被测对象一个临时 DSH_HOME$TMP/dsh-bench-*), 用 junction 链接被测插件 + 探针插件,注入 profile patch —— 跑完即焚;
  2. 零 token:沙箱是全新 DSH_HOME(无 API key),headless 启动时 LLM 直接 MISSING_CREDENTIAL 跳过;探针在插件加载完成后主动退出进程, 先于模型初始化 —— 全程不消耗任何 token;
  3. 采集
    • wallMs 进程总耗时(dsh 引导 + 插件加载)
    • probeApplyMs 插件全部加载完成时刻(核心加载信号)
    • hookCount 加载后注册的 hook 数(近似被测插件贡献)
    • clientKb / clientGzipKb client bundle 体积(L0 静态分析)
    • 机器指纹(平台/CPU/内存/Node 版本),用于跨机校准

结构

src/
  index.js        CLI 入口
  sandbox.js      虚拟环境工厂(隔离 DSH_HOME + junction + patch)
  runner.js       L1 运行器(spawn headless + 探针结果采集)
  probe/          探针插件(apply 计时 + hook 计数 + 主动退出)
  analyze.js      L0 静态分析(bundle 体积 / 依赖规模)
  report.js       benchmark.json 汇总(含机器指纹)

输出示例(benchmark.json)

{
  "schema": "dsh-bench/benchmark@1",
  "machine": { "platform": "win32", "cpus": 8, "node": "v22.22.2" },
  "entries": [
    { "target": "gal-view", "ok": true, "wallMs": 4379, "probeApplyMs": 3.9, "hookCount": 60,
      "bundle": { "clientKb": 5777, "clientGzipKb": 1043, "deps": 0 } }
  ]
}