发布

发布指南

Registry 收两类内容:模板和提供方。两者都通过 Pull Request 进入对应仓库,合并后本站在一小时内更新,SDK 的更新检查读同一份数据。

发布模板

模板放在 awesome-templates。

  1. 在仓库根目录建一个 kebab-case 目录,目录名、template.yaml 的 name 和索引里的 path 是同一个字符串。
  2. 放入 template.yaml、Dockerfile、commands.py、e2e_test.py 和 README.md。
  3. 在 awesome-templates.yaml 对应分区加一条:name、description、repo、path、tags、author、capabilities、status。
  4. 在仓库根目录运行 python3 scripts/run_local_e2e.py,所有带 commands.py 的模板都要通过。

status 取 official、community 或 experimental。社区提交默认是 community。不要提交密钥,template.yaml 的 env 里只写变量名,值留空。

README 要说明这个模板是什么、怎么部署、怎么跑 e2e。在极速版上部署这个目录。平台 id 是 TemplateID;--alias 让创建时也能用这个名字。base 可以是镜像字符串。目录里有 commands.py 且没有 generation 时,按第 2 代发布。镜像里的包是 agent-sandbox-server。它还没上 PyPI。不要 pip install agent-sandbox。

abx template deploy ./<name> -y --alias <name>
abx create --template <name>
python3 scripts/run_local_e2e.py

目录里的提供方没有声明 templates.build,所以 abx template deploy --provider <id> 返回 E8004,不会把目录登记到 OpenSandbox、E2B、CubeSandbox 或容器版上。按提供方部署是计划:提供方模板部署。

发布提供方

提供方放在 awesome-providers。一个提供方是一个目录:abx-provider.toml 加上运行时需要的程序。不要把它放进 SDK 或 CLI 仓库。

my-cloud/
  abx-provider.toml
  provider.mjs         # 仅 kind = "node"
  README.md

按运行时选一种。装好后都在 ~/.abx/providers/<id>,CLI 和各语言 SDK 都能用,因为加载提供方的宿主是 Node.js CLI(SDK 通过本机引擎 abx provider engine serve 访问 node 或 exec 提供方)。本目录里的四个提供方都是 node。abx 0.3.0 用 curl -fsSL https://raw.githubusercontent.com/Alibaba-Agent-Sandbox/agent-sandbox/main/install.sh | sh 安装(Windows:irm https://raw.githubusercontent.com/Alibaba-Agent-Sandbox/agent-sandbox/main/install.ps1 | iex),然后 abx provider install alibaba-agent-sandbox/awesome-providers//<id> --allow-unpinned --yes。Python 写法 python -m agent_sandbox.providers install registry:<id> --yes 读本站索引;abx 没有 registry:。agent-sandbox-client 0.3.0 还没上 PyPI(pip install agent-sandbox-client 即将提供)。在那之前:pip install "agent-sandbox-server @ git+https://github.com/Alibaba-Agent-Sandbox/python-sdk@35da216a300f1e2e84254a1cf4b4a7ea98681505#subdirectory=server-sdk" "agent-sandbox-client @ git+https://github.com/Alibaba-Agent-Sandbox/python-sdk@35da216a300f1e2e84254a1cf4b4a7ea98681505#subdirectory=client-sdk"。

类型 你要写 适用
rest 只写清单 后端是 E2B 形态的 HTTP 接口
exec 清单加一个进程 接口不是 E2B 形态,任意语言,进程讲 EPP/1
node 清单加 provider.mjs 后端接近 E2B 形态,但需要改一点(代理拨号、可选令牌、不同路径)。ES 模块,在 CLI 的 Node 宿主里加载

清单要点:

  • id 匹配 ^[a-z][a-z0-9]*(-[a-z0-9]+)*$,长 2 到 40,不能用保留 id 和 abx-、alicloud- 前缀。
  • [features] supported 只列真的实现的能力。没列的能力在调用前直接返回 E8004,本站的能力矩阵也据此生成。
  • [security] network 列出会访问的域名。
  • 密钥字段叫 api_key,环境变量由 id 推导,不要读极速版的 ABX_SANDBOX_API_KEY。

然后在 index.json 加一行 { "id", "version", "url" }。完整字段和示例见 提供方文档。

审核标准

  • 能说明做过什么验证。没有真实后端可测的,在 README 里直说。
  • 清单里声明的能力都有实现,没声明的不要偷偷支持。
  • 没有硬编码密钥,没有安装时执行的代码。
  • 更新时抬高 version。同一版本内容变了,安装包的 sha256 会变,更新检查会据此报警。

提交之后

合并到 main 后,仓库会通知 Registry 重新构建。本站每小时也会自己拉一次。你可以用下面的命令确认:

curl -s https://registry.agent-sandbox.cn/providers/index.json