LiteLLM Agent Control Plane 沙箱执行原理:OpenSandbox 如何把 Agent 的每条命令关进隔离容器
【免费下载链接】litellm-agent-control-plane1 place to call all your agents - OpenCode, Hermes, Claude Managed Agents, Cursor Agents API, DeepAgents.项目地址https://gitcode.com/gh_mirrors/li/litellm-agent-control-plane点击查看免费下载LiteLLM Agent Control PlaneLAP是统一调用 OpenCode、Claude Managed Agents、DeepAgents 等 AI Agent 的开源网关。本文将拆解它的沙箱执行原理OpenSandbox 如何把 Agent 的每条命令关进一次性隔离容器让 Agent「有手有脚」却碰不到宿主机。 为什么 Agent 不能直接在宿主机上跑命令编码类 Agent 干活时动不动就要执行pip install、git clone、rm这类命令。如果这些命令直接跑在宿主进程里风险很明显误删或污染宿主机上的真实文件Agent 可能读到宿主机的密钥、环境变量等敏感信息多个 Agent 会话之间互相干扰沙箱化是标准答案把命令与文件操作全部重定向进一个一次性容器会话结束、容器销毁宿主机状态分毫未损。这正是 LAP 接入 OpenSandbox 后做的事。三个角色Controller、execd 与 MCP 桥OpenSandbox 沙箱由三个角色协作全部走纯 HTTP 通信角色职责OpenSandbox Controller管理沙箱生命周期创建、终止、解析访问地址execd沙箱内守护进程在容器内执行命令以 SSE 事件流回传结果处理文件读写sandbox-exec MCP ServerLAP 侧的「桥」把沙箱能力包装成 3 个 MCP 工具交给 OpenCode桥的实现刻意做成了零依赖——只用 Node 20 内置的fetch不引入任何 SDK核心代码见 sandbox.mjs 与 sandbox-mcp.mjs。 核心机制先「收钥匙」再「发新卡」这是整个方案里最关键的设计。harness 启动时检测到沙箱配置后会重写 OpenCode 的权限策略bash: deny—— 宿主机上的 shell 通道直接封死edit: deny—— 宿主机文件编辑通道封死sandbox_*: allow—— 只放行沙箱 MCP 的exec/read_file/write_file三个工具也就是说Agent 不需要「有意识」地使用沙箱——原生执行通道根本不存在它想跑命令、改文件唯一的路就是进隔离容器。这段「收钥匙」逻辑在 opencode.mjs#L233-L251启动时的自动检测在 index.mjs#L61-L81。每条命令的 5 步隔离之旅配置好沙箱后Agent 发出的每一条命令都会经历如下流程创建POST /v1/sandboxes向 Controller 申请新沙箱指定 execd 镜像默认资源上限 1 CPU / 2 GiB10 分钟超时寻址GET /v1/sandboxes/{id}/endpoints/44772解析出 execd 的访问端点与鉴权头执行POST {execd}/command提交命令stdout / stderr / 执行完成事件通过 SSE 流式回传文件读写GET {execd}/files/download读文件POST {execd}/files/upload写文件销毁DELETE /v1/sandboxes/{id}容器连同全部现场一起消失MCP Server 采用惰性创建首个工具调用时才真正开沙箱并跨调用复用进程收到 SIGINT / SIGTERM 或 stdin 关闭时自动终止沙箱保证「用完即焚」。相关实现创建与终止见 sandbox.mjs#L81-L119命令执行与退出码推断见 sandbox.mjs#L147-L253。三步开启沙箱执行第一步部署 OpenSandbox本地测试可以直接指向已有的 OpenSandbox 实例生产环境建议按 eks-deployment.md 把 OpenSandbox Controller基于BatchSandboxCRD 管理沙箱 Pod与 Server 一起部署到 Kubernetes 的opensandbox-system命名空间。第二步配置 3 个环境变量变量说明OPENSANDBOX_API_URLController 地址配置后即自动开启沙箱模式OPENSANDBOX_API_KEY鉴权密钥以OPEN-SANDBOX-API-KEY请求头发送OPENSANDBOX_IMAGEexecd 沙箱镜像变量清单与本地 Docker Compose 示例见 opencode.mdx 和 README.md。第三步在 LAP 注册 runtime 并运行在 UI 中进入 Agent Runtimes → Add Runtime选择claude_managed_agentsAPI Spec把 API Base 指向 opencode 服务即可随后在会话页选择该 runtime点击 Run。以部署在 EKS OpenSandbox 上的opencode-eks-anthropicruntime 为例此时 Agent 的每条 shell 命令与文件操作都已经在独立的隔离容器中执行不止 OpenSandboxRust 核心里的双引擎除了 OpenCode harness 侧的 OpenSandboxLAP 的 Rust 核心自身也有一套沙箱执行引擎抽象mod.rs#L94-L166e2b调用 E2B 云沙箱创建时开启 secure 模式e2b.rslocal直接在本机进程执行适合本地开发调试引擎按sandbox_choice配置选择未显式指定时以「是否配置了 E2B API Key」自动判定。也就是说OpenSandbox 与 E2B 是 LAP 生态里两类可按 runtime 混搭的隔离容器方案。总结命令不落宿主机bash/edit被 denyAgent 只能走沙箱 MCP 工具用完即焚沙箱惰性创建、会话结束即销毁隔离容器不留任何现场零依赖MCP 桥仅用 Node 内置能力实现不绑定任何 SDK⚡低开销网关LAP 核心以 Rust 编写代理层开销极低下图为项目文档中的示意数据完整原理与生产部署细节可继续查阅 docs/runtimes/opencode.mdx 与 templates/opencode/ 目录下的 harness 源码。赞分享【免费下载链接】litellm-agent-control-plane1 place to call all your agents - OpenCode, Hermes, Claude Managed Agents, Cursor Agents API, DeepAgents.项目地址https://gitcode.com/gh_mirrors/li/litellm-agent-control-plane点击查看免费下载相关推荐VoltAgent E2B 沙箱提供方实战指南用 E2BSandbox 将 Agent 命令执行隔离到云端沙箱VoltAgent E2B 沙箱提供方实战指南用 E2BSandbox 将 Agent 命令执行隔离到云端沙箱 E2BE2B Sandbox提供基于 Fi人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆Agent 工作流AI 评测MCP 服务MCP Clients语音CubeSandbox × Claude Code用 PreToolUse Hook 将 Agent 的每一条 Bash 命令透明隔离进 MicroVMCubeSandbox × Claude Code用 PreToolUse Hook 将 Agent 的每一条 Bash 命令透明隔离进 MicroVM 本篇Agent 沙箱虚拟化云原生人工智能后端容器运行时LiteLLM Agent Control Plane Sessions API 深入SSE 事件流如何实时回传 Agent 输出LiteLLM Agent Control Plane Sessions API 深入SSE 事件流如何实时回传 Agent 输出 LiteLLM Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考