Kibotos

创建与列表

用 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 20G

create 的全部参数及默认值见 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 使用:

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。

下一步

本页内容