我如何通过将云沙箱替换为本地 microVM 来降低 OpenAI Agent 的延迟
Source: Dev.to

介绍
几天前,我在使用全新的 OpenAI Agents SDK 构建一个编码代理。 我接入了官方的一个云沙箱(它们整体上都不错)。 代理能够工作,但感觉非常迟缓。
日志显示,代理每个任务平均会进行约 15 次工具调用。 由于沙箱托管在云端,物理路径如下:
My Agent Runtime → Internet → Cloud Sandbox → MicroVM → Internet → My Agent Runtime
每一次 exec_command 都需要跨公共互联网进行两次往返——每个任务产生 30 次网络跳跃。 提供商宣传的 “90 ms 冷启动”,但每次工具调用的持续往返时间(RTT)开销严重影响了用户体验。
我尝试了 SDK 的默认本地选项(Linux 上的 bubblewrap)。 它很快,但它依赖进程级的系统调用过滤,将不受信任的 LLM 生成代码直接在宿主内核上运行感觉风险太大。
寻找折中方案:BoxLite
我想要云 VM 的硬件隔离,同时又希望本地进程的零延迟。于是我发现了 BoxLite——本质上是沙箱领域的 SQLite。它是一个嵌入式微型 VM,使用 KVM(Linux)或 Hypervisor.framework(macOS)在你的机器上直接启动专用的客体内核。
BoxLite 没有需要配置的守护进程、没有 Docker 套接字,也不需要 root 权限。只需一条 pip 命令即可安装:
pip install boxlite-openai-agents
一行代码切换
我不需要重写代理逻辑;只需在 RunConfig 中更换沙箱客户端:
from boxlite_openai_agents import BoxLiteSandboxClient, BoxLiteSandboxClientOptions
# ... agent setup ...
await Runner.run(
agent,
"Write fizzbuzz.py for n=15 and run it.",
run_config=RunConfig(
sandbox=SandboxRunConfig(
client=BoxLiteSandboxClient(), # <-- Changed this line
options=BoxLiteSandboxClientOptions(
image="python:3.12-slim"
),
),
),
)
结果
延迟立刻下降。由于微型 VM 与代理运行时在同一进程中运行,互联网跳跃从 30 次降至 零——通信现在是微秒级的进程间通信(IPC)。
此外,BoxLite 使用 QCOW2 快照,因此我不再需要为每个会话重新安装 pandas 等包。可以对 VM 状态进行快照,第二天恢复时只需不到一秒。
如果你在笔记本电脑上构建编码代理,已经厌倦了云端的延迟和超时,建议尝试本地微型 VM。它彻底改变了我的工作流。