# @corbits/evals 中文文档

规范地址：https://npmcn.com/package/%40corbits/evals/

版本：0\.2\.1
npm 元数据更新时间：2026-10-27T04:50:21.748Z
中文译文更新时间：2026-11-10T18:48:45.790Z
软件包许可：LGPL-2\.1-only

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40corbits/evals
原文对照：https://npmcn.com/package/%40corbits/evals/?lang=original
项目主页：https://github.com/corbitsdev/corbits-evals#readme
源码仓库：https://github.com/corbitsdev/corbits-evals

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：150 kB，36 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22
- 运行依赖：2 个
- peer 依赖：@intx/workflow ^0\.5\.0
- 首次发布：2026-10-11T05:18:58.466Z
- 最新版本发布：2026-10-27T04:50:21.474Z
- 近 30 天下载量：4632（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 6 个）

## 中文简介

一个运行评价呼叫中代理和工作流程的Evals:代码,Jev和帮助计分员在JSONL或内置数据上,每计分员在允许的误差和下放上门.

## 安装

```sh
npm install @corbits/evals
```

也可以使用：`pnpm add @corbits/evals`、`yarn add @corbits/evals`、`bun add @corbits/evals`

## README

# @c轨道/evals

代理和工作流程的Evals在一个电话: 运行每个案件,检查它, 打印摘要,当检查缺失或下降超过允许时失败.

## 安装

```sh
bun add @corbits/evals
```

仅装入(>=1.2.0).

## 示例

```ts
import { mentions, runEvaluation, under } from "@corbits/evals";

const report = await runEvaluation({
  name: "refund-agent",
  task: refundAgent, // an @intx/agent Agent, workflow(), or (input) => output
  data: [{ name: "duplicate charge", input: "I was charged twice" }],
  scorers: {
    refunds: mentions(["refund"]),
    readyToSend: "Is this reply ready to send to the customer?",
    fast: under({ ms: 5_000 }),
  },
  allow: { readyToSend: 1 },
  compare: "evals/refund.last.json",
  about: { model: "qwen2.5:7b" },
});
console.log(report.markdown());
```

## 检查

`scorers` 将名称映射到支票。 无 `scorers`,一个 `matches` 检查 比较产出与 `expectedOutput`。每张支票都会运行 `r = { input, output, expectedOutput, steps, ms }`· ; `output` 不论跑什么 已经返回.

-   **代码**数字 : `(r) => boolean | number`,同步或同步。 数字是0.1 并且只在1时通过;返回布尔以选择自己的阈值,或 `{ pass, value, explanation }` 细节.
-   **句子**:对Jev来说是/不是关于跑步的问题. 传球 页:1 `yes`,失败 `no` (默认情况下为0.7/0.3),以 `unsure (p=…)` 在中间. `{ question, yes, no }` 设置自己的栏杆.
-   **帮助者**数字 :

| 帮助者 | 当 |
| --- | --- |
| `matches(field?)` | 输出值,或每个输出值的同字段(键或存取器) |
| `includes()` | 既包含字符串,又包含在 NFKC 、 三进制和白空间崩溃后预期输出; 值为 1 或 0 |
| `fitsSchema(schema)` | 输出满足标准Schema( 暗型、 zod 、 valibot) |
| `mentions(words)` | 输出包含每个单词, 对大小写不敏感; 值是找到的分数 |
| `avoids(words)` | 输出中没有任何单词 |
| `ranSteps(names)` | `tool` 财务报告和审定财务报表 `step` 名称匹配 `names`,命令被忽略;值是他们的F1. 代理轨迹来自 `stream()`。 。 。 . `ranSteps([])` 失败当 `steps` 为空。 观测到的只使用模型的运行( 万步、 无工具或步骤名称) 仍然通过 |
| `stepsAtMost(n)` | 运行最多 `n` 步骤 |
| `under({ ms })` | 在内部完成运行 `ms` |
| `ask(q, { options, pass })` | Jev 选择一个在 `pass` |
| `ask(q, { options, passAt })` | Jev选择一个选项;其信用值(0.1)是价值,并经过 `passAt` |
| `ask(q, { levels, pass })` | Jev职等 `pass` 或以上(最低一级) |

`mentions` 财务报告和审定财务报表 `avoids` 还带 `(r) => words` 每一个字. `mentions` 财务报告和审定财务报表 `ranSteps` 带 `{ atLeast }` 以通过部分信用. `ask` 无法确定 Jev 最高概率低于 `sure` (默认为0.6;支票本身) `sure` ) (中文(简体).

一张扔出、挂出 `timeout`,或返回任何其它失败 它的兄弟姐妹仍然在奔跑。 Jev运输故障关闭 .

杰夫看见了 `{ input, output, expectedOutput, steps }`,而一个案件的字符串和 `ask` 检查在一个电话中回答。 该模型没有配置在 `systemOne()`。 。 。 . 用它来建造 `judgeModel({ model, invokeStep, thresholds, escalate, timeout })` 从 `@corbits/evals/workflow`。 。 。 . `model` 是一个工作流程步骤(或一个步骤) 工作流程. `invokeStep` 运行该步骤;其输入是 `{ state, questions }` 它的输出是 `{ decisions }` 或者说 `{ fallback: true, reason }`。 。 。 . `systemOne({ thresholds, escalate })` 只能设置条和升级剂. `jev` 是一种异名 `systemOne`。 。 。 .

门槛值:p(是) ==== `yes` 失败 页:1 `no` (0.7个/0.3个); `ask` 无法确定当它的顶端 概率低于 `sure` (0.6) (中文(简体) ). 调整他们每个法官 `judgeModel({ thresholds: { yes, no, sure }, ... })` 或按上述检查. 阈值被调取到法官的版本,所以把继子代理的模型钉上 当他们必须保持稳定.

升级 : `sure` 两倍于升级门。 给法官一个 代理人 - `escalate` 打开 `systemOne` 或者说 `judgeModel`,任何东西 `send(prompt)` 返回时 `{ type: "reply", reply }` 或者说 `{ type: "suspended" }`,例如 `@intx/agent` 来自 a 的代理 `@corbits/*` 适配器——每个不确定的决定都重新得到准确的答案 空间。 回答通过同样的通过规则 减去信心 门,所以主不肯定在升级后仍然会失败. 掷出, 已中止,或解答空格回复失败。 验证 jev的不确定语没有提及 倒置的精确度,推理模型 可能回答的答案 空间无法吸收——这些故障被设计关闭.

## 运行

-   **函数**数字 : `(input, signal) => output`。 。 。 . `signal` 终止于 `timeout`。 。 。 .
-   **探员**页:1 `@intx/agent` 探员,被检测到 `send`输入 作为信件;输出是回复。 当代理有 `stream()`步骤 从该溪流录入(`inference.done` 作为 `llm`, (中文(简体) ), `tool.start` 编号 : `tool.done` 作为 `tool`) (中文(简体) ). 拒绝执行的政策 `tool.done` 无 `tool.start`; 当 `inference.tool_call.end` 或助理人员 `tool_call` 块名。 仅回复发送而不发送 `stream` 叶子 `steps` 空, 失败 `ranSteps([])`。观察到 只有模式运行仍然通过.
-   **工作流程**数字 : `workflow(definition, { invokeStep })` 从 `@corbits/evals/workflow`定义无法在本地运行 步调引用器,根从不加载 `@intx/workflow`,所以一个裸体 定义被拒绝。 每一步都着陆 `r.steps`。 。 。 . `output` 选择 由完成运行生成( 默认: 最后列出的步骤输出) , `trigger` 绘制触发有效载荷的输入图。 没有他们,键入 以 `workflow<I, O>(...)`。相同的条目出口 `judgeModel` 页:1 字符串和 `ask` 计分者. 只有密码的Eval不需要法官.

`repeats` 运行了多次; 只有每次才通过检查 尝试通过. `concurrency` (违约4)限制飞行中的案件; `timeout` (单位:千美元)`"60s"` 或 ms) 绑定每次运行和每次检查.

## 案例

数组 `{ name?, input, expectedOutput?, must?, skip? }`,或路径 a 相同对象的JSONL文件. 地面真实的关键是 `expectedOutput`。 。 。 . `expect` 财务报告和审定财务报表 `expected` 掷出. `name` 将案件输入报告 比较运行和默认与输入.

## 通过

```ts
await runEvaluation({
  name: "judge",
  task: run,
  data, // a case can say { must: ["tests"], skip: ["docs"] }
  scorers,
  compare: "evals/judge.last.json", // read: measure drops against it
  save: "evals/judge.last.json", // write: store this experiment, pass or fail
  allow: {
    tests: { miss: 1, drop: 0 },
    docs: { miss: 5, drop: 2 },
    focused: 3, // { miss: 3 }
  },
});
```

每一次检查, `allow` 集( 默认 0 ):

-   **错过**:可能失败的案件.
-   **丢入**案件数: `compare` 运行,现在可能失败。 A 类 固定大小写不会抵消一个破旧小写.

一个案子 `must` 检查必须通过任何 `allow` 说; 其 `skip` 检查 没有运行或计算.

`runEvaluation` 打印每个记分员的通行证, 丢失和丢弃, 并用 `EvalFailure` 命名每个失败的计分器及其失败的极限 案例; `.report` 保持每个结果.

实验是每个案例×分数的通过和价值——加上Jev分数的 概率分布和信心——以及 `about`没有时间. 已保存的文件为格式 2: `{ format: 2, name, cases }`。任何其他 `format`, (中文(简体) ), 包括格式1,拒绝. `compare` 只读; 缺少的文件跳出. `save` 只写, 在 每一跑步都一样 两者的一条路径与上次实验相比,然后替换 这个. `compare` 还从早期开始做实验 `runEvaluation` 成员名单 评估, 没有文件 : `runEvaluation({ ...spec, compare: before.experiment })`。 。 。 . 翻转打印为 `fixed` 编号 : `broke`,新案件和已结案案件作为 `added` 编号 : `removed`。 。 。 . `quiet: true` 跳过摘要.

## 国 际

软件包本是 `corbits-eval` (单位:千美元)`./dist/cli/index.js`) (中文(简体) ).

```sh
corbits-eval run ./evals/refund.ts
corbits-eval run ./evals/refund.ts --format json
```

文件是从当前工作目录中解析的ES模块路径. `corbits-eval` 装入 `evaluation` 当它是光谱对象时导出, 否则 默认导出时为 spec 对象,否则为零参数 用于其中任一出口。 该函数必须返回一个 spec 。 没有其他 出口读取.

一个 spec 是对象 `runEvaluation` 接受(`name`, (中文(简体) ), `data`, (中文(简体) ), `task`, (中文(简体) ), `scorers`,和其余部分). 案件行使用情况 `expectedOutput`。CLI呼吁 `runEvaluation`;它不会自己得分.

退出代码 :

| 代码 | 何时 |
| --- | --- |
| 0 个 | 跑道经过它的大门 |
| 1个 | 评估失败的门 |
| 2个 | 缺少文件、 导入失败、 没有光谱导出或评价未运行 |

`--format json` (和 `--json`)来源于意外事故,仅将JSON的结果印出于stdout上,没有人类摘要. 退出 1 仅是一个失败的闸门( E)`EVAL_FAILED`) (中文(简体) ). 在运行开始前停止运行的配置, 如空 `data` 或字符串或 `ask` 无计分器 `judge.invoke`,2号出口.

## 工作流量计分器

`@corbits/evals/workflow` 还输出了4名预先建造的一阶法官。 每个 用钉子 `{ provider, model }` 也不称模式本身: `faithfulness`, (中文(简体) ), `answerRelevancy`, (中文(简体) ), `correctness`,以及 `trajectoryAccuracy`。 。 。 . 每个返回 `{ definition, payload, failure }`运行 `definition` 与 `workflow`,使用 `payload(run)` 作为触发器。 结果是 `payload` 是结果; `failure` 是无法判断运行时关闭的错失 . `parsePrebuilt(id, output)` 读取步骤的类别或分数 JSON. `judgeModel` 预期 `{ decisions }` 或者说 `{ fallback }` 不运行 这些主题. `includes` 留下来 对根包进行代码检查.

## 中断更改

-   保存的实验必须是格式2(`{ format: 2, name, cases }`。格式 1 被拒绝.
-   JSONL 行数 `expectedOutput`。 。 。 . `expect` 财务报告和审定财务报表 `expected` 掷出.
-   `ranSteps([])` 失败当 `steps` 为空。 观测到的只有模式运行仍然通过.

## 校正

阈值是每个工作负荷的起点,而不是常数. `calibrate` 通过 Jev 运行标有标签的样本一次, 并打印、 检查、 检查次数 判决同意,土地不确定,或自信地不同意每个门槛:

```ts
const table = await calibrate("refund-agent", {
  run: refundAgent,
  cases: labeledCases, // { input, expectedOutput?, labels: { readyToSend: true } }
  checks: { readyToSend: "Is this reply ready to send to the customer?" },
  judge,
});
console.log(table.markdown());
```

有/无检查扫描 `yes` 与 `no` 镜像; `ask` 扫描 `sure`粘贴 建议在支票或法官中取消。 没有自信 分歧是目标;如果没有分歧,获胜最少.

## 同伴

-   `@corbits/evals`数字 : `@intx/inference` 财务报告和审定财务报表 `@intx/types`,同龄人 `@corbits/system-one`。 。 。 .
-   `@corbits/evals/workflow`数字 : `@intx/workflow` (可选).

## 实例

`examples/` 与当地奥拉马(`bun examples/<name>.ts`) (中文(简体) ). `examples/ports/` 共同价值模式和打印协议 aBCDE 事实性,关键词 重叠 忠诚 双向战斗 1-10帮助.

## 盖茨

`bun run check` =打字检查+lint+格式:检查+单位+e2e. 行为生活在 `e2e/`· ; `src` 单位测试保持稀薄.

## 常见问题

### @corbits/evals 是什么？

一个运行评价呼叫中代理和工作流程的Evals:代码,Jev和帮助计分员在JSONL或内置数据上,每计分员在允许的误差和下放上门\.

### 如何安装 @corbits/evals？

在项目目录运行 npm install @corbits/evals，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 corbits-eval，可以用 npx corbits-eval 直接运行。

### @corbits/evals 支持 TypeScript 吗？

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

### @corbits/evals 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @corbits/evals 需要什么版本的 Node\.js？

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

### @corbits/evals 可以商用吗？

@corbits/evals 使用 LGPL-2\.1-only 许可。弱 Copyleft：作为库被调用时通常不要求开源你自己的代码，但修改库本身需以 LGPL 开源；前端打包合并后的适用边界存在不同理解。以上为概括，不构成法律意见，请以许可原文为准。

### @corbits/evals 的下载量有多少？

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

### @corbits/evals 还在维护吗？

最新版本 0\.2\.1 发布于 2026/10/27（14 天前）；至今共发布 6 个版本，其中过去 12 个月发布了 6 个；首次发布于 2026/10/11。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

