写作与公文
需要为 AI Agent 安全执行 LLM…
在需要快速、并发且硬件隔离地运行不可信或 LLM 生成代码时,用 Zeroboot 的 copy-on-write KVM fork 创建 VM 沙箱。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要为 AI Agent 安全执行 LL特定
解决思路
- 理解适用架构:Zeroboot 使用 Firecracker + KVM 的真实硬件隔离 VM,模板 VM 启动一次并保存内存与 CPU 状态,之后用 mmap(MAP_PRIVATE) 做 copy-on-write fork,每次执行约 0.8ms,而不是容器。
- 安装 Python SDK:执行 pip install zeroboot。
- 安装 Node/TypeScript SDK:执行 npm install @zeroboot/sdk,或执行 pnpm add @zeroboot/sdk。
- 设置认证:执行 export ZEROBOOT_API_KEY="zb_live_your_key_here";不要把密钥硬编码到源码。
- 用 REST API cURL 快速执行:curl -X POST https://api.zeroboot.dev/v1/exec -H 'Content-Type: application/json' -H "Authorization: Bearer $ZEROBOOT_API_KEY" -d '{"code":"import numpy as np; print(np.random.rand(3))"}'。
- 用 Python 快速开始:import os; from zeroboot import Sandbox; sb = Sandbox(os.environ["ZEROBOOT_API_KEY"]); result = sb.run("print(1 + 1)"); print(result);也可把多行代码传给 sb.run 并 print。
- 用 TypeScript/Node.js 快速开始:import { Sandbox } from "@zeroboot/sdk"; const sb = new Sandbox(process.env.ZEROBOOT_API_KEY!); const result = await sb.run("console.log(1 + 1)"); console.log(result);支持 async 代码。
- 实现 AI Agent 代码执行循环(Python):定义 execute_agent_code(code),创建 Sandbox,在 try 中调用 sb.run(code) 并返回 success 与 output,在 except 中返回 success=false 与 error,用于执行 LLM 生成代码。
- 实现并发沙箱执行(Python):定义 async run_sandbox(code, index),创建 Sandbox,并用 await asyncio.to_thread(sb.run, code);定义 run_concurrent(snippets),对每个 snippet 建 task,用 asyncio.gather 收集;示例中并发运行 10 个 print(i ** 2)。
- 集成 TypeScript Agent 工具:定义 runInSandbox(code) 返回 ExecutionResult,在 try 中 await sb.run(code),在 catch 中返回错误;定义 tool {name: "execute_code", description: "Run code in an isolated VM sandbox", execute: async ({ code }) => runInSandbox(code)}。
- 用 TypeScript fetch 调 REST API:设置 API_BASE = "https://api.zeroboot.dev/v1",向 /exec 发 POST,headers 包含 Content-Type: application/json 和 Authorization: Bearer process.env.ZEROBOOT_API_KEY,body 为 JSON.stringify({code});若 !res.ok 则抛出 Zeroboot error + status + 错误文本,否则返回 data.output。
- 做健康检查:执行 curl https://api.zeroboot.dev/v1/health。
- 按 API Reference 调用 POST /v1/exec:请求头 Authorization: Bearer <ZEROBOOT_API_KEY> 和 Content-Type: application/json;请求体包含 code 字段;响应包含 output 和 duration_ms,例如 duration_ms 为 0.79。
- 理解性能特征:spawn latency p50 约 0.79ms,p99 约 1.74ms,每个 sandbox 内存约 265KB,fork + exec Python 约 8ms,1000 个并发 fork 约 815ms;每个 sandbox 是真实 KVM VM,内存隔离由硬件强制,CoW 使只有代码写入的页消耗额外 RAM。
- 自托管/部署:参考 docs/DEPLOYMENT.md;要求 Linux 主机支持 KVM(/dev/kvm 可访问)、Firecracker binary、Rust 2021 edition 工具链。
- 自托管检查与构建:先 ls /dev/kvm;然后 git clone https://github.com/adammiribyan/zeroboot;cd zeroboot;cargo build --release。
- 理解架构分层:snapshot layer 为每个 runtime template 启动一次 Firecracker VM,并把内存 + vCPU 状态保存到磁盘;fork layer 用 Rust mmap(MAP_PRIVATE) 映射 snapshot 文件,由内核处理每个 VM 的 CoW page faults;每个 fork 有独立 KVM VM 文件描述符、vCPU、页表;不共享内核,每个 sandbox 运行自己的 kernel instance。
- 排障 /dev/kvm not found(自托管):执行 sudo modprobe kvm;再执行 sudo modprobe kvm_intel 或 sudo modprobe kvm_amd。
- 排障 API 401 Unauthorized:确认 ZEROBOOT_API_KEY 已设置且以 zb_live_ 开头;检查 dashboard 中 key 未过期。
- 排障执行超时:默认超时由服务器端强制;把大计算拆成更小任务;避免无限循环或阻塞 I/O。
- 排障自托管高内存:每个 VM fork 约 265KB CoW 开销;页在写入时分配,内存随 sandbox 活动增长;根据可用 RAM 调整并发 fork 限制。
- 查阅资源:API Reference、Architecture Docs、Deployment Guide、Homepage、GitHub(原文链接可查)。
适用边界 · 注意事项
- 没有 Zeroboot API key/账号或无法访问 api.zeroboot.dev,且也没有满足 KVM、Firecracker、Rust 要求的 Linux 主机可自托管时。
- 宿主不是 Linux 或 /dev/kvm 不可用,又不使用托管 API 时,无法自托管。
- 只需要普通容器级隔离、启动延迟不敏感或不愿引入 Zeroboot 特定依赖/服务时。