@agentaily/eval
给 agent 的评测台:对新的 app-builder 模型——agent 的 appTools 契约(造 app 时调的数据模型 + 文件 VFS 工具)与 AML emitter(app 后端据以 provision 的数据地基)——下确定性、离线断言(不打真模型)。
旧版「真 agent 循环 + 真模型 → Studio 派生 schema」的 live 评测,随它驱动的 verticals(
@agentaily/form-schema/slides-schema)+@agentaily/studio-protocol一并退役(REFACTOR.md §2/§3)。要 live agent 评测时,可在appTools之上重新引入。
运行
bash
pnpm test # 仓库根 —— 与全仓一起跑(确定 + 离线)
pnpm exec vitest run eval # 只跑 eval
pnpm --filter @agentaily/eval test # 同上,经 workspace跑通形如 Tests N passed,不花 token、不联网。
测什么
| 面 | 是什么 | 为什么 |
|---|---|---|
| runner | Vitest | 复用项目测试 runner |
appTools 契约 | 真 @agentaily/agent 的 appTools,在 in-memory AppDraft 上驱动 write_aml / read_aml / write_file | 测 agent 造 app 真正调的工具:校验闸(坏 AML 返 line:col error 且不落盘的自修信号)、读写回环 |
| AML emit | 真 @agentaily/aml 的 check + emit | app 后端从一份 AML 产 tables + CREATE TABLE SQL + 自描述 ApiDescriptor——数据地基的正确性 |
| 断言 | 对工具返回 / draft 快照 / emit 产物下结构断言 | 产物强结构化 → 精确、确定、可重复,不用 LLM 当裁判 |
刻意做轻的自研测台,不是 promptfoo / Braintrust / LangSmith。要多模型对比 / 分数趋势 / live 回归看板时再上专门框架。
加一条用例
在 test/evals.test.ts 里:测工具就 appTools({ appDraft }) 取出某工具 run(input)、对返回(JSON 字符串)+ draft.snapshot() 断言;测数据模型就 emit(parse(aml).ast)、对 tables / sql / api 断言。复用 src/headless.ts 的 createInMemoryAppDraft() 作 AppDraft 替身。