Skip to content

@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、不联网

测什么

是什么为什么
runnerVitest复用项目测试 runner
appTools 契约 @agentaily/agentappTools,在 in-memory AppDraft 上驱动 write_aml / read_aml / write_file测 agent 造 app 真正调的工具:校验闸(坏 AML 返 line:col error 且不落盘的自修信号)、读写回环
AML emit @agentaily/amlcheck + emitapp 后端从一份 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.tscreateInMemoryAppDraft()AppDraft 替身。