创建与列表
用 Go SDK、E2B SDK 或 kibo workspace create 从 Template 创建 Workspace,同时选定资源、网络访问与 Volume。本页介绍如何选择 Template、create 的参数,以及怎样在列表中重新找到 Workspace。
查看 Template
每个 Workspace给 AI Agent 用的完整 Linux 环境,运行在独立的 MicroVM 里。Agent 在里面读写文件、运行进程、启动服务,不会影响宿主机和其他 Workspace。 都从一个 Template创建 Workspace 用的系统镜像,例如最小系统、编程工具链或桌面环境。 创建。先列出可用的 Template,再查看其中一个:
kibo template list
kibo template get "$template_id"template list默认只列出可选的 Template,--selection any列出全部。template get显示 Template 的默认 revision,传--revision查看指定的 revision。- 这两条命令只读取目录。发布与批准 Template 由 Operator 完成,见 目录与 构建自己的 Template。
创建 Workspace
从 Template 创建一个 Workspace 并保存它的 ID。Go 示例使用连接 ctrl 里的 client:
commandID := kibotos.NewCommandID("example")
created, err := client.Workspaces().CreateWorkspace(ctx, connect.NewRequest(&ctrlv1.CreateWorkspaceRequest{
Metadata: &ctrlv1.CommandMetadata{CommandId: commandID},
Spec: &ctrlv1.WorkspaceCreateSpec{
Template: &ctrlv1.TemplateSelector{TemplateId: templateID},
Resources: &ctrlv1.ResourceRequest{CpuMillis: 1000, MemoryBytes: 256 << 20},
},
}))
if err != nil {
log.Fatal(err)
}
workspace, err := client.WaitWorkspace(ctx, created.Msg.GetWorkspace(), commandID)
if err != nil {
log.Fatal(err)
}
workspaceID := workspace.GetWorkspaceId()- 在 Go SDK 与原生 API 里,
Template与Resources是必填项。ctrl 受理后请求立即返回,WaitWorkspace一直等到 Workspace 可用。 - E2B 网关按部署设置决定资源,见资源。
本节其余内容介绍 kibo。每个参数在请求里都有对应的字段,见用 API。
不加其他参数时,Workspace 得到 1 个 CPU、256 MiB 内存,不能访问网络,并有一个挂载在 /data 的新 Volume。kibo 默认等到 Workspace 可用;加 --no-wait 时,ctrl 受理请求后立即返回,此时 Workspace 可能还在 CREATING。见等待结果。
用更多资源创建:
kibo workspace create --template "$template_id" --cpu 2 --memory 4G --disk 20Gcreate 的全部参数及默认值见 kibo workspace create。大小一律按二进制单位:4G 是 4 GiB,GB、MB 会被拒绝,见大小与 CPU 的写法。
Template 与资源
- 不传
--template-revision时,Workspace 使用 Template 当前的默认 revision,并把它固定到 Workspace 上。 - 实例实际得到的内存与
--memory的请求值相同。它必须是 MiB 的整数倍,且不小于 128 MiB。 - 不传
--disk时,可写层的容量由 node 的存储配置决定。--disk必须是 MiB 的整数倍,这个值同时用于 node 的磁盘容量准入。 - node 从
--disk中留出 1 MiB 给可写层写满后的下一次启动,所以 guest 里看到的可用空间比它少 1 MiB。
网络访问
新建的 Workspace 不能访问网络。要打开访问,传 --network public-internet,需要时再加目的地规则:
kibo workspace create --template "$template_id" --network public-internet --deny 0.0.0.0/0 --allow 203.0.113.0/24其他网络参数都只能配 --network public-internet 使用:
--allow、--deny添加目的地规则,见网络策略。--egress、--egress-destination让这些目的地的 TCP 经调用方的 Egress 离开,见让连接经 Egress 离开。--resolver、--resolver-path把 guest 的 DNS 查询转给调用方的 Resolver,见在策略中引用 Resolver。
Volume
每个 Workspace 默认得到一个挂载在 /data 的新 Volume。要绑定已有的 Volume、修改挂载路径或不带 Volume 创建,见创建时的 Volume。
到期时间、labels 与 annotations
--expires-in与--expiration-action设置 Workspace 何时到期、到期后停止还是删除,见到期时间。--label与--annotation附上调用方自己的键值数据,见 labels 与 annotations。
列表过滤
kibo workspace list 与 kibo volume list 默认不显示已删除的资源。可以组合多个条件缩小列表:
kibo workspace list --state AVAILABLE --label team=infra
kibo volume list --include-deleted--include-deleted同时显示已删除的资源。用 API 时,ListWorkspaces与ListVolumes只在include_deleted为真时返回DELETED的对象。--state与--guest-unresponsive只用于 Workspace。guest 什么时候算不再回应,见 guest 回应情况。- 按 label 筛选见按 label 筛选。
- 全部过滤条件见
kibo workspace list与kibo volume list。
分页
两个列表每次只取一页。页大小由服务端决定,可用 --page-size 设置,最大 100。
- 还有下一页时,摘要写明只是这一页,下面给出下一页的命令。
--all逐页读完全部结果,不能与--page-token同时使用。- 逐页读取不是同一时刻的快照,期间新建或删除的资源可能出现,也可能不出现。
-q只输出一页的 ID 时,stderr 会提示还有下一页。
脚本要拿到全部 Workspace ID 时,把 -q 与 --all 一起用:
kibo workspace list -q --all用 API
kibo workspace create对应WorkspaceService/CreateWorkspace,Template、资源、Volume 与网络策略写在请求的spec(WorkspaceCreateSpec)里,例如--cpu对应resources.cpu_millis;过期策略、标签与注解是CreateWorkspaceRequest本身的字段。请求受理后立即返回,Workspace 处于CREATING。kibo template list与kibo template get对应TemplateService的ListTemplates、GetTemplate与GetTemplateRevision。
下一步
- 选择运行环境:把 Agent 需要的软件放进 Workspace。
- 命令与终端:在新建的 Workspace 里执行命令。
- 网络概览:打开互联网访问并控制目的地。
- Volume 与导出恢复:绑定已有的 Volume、保留数据。
- labels 与 annotations:给 Workspace 打 label 并按 label 查找。