tavern-bench KCORES 大模型软件工程能力测试框架
本项目基于 Kimi Code CLI 改造:在独立沙箱里让被测模型通过终端 Agent(kimi)阅读需求、修改代码;再用**测试驱动模型(driver)**与自动化 harness 评估实现质量. 核心指标是被测模型的工程能力(能否在真实仓库约束下交付可运行、可验收的改动), 而非单次对话得分.
| 角色 | 职责 |
|---|---|
| 被测模型(subject) | 使用本仓库提供的 kimi CLI, 在复制的模板工程里做 Plan → 编码 → 工具调用;步数受 max-steps 等限制. |
| Driver 模型 | 仅参与编排与评审(计划门禁、继续编码提示、requirement-checklist.md 逐文件结构化评审);不计入被测模型 API 步数. |
| 模板与验收包 | benchmark-project-template/ 提供「需求文档 + 可运行工程」;同级 *-validate 提供黑盒脚本、manifest.toml 与 checklist. |
一次完整 run 会:复制模板 → 合并 Kimi 配置与 .env → 注入需求文档启动被测 Agent →(可选)driver 结构化督促 → 结束时写入 .kimi-benchmark/report.json / report.md / report.html(git diff、validate 黑盒/性能、checklist 完成度等).
正式的大型基准模板是 benchmark-project-template/SillyTavern-1.17.0. 我们为该模板实现了 cli/st-cli.mjs(st-cli):
- 可启动嵌入式 SillyTavern(本机随机回环端口), 无需浏览器即可对接
/api/harness. stdio模式:通过标准输入输出收发 NDJSON, 与被测 Agent 的工具调用循环衔接, 覆盖 numeric tools、回合与自检场景(协议见模板内DOCUMENTS/harness-protocol.md).
这样一来, 被测模型可以通过 CLI + stdio 持续与 SillyTavern 交互, 配合校验包 SillyTavern-1.17.0-validate(npm、smoke、numeric selftest、stdio 场景脚本等), 形成从「改代码」到「黑盒断言」的 harness 闭环. 校验包侧的稳定需求 ID(如 ST-BB-*)由 driver 对照 requirement-checklist.md 评审;验收逻辑不与被测模型共享「标准答案式」的具体实现提示.
更小规模的冒烟模板见 hello-world / hello-world-validate.
环境:Python 3.12+, 推荐使用 uv.
uv sync --all-extras --all-packages
复制 .env.example 为仓库根或沙箱内的 .env, 填写 BENCHMARK_SUBJECT_*(被测模型)与 BENCHMARK_DRIVER_*(driver);细则见 .env.example 与 DOCUMENTS/benchmark-spec.md.
发起一次 benchmark(示例):
uv run kimi benchmark run \ --template benchmark-project-template/SillyTavern-1.17.0 \ --project-name bench \ --model-slug your-model-id \ --reasoning-effort high \ --requirements benchmark-project-template/SillyTavern-1.17.0/DOCUMENTS/requirement-document.md
沙箱目录默认为 benchmark-<project>-<model>-<effort>-<utc-time>/. 更多参数(--dest-parent、--max-steps、--config-file 等)见:
uv run kimi benchmark run --help
仅重跑评估阶段(不再起被测 Kimi 子进程):
uv run kimi benchmark reports ./benchmarks/<your-sandbox-dir>
一键脚本(新开或续跑)见 scripts/run_benchmark.py, 完整操作说明见 USAGE.md .
每次运行或 benchmark reports 后, 在沙箱 .kimi-benchmark/ 下可查看:
| 文件 | 说明 |
|---|---|
report.json |
结构化结果:metrics、api_efficiency、diff_summary、blackbox / performance / anti_cheat、checklist_driver_review 与聚合完成度等. |
report.md |
人类可读的 Markdown 摘要. |
report.html |
本地静态页(需在同目录下用 python -m http.server 等方式访问), 从 report.json(及可选 state.json)渲染仪表盘. |
| 文档 | 内容 |
|---|---|
USAGE.md |
中文使用说明:配置优先级、benchmark run / reports、MCP、续跑、run_benchmark.py. |
DOCUMENTS/benchmark-spec.md |
配置合并、子进程环境变量、driver JSON、报告字段与 validate 布局. |
DOCUMENTS/original-prompt.md |
早期需求与设计初衷. |
AGENTS.md |
仓库架构、make prepare / make test、开发约定(上游 Kimi CLI 工作流仍以该文件为准). |
- Python 包名仍为上游风格的
kimi-cli, 命令行入口为kimi/kimi-cli. - 日常格式、测试与检查:
make prepare、make format、make check、make test(详见AGENTS.md).
tavern-bench 强调:在同一套可重复模板与 harness 下, 公平对比不同被测模型的工程交付能力;SillyTavern CLI 模式是其中最重要的一条「真实软件」闭环.