代理助理遥测
人类Eval帮助者
@agent-assistant/telemetry/evals 包括产品 eval 的可重复使用的助手
(a) 将案件保留在人类授权的系统中,同时分享决定性的检查和
运行文物.
产品通常只能保存一个小的包装脚本和自己的
evals/suites/*/cases.md 文档。 共享软件包提供:
- 标记
cases.md解析和编译到生成cases.jsonl。 。 。 . - JSONL套件通过套件,外壳或标记来加载和过滤.
- 对内容、 regex 、 工具调用、 路由元数据进行决定性检查 理由和疑问.
- 通过下列途径进行人文审查跟踪:
Must, (中文(简体) ),Must Not,以及Human Review: true。 。 。 . - 运行文物写作 :
result.json, (中文(简体) ),summary.md,以及human-review.md。 。 。 . - 具有可插件产品执行器的通用 CLI 运行回路 .
- 本地 OpenCode 一发即审即决运行和更深处的提供者执行器助手 代理中继交易.
- CI 概要渲染失败/ 上市时被忽略
needs-human案件审查.
最小产品跑道:
import {
compileHumanEvalSuitesFromMarkdown,
runHumanEvalCli,
summarizeLatestHumanEvalRunForCi,
} from '@agent-assistant/telemetry/evals';
import path from 'node:path';
const rootDir = path.resolve(import.meta.dirname, '../..');
compileHumanEvalSuitesFromMarkdown({
suitesDir: path.join(rootDir, 'evals', 'suites'),
});
const exitCode = await runHumanEvalCli({
argv: process.argv.slice(2),
rootDir,
runsDir: path.join(rootDir, '.nightcto', 'evals', 'runs'),
productName: 'NightCTO Evals',
executors: {
async nightcto(testCase, context) {
// Invoke the product here and normalize to:
// { content: string, toolCalls: Array<{ name: string }>, status?: string }
return { content: String(testCase.input.message ?? ''), toolCalls: [] };
},
},
});
if (process.env.GITHUB_STEP_SUMMARY) {
summarizeLatestHumanEvalRunForCi({
rootDir,
runsDir: path.join(rootDir, '.nightcto', 'evals', 'runs'),
githubStepSummaryPath: process.env.GITHUB_STEP_SUMMARY,
title: 'NightCTO Eval CI Summary',
});
}
process.exit(exitCode);
提供者备份运行
提供商支持的运行是选入的,所以离线的确定性检查是便宜的。 使用
--provider 允许执行人调用模型或经纪人,以及 --executor 改为
通过一个提供者管理现有的手工案件,而不改写每个案件.
node scripts/evals/run-product-evals.mjs --provider --executor opencode --suite workflow-authoring
OpenCode 帮助将代理助理包住 CLI 运行器,所以产品 可使用免费或本地的OpenCode模型而无需OpenRouter证书:
import {
createOpenCodeHumanEvalExecutor,
runHumanEvalCli,
} from '@agent-assistant/telemetry/evals';
const exitCode = await runHumanEvalCli({
argv: process.argv.slice(2),
rootDir,
productName: 'Ricky Evals',
executors: {
opencode: createOpenCodeHumanEvalExecutor({
productName: 'Ricky',
model: 'opencode/minimax-m2.5-free',
instructions: [
'Follow Ricky workflow standards.',
'Prefer deterministic verification, review artifacts, and honest blocker reporting.',
],
}),
},
});
使用直接的 OpenCode 路径快速扫描候选人的本地质量
答案是单个助手的反应。 通常结果还是
needs-human; 模型输出被捕获到 human-review.md 一个人
与案件相对 Must 财务报告和审定财务报表 Must Not 子弹.
复杂 Evals 代理中继器
当 eval 需要真正的执行地形而非单个时使用 Agent Relay
模式答案:工人产卵、工具中介工作、渠道/经纪人行为、,
多代理协调,或依赖中继元数据的产品路径.
createAgentRelayHumanEvalExecutor() 动态导入仅节点中继器
适配器只当此执行器运行时 .
import {
createAgentRelayHumanEvalExecutor,
runHumanEvalCli,
} from '@agent-assistant/telemetry/evals';
const exitCode = await runHumanEvalCli({
argv: process.argv.slice(2),
rootDir,
productName: 'Ricky Evals',
executors: {
relay: createAgentRelayHumanEvalExecutor({
productName: 'Ricky',
channelId: 'agent-assistant-evals',
workerName: 'ricky-eval-worker',
timeoutMs: 300_000,
spawnWorker: {
enabled: true,
cli: 'opencode',
model: 'opencode/minimax-m2.5-free',
includeWorkflowConventions: true,
},
instructions: 'Exercise the real worker path and return an Agent Assistant ExecutionResult.',
}),
},
});
以下列方式处理这些案件:
node scripts/evals/run-product-evals.mjs --provider --executor relay --case workflow-authoring.multi-agent-repair
对于长期运行的Evals,更喜欢一次一个案例或一个套房,并给 执行一个更大的超时 。 中继等产出包括正常内容, 结构化工具调用时, 中继元数据, 以及正常的微量数据 人类eval管理着文物.