trpc-agent-go 接入 Cube Sandbox:以 E2B 兼容协议构建 Go Agent 安全代码执行后端 📅 发布时间:2026/9/16 15:48:13 👁 浏览次数: trpc-agent-go 接入 Cube Sandbox以 E2B 兼容协议构建 Go Agent 安全代码执行后端【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox本指南围绕trpc-agent-go的codeexecutor/e2b包与 Cube Sandbox 的集成实践展开说明如何在不改动 Agent 上层业务代码的前提下借助 Cube Sandbox 对 E2B 沙箱协议的兼容能力把 LLM 生成的 Python / JavaScript / Bash 代码从公共 SaaS 或共享容器迁移到自建的 KVM 微虚机沙箱中执行。读者将掌握e2b.CodeExecutor的完整配置方式、E2B 协议兼容链路的底层原理以及模板治理、鉴权、会话级工作区等生产级细节。业务背景Agent 为什么需要安全代码执行后端trpc-agent-go 是腾讯开源的 Go 语言 Agent 开发框架提供从模型调用、工具编排、记忆管理到代码执行Code Interpreter的完整能力。在真实业务中Agent 经常需要执行 LLM 生成的 Python / JavaScript / Bash 代码例如数据分析与可视化pandas、matplotlib业务报表生成PDF、Excel、SVG 图表动态脚本与一次性任务爬虫、清洗、转换Agentic RL / Tool-Use 场景下的多轮代码执行与反馈闭环。为此 trpc-agent-go 在codeexecutor/e2b包中实现了与 E2B 协议兼容的CodeExecutor支持把 Agent 生成的代码直接送入沙箱执行并把 stdout / stderr、富媒体结果PNG、PDF、SVG、HTML、Markdown和工作区产物回流给上层 Agent。核心痛点直接在宿主环境跑不可信代码的问题直接在 Agent 进程或宿主容器里跑 LLM 生成的代码会遇到几个生产级问题安全性模型生成的代码不可信可能读敏感文件、发起任意网络请求、消耗主机资源必须有强隔离边界。依赖与污染Python 数据科学栈、Node 工具链、字体、临时文件相互影响长生命周期进程易出现状态污染。冷启动与并发Agent 应用流量呈突发 多会话特征传统容器秒级冷启动和较高内存占用难以扛住高并发短任务。多轮一致性多轮 Agent 经常需要上一步生成的中间文件下一步继续读纯 Function 化执行难以保留工作区状态。海外 SaaS 依赖直接接入 E2B 公有云会带来跨境网络、合规、计费等问题自建一套兼容方案的成本不低。基于 Cube Sandbox 的方案零代码改动切换后端Cube Sandbox 兼容 E2B 沙箱协议因此 trpc-agent-go 的e2b.CodeExecutor可以零代码改动接入自建的 Cube Sandbox 集群仅通过 Option 切换后端import ( context time trpc.group/trpc-go/trpc-agent-go/codeexecutor/e2b ) ce, err : e2b.New( // 把 E2B 客户端指向自建的 Cube Sandbox 控制面 e2b.WithAPIURL(https://cube-sandbox.your-domain.internal), e2b.WithAPIKey(token-issued-by-cube), // 选择已经在 Cube 中构建好的 code-interpreter 模板 e2b.WithTemplate(code-interpreter-v1), // 沙箱级与执行级超时 e2b.WithSandboxTimeout(10*time.Minute), e2b.WithExecutionTimeout(60*time.Second), // 多轮 Agent 推荐开启会话级工作区跨 turn 复用文件 e2b.WithWorkspacePersistence(e2b.WorkspacePersistencePerSession), ) if err ! nil { panic(err) } defer ce.Close()接入后整体调用链如下LLM ──► Agent (trpc-agent-go) │ │ CodeExecutor.ExecuteCode / Engine ▼ E2B 协议 (HTTP envd) │ ▼ Cube Sandbox 控制面 ──► KVM 微虚机per session / per turn ├─ Python / Node / Bash 内核 ├─ 工作区目录 /tmp/run/execID └─ stdout / stderr / 文件产物 回流trpc-agent-go 在这套链路上额外提供多语言适配pickLanguage自动把模型输出的python、ts、bash等转成 Cube Sandbox 内核可识别的语言标识。富结果还原把沙箱返回的 PNG / JPEG / PDF / SVG / LaTeX 等结果自动解码成codeexecutor.File交给上层 Agent作为多模态消息或附件回到对话流。工作区抽象CreateWorkspace、PutFiles、StageDirectory、Collect等接口将文件 staging、收集产物的能力封装在沙箱内部进行配合WorkspacePersistencePerSession让多轮对话天然共享中间文件。生命周期可控通过WithSandboxID复用已存在的 Cube 沙箱或由CodeExecutor自己负责创建/销毁便于实现会话池。仓库侧的技术支撑E2B 协议兼容如何落到实处零代码改动接入并非空泛承诺而是由 Cube Sandbox 仓库中多个组件的协议级兼容共同支撑的。CubeAPI 控制面完整暴露 E2B 风格的 REST 路由Cube Sandbox 的 API ServerCubeAPI/src/routes.rs以 E2B 兼容的根路径挂载沙箱、模板、快照、卷四组资源路由。build_e2b_router汇总了/sandboxes创建 / 列表 / 详情 / 删除 / 日志 / 网络策略 / 超时设置 / refresh、/templates列表 / 创建 / 别名解析 / 构建与状态以及/volumes等路由与 E2B SDK 的请求路径一一对应同时按操作耗时区分了三条超时通道默认 30sDEFAULT_ROUTE_TIMEOUT、Pause/Resume/Connect 的 120s 生命周期预算、快照创建与模板/快照删除的 240s 长预算避免同步的 CubeMaster 操作被 HTTP 超时截断对应测试见 routes.rs#L449-L559。这意味着 trpc-agent-go 的CodeExecutor走的就是这条原生 E2B 兼容链路。从快速开始验证 SDK 兼容性快速开始是验证 E2B 兼容性的最小路径部署完成后Python 侧直接使用e2b-code-interpreterSDK通过环境变量把请求指向本地 Cube Sandboxexport E2B_API_URLhttp://127.0.0.1:3000 export E2B_API_KEYe2b_000000 export CUBE_TEMPLATE_ID你的模板ID export SSL_CERT_FILE/root/.local/share/mkcert/rootCA.pemimport os from e2b_code_interpreter import Sandbox # 直接使用 E2B SDK # CubeSandbox 在底层无缝接管了所有的请求 with Sandbox.create(templateos.environ[CUBE_TEMPLATE_ID]) as sandbox: result sandbox.run_code(print(Hello from Cube Sandbox, safely isolated!)) print(result)变量说明E2B_API_URL将 E2B SDK 请求指向本地 Cube Sandbox而非 E2B 官方云服务E2B_API_KEYSDK 强制非空校验本地部署填任意字符串即可CUBE_TEMPLATE_ID模板 IDSSL_CERT_FILEmkcert 签发的 CA 根证书路径沙箱 HTTPS 连接需要这套语义同样适用于 Go 生态CubeSandbox 的 Go SDK 中NewConfigFromEnv同时接受E2B_API_URL和E2B_API_KEYCube 专用环境变量CUBE_API_URL/CUBE_API_KEY优先级更高见 sdk/go/README.md。因此 trpc-agent-go 这类 Go 框架与原生 Go SDK 可以共用同一套切换 URL 即切换后端的模式。鉴权为私有化集群签发 Agent 可用的 API Key私有化部署在启用鉴权后trpc-agent-go 通过e2b.WithAPIKey传入的 token 会以Authorization: Bearer key的形式附加到每个请求上鉴权配置。Cube API Server 默认不启用鉴权通过--auth-callback-url或AUTH_CALLBACK_URL指定回调地址后每个入站请求的凭证 headerBearer 优先于X-API-Key连同X-Request-Path、X-Request-Method透传给自建鉴权服务回调返回 200 才放行。生产环境中建议在回调里同时校验路径和方法避免只读凭证被放大为删除/覆写操作。数据面dev-sidecar 与 sandbox 端口路由代码执行的富结果回流依赖数据面通道。仓库提供了 e2b-dev-sidecar 示例在不修改 E2B SDK 的前提下用本地 sidecar 把 envd API、文件上传/下载 URL、MCP URL 和沙箱 HTTP/WebSocket 流量改写为port-sandbox_id.sandbox-domain的 Host 后转发到 CubeProxy。它同时印证了生产环境的数据面接入方式——在私有 DNS 中添加*.cube.app cube master node ip泛解析记录Agent 数据面即可直达集群。模板治理让 code-interpreter 模板可演进原文示例中的code-interpreter-v1对应 Cube Sandbox 的模板体系。从 OCI 镜像制作模板后可通过cubemastercli tpl set-alias tpl-01abc --alias python-runtime为模板绑定稳定别名规则见 模板别名仅含小写字母、数字与连字符1~64 字符不能使用tpl-/snap-保留前缀。算法/平台团队可以在统一镜像中管理 Python 包、字体、JDK 等依赖业务侧只需把e2b.WithTemplate(python-runtime)中的别名指到新构建的 READY 模板即可完成平滑升级——已运行的沙箱不受别名切换影响。模板创建命令示例见 快速开始cubemastercli tpl create-from-image \ --image cube-sandbox-cn.tencentcloudcr.com/cube-sandbox/sandbox-code:latest \ --writable-layer-size 1G \ --expose-port 49999 \ --expose-port 49983 \ --probe 49999效果与收益将 Agent 代码执行后端从公共 SaaS / 容器方案迁移到自建 Cube Sandbox 后可以同时拿到几方面收益更强的安全边界每次会话/每个 turn 一台独立 KVM 微虚机硬件级隔离 网络策略远好于共享内核的容器方案可放心执行不可信代码。更低的执行延迟与成本Cube Sandbox 单实例 100ms 级交付、 5MB 额外内存开销、单机百并发让Agent 一次思考一次开沙箱成为可行的默认实践避免长驻容器的资源浪费以上为 Cube Sandbox 官方宣称的交付指标实际表现取决于宿主机配置与模板大小。零侵入的私有化能力得益于 E2B 协议兼容trpc-agent-go 上层业务代码无需改动只需切换WithAPIURL/WithTemplate即可在公有云 E2B 与私有化 Cube Sandbox 之间自由切换满足合规与跨境网络要求。更顺畅的多轮 Agent 体验会话级工作区让画一张图—基于这张图再回答—再导出 PDF这类任务无需手动搬运中间文件对 Agentic RL、Deep Research、数据分析助手等场景尤其友好。可演进的模板治理Cube Sandbox 的模板体系如code-interpreter-v1让算法/平台团队可以在统一镜像中管理 Python 包、字体、JDK 等依赖业务侧只需挑选模板即可。参考资料本案例收录于 应用案例栏目中文原文见 docs/zh/guide/usecases/trpc-agent-go.mdE2B 兼容控制面路由实现CubeAPI/src/routes.rs部署与模板制作docs/zh/guide/quickstart.md鉴权配置docs/zh/guide/authentication.mdE2B SDK 数据面接入示例examples/e2b-dev-sidecar/README_zh.mdGo SDK 环境变量与用法docs/zh/guide/tutorials/sdk/go.md模板别名治理docs/zh/guide/template-aliases.md【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考