跳转到主要内容
CyBench 是一个 capture-the-flag(CTF)风格 benchmark,用来评测 agent 在安全分析任务上的表现,包括逆向、Web 利用、取证和密码学。任务运行在隔离环境中,得分通过比较 agent 提交的答案与已知 flag 计算。 QitOS 提供:
  • CyBenchAdapter
  • CyBenchRuntime
  • score_cybench_submission
因此你可以在 QitOS 内核上直接运行完整评测流程。

评分模式

模式工作方式主指标
Guided(默认)agent 按子任务逐步求解,并获得子任务级提示guided_subtask_score
Unguidedagent 只收到最终 hard prompt,需要直接拿到 flagunguided_success

准备工作

1

安装 benchmark 依赖

pip install "qitos[benchmarks]"
2

克隆 CyBench 仓库

git clone https://github.com/andyzorigin/cybench.git references/cybench
3

安装 Docker

大多数 CyBench 任务都需要 Docker 启动 challenge services。
4

设置模型 API key

export OPENAI_API_KEY="sk-..."

加载任务

from qitos.benchmark import CyBenchAdapter

adapter = CyBenchAdapter(
    cybench_root="references/cybench",
    run_with_subtasks=True,
)
records = adapter.load_records(limit=5)
tasks = adapter.to_tasks(records, split="guided")
一行式 loader:
from qitos.benchmark.cybench.adapter import load_cybench_tasks

tasks = load_cybench_tasks(
    cybench_root="references/cybench",
    run_with_subtasks=True,
    limit=10,
)

运行评测

优先使用官方 CLI:
qit bench run \
  --benchmark cybench \
  --split guided \
  --root references/cybench \
  --limit 20 \
  --output results/cybench_guided.jsonl \
  --model-name "Qwen/Qwen3-8B"
然后继续做聚合与检查:
qit bench eval --input results/cybench_guided.jsonl --json
qita board --logdir runs
cybench_eval.py 依然保留,但它现在主要承担 benchmark 专用参考 agent wrapper 的角色。 运行单个 guided 任务:
python examples/benchmarks/cybench_eval.py \
  --cybench-root references/cybench \
  --task-index 0 \
  --max-steps 12 \
  --model-name "Qwen/Qwen3-8B" \
  --api-key "$OPENAI_API_KEY"
运行 unguided:
python examples/benchmarks/cybench_eval.py \
  --cybench-root references/cybench \
  --task-index 0 \
  --unguided-mode \
  --max-steps 20 \
  --api-key "$OPENAI_API_KEY"
完整 benchmark:
python examples/benchmarks/cybench_eval.py \
  --run-all \
  --cybench-root references/cybench \
  --limit 50 \
  --max-workers 4 \
  --output-jsonl results/cybench.jsonl \
  --trace-logdir runs \
  --api-key "$OPENAI_API_KEY"
CyBench 任务应始终运行在隔离环境中。challenge services 可能会开放端口或执行任意代码;生产评测建议启用 Docker 隔离。

agent toolset

CyBench 评测 agent 通常只注册一组适合 CTF 的最小工具面:
  • CodingToolSet
  • shell execution
  • SubmitAnswer
如有需要,也可以继续扩展浏览器工具。

评分与结果检查

score_cybench_submission 会统一计算:
  • guided_subtask_score
  • guided_final_score
  • unguided_success
  • exact_matches
  • partial_matches
单条结果通常包含:
  • task_id
  • mode
  • success
  • guided_subtask_score
  • guided_final_score
  • predictions
  • references
  • stop_reason
  • steps
  • latency_seconds
评测结束后,仍然可以直接用:
qita board --logdir runs
qita replay --run runs/<run_id>
来检查具体任务轨迹。