Claw-SWE-Bench
收藏资源简介:
Claw-SWE-Bench是由TokenRhythm Technologies等机构联合创建的一个多语言软件工程基准测试数据集,旨在评估OpenClaw等通用智能体在代码任务上的性能。该数据集包含350个真实的GitHub问题解决实例,覆盖Java、Go、Rust、JavaScript/TypeScript、C/C++、Ruby、PHP和Python共8种编程语言,源自SWE-bench-Multilingual和SWE-bench-Verified-Mini两个上游数据集。其构建过程遵循严格的适配器协议,将异构的智能体框架统一到相同的评估工作流中,确保任务集、执行容器、预算和评分管道的标准化。该数据集主要应用于评估和比较不同智能体框架在真实仓库级别编码任务上的解决能力与资源消耗成本,旨在分离模型、框架和任务实例的混淆影响,为编码智能体的公平、可复现比较提供基准。
Claw-SWE-Bench is a multilingual software engineering benchmark dataset jointly created by TokenRhythm Technologies and other collaborating institutions, designed to evaluate the performance of general AI Agents such as OpenClaw on code-related tasks. This dataset contains 350 real-world GitHub issue resolution instances, covering 8 programming languages including Java, Go, Rust, JavaScript/TypeScript, C/C++, Ruby, PHP, and Python, and is sourced from two upstream datasets: SWE-bench-Multilingual and SWE-bench-Verified-Mini. Its construction follows a rigorous adapter protocol that unifies heterogeneous agent frameworks into a unified evaluation workflow, ensuring standardization of task sets, execution containers, evaluation budgets, and scoring pipelines. This dataset is primarily applied to evaluate and compare the problem-solving capabilities and resource consumption costs of different agent frameworks on real-world repository-level coding tasks. It aims to disentangle the confounding effects of models, frameworks, and task instances, providing a benchmark for fair and reproducible comparisons of coding AI Agents.
数据集概述
数据集名称:Claw-SWE-Bench
数据集链接:https://github.com/opensquilla/claw-swe-bench
数据集描述: 这是一个统一的适配器框架,用于评估不同智能体框架(称为“Claws”)在SWE-bench上的表现。该框架允许通过单一命令运行任何支持的Claw,并确保所有Claw使用相同的提示、补丁收集和评估流程,从而使得框架本身成为可控变量,结果可以在不同Claw之间进行直接比较。
技术报告:该仓库是技术报告《Claw-SWE-Bench: A Benchmark for Evaluating OpenClaw-Style Agent Harnesses on Coding Tasks》的参考实现,论文地址为:https://arxiv.org/abs/2606.12344。
数据集规模:
- 完整基准测试包含 350 个 GitHub Issue 解决实例,涵盖 8 种编程语言。
- 其中 300 个实例来自 SWE-bench Multilingual,50 个实例来自 SWE-bench Verified-Mini。
- 论文还定义了一个 Lite 子集,包含 80 个实例,用于低成本迭代实验。
支持的Claw框架:
| Claw 框架 | 运行时 | 进入容器的方式 | 模型选择方式 |
|---|---|---|---|
openclaw |
Node.js CLI | 绑定挂载 node + 模块 + ~/.openclaw |
--model(按代理指定) |
hermes |
Python venv | 绑定挂载独立 Python + venv | --model + claw_configs/hermes/config.yaml 中的提供商 |
nanobot |
Python venv | 绑定挂载独立 Python + venv | claw_configs/nanobot/config.json 配置文件 |
zeroclaw |
单一 Rust 二进制文件 | 绑定挂载二进制文件 | claw_configs/zeroclaw/config.toml 配置文件 |
generic |
Python 仓库 (lsdefine/GenericAgent) | 绑定挂载仓库 + venv | --llm_no 索引指向 claw_configs/generic/mykey.py |
系统设计
整体架构分为两层:
- Claw无关核心(
claw_swebench/):负责数据集加载、容器生命周期管理、仓库准备、提示渲染、运行端补丁收集与清理、预测/状态持久化以及框架评估。 - Claw适配器(
claw_swebench/claws/):每个适配器实现BaseClawAdapter接口,包含额外的docker run参数(挂载点)、启动后配置、代理生命周期、任务启动、会话备份和用量收集。新增一个Claw只需创建一个新文件并注册即可。
关键公平性与防污染机制(所有Claw强制执行):
- 相同提示:所有Claw使用
prompts/default.txt作为长提示,仅 GenericAgent 的prompts/generic.txt额外添加3行工具名称指引,其余内容完全一致。 - 禁止网络查询:提示禁止使用网络;OpenClaw额外有13个工具的拒绝列表(网络/内存/会话/定时任务工具);NanoBot禁用其网络工具;ZeroClaw的流量通过工具过滤代理。
- 未来提交剥离:所有工作空间在代理启动前会剥离未来的标签/提交、过期reflog并进行垃圾回收,确保无未来提交残留。
- 运行端补丁收集:补丁始终由运行端在代理退出后通过
git diff获取,而非代理自行报告,并会去除设置/锁定文件及二进制差异。 - 逐实例隔离:每个实例使用全新的容器(限制PID和内存);OpenClaw每个实例额外使用一次性代理。
环境配置与运行
主机要求:
- Docker,需预构建 SWE-bench 实例镜像(支持
sweb.eval.x86_64.<instance_id>:latest或 SWE-agent 的命名方式)。 - Python 3.10+,执行
pip install -r requirements.txt。 - 官方 SWE-bench 框架安装于独立 venv 中(默认路径
/data/swe-bench-env,可通过SWEBENCH_VENV覆盖)。
安装Claw的运行时: 每个Claw的运行时位于主机,并以只读方式绑定挂载到评估容器中。关键环境变量包括:
CLAW_PYTHON_HOME:独立 Python 3.12 路径,用于 hermes、nanobot、generic。OPENCLAW_NODE_BIN/OPENCLAW_MODULE_DIR/OPENCLAW_STATE_DIR:用于 openclaw。HERMES_ENV_PATH/NANOBOT_ENV_PATH/ZEROCLAW_BIN/GA_REPO_PATH/GA_ENV_PATH:分别对应 hermes、nanobot、zeroclaw、generic。
配置Claw: 复制示例配置文件并填入API密钥(实际配置文件已加入gitignore): bash cp claw_configs/hermes/config.yaml.example claw_configs/hermes/config.yaml cp claw_configs/nanobot/config.json.example claw_configs/nanobot/config.json cp claw_configs/zeroclaw/config.toml.example claw_configs/zeroclaw/config.toml cp claw_configs/generic/mykey.py.example claw_configs/generic/mykey.py
hermes 和 generic 还会从主机环境读取API密钥(如 OPENROUTER_API_KEY、ANTHROPIC_API_KEY 等),并自动转发到容器内。
运行推理(补丁生成): bash python3 run_infer.py --claw openclaw --dataset multilingual --run_id openclaw-multi-1 --instance_file config/multilingual_300_instances.txt --timeout 3600
--claw:选择Claw框架。--dataset:选择数据集(verified或multilingual)。--model、--timeout、--max_turns:覆盖Claw默认参数。--llm_no:仅对 generic 有效,选择mykey.py中的第N个提供商。--workers:并行实例数量(每个实例独立容器)。- 重新运行相同的
--run_id会跳过已完成实例;使用--no_resume禁用该功能。
生成产物位于 artifacts/<run_id>/ 目录下,包含每个实例的提示文件、标准输出/错误日志、会话日志、Git补丁、元数据(含令牌用量,如可用)、predictions.jsonl 和 state.jsonl。
运行评估(官方框架): bash python3 run_eval.py --predictions artifacts/openclaw-multi-1/predictions.jsonl --dataset_name SWE-bench/SWE-bench_Multilingual --run_id openclaw-multi-1
每个Claw/运行应使用不同的 --run_id,以避免框架日志冲突。
如何新增Claw
- 在
claw_swebench/claws/<name>.py中创建类,实现BaseClawAdapter接口:container_run_args(instance_id):为运行时指定绑定挂载。send_task(...):在容器中启动代理并返回AgentResult。- 可选实现
post_container_start、create_agent/delete_agent、backup_session、collect_usage、prompt_template。
- 在
claw_swebench/claws/__init__.py中注册类,并在config.py的CLAW_DEFAULTS中添加默认值。 - 保持默认提示不变;仅在必要时添加工具名称指引,并确保其余模板字节相同。
其他注意事项
- 资源限制:每个容器运行参数为
--pids-limit 300 --memory 8g,可通过CLAW_PIDS_LIMIT和CLAW_CONTAINER_MEMORY覆盖。 - 代理服务器(
proxies/、claw_configs/zeroclaw/tool_filter_proxy.py):可选的宿端HTTP代理,用于在提供商用量报告不准确时获取精确的缓存/用量记录。 - 实例列表:
config/multilingual_300_instances.txt和config/verified_mini_50.txt共同构成350个实例的完整集合。80个实例的Lite子集根据成本感知和排名感知程序选出,详见论文。




