基于 cube-sandbox 的 SWE-bench 自动化评测:E2B 兼容沙箱与 mini-swe-agent 的端到端实践
基于 cube-sandbox 的 SWE-bench 自动化评测E2B 兼容沙箱与 mini-swe-agent 的端到端实践【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox导读本文讲解 CubeSandbox 仓库中examples/mini-rl-training示例项目详见 README_zh.md它演示了如何使用 cube-sandbox管理流与数据流完全兼容 E2B SDK 的轻量级虚拟化平台作为隔离代码执行环境配合 mini-swe-agent 与 LiteLLM自动化解决 SWE-bench 软件工程基准任务。读完本文你将掌握从镜像注入 envd、注册沙箱模板、打通 E2B SDK到单模型/多模型/高并发评测的完整流水线并理解该基础设施如何为后续 RL强化学习训练铺路。背景与整体架构cube-sandbox 是一个轻量级虚拟化平台其管理流和数据流完全兼容 E2B SDK。平台通过 in-sandbox agentenvd对外提供 gRPC 接口支持命令执行、文件读写和沙箱生命周期管理。本示例以 SWE-bench软件工程基准测试包含真实 GitHub issue 与测试用例为应用场景演示四条能力使用 cube-sandbox 创建隔离的代码执行环境通过 E2B SDK 驱动 LLM Agent 在沙箱内交互式解题自动化评测 Agent 的解题能力为后续 RL 训练建立基础设施。整体系统架构源自 docs/PRD.md 第 3 节如下┌─────────────────┐ ┌──────────── cube-sandbox ────────────┐ │ │ │ │ │ mini-swe-agent │ E2B SDK │ ┌──────────────┐ │ │ (LLM Agent) │─────────►│ │ envd │──► bash 命令执行 │ │ │ HTTPS/ │ │ :49983 │──► 文件读写 │ │ ┌───────────┐ │ gRPC │ └──────────────┘ │ │ │ LiteLLM │ │ │ │ │ │ ┌──────┐ │ │ │ ┌──────────────────────────────┐ │ │ │ │Gemini│ │ │ │ │ /testbed │ │ │ │ │GLM-5 │ │ │ │ │ (SWE-bench repo testcase) │ │ │ │ │Kimi │ │ │ │ └──────────────────────────────┘ │ │ │ │... │ │ │ │ │ │ │ └──────┘ │ │ └───────────────────────────────────────┘ │ └───────────┘ │ └─────────────────┘关键组件职责如下表组件说明mini-swe-agent开源 LLM Agent 框架支持多轮 tool call 交互LiteLLM统一 LLM API 接口支持 OpenAI、Gemini、TokenHub 等E2B SDKPython 客户端通过Sandbox类管理沙箱生命周期envdcube-sandbox 的 in-sandbox agent静态链接二进制监听 :49983SWE-bench软件工程基准测试集包含真实 GitHub issue 测试用例E2B SDK 接口映射示例通过 E2B SDK 的以下接口与 cube-sandbox 交互详见 PRD 第 3 节接口功能Sandbox(template...)从模板创建沙箱sbx.commands.run(cmd, user...)执行 bash 命令sbx.files.read(path)读取文件内容sbx.files.write(path, content)写入文件sbx.files.list(dir)列出目录sbx.kill()销毁沙箱前置条件Python 3.10Docker用于构建 envd 注入镜像cube-sandbox 平台访问权限API URL API Key至少一个 LLM API KeyGemini / TokenHub / OpenAI 等依赖清单见 requirements.txtmini-swe-agent[extra]2.2.8、e2b-code-interpreter1.3.0、litellm1.83.0、python-dotenv1.0.0。快速开始端到端评测一条龙Step 1: 安装依赖pip install -r requirements.txtStep 2: 安装 mini-swe-agent E2B 补丁mini-swe-agent 默认支持 Docker、Singularity 等执行环境但不支持 E2B。需要安装示例提供的补丁补丁说明见 mini-swe-agent-patch/README.mdbash mini-swe-agent-patch/install.sh补丁会将 3 个文件覆盖到 mini-swe-agent 的 site-packages 中添加 E2B 环境支持。关于补丁的具体实现见下文源码解析一节。Step 3: 配置环境变量cp .env.example .env编辑.env填入真实值# HuggingFace 镜像国内网络使用 hf-mirror.com 避免超时 HF_ENDPOINThttps://hf-mirror.com # cube-sandbox 平台连接信息 E2B_API_URLhttp://your-cube-sandbox-ip:3000 E2B_API_KEYyour-api-key # SWE-bench 镜像模板 IDStep 4 获取 CUBE_TEMPLATE_IDyour-template-id # SSL 证书自部署平台需要仅作用于 E2B SDK 连接 CUBE_SSL_CERT_FILE/etc/pki/tls/cert.pem # LLM API Key选择一个或多个 GEMINI_API_KEYyour-gemini-key TOKENHUB_API_KEYyour-tokenhub-key OPENAI_API_KEYyour-openai-key其中OPENAI_API_KEY在使用 TokenHub 模型时需手动指向$TOKENHUB_API_KEYDeepSeek 直连模型还需要DEEPSEEK_API_KEYdeepseek/deepseek-chat、deepseek/deepseek-reasoner。Step 4: 准备 SWE-bench 镜像模板示例提供了预构建的公开镜像已注入 envd可直接使用cube-sandbox-image.tencentcloudcr.com/demo/django_1776_django-13447:latest该镜像公网可拉取无需自行构建。使用cubemastercli从镜像创建沙箱模板cubemastercli tpl create-from-image \ --image cube-sandbox-image.tencentcloudcr.com/demo/django_1776_django-13447:latest \ --writable-layer-size 1G \ --expose-port 49983 \ --cpu 4000 \ --memory 8192 \ --probe 49983参数说明--image已注入 envd 的 SWE-bench 镜像地址--writable-layer-size可写层大小沙箱内文件修改空间建议1G--expose-portenvd gRPC 端口固定 49983--cpuCPU 配额毫核4000 4 核--memory内存配额MB8192 8G--probe健康检查端口与 expose-port 一致命令输出的template_id形如tpl-c301a4f1b99d4a1f87deb7d4填入.env的CUBE_TEMPLATE_ID。自定义镜像从原始 SWE-bench 镜像注入 envd如果需要使用其他 SWE-bench 题目的镜像可通过 inject-envd.sh 脚本注入 envdbash scripts/inject-envd.sh swebench/sweb.eval.x86_64.django_1776_django-13447:latest脚本会从cube-sandbox-cn.tencentcloudcr.com/cube-sandbox/sandbox-code:latest提取 envd 二进制境外访问可换用cube-sandbox-int.tencentcloudcr.com/cube-sandbox/sandbox-code:latest将其注入 SWE-bench 镜像Dockerfile 覆盖 ENTRYPOINT 为[/usr/bin/envd]构建带 envd 的新镜像推送到镜像仓库后再用上述cubemastercli命令创建模板。注入 Dockerfile 见 envd-inject/Dockerfile。Step 5: 运行评测使用 Gemini 3 Flash 解决django__django-13447bash scripts/run-swebench.sh \ --model gemini/gemini-3-flash-preview \ --instance django__django-13447 \ --config configs/e2b-swebench.yaml运行结果trajectory patch保存在results/目录具体为results/model/instance/trajectory.json与results/model/instance/run.log。run-swebench.sh 的参数一览参数必填默认值说明--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/输出目录多模型切换示例通过 LiteLLM 统一了不同厂商模型的调用按模型来源选用对应配置文件。Gemini 模型直连# 设置 GEMINI_API_KEY bash scripts/run-swebench.sh \ --model gemini/gemini-3-pro-preview \ --config configs/e2b-swebench.yaml \ --instance django__django-13447TokenHub 模型# 所有 TokenHub 模型都需要设置 OPENAI_API_KEY export OPENAI_API_KEY$TOKENHUB_API_KEY # GLM-5 bash scripts/run-swebench.sh \ --model openai/glm-5 \ --config configs/e2b-tokenhub.yaml \ --instance django__django-13447 # MiniMax M2.7 bash scripts/run-swebench.sh \ --model openai/minimax-m2.7 \ --config configs/e2b-tokenhub.yaml \ --instance django__django-13447 # DeepSeek V3.2通过 TokenHub bash scripts/run-swebench.sh \ --model openai/deepseek-v3.2 \ --config configs/e2b-tokenhub.yaml \ --instance django__django-13447e2b-tokenhub.yaml 通过model.model_kwargs.api_base指向https://tokenhub.tencentmaas.com/v1接入 TokenHub。TokenHub Thinking 模型需禁用 thinkingexport OPENAI_API_KEY$TOKENHUB_API_KEY # Kimi K2.5 bash scripts/run-swebench.sh \ --model openai/kimi-k2.5 \ --config configs/e2b-kimi.yaml \ --instance django__django-13447 # DeepSeek R1-0528 bash scripts/run-swebench.sh \ --model openai/deepseek-r1-0528 \ --config configs/e2b-kimi.yaml \ --instance django__django-13447 # 混元 2.0 Thinking bash scripts/run-swebench.sh \ --model openai/hunyuan-2.0-thinking-20251109 \ --config configs/e2b-kimi.yaml \ --instance django__django-13447为什么要禁用 thinking以 Kimi K2.5 为例其默认开启 thinking 模式与 LiteLLM 的 tool call 消息格式不兼容多轮 tool call 会报reasoning_content is missing错误。因此 e2b-kimi.yaml 在model.model_kwargs.extra_body中显式禁用它model: model_kwargs: api_base: https://tokenhub.tencentmaas.com/v1 drop_params: true parallel_tool_calls: true extra_body: thinking: type: disabledDeepSeek 直连# 设置 DEEPSEEK_API_KEY # DeepSeek Chat bash scripts/run-swebench.sh \ --model deepseek/deepseek-chat \ --config configs/e2b-deepseek.yaml \ --instance django__django-13447 # DeepSeek Reasoner需禁用 thinking bash scripts/run-swebench.sh \ --model deepseek/deepseek-reasoner \ --config configs/e2b-deepseek-reasoner.yaml \ --instance django__django-13447DeepSeek 直连配置e2b-deepseek.yaml、e2b-deepseek-reasoner.yaml将api_base指向https://api.deepseek.comReasoner 配置同样带有extra_body.thinking.type: disabled。如果希望一键并行跑完所有 TokenHub 模型可使用 run-all-tokenhub.sh它自动为每个模型选择对应配置普通模型用e2b-tokenhub.yamlThinking 模型用e2b-kimi.yaml每个模型的日志输出到results/_parallel_logs/model.log。并发评测使用 run-concurrent.py 可多模型、多实例并发评测支持沙箱预创建、TUI 实时监控。单模型并发# GLM-5-Turbo 并发 10 个沙箱解同一题 export OPENAI_API_KEY$TOKENHUB_API_KEY python scripts/run-concurrent.py swebench \ -m openai/glm-5-turbo \ --instances django__django-13447 \ --repeat 10 \ --pre-create --pre-create-workers 10 \ -w 10多模型并发# 5 个模型各并发 2 次 10 个任务同时运行 python scripts/run-concurrent.py swebench \ -m openai/glm-5,openai/glm-5-turbo,openai/kimi-k2.5,openai/deepseek-v3.2,openai/minimax-m2.7 \ --instances django__django-13447 \ --repeat 2 \ --pre-create --pre-create-workers 10 \ -w 10全部 TokenHub 模型并发# tokenhub 关键字展开全部 7 个模型每模型 20 次 140 任务 python scripts/run-concurrent.py swebench \ -m tokenhub \ --instances django__django-13447 \ --repeat 20 \ --pre-create --pre-create-workers 50 \ -w 140 \ --max-rows 0纯沙箱性能压测# 跳过 LLM 调用只压测沙箱创建/销毁 python scripts/run-concurrent.py swebench \ -m tokenhub \ --instances django__django-13447 \ --repeat 15 \ --pre-create --pre-create-workers 50 \ -w 105 \ --sandbox-only --max-rows 0常用参数参数说明-m模型名逗号分隔多个或tokenhub表示全部 TokenHub 模型--repeat N每个模型重复 N 次--pre-create多进程预创建沙箱任务启动时直连--pre-create-workers N预创建并发数-w N任务执行并发数--step-limit N限制 Agent 最大步数--sandbox-only跳过 LLM纯沙箱压测--max-rows NTUI 显示行数0显示全部run-concurrent.py还支持两种补充能力详见 scripts/README.mdTUI 仪表盘Header模式、并发数、模板 ID、总耗时、Stats进度条、任务状态统计、创建耗时 avg/p50/p95/max、总 Cost、Tasks每个任务状态与 Sandbox ID、cubecli ls 实时 microVM 实例列表模板映射当不同 SWE-bench 实例需要不同 cube-sandbox 模板时通过--template-map指定 JSON 映射文件如 configs/template-mapping.json未列出的实例回退到.env中的CUBE_TEMPLATE_ID{ django__django-13447: tpl-c301a4f1b99d4a1f87deb7d4, astropy__astropy-12907: tpl-another-template-id }并发输出目录results/concurrent-model-ts/下包含preds.json全部实例预测结果、各实例 trajectory、runner.log。深入源码mini-swe-agent E2B 补丁是如何工作的补丁核心实现在 e2b.py约 250 行对 mini-swe-agent 的改造共涉及 3 个文件文件改动environments/extra/e2b.py新增— E2B 环境类封装 E2B SDK 的沙箱操作environments/__init__.py注册e2b到环境类型映射表_ENVIRONMENT_MAPPINGrun/benchmarks/swebench.py在get_sb_environment中将e2b加入支持image参数的类型列表配置类 E2BEnvironmentConfige2b.py 中定义了配置模型class E2BEnvironmentConfig(BaseModel): template_id: str # E2B 模板 ID或从 CUBE_TEMPLATE_ID 环境变量读取 image: str # SWE-bench 兼容字段实际不使用 cwd: str /testbed # 工作目录 timeout: int 60 # 单条命令超时秒 user: str root # 执行用户 sandbox_timeout: int 1800 # 沙箱生命周期秒注意user默认为rootSWE-bench 镜像以 root 运行而 E2B SDK 默认使用user用户因此必须在配置中显式指定user: root这是 PRD 第 7.4 节明确的技术约束。三个核心方法方法功能__init__通过Sandbox.create(templatetemplate_id)创建 E2B 沙箱execute(action)拼接cd {cwd} {command}通过sbx.commands.run()执行合并 stdout/stderrcleanup()调用sbx.kill()销毁沙箱释放资源execute()内部会对输出调用_check_finished()若输出首行为COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT且返回码为 0则抛出Submitted异常将后续行作为 patch 提交从而结束该实例的评测循环。命令执行完整链路如下Agent 发出 action {command: grep -r def _build_app_dict .} │ ▼ E2BEnvironment.execute() │ 拼接: cd /testbed grep -r def _build_app_dict . ▼ sandbox.commands.run(full_cmd, userroot, timeout60) │ 通过 HTTPS/gRPC 发送到 envd ▼ envd 在沙箱内执行 bash 命令 │ ▼ 返回 {output, returncode, exception_info} │ ▼ _check_finished() 判断是否提交 patch针对高并发与自部署场景的工程化细节补丁实现中还有三处值得关注的工程细节共享 HTTP 连接池_get_shared_api_client()e2b.py默认 SDK 每次创建/销毁沙箱都会新建httpx.Client重新做 TCP TLS 握手补丁通过线程安全的单例共享一个ApiClient配置Limits(max_connections50, max_keepalive_connections50, keepalive_expiry300)让连接池复用 keep-alive 连接显著降低高并发下的握手开销。沙箱预创建与直连create_sandbox_info()/batch_create_sandboxes()e2b.pySandboxInfo保存sandbox_id、sandbox_domain、envd_version、envd_access_token等连接信息可通过ProcessPoolExecutor在多个 worker 进程中并行批量创建沙箱每个进程独立连接池避免 GIL 限制任务启动时直接_connect_existing()连接预创建沙箱跳过 API 创建调用——这正是--pre-create参数背后的实现。进程退出兜底清理模块注册了atexit与SIGINT/SIGTERM信号处理器_cleanup_all_sandboxes配合weakref追踪所有活动沙箱进程异常退出时也会尽力销毁沙箱避免残留实例。SSL 证书局部生效_ssl_context()仅在 E2B SDK 调用期间临时设置SSL_CERT_FILE并恢复避免全局覆盖 Python 的 CA 证书包否则访问 HuggingFace 等公网站点会 SSL 校验失败。环境注册与 SWE-bench 入口适配在environments/__init__.py的_ENVIRONMENT_MAPPING中新增一行_ENVIRONMENT_MAPPING { docker: ..., singularity: ..., # ... e2b: minisweagent.environments.extra.e2b.E2BEnvironment, # 新增 }在run/benchmarks/swebench.py的get_sb_environment()中将e2b加入支持image参数的环境列表if env_config[environment_class] in [docker, swerex_modal, e2b]: env_config[image] image_name这样 SWE-bench 运行器会自动把题目对应的 Docker 镜像名传给 E2B 环境配置E2B 环境类内部忽略image字段优先使用template_id。核心评测流程与配置说明镜像准备SWE-bench 原始镜像 ──► envd 注入 ──► 注册为 cube-sandbox 模板从cube-sandbox-cn.tencentcloudcr.com/cube-sandbox/sandbox-code:latest提取 envd 二进制境外访问使用cube-sandbox-int.tencentcloudcr.com/cube-sandbox/sandbox-code:latest将 envd 注入 SWE-bench 镜像Dockerfile 覆盖 ENTRYPOINT 为[/usr/bin/envd]将注入后的镜像注册为 cube-sandbox 模板获得template_id。评测流程加载 SWE-bench 题目 │ ▼ 创建 E2B 沙箱template_id │ ▼ ┌──────────────────────┐ │ Agent 交互循环 │ │ ① LLM 分析问题 │ │ ② 生成 bash 命令 │ │ ③ E2B 执行命令 │ │ ④ 返回结果给 LLM │ │ ⑤ 重复直到提交 patch │ └──────────────────────┘ │ ▼ 提取 patch 评估结果 │ ▼ 销毁沙箱评测 YAML 配置结构以 e2b-swebench.yaml 为例配置分为三个区块agent系统提示词与实例提示词模板内含 SWE-bench 解题指令只能在/testbed修改非测试源码文件、通过git diff生成 patch、以echo COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT cat patch.txt提交、step_limit: 100、cost_limit: 3.、mode: yoloenvironmentcwd: /testbed、timeout: 60、user: root、environment_class: e2bmodelobservation 模板输出超过 10000 字符时截断为 head/tail 各 5000 字符并提示 elided 字符数、format_error_template、model_kwargsdrop_params: true、parallel_tool_calls: true、cost_tracking: ignore_errors。template_id不在 YAML 中硬编码而是从环境变量CUBE_TEMPLATE_ID读取也可在 YAML 中直接指定优先于环境变量。SSL 证书配置自部署平台如果 cube-sandbox 使用 mkcert 证书需要安装 root CA# 从 cube-sandbox 节点获取 root CA ssh cube-node cat /root/.local/share/mkcert/rootCA.pem \ /etc/pki/ca-trust/source/anchors/cube-rootCA.pem # 安装到系统信任链 sudo update-ca-trust # 在 .env 中设置注意使用 CUBE_SSL_CERT_FILE 而非 SSL_CERT_FILE CUBE_SSL_CERT_FILE/etc/pki/tls/cert.pem注意使用CUBE_SSL_CERT_FILE而非SSL_CERT_FILE避免全局覆盖 Python 的 CA 证书包导致访问 HuggingFace 等公网站点时 SSL 验证失败。脚本会在连接 cube-sandbox 时自动将其设置为SSL_CERT_FILEe2b.py 的_ssl_context()与 run-swebench.sh 均实现了这一隔离逻辑脚本也会将已存在的SSL_CERT_FILE转换为CUBE_SSL_CERT_FILE后 unset。目录结构examples/mini-rl-training/ ├── README.md # 英文说明 ├── README_zh.md # 本示例主文档 ├── docs/ │ └── PRD.md # 产品需求文档含 RL 愿景 ├── mini-swe-agent-patch/ # mini-swe-agent E2B 改造代码 │ ├── README.md # 补丁说明 │ ├── install.sh # 一键安装脚本 │ ├── environments/ │ │ ├── __init__.py # 注册 e2b 环境类型 │ │ └── extra/ │ │ └── e2b.py # E2BEnvironment 实现 │ └── run/benchmarks/ │ └── swebench.py # SWE-bench 入口添加 e2b 支持 ├── configs/ │ ├── e2b-swebench.yaml # 基础配置Gemini 等直连模型 │ ├── e2b-tokenhub.yaml # TokenHub 模型配置 │ ├── e2b-kimi.yaml # Kimi K2.5 专用配置 │ ├── e2b-deepseek.yaml # DeepSeek Chat 配置 │ ├── e2b-deepseek-reasoner.yaml # DeepSeek Reasoner 配置 │ └── template-mapping.json # 实例到模板的映射 ├── scripts/ │ ├── setup-env.sh # 一键环境准备 │ ├── inject-envd.sh # envd 注入 SWE-bench 镜像 │ ├── run-swebench.sh # 运行单次 SWE-bench 评测 │ ├── run-concurrent.py # 并发评测多模型/多实例/预创建 │ ├── run-all-tokenhub.sh # 并行跑全部 TokenHub 模型 │ └── check-instances.sh # 检查/清理沙箱实例 ├── envd-inject/ │ └── Dockerfile # envd 注入 Dockerfile ├── .env.example # 环境变量模板 └── requirements.txt # Python 依赖另外setup-env.sh 提供一键初始化检查 Python 版本3.10、安装依赖、验证 litellm / e2b-code-interpreter / mini-swe-agent 安装、检查.env与 SSL 证书配置check-instances.sh 可按模板 ID 查询/批量清理残留沙箱实例bash scripts/check-instances.sh --template template-id [--kill]cubecli 常用运维速查# 列出所有运行中的实例 cubecli ls # 从镜像创建模板 cubemastercli tpl create-from-image \ --image image:latest \ --writable-layer-size 1G \ --expose-port 49983 \ --cpu 4000 --memory 8192 \ --probe 49983 # 列出/查看模板 cubecli tpl ls cubecli tpl info template_id # 销毁实例 cubecli unsafe destroy sandbox_id已验证的模型表现示例文档记录了在django__django-13447题目、cube-sandbox E2B 沙箱环境下的多模型评测数据来自 README_zh.md 与 docs/PRD.md模型步骤费用耗时结果DeepSeek Chat35$0.02253s成功DeepSeek Reasoner75$0.05389s成功DeepSeek V3.2---待测DeepSeek R1-0528---待测Kimi K2.542$0.93179s成功Gemini 3 Pro22$0.26224s成功Gemini 3 Flash46$0.19278s成功MiniMax M2.756$1.62363s成功GLM-541$0.75400s成功混元 2.0 Thinking---待测测试题目django__django-13447环境cube-sandbox E2B 沙箱。PRD 还给出了 Docker 直连与 E2B 沙箱的对比Gemini 3 Flash同一题目指标Docker 直连E2B 沙箱差异耗时208 秒278 秒34%步骤49 步46 步-6%费用$0.16$0.1919%E2B 额外耗时主要来自沙箱创建的网络开销和 HTTPS/gRPC 传输延迟整体性能损耗在可接受范围内。故障排查以下是示例脚本手册中收录的常见问题与解决思路详见 scripts/README.md 的故障排查一节现象原因解决SSL: CERTIFICATE_VERIFY_FAILEDSSL_CERT_FILE被设置为 mkcert 的rootCA.pem覆盖了系统 CA改用CUBE_SSL_CERT_FILEConnectionError: Connection timed outHuggingFace 数据集下载超时.env中设置HF_ENDPOINThttps://hf-mirror.comlitellm.InternalServerError: Connection errorLLM API 连接失败用curl -s -o /dev/null -w %{http_code} endpoint排查 API 连通性litellm.APIError: endpoint is inactiveTokenHub 上的模型端点被禁用或下线登录 TokenHub 后台确认模型状态或换用其他模型残留沙箱实例评测异常退出bash scripts/check-instances.sh --template template-id --kill从评测到强化学习RL 训练愿景本示例的长期目标是把评测流水线扩展为完整的 RL 训练循环PRD 第 2.2 节┌─────────────────────────────────────────────────────────────────┐ │ RL Training Loop │ │ │ │ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Policy │ │ Action │ │ Env │ │ Reward │ │ │ │ (LLM) │───►│ bash 命令 │───►│ E2B 沙箱 │───►│ 测试通过率│ │ │ │ │◄───│ │◄───│ testbed │◄───│ │ │ │ └──────────┘ └───────────┘ └──────────┘ └──────────┘ │ │ ▲ │ │ │ └────────────── Policy Update ◄──────────────────┘ │ └─────────────────────────────────────────────────────────────────┘RL 概念对应实现Environmentcube-sandbox 沙箱通过 E2B SDK 管理Statetestbed 中的代码仓库状态 命令历史ActionAgent 生成的 bash 命令RewardSWE-bench 测试通过率0 或 1PolicyLLM可通过 RL 微调优化在评测流程基础上扩展 RL 训练需要四步Batch 采样并行创建多个沙箱同一题目多次尝试Reward 计算reward 1 if tests_pass else 0可扩展为部分分Trajectory 收集记录 (state, action, reward) 序列Policy Update使用 GRPO/PPO 等算法更新 LLM 权重。cube-sandbox 对这一场景的支撑优势在于沙箱创建/销毁开销低秒级适合大规模并行采样E2B SDK 兼容性确保与主流工具链无缝集成envd 无依赖注入静态链接的 x86_64 二进制约 15MB支持任意 Linux 镜像。需要明确的是RL 训练代码实现GRPO/PPO 等、模型微调基础设施、SWE-bench 全集评测示例仅演示单题与生产环境部署方案均属于本示例的非目标范围本文介绍的部分以镜像准备、评测执行、多模型切换与并发压测为主。【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考