写点什么

Rivet 发布 Sandbox Agent SDK,解决 Agent API 碎片化问题

  • 2026-03-03
    北京
  • 本文字数:1222 字

    阅读完需:约 4 分钟

Rivet 推出的 Sandbox Agent SDK 提供了一个用于构建编程代理的通用 API,使开发者能够在不同的代理运行时(如 Claude Code、Codex、OpenCode 和 Amp)之间切换,而无需为每种运行时分别重写集成逻辑。该 SDK 旨在解决长期以来困扰开发者的代理 API 碎片化、会话管理差异以及流式数据格式不统一等问题,这些问题使得代理集成复杂且难以维护。

 

Rivet 联合创始人兼 CTO Nathan Flurry 表示,构建具备自主能力的代理系统主要面临三大挑战:API 碎片化、临时状态问题,以及不同服务提供商之间的部署差异。

 

构建编程代理并不容易。Claude Code 有一套 API,Codex 有另一套,OpenCode 和 Amp 也各自采用不同方式。即使只选择其中一个,你仍然要面对会话状态在进程崩溃时丢失的问题、为每个沙箱提供商编写不同的集成代码,以及无法将会话记录以流式方式返回到应用程序等挑战。

 

每个代理都有自己的一套事件格式、会话模型和权限体系。例如,Claude Code 通过 stdout 输出 JSONL 格式的数据,而 Codex 使用 JSON-RPC。这意味着开发者不得不为两者分别构建不同的集成逻辑。部署层面也增加了复杂性,像 Daytona、Vercel 和 E2B 这样的平台都提供各自定制的 API。

 

相比之下,Rivet 的 Sandbox Agent SDK 允许开发者针对一个统一 API 编写集成代码,只需修改配置即可切换不同代理。这段简单的代码展示了如何用 SDK 创建代理对话:

import { SandboxAgent } from "sandbox-agent";const client = await SandboxAgent.start();await client.createSession("my-session", {  agent: "claude",  // or "codex", "opencode", "amp"  permissionMode: "auto",});for await (const event of client.streamEvents("my-session")) {  console.log(event.type, event.data);}
复制代码

 

该 SDK 还配套统一的会话数据结构。所有与代理相关的事件(包括会话生命周期、流式输出、人工介入提问、工具执行审批以及错误信息)都遵循一致的格式,从而避免为适配不同代理输出而编写大量定制逻辑。

 

在 X.com 上这篇发布的评论区中,Gianfranco P. 表示

这是编程代理生态系统迫切需要的一层抽象。API 碎片化确实是构建 AI 驱动开发工具时的一个痛点。一次集成,通过修改配置就能切换代理 —— 这简直是测试哪种模型表现最佳的理想方式。

 

一位 Hacker News 读者询问,是否可以将 Rivet 的 Sandbox Agent SDK 理解为“基于 HTTP 的 ACP(agent client protocol)”。Flurry 解释说,这种类比在大方向上是准确的,但 ACP 更侧重于为编辑器场景所需的那部分功能提供统一 API,而 Sandbox Agent SDK 的能力更加全面,重点在于支持完整的代理自动化。

 

Sandbox Agent SDK 是一个轻量级的 15MB 静态二进制文件,使用 Rust 编写,没有运行时依赖。它可以安装在任何能够执行 Linux 二进制文件的环境中,包括 Daytona、E2B、Vercel Sandboxes、Docker 等。该项目目前已在 GitHub 上开源

原文链接:

https://www.infoq.com/news/2026/02/rivet-agent-sandbox-sdk/