SessionSwitchBench
收藏资源简介:
一个用于测试编码代理在单个会话中处理任务切换的基准测试,包含500个跨410个GitHub仓库的仓库修复任务,以及切换案例和焦点控制案例,用于评估代理在中断任务干扰下保持焦点任务的能力。
A benchmark for testing coding AI agents' ability to handle task switching within a single session. It includes 500 repository repair tasks across 410 GitHub repositories, as well as switching scenarios and focus control scenarios, aimed at evaluating agents' capability to maintain focus on their targeted task when interrupted by disruptive tasks.
数据集概述:SessionSwitchBench
SessionSwitchBench 是一个专门用于测试编码智能体(coding agent)在单次会话(session)内处理任务切换能力的基准测试(benchmark)。不同于传统的一次只给一个任务的仓库修复基准,该基准将多个修复任务交织在一起,要求智能体在持续会话中同时应对一个焦点任务和多个无关的中断任务,最终仅根据焦点任务的修复补丁进行评分。
数据集规模与构成
- 总任务数:包含 500 个仓库修复任务,覆盖 410 个 GitHub 仓库。
- 测试用例类型:
- 500 个切换案例(switched cases):一个焦点任务与多个中断任务交织。
- 500 个匹配的焦点控制案例(matched focus-control cases):仅包含焦点任务,用于对比。
- 数据内容:
- 任务 ID 采用匿名格式(如
ssb_v1_task_0001)。 - 保留了仓库名称和基础提交(base commit),用于控制器构建工作区。
- 数据为“提示洁净”(prompt-clean),不包含参考补丁、测试补丁、保留测试、目标文件、上游 PR/commit 链接或评分器内部信息。
- 任务 ID 采用匿名格式(如
- 评分机制:最终评分依赖于本仓库中未公开的保留材料。
数据文件结构
text data/tasks.json # 任务定义和工作流程阶段 data/session_cases.json # 切换案例(焦点 + 中断) data/focus_control_cases.json # 匹配的控制案例 data/release_verification.json
切换案例结构
每个切换案例包含:
- 一个焦点任务:其轮次标记为
A。 - 多个中断任务:每个中断任务有有序的阶段。
- 轮次序列示例:
A1, G1, C1, A2, ... A_final。 - 唯一评分轮次:最后一个焦点轮次(
A_final)。
评估机制
- 控制器是受信任的基础设施,智能体是被测试的系统。
- 操作流程:
- 控制器在基础提交处克隆每个所需仓库到新工作区。
- 从智能体的副本中移除
.git目录。 - 一次发送一个提示并记录输出。
- 收集最终的焦点任务补丁,并调用评分器(如已配置)进行评分。
- 智能体仅能看到当前提示和准备好的工作区,无法访问完整的案例 JSON 或未来的轮次。工作区状态在案例内持久化,在案例间重置。
使用要求
- 运行环境:Python 3.10+,以及
git命令。 - 第三方依赖:运行测试框架无需第三方 Python 包。
快速启动
- 验证发布:运行
python3 scripts/verify_release.py --data-dir data --expected-count 500。 - 试运行:使用
--dry-run参数运行控制器,不执行克隆操作。 - 示例测试:使用
echo_agent.py作为“冒烟测试”智能体,不执行实际工作。 - 运行真实智能体:通过
--agent-command指定你自己的智能体包装器,并通过环境变量接收上下文。如果需要评分,还需通过--score-command提供自定义评分器。
与 SWE-bench 的关系
SessionSwitchBench 继承自 SWE-bench 家族的仓库修复任务。任务通过内部严格可执行性验证后,被转化为多阶段工作流并交织成会话切换案例。它并非 SWE-bench 的官方分支或排行榜,其核心测量点在于智能体在单次会话中维护和恢复多个任务的能力,评分仍基于补丁的可执行性。
文档与许可




