@ e2b/ convex
持久性 E2B 软件 用于Convex应用程序和AI代理的沙盒.
@e2b/convex 是一个有小V8兼容的 E2B 客户端的无表 Convex 组件。 它赋予了Convex动作沙盒生命周期,命令,被捆绑的文件操作,预览主机,Convex Agent工具,以及平版AI SDK工具而无需将全节点导向的E2B SDK运入Convex运行时间.
前1.0:在生产使用前根据您的 E2B 模板和网络政策验证软件包.
安装
npm install @e2b/convex
npx convex env set E2B_API_KEY e2b_your_key
在您的 Convex 应用程序中注册组件并绑定该秘密 :
// convex/convex.config.ts
import e2b from "@e2b/convex/convex.config.js";
import { defineApp } from "convex/server";
import { v } from "convex/values";
const app = defineApp({ env: { E2B_API_KEY: v.string() } });
app.use(e2b, { env: { E2B_API_KEY: app.env.E2B_API_KEY } });
export default app;
运行命令
在 Convex 动作中创建客户端, 并用应用程序拥有的识别沙盒 scope 财务报告和审定财务报表 key数字 :
// convex/sandbox.ts
import { E2B } from "@e2b/convex";
import { v } from "convex/values";
import { components } from "./_generated/api";
import { action } from "./_generated/server";
const sandboxes = new E2B(components.e2b, {
template: "base",
timeoutMs: 10 * 60_000,
});
export const run = action({
args: { userId: v.string(), sessionId: v.string(), command: v.string() },
handler: async (ctx, args) => {
const identity = { scope: args.userId, key: args.sessionId };
const sandbox = await sandboxes.getOrCreate(ctx, identity);
return sandboxes.runCommand(ctx, {
...identity,
sandboxId: sandbox.sandboxId,
command: args.command,
});
},
});
使用相同的范围与密钥重复使用相同的运行或暂停的沙盒。 在平行工作之前解决一次,然后通过 sandboxId 之后的行动.
一体化
- 最小 API : 生命周期、 shell 命令、文件、目录和预览主机.
- 顶层代理 :
createAgentTools(sandboxes, ...)从@e2b/convex/agent创建有可选审批规则的线性意识工具。 要求数@convex-dev/agent财务报告和审定财务报表ai。 。 。 . - AI SDK: (英语)
createAiSdkTools(sandboxes, ctx, ...)从@e2b/convex/ai在任何 Convex 动作中创建标准的 AI SDK 工具. 要求数ai。 。 。 .
核心软件包对两者都没有运行时间依赖性;只为您使用的集成安装.
开始于 正在启动指南,然后使用复制页 烹饪本。完整的本地应用程序 example 包括一个xterm.js终端和一个带有可见工具呼叫的实时代理聊天.
默认和限制
- 沙盒在超时暂停,通过命名空间的 E2B 元数据被重新发现. 暂停的沙盒上的任何操作都会恢复它,从而重新开始计费.
- 每个操作先解决沙盒(
getInfo+ 键connect,或元数据列表sandboxId大约每通电话增加一次. - 范围和关键值在输入E2B元数据之前被散列.
- 指令输出默认为每流32 KiB.
- 命令输出和单个文件读取被封为 1 MiB.
- 文件读取默认为64 KiB;写作被封为4 MiB.
- 文件工具仅限
/home/user财务报告和审定财务报表/tmp除非另有配置. getHost除非明确允许,否则不接触代理人.- 每个E2B请求都有标记
e2b-convex/<version>用于整合归属.
见 警卫, (中文(简体) ), 业务,以及 结构 在部署执行不可信指令的代理人之前.
状态
该套件使用E2B的公用API,并仅包括组件需要的Process和Filesystem协议描述符. 被钉住 e2b 软件包是一个只开发的协议源。 CI 拒绝在已发射的 Convex 运行时间中输入节点内置或全SDK 和用于协议漂移的预定实时测试表 .
麻省理工学院