发布指南
Registry 收两类内容:模板和提供方。两者都通过 Pull Request 进入对应仓库,合并后本站在一小时内更新,SDK 的更新检查读同一份数据。
发布模板
模板放在 awesome-templates。
- 在仓库根目录建一个 kebab-case 目录,目录名、
template.yaml的name和索引里的path是同一个字符串。 - 放入
template.yaml、Dockerfile、commands.py、e2e_test.py和README.md。 - 在
awesome-templates.yaml对应分区加一条:name、description、repo、path、tags、author、capabilities、status。 - 在仓库根目录运行
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