开发与工程 coding-agentssandbox-executionhttp-apiserver-sent-eventssession-streamingtypescript-sdkopenapirust

Sandbox Agent

在隔离沙箱中运行多种编程代理,并通过统一 HTTP API 远程控制。

FollowAgents 评估 · FARS-2.1
谨慎使用
67/ 100 五分制 3.4 / 5
1 2 3 4 5 6
1信任安全13 / 29 · 2.2/5

证据明确主张将可执行任意代码的代理放入沙箱,服务器示例默认使用令牌并绑定 127.0.0.1,CI 的权限也较窄,因此最小权限有较好基础;但未提供核心权限处理实现,无法确认每项工具调用都经过用户确认。README 清楚说明事件会通过 HTTP/SSE 流向调用方及其外部存储,并说明本项目不负责持久化,但没有完整的数据分类、保留或删除策略。凭据可通过环境变量传入,且工具能提取并打印个人 API 密钥;所给材料未显示脱敏、静态加密、日志过滤或密钥生命周期控制。依赖有版本约束和 CI,但多为宽泛范围,未见锁文件、安全扫描或漏洞处置证据。任意命令执行、代理安装、网络传输和外部存储属于显著外部效果,材料虽公开说明却未展示细粒度审批或效果预览。示例能销毁沙箱,但会话恢复、撤销和持久化回滚不在实现范围。仓库、作者、许可证和贡献者归属清楚,但发布者身份仍未经企业注册表验证。

2可靠稳定9 / 14 · 3.2/5

README、Cargo 元数据、SDK/CLI 示例和测试所描述的产品结构总体一致,核心版本均指向 0.4.2/0.4.x;不过“完整功能覆盖”“任意沙箱”等宽泛表述缺少所给核心实现支撑。Rust、Node、pnpm、外部代理二进制和多家沙箱提供商的依赖及前置条件有一定说明,代理还能按需安装,但可用性仍依赖网络、第三方服务、令牌和平台工具。测试代码提供超时、进程退出、启动失败及 stdout/stderr 上下文等有用诊断,但这些主要证明测试夹具的错误信息,未展示完整服务器和 SDK 的面向用户错误体系。

3适用触发15 / 18 · 4.2/5

面向本地开发、远程服务器、嵌入式 SDK、多语言 HTTP 客户端及多种沙箱提供商的场景划分清晰,安装与调用路径具体,因此受众和场景处理充分。Out of Scope 与 FAQ 明确排除会话外部持久化、直接 LLM 包装、Git 管理和沙箱提供商 API,能力边界证据充分。操作由显式 SDK、CLI 或 HTTP 调用及代理配置触发,但所给材料不足以判断权限提示、重复请求和并发事件的精确触发语义。环境适配覆盖多个操作方式和提供商,并展示条件化集成测试;扣分在于部分集成测试默认跳过、依赖外部凭据和工具,且“任何沙箱”没有在材料中得到全面佐证。

4规范维护15 / 18 · 4.2/5

README 的问题陈述、架构、组件、入门、FAQ、范围和路线图组织完整;npm、Bun、curl、CLI、嵌入和远程模式均有可执行风格的安装说明。命名在包、二进制和 Cargo 工作区中基本一致,但产品仍为 0.4.x,OpenCode 兼容功能标为实验性,稳定性承诺有限。示例和 FAQ 丰富,已知范围限制清楚。Apache-2.0 在元数据和完整 LICENSE 中一致,可给满分。仅看到当前版本和 0.4.x 安装通道,未提供变更日志、迁移策略或明确兼容政策。Cargo 作者、仓库、Discord 和文档形成维护入口,但未知发布者身份、缺少明确支持承诺及责任分工,故维护责任未满分。

5有效结果10 / 13 · 3.8/5

统一 HTTP/SSE API、TypeScript SDK、CLI、Inspector、通用事件模式和 OpenAPI 入口能直接形成可消费输出,示例展示了会话创建、消息发送和事件流,输出可用性证据充分。相较逐个集成代理,它提供统一适配与远程沙箱控制的明显增量价值;但“完整功能覆盖”和无缝切换主要是声明,未由所给适配器实现或比较数据充分证明。单一 Rust 二进制与按需安装可能降低部署成本,但运行代理、沙箱、外部存储、第三方 API 和运维仍有成本,材料没有基准、资源用量或成本模型,因此成本收益只属一般充分。

6证据核验5 / 8 · 3.1/5

主要能力可追溯到具体 README 示例、Cargo 工作区元数据、CI 步骤及提供商测试,因而具有一定静态可核查性;但缺少核心服务器、权限和凭据实现,部分强声明无法逐项追踪。README、清单、CI 和测试在版本、组件和健康检查上相互印证,不过若干提供商测试需环境变量才运行,且材料没有独立来源或执行结果。事实、路线图、实验性标签和范围限制有较好区分,但营销性表述如“完整功能覆盖”“运行于任何沙箱”没有明确限定为推断或附带验证边界,故不满分。

证据充分度: 评估于 2026年8月25日 审查版本 bbc195cc3fb5
使用前请注意
  • 该产品旨在控制能执行任意代码的代理;生产部署应保持网络隔离、令牌认证和沙箱边界,切勿把 --no-token 暴露到非本地接口。
  • credentials extract-env --export 会打印个人 API 密钥;应将输出视为敏感数据,避免进入日志、终端录制、CI 构件或聊天记录,并使用短期、最小权限凭据。
  • 会话数据持久化由调用方负责并会流向外部存储;部署前需自行定义加密、访问控制、保留、删除和审计策略。
  • 安装脚本、npm 包及代理二进制来自网络且可按需执行;应固定精确版本、验证制品来源,并补充依赖及漏洞扫描。
  • 部分集成测试在缺少环境变量时会跳过;本次仅为静态审查,未执行或独立验证任何功能。
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Sandbox Agent 是运行在沙箱内部的服务器,用统一接口控制 Claude Code、Codex、OpenCode、Cursor、Amp 和 Pi。其 Rust 守护进程提供 HTTP 与 SSE API,TypeScript SDK 同时支持嵌入模式和服务器模式,CLI 则映射相同的 HTTP 端点。各代理适配器会把专有接口和事件转换为通用 API 与统一会话模式,客户端可以持续接收事件并自行存入 Postgres、ClickHouse 或 Rivet。内置 Inspector UI 可检查会话和事件,项目也提供 OpenAPI 规范供其他语言集成。它既能用于本地开发,也能部署到 E2B、Daytona、Modal、Cloudflare Containers、Agent Computer、Vercel Sandboxes、Docker 或其他能够运行 Linux 二进制文件的环境。它不负责外部会话持久化、Git 仓库管理、沙箱供应商 API,也不是直接调用模型的 LLM 封装。

服务端通过 sandbox-agent server 在沙箱内启动,并将选定的编程代理作为本地子进程运行。客户端可用 SandboxAgent.start() 启动嵌入模式,或用 SandboxAgent.connect({ baseUrl, token }) 连接远程服务器;随后通过 listAgents() 查询代理、createSession() 创建会话、postMessage() 发送任务,并用 streamEvents() 从指定偏移量持续读取标准化事件。HTTP 客户端可以执行同类会话操作,CLI 则提供 sandbox-agent api sessions createsend-messagesend-message-stream。适配器负责在统一协议与 Claude Code、Codex、OpenCode、Cursor、Amp、Pi 的不同接口之间转换。产生的主要输出是通用 JSON 会话事件流;持久化、审计和重放所需的外部存储由采用方负责。Inspector 位于服务器的 /ui/ 路径,用于调试这些会话和事件。

  1. 构建云端开发产品的团队,需要在 E2B、Daytona、Vercel Sandboxes 或 Docker 中隔离执行编程代理生成的任意代码。
  2. 需要同时支持 Claude Code、Codex、OpenCode、Cursor、Amp 或 Pi 的平台团队,希望用一个 HTTP API 降低切换代理时的集成改写成本。
  3. 使用非 TypeScript 后端的开发者,希望依据 OpenAPI 规范调用沙箱内代理,并通过 SSE 接收实时事件。
  4. 需要审计或回放代理工作的工程团队,可消费统一 JSON 事件流并将其写入 Postgres、ClickHouse 或 Rivet。
  5. 调试远程代理权限、消息和会话行为的开发者,可通过内置 Inspector UI 查看会话及事件。
  6. 希望先在本机验证流程、再迁移到隔离生产环境的团队,可在嵌入模式与 HTTP 服务器模式之间选择。

这个 Agent 有哪些优点和局限?

优点
  • 一个 HTTP API 覆盖 Claude Code、Codex、OpenCode、Cursor、Amp 和 Pi,并将不同事件格式归一化为通用会话模式。
  • 既可作为 Rust 静态二进制部署在沙箱内,也可通过 TypeScript SDK 嵌入应用,适合本地和远程两种执行方式。
  • HTTP、SSE 与 OpenAPI 组合使非 TypeScript 客户端也能集成,并能实时处理长时间运行的代理事件。
  • 内置 Inspector UI、CLI 和凭据提取命令,覆盖调试、自动化调用及测试凭据准备。
  • 明确将代理执行放入隔离环境,适合不能在生产服务器直接运行任意生成代码的场景。
局限
  • 项目不持久化统一事件流;采用方必须自行建设 Postgres、ClickHouse、Rivet 或其他外部存储及重放流程。
  • 不抽象沙箱供应商 API,创建、配置和管理 E2B、Daytona、Vercel 或其他沙箱仍由使用方负责。
  • 不同代理仍需要各自的二进制、配置和凭据;统一 API 并未消除底层代理依赖。
  • Python SDK、自动 MCP/技能/钩子配置和待办列表仍列在路线图中,当前不能视为已实现能力。
  • OpenCode SDK 与 UI 兼容性以及 Gigacode 被标记为实验性功能,生产采用需要承担接口或行为变化风险。
  • 项目明确不处理 Git 仓库管理,也不是直接 LLM 封装,完整开发平台仍需组合其他组件。

如何安装或部署这个 Agent?

技能安装:npx skills add rivet-dev/skills -s sandbox-agent,或 bunx skills add rivet-dev/skills -s sandbox-agent

TypeScript SDK:运行 npm install [email protected];Bun 用户可运行 bun add [email protected],若要使用 SandboxAgent.start(),还需信任对应平台的原生二进制 postinstall 脚本。

HTTP 服务器:运行 curl -fsSL https://releases.rivet.dev/sandbox-agent/0.4.x/install.sh | sh,再执行 sandbox-agent server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468。代理二进制可通过 sandbox-agent install-agent --all 预装,否则首次使用时按需安装。本地环境可以用 sandbox-agent server --no-token --host 127.0.0.1 --port 2468 禁用认证。

可选 CLI:npm install -g @sandbox-agent/[email protected]。还需为所选代理提供相应凭据;测试时可运行 sandbox-agent credentials extract-env --export,从本地代理配置中导出 OpenAI、Anthropic 等 API 密钥。

如何使用这个 Agent?

嵌入模式的最小入口是 const client = await SandboxAgent.start()。远程模式使用 const client = await SandboxAgent.connect({ baseUrl: "http://127.0.0.1:2468", token: process.env.SANDBOX_TOKEN })。连接后调用 await client.createSession("demo", { agent: "codex", agentMode: "default" }),再调用 await client.postMessage("demo", { message: "Hello from the SDK." });通过 for await (const event of client.streamEvents("demo", { offset: 0 })) 消费事件。

CLI 流程为:sandbox-agent api sessions create my-session --agent codex --endpoint http://127.0.0.1:2468 --token "$SANDBOX_TOKEN",然后执行 sandbox-agent api sessions send-message-stream my-session --message "Hello" --endpoint http://127.0.0.1:2468 --token "$SANDBOX_TOKEN"。服务器启动后可访问 http://localhost:2468/ui/ 检查会话和事件。生产环境应启用 token,并由应用持续接收事件、写入自己的外部存储。

这个 Agent 与同类方案有什么区别?

与 Vercel AI SDK 相比,两者用途互补:Vercel AI SDK 面向聊天界面和模型调用,Sandbox Agent 面向能够写代码、执行命令的自主编程代理。与各代理的官方 SDK 相比,Sandbox Agent 从远程控制出发,把服务器放入沙箱并通过 HTTP 连接,而官方 SDK 通常假设本地进程与交互终端。与直接通过 SSH 管理代理相比,它使用 HTTP/SSE 处理流式输出、工具确认和人工介入流程,避免管道式 SSH 命令破坏 TTY 行为。

常见问题

它会自动保存代理会话吗?
不会。各代理可在本地磁盘保留自身会话,但统一事件需要由客户端持续接收并写入 Postgres、ClickHouse、Rivet 或其他外部存储。
生产使用是否必须购买特定沙箱服务?
不限定单一供应商。服务器可运行于 E2B、Daytona、Modal、Cloudflare Containers、Agent Computer、Vercel Sandboxes、Docker,或其他能够运行 Linux 二进制文件的环境;供应商账户、费用和生命周期管理由采用方负责。
运行代理需要哪些权限和凭据?
代理会执行任意代码,因此生产环境应提供隔离沙箱。服务器连接可用 token 保护;所选代理还需要相应的 API 凭据,本地测试可通过 sandbox-agent credentials extract-env --export 导出。
能否完全离线运行?
源码只明确支持本地或沙箱内运行,并要求远程客户端通过 HTTP 连接;安装脚本、按需安装代理以及使用模型 API 通常涉及网络。来源没有承诺完整离线模式。
它会创建沙箱或管理 Git 仓库吗?
不会。这两项均明确超出范围:沙箱由相应供应商 API 管理,Git 操作则使用普通 git 命令或沙箱供应商提供的功能。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents