@benchsdk/runner

中文文档
0.8.1发布于 2026/11/04MITTypeScriptESM + CJS构建来源已验证近 30 天下载 7896

基准框架:任务+步骤+配置原始人和驱动@benchsdk/worker的本地管弦乐器

中文使用文档
文档目录7 节
  1. 它提供的东西
  2. 安装
  3. 使用量
  4. 背景频道
  5. 平台数据命令
  6. 实例和完整指南
  7. 许可证

@ benchsdk/ runner (韩语)

作者基准框架 *.bench.ts 文档和运行基准工作者。 它通过下列途径向基准平台报告: @benchsdk/api· ; @benchsdk/client 是一种倒向相容性再出口shim.

它提供的东西

  • defineBenchmarkConfig 编号 : defineTask A级 *.bench.ts 文件导出完全有两点: a 配置 (单位:千美元)defineBenchmarkConfig键+ participants + 可选 onComplete 钩子)和 a 任务 (单位:千美元)defineTask重复一次的工作量。 没有"模":从"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出 iterations, (中文(简体) ), concurrency,以及 staggerDelayMs 把手,和 groupBy (单位:千美元)'participant' | 'round')选择整个参与者的订单.
  • bench run <file> ——CLI入站点. 它输入模块,读取它的 config 财务报告和审定财务报表 task,应用 CLI 覆盖,并驱动运行。 基准文件声明;他们从不给跑者打电话.
  • bench check <file> ——验证环境变量,API连通性,参与者可用性,运行前评分权重.
  • runBenchmarkWorker(options) ——一发接线员辅助操作员,操作单一参与者的工人而无 *.bench.ts 文档.
  • TaskError 编号 : NoAvailableParticipantsError - 结构错误:抛出 TaskError 从附加代码/数据/预计量步骤的任务; bench run 治疗 NoAvailableParticipantsError (每个参与者都潜出) 作为一个干净的不开放出口.

安装

pnpm add @benchsdk/runner @benchsdk/client

使用量

基准文件导出a config (单位:千美元) task - 没有别的了:

import { defineBenchmarkConfig, defineTask } from '@benchsdk/runner';
import { providers } from './providers.js';
import { writeLegacyResults } from './legacy-results.js';

export const config = defineBenchmarkConfig({
  benchmarkSlug: 'sandbox-tti-local',
  benchmarkName: 'Sandbox TTI (local)',
  iterations: 100,       // total tasks per participant
  concurrency: 1,        // 1 = sequential, N = burst, N + staggerDelayMs = staggered
  participants: providers,
  // Aggregate post-run work (the one thing a single task can't see) lives here.
  onComplete: (outcome) => writeLegacyResults(outcome.participants),
});

export const task = defineTask(async ({ participant, step, measure, log }) => {
  log('creating sandbox', { level: 'info', meta: { participant: participant.name } });
  // Named steps via `ctx.step`: values flow between steps with closures and
  // cleanup runs in a `finally`. Each step is a first-class platform record
  // with its own timing/status. A step returning `{ stdout, stderr, exitCode }`
  // writes that output to the worker log unless `captureOutput: false` is passed.
  const sandbox = await step('create', () => participant.createCompute().sandbox.create());
  try {
    const t0 = performance.now();
    await step('exec', () => sandbox.runCommand('node -v'));
    measure({ ttiMs: performance.now() - t0 });   // metrics → the platform
  } finally {
    await step('destroy', () => sandbox.destroy());
  }
});

用 CLI 运行它( 旗子覆盖了配置键 ):

bench run benchmarks/sandbox/sandbox-tti.bench.ts --iterations 100 --concurrency 20 --provider e2b,modal

bench run 需要平台认证- BENCHMARKS_PLATFORM_API_KEY, (中文(简体) ), BENCHMARKS_PLATFORM_TOKEN,或通过 bench auth login 即使是为了 --dry-run 编号 : --no-ingest 编号 : BENCHSDK_NO_INGEST=1;这些旗帜只跳过上传,不会跳过认证.

要装入没有构建步骤的 TypeScript 基准, 请在 TS 加载器下运行 CLI :

tsx node_modules/@benchsdk/runner/dist/bin.js run sandbox-tti.bench.ts

背景频道

在一项任务中,背景暴露出三个不同的渠道:

  • step(name, fn, options?) ——返回 fn'对您的代码的值(步骤之间的线性活对象);在平台上记录步骤的时间/状态. 返回值从不自动记录为数据。 设定 captureOutput: false 以返回结果形状对象(stdout, (中文(简体) ), stderr, (中文(简体) ), exitCode,.)没有写在工人日志上. 使用 parallelInvocations (原为 concurrency以平行方式多次引用一步.
  • measure(data) ——有明确尺度的通道. 内召入一 step() 它合并到该步骤的数据中;在任务顶层调用它合并到任务记录中. 没有明确步骤的任务记录为一项隐含 'task' 脚步进行测量.
  • log(message, metaOrOptions?) ——人可读取的对运行时间的叙述. metaOrOptions 可以是元数据 JSON 对象或 { level: 'debug' | 'info' | 'warn' | 'error', meta?: JsonObject }。 。 。 .

平台数据命令

bench 是一个统一的CLI。 再说 bench run,它可以认证和查询平台:

bench check <file.bench.ts>
bench auth login
bench benchmarks list
bench runs list <slug>
bench results <slug> --run <runId>
bench artifacts list <slug> <runId>
bench export <slug> --out ./exports

见 长椅-cli技能 用于完整的 CLI 参考、 OAuth 设备编码登录、 配置/证书文件以及 CI 使用.

实例和完整指南

关于逐个编写指南和涵盖每个能力的可操作实例,见 WRITING_BENCHMARKS.md 编辑 examples/ 目录.

许可证

麻省理工学院

版本与发布记录

@benchsdk/runner 共发布 12 个版本,首次发布于 2026/08/18;过去 12 个月发布了 12 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.8.1latest2026/11/043 天前
0.8.02026/10/2910 天前
0.7.02026/10/2811 天前
0.6.62026/10/2514 天前
0.6.52026/10/2315 天前
0.6.32026/10/2216 天前

关于 @benchsdk/runner 的常见问题

@benchsdk/runner 是什么?

基准框架:任务+步骤+配置原始人和驱动@benchsdk/worker的本地管弦乐器

如何安装 @benchsdk/runner?

在项目目录运行 npm install @benchsdk/runner,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 bench,可以用 npx bench 直接运行。

@benchsdk/runner 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@benchsdk/runner 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@benchsdk/runner 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@benchsdk/runner 可以商用吗?

@benchsdk/runner 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@benchsdk/runner 的下载量有多少?

根据 npm 官方下载统计,@benchsdk/runner 在 2026/10/08 – 2026/11/06 这 30 天内被下载 7,896 次,日均约 263 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@benchsdk/runner 还在维护吗?

最新版本 0.8.1 发布于 2026/11/04(3 天前);至今共发布 12 个版本,其中过去 12 个月发布了 12 个;首次发布于 2026/08/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。