十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CubeSandbox SWE-bench 脚本与运维手册:从环境初始化到高并发评测的完整实战指南

CubeSandbox SWE-bench 脚本与运维手册:从环境初始化到高并发评测的完整实战指南 CubeSandbox SWE-bench 脚本与运维手册从环境初始化到高并发评测的完整实战指南【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox导读本文是 CubeSandbox 仓库中 examples/mini-rl-training/scripts/README.md 的深度展开。该手册面向使用 cube-sandboxE2B 兼容沙箱 mini-swe-agent 在隔离 microVM 中自动化解决 SWE-bench 编程任务的开发者完整覆盖了从环境初始化、envd 注入镜像、单模型评测、多模型并行评测到高并发压测与实例清理的全套运维流程。读完本文你将掌握这套脚本体系中每一个命令的参数语义、底层调用链与故障排查方法可以直接照搬落地自己的 SWE-bench 评测流水线。项目背景cube-sandbox 提供 Instant、Concurrent、Secure Lightweight 的 AI Agent 沙箱运行时。示例项目整体说明见 examples/mini-rl-training/README_zh.md详细需求文档见 examples/mini-rl-training/docs/PRD.md。脚本总览scripts/目录下共 6 个自动化脚本/工具所有脚本均支持--help或-h查看用法脚本用途需要 cubecli需要 Dockersetup-env.sh一键初始化运行环境inject-envd.sh将 envd 注入镜像并构建✅run-swebench.sh运行 SWE-bench 评测单模型run-all-tokenhub.sh并行运行所有 TokenHub 模型check-instances.sh查询/清理沙箱实例✅run-concurrent.py高并发运行 实时 TUI 仪表盘(可选)前置条件来自 examples/mini-rl-training/README_zh.mdPython 3.10、Docker构建 envd 注入镜像用、cube-sandbox 平台访问权限API URL API Key、至少一个 LLM API Key。setup-env.sh 一键初始化运行环境setup-env.sh负责把评测环境一次准备到位直接运行即可bash scripts/setup-env.sh从 源码 看脚本内部通过set -euo pipefail保证失败即退出依次执行 5 步检查 Python 版本要求 3.10通过python3 -c import sys; ...输出主次版本号安装依赖pip install -r requirements.txt依赖清单见 requirements.txt包含 litellm、e2b-code-interpreter、mini-swe-agent、rich 等验证关键库逐一import litellm、from e2b_code_interpreter import Sandbox、import minisweagent检查是否可用mini-swe-agent 缺失时仅告警不中断检查.env不存在时从.env.example模板复制模板见 .env.example并提示填入真实值检查 SSL 证书若设置了SSL_CERT_FILE则验证文件是否存在并提示自部署平台 mkcert 场景需安装 root CA详见后文SSL 证书配置。注意脚本不会安装 mini-swe-agent 的 E2B 补丁。该补丁需要通过bash mini-swe-agent-patch/install.sh单独安装见 mini-swe-agent-patch/README.md否则 Agent 无法连接到 cube-sandbox 沙箱。inject-envd.sh 将 envd 注入镜像cube-sandbox 沙箱通过 envd端口 49983与外部 SDK 通信。要让任意 Docker 镜像如官方 SWE-bench 镜像能在 cube-sandbox 上运行需要把 envd 二进制注入进去bash scripts/inject-envd.sh base-image [output-tag]参数参数必填说明base-image✅源镜像如swebench/sweb.eval.x86_64.django_1776_django-13447:latestoutput-tag输出镜像标签默认为base-image-envd:latest示例# 注入 SWE-bench 镜像 bash scripts/inject-envd.sh swebench/sweb.eval.x86_64.django_1776_django-13447:latest # 自定义输出标签 bash scripts/inject-envd.sh ubuntu:22.04 my-ubuntu-envd:latest底层执行流程见 源码若本地envd-inject/envd二进制不存在脚本会从预置镜像cube-sandbox-cn.tencentcloudcr.com/cube-sandbox/sandbox-code:latest国际网络可用cube-sandbox-int端点源码中以注释形式保留通过docker run --rm image cat /usr/bin/envd提取然后使用 envd-inject/Dockerfile 以BASE_IMAGE为构建参数执行docker build生成带 envd 的新镜像脚本结尾提示两步后续操作将新镜像注册为 cube-sandbox 模板并把返回的template_id填入.env的CUBE_TEMPLATE_ID本地可用docker run -d -p 49983:49983 output-tag验证。快速通道示例项目在 examples/mini-rl-training/README_zh.md 中提供了预构建公开镜像cube-sandbox-image.tencentcloudcr.com/demo/django_1776_django-13447:latest已注入 envd公网可拉取多数场景无需自行构建。run-swebench.sh 单模型 SWE-bench 评测这是最核心的单任务评测入口在 cube-sandbox 沙箱中运行指定 LLM 模型解决一个 SWE-bench 实例bash scripts/run-swebench.sh --model model --instance instance-id [options]参数参数必填默认值说明--model✅LLM 模型名如deepseek/deepseek-chat--instance✅SWE-bench 实例 ID如django__django-13447--configconfigs/e2b-swebench.yamlYAML 配置文件--subsetlite数据集子集lite/verified/full--splittest数据集分割test/dev--step-limit配置文件中的值最大 Agent 步数覆盖配置文件--outputresults/输出目录各模型运行示例# DeepSeek Chat bash scripts/run-swebench.sh \ --model deepseek/deepseek-chat \ --config configs/e2b-deepseek.yaml \ --instance django__django-13447 # DeepSeek Reasoner bash scripts/run-swebench.sh \ --model deepseek/deepseek-reasoner \ --config configs/e2b-deepseek-reasoner.yaml \ --instance django__django-13447 # Gemini bash scripts/run-swebench.sh \ --model gemini/gemini-3-flash-preview \ --config configs/e2b-swebench.yaml \ --instance django__django-13447 # TokenHub 模型GLM-5 / MiniMax export OPENAI_API_KEY$TOKENHUB_API_KEY bash scripts/run-swebench.sh \ --model openai/glm-5 \ --config configs/e2b-tokenhub.yaml \ --instance django__django-13447 # Kimi K2.5 export OPENAI_API_KEY$TOKENHUB_API_KEY bash scripts/run-swebench.sh \ --model openai/kimi-k2.5 \ --config configs/e2b-kimi.yaml \ --instance django__django-13447输出文件results/model/instance/trajectory.json— Agent 交互轨迹即-o参数指定的文件results/model/instance/run.log— 运行日志通过tee同时输出到终端与文件关键调用链见 run-swebench.sh 源码加载.env并导出E2B_API_URL、E2B_API_KEY、CUBE_TEMPLATE_ID、HF_ENDPOINT默认https://hf-mirror.comSSL 环境变量处理若检测到SSL_CERT_FILE会将其内容转移到CUBE_SSL_CERT_FILE并unset SSL_CERT_FILE——原因在源码注释中写得很清楚SSL_CERT_FILE会全局覆盖 Python 默认 CA 包导致访问 hf-mirror.com 等公网站点时 HTTPS 验证失败而CUBE_SSL_CERT_FILE只在连接 cube-sandbox 时由 E2B SDK 使用校验E2B_API_URL与CUBE_TEMPLATE_ID必填缺任一则报错退出若指定--step-limit通过-c agent.step_limitN追加覆盖配置调用mini-extra swebench-single ... --exit-immediately执行评测结束后输出耗时与结果路径。run-all-tokenhub.sh 并行运行全部 TokenHub 模型需要横向对比同一实例在多个 TokenHub 模型上的表现时用此脚本一次性并行跑完所有模型自动选择对应配置bash scripts/run-all-tokenhub.sh [options]参数参数默认值说明--instancedjango__django-13447SWE-bench 实例 ID--subsetlite数据集子集--splittest数据集分割--step-limit配置文件中的值最大 Agent 步数覆盖配置文件包含的模型脚本内部用declare -A关联数组维护模型→配置映射见 源码模型配置文件类型openai/glm-5e2b-tokenhub.yaml普通openai/glm-5-turboe2b-tokenhub.yaml普通openai/minimax-m2.7e2b-tokenhub.yaml普通openai/deepseek-v3.2e2b-tokenhub.yaml普通openai/kimi-k2.5e2b-kimi.yamlThinking已禁用openai/deepseek-r1-0528e2b-kimi.yamlThinking已禁用openai/hunyuan-2.0-thinking-20251109e2b-kimi.yamlThinking已禁用说明原脚本一览表单模型 README 表格未列glm-5-turbo但实际源码中该模型同样被纳入并行集合。示例# 使用默认实例和配置 bash scripts/run-all-tokenhub.sh # 指定实例 bash scripts/run-all-tokenhub.sh --instance django__django-13447 # 指定实例和步数限制 bash scripts/run-all-tokenhub.sh --instance django__django-13447 --step-limit 50执行机制与输出脚本要求设置TOKENHUB_API_KEY或OPENAI_API_KEY随后export OPENAI_API_KEY${TOKENHUB_API_KEY:-$OPENAI_API_KEY}统一传递给下游每个模型以后台进程方式调用run-swebench.sh日志写入results/_parallel_logs/model.logwait等待所有进程结束后extract_stats()从各日志中grep出Duration:与STATS:行解析出 steps / cost / setup_ms / api_ms / sdk_ms / status最终以表格汇总打印并输出成功/失败数量统计。输出每个模型的日志results/_parallel_logs/model.log评测结果results/model/instance/运行结束后输出汇总成功/失败数量check-instances.sh 查询与清理沙箱实例评测异常退出后常会残留沙箱实例占用节点资源。该脚本按模板 ID 过滤实例支持批量清理bash scripts/check-instances.sh --template template-id [--kill]参数参数必填说明--template✅模板 ID如tpl-c301a4f1b99d4a1f87deb7d4--kill批量停止匹配的实例默认仅列出示例# 查看使用某模板的实例 bash scripts/check-instances.sh --template tpl-c301a4f1b99d4a1f87deb7d4 # 批量清理 bash scripts/check-instances.sh --template tpl-c301a4f1b99d4a1f87deb7d4 --kill实现原理见 源码依赖cubecli在 PATH 中通过cubecli ls | awk NR1 {print $3}提取所有运行中实例的 CUBEBOX ID对每个 ID 执行cubecli ctr info cid并grep模板 ID 判断归属匹配到实例后默认仅打印列表并提示加--kill执行清理--kill模式下逐个调用cubecli unsafe destroy cid并输出[OK]/[FAIL]。run-concurrent.py 高并发运行与 TUI 仪表盘单机高并发任务运行器基于 Pythonconcurrent.futures rich 构建提供实时 TUI 仪表盘支持两种模式benchmark– 压测模式纯粹测试沙箱创建/销毁吞吐无需 LLMswebench– 评测模式高并发运行 SWE-bench RL 任务运行时会实时刷新任务状态机PENDING → CREATING → RUNNING → DONE/FAILED定义在 源码 的TaskState枚举中面板内容Header模式、并发数、模板 ID、总耗时Stats进度条、任务状态统计、创建耗时分布 (avg/p50/p95/max)、总 CostTasks每个任务的状态、创建耗时、运行时间、Steps/Cost、Sandbox IDcubecli ls实时 microVM 实例列表自动刷新需要 cubecli运行结束后输出汇总报告包含创建耗时直方图分布和失败任务详情。注意依赖rich缺失时会直接退出并提示安装。Benchmark 模式测试沙箱创建/销毁性能无需配置 LLM。python scripts/run-concurrent.py benchmark [options]参数参数默认值说明-w, --workers4并发数-n, --count10创建沙箱数量--template.env中的值模板 ID--run-cmdecho ok在沙箱中执行的验证命令--keep不销毁沙箱用于后续 cubecli 检查--cubecli-interval10cubecli ls 刷新间隔秒数0禁用示例# 10 并发创建 20 个沙箱 python scripts/run-concurrent.py benchmark -w 10 -n 20 # 50 并发压测保留沙箱不销毁 python scripts/run-concurrent.py benchmark -w 50 -n 100 --keep # 指定模板 ID python scripts/run-concurrent.py benchmark -w 8 -n 30 \ --template tpl-c301a4f1b99d4a1f87deb7d4SWE-bench 模式高并发运行 SWE-bench 评测任务每个任务独立创建沙箱并执行 Agent。python scripts/run-concurrent.py swebench [options]参数参数默认值说明-w, --workers4并发数-m, --model(必填)LLM 模型名-c, --config(必填)YAML 配置文件--subsetlite数据集子集lite/verified/full--splittest数据集分割--slice实例切片如0:5前 5 个--filter实例 ID 正则过滤--instances指定实例 ID逗号分隔--repeat1每个实例重复运行次数并发压测用--template-map模板映射 JSON 文件--step-limit配置文件中的值最大 Agent 步数-o, --outputresults/concurrent-model-timestamp输出目录--cubecli-interval10cubecli ls 刷新间隔秒数0禁用示例# DeepSeek 模型4 并发跑前 10 个实例 python scripts/run-concurrent.py swebench -w 4 \ -m deepseek/deepseek-chat \ -c configs/e2b-deepseek.yaml \ --slice 0:10 # 同一实例并发压测10 并发跑 django__django-13447 python scripts/run-concurrent.py swebench -w 10 \ -m deepseek/deepseek-chat \ -c configs/e2b-deepseek.yaml \ --instances django__django-13447 --repeat 10 # GLM-58 并发跑指定实例 export OPENAI_API_KEY$TOKENHUB_API_KEY python scripts/run-concurrent.py swebench -w 8 \ -m openai/glm-5 \ -c configs/e2b-tokenhub.yaml \ --instances django__django-13447,django__django-13710 # 使用模板映射文件多模板场景 python scripts/run-concurrent.py swebench -w 6 \ -m gemini/gemini-3-flash-preview \ -c configs/e2b-swebench.yaml \ --template-map configs/template-mapping.json \ --filter django__.* --slice 0:20模板映射 (--template-map)当不同 SWE-bench 实例需要不同的 cube-sandbox 模板时使用 JSON 文件映射示例见 configs/template-mapping.json{ django__django-13447: tpl-c301a4f1b99d4a1f87deb7d4, astropy__astropy-12907: tpl-another-template-id }未列出的实例使用.env中的CUBE_TEMPLATE_ID作为默认值。输出文件results/concurrent-model-ts/preds.json— 所有实例的预测结果results/concurrent-model-ts/instance/— 各实例的 trajectoryresults/concurrent-model-ts/instance_runN/— repeat 模式下各轮次结果results/concurrent-model-ts/runner.log— 运行日志进阶用法主 READMEexamples/mini-rl-training/README_zh.md还展示了--pre-create多进程预创建沙箱任务启动时直连、-m tokenhub展开全部 7 个 TokenHub 模型、--sandbox-only跳过 LLM 纯压测沙箱吞吐等参数组合可与本文档的--repeat、--max-rows配合使用。cubecli 常用命令速查以下是 cube-sandbox 平台 CLI 工具cubecli的常用操作用于评测过程中的实例与模板管理。实例管理# 列出所有运行中的实例 cubecli ls # 查看实例详情包括模板 ID、镜像信息等 cubecli ctr info cubebox_id # 销毁实例 cubecli unsafe destroy sandbox_id # 按模板 ID 过滤实例 cubecli ctr info cubebox_id | grep template_id模板管理# 从镜像创建模板 cubemastercli tpl create-from-image \ --image cube-sandbox-image.tencentcloudcr.com/demo/image-name:latest \ --writable-layer-size 1G \ --expose-port 49983 \ --cpu 4000 --memory 8192 \ --probe 49983 # 列出所有模板 cubecli tpl ls # 查看模板详情 cubecli tpl info template_id创建模板参数说明参数说明--image已注入 envd 的镜像地址--writable-layer-size可写层大小建议1G--expose-port暴露端口envd 默认监听49983--cpuCPU 配额毫核4000 4 核--memory内存配额MB8192 8GB--probe健康检查端口与 envd 端口一致创建成功后会返回template_id如tpl-c301a4f1b99d4a1f87deb7d4填入.env的CUBE_TEMPLATE_ID。可写层、CPU/内存配额决定了沙箱内 Agent 的可用资源与文件修改空间SWE-bench 任务建议保持1G可写层与 4 核 8G 的配额。输出示例cubecli ls典型输出如下其中第三列CUBEBOX即为后续ctr info/unsafe destroy使用的 ID$ cubecli ls NS CONTAINER CUBEBOX TYPE STATUS IMAGE CREATED default 3a983cf8b3d9 3a983cf8b3d9 sandbox Up rfs-6dec1b0a8647284088b65794 2026-04-05 17:34:10 default 8e7dd9d7ce12 8e7dd9d7ce12 sandbox Up rfs-6dec1b0a8647284088b65794 2026-04-05 17:33:22 default 5bfabe35b991 5bfabe35b991 sandbox Up rfs-afaca17f5277573de0ef5d76 2026-04-05 15:38:40配置文件的层次与语义理解 YAML 配置是调优评测的关键。示例目录下的配置均围绕 mini-swe-agent 的agent / environment / model三段结构组织见 configs/e2b-swebench.yamlagentsystem_template与instance_template定义 Agent 的系统提示词与任务模板SWE-bench 的 PR 描述通过{{task}}注入step_limit默认 100、cost_limit默认 3.0、mode: yolo控制 Agent 步数上限、成本上限与运行模式environmentcwd: /testbedSWE-bench 工作目录、timeout: 60、user: root关键是environment_class: e2b—— 声明使用 E2B 兼容环境对应 mini-swe-agent-patch 中的E2BEnvironment实现modelobservation_template控制命令输出回传给模型的格式超 10000 字符自动截断为首尾各 5000 字符model_kwargs携带各模型专属参数。各配置文件的核心差异集中在model_kwargse2b-tokenhub.yaml 设置api_base: https://tokenhub.tencentmaas.com/v1e2b-kimi.yaml 在 TokenHub 基础上追加extra_body: {thinking: {type: disabled}}显式禁用 Thinking 推理Kimi K2.5、DeepSeek R1、混元 2.0 Thinking 均需此配置才能以普通模式运行e2b-deepseek.yaml 与 e2b-deepseek-reasoner.yaml 将api_base指向https://api.deepseek.comReasoner 版本同样带 thinking 禁用配置。故障排查SSL 证书错误SSL: CERTIFICATE_VERIFY_FAILED原因SSL_CERT_FILE被设置为 mkcert 的rootCA.pem覆盖了系统 CA导致访问公网 HTTPS 站点失败。解决改用CUBE_SSL_CERT_FILE仅作用于 E2B SDK 连接 cube-sandbox 的场景。自部署平台完整配置流程见 主 README从 cube-sandbox 节点导出/root/.local/share/mkcert/rootCA.pem安装到系统信任链update-ca-trust后在.env中设置CUBE_SSL_CERT_FILE/etc/pki/tls/cert.pem。run-swebench.sh与run-concurrent.py均已按此约定处理该环境变量。HuggingFace 数据集下载超时ConnectionError: Connection timed out解决.env中设置HF_ENDPOINThttps://hf-mirror.com。脚本默认导出该值网络受限环境可显式配置。LLM API 连接失败litellm.InternalServerError: Connection error排查先验证 API 端点连通性# 测试 API 连通性 curl -s -o /dev/null -w %{http_code} https://tokenhub.tencentmaas.com/v1/chat/completions curl -s -o /dev/null -w %{http_code} https://api.deepseek.com/v1/chat/completions模型端点不可用litellm.APIError: endpoint is inactive原因TokenHub 上的模型端点被禁用或下线。登录 TokenHub 后台确认模型状态或换用其他模型如切换 e2b-tokenhub.yaml 中可用的模型名。残留沙箱实例评测异常退出后可能残留沙箱实例使用check-instances.sh清理bash scripts/check-instances.sh --template your-template-id --kill完整落地流程小结综合本文档与主 README一次完整的 SWE-bench 评测落地路径为bash scripts/setup-env.sh初始化环境再bash mini-swe-agent-patch/install.sh安装 E2B 补丁编辑.env填入E2B_API_URL、E2B_API_KEY、CUBE_TEMPLATE_ID、LLM API Key可选用inject-envd.sh注入 envd 构建镜像或用cubemastercli tpl create-from-image注册模板bash scripts/run-swebench.sh --model ... --instance ...跑单模型基线或run-all-tokenhub.sh横向对比或run-concurrent.py swebench -w N ...高并发压测通过check-instances.sh清理残留沙箱cubecli ls监控实例状态结合results/下的 trajectory 与日志分析模型表现。从源码结构看这套脚本体系以run-swebench.sh为单任务基座、run-concurrent.py为并发调度层、check-instances.sh为运维兜底配合配置文件分离提示词模板 / 环境声明 / 模型端点可平滑支撑从单实例验证到数十并发压测的完整评测需求。【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表