跳转到主要内容

Benchmark 与 Recipe

QitOS 现在有意把三层分开。

1. Framework 层

这是可复用的内核:
  • AgentModule + Engine
  • DesktopEnv
  • ActionSpace
  • EnvironmentAdapter
  • family presets
  • qita replay 与 visual inspection
框架代码应保持 benchmark-agnostic。

2. Benchmark 层

这里放数据集专属适配:
  • qitos.benchmark.desktop:starter benchmark family
  • qitos.benchmark.osworld:真实 OSWorld adapter path
  • benchmark-specific runtime
  • benchmark-specific evaluator/scorer
  • benchmark-native task metadata 与 artifact 处理
凡是 test_all.json、evaluator bridge、setup/postconfig、qcow2 boot input、benchmark-native scoring 这类内容,都应该放这里。

3. Recipe 层

Recipe 是可复现的 baseline method:
  • canonical single-agent baseline
  • benchmark baseline method
  • multimodal starter method
现在 desktop baseline 已经下沉到:
  • /Users/morinop/coding/yoga_framework/qitos/recipes/desktop/osworld_starter.py
而公开 example:
  • /Users/morinop/coding/yoga_framework/examples/real/openai_cua_agent.py
只保留成一个很薄的入口包装。 同样的结构现在也已经扩展到:
  • qitos.recipes.benchmarks.gaia
  • qitos.recipes.benchmarks.tau_bench
  • qitos.recipes.benchmarks.cybench

为什么这个拆分重要

这个拆分解决了三个真实问题:
  • benchmark runner 不再依赖 example 文件
  • 同一个 baseline 可以被 example、docs 和 benchmark runner 共同复用
  • 未来独立 qitos-recipes 时,几乎只需要迁移打包边界,不需要重构设计
这才是 research-first 框架该有的演进方式。 如果你要新增 benchmark family,下一步请直接看 第三方 Benchmark 接入规范