Agent Sandbox Registry

awesome-templates

这是 Sourcegraph Amp 编码 CLI 的 Agent Sandbox…

无英文版

amp/README.md

amp

这是什么

这是 Sourcegraph Amp 编码 CLI 的 Agent Sandbox 模板。镜像基于 python:3.12-slim,用 Server SDK(agent_sandbox.server)在 9000 端口提供 HTTP 服务。

镜像里预装:

类别 内容
Node.js 22.x(NodeSource setup_22.x)
Amp CLI @ampcode/cli@0.0.1791964847-g13f24a,命令名 amp
系统工具 git、curl、ca-certificates、ripgrep
资源 2 CPU / 4096 MB 内存

amp 命令在沙箱里执行的 argv 是 amp --dangerously-allow-all -x <prompt>。prompt 是单独的参数,不经过 shell。

极速版创建

在阿里云极速版上,先安装模板再创建沙箱:

abx template install alibaba-agent-sandbox/awesome-templates//amp
abx create --template amp --env AMP_API_KEY=REPLACE_ME

怎么调用

命名命令用 sandbox.run("amp", prompt=...)。这是 POST /commands/amp,返回值是 CLI 的标准输出。

import asyncio
from agent_sandbox import Sandbox

async def main() -> None:
    sandbox = await Sandbox.create(
        template="amp",
        env={"AMP_API_KEY": "REPLACE_ME"},
    )
    try:
        result = await sandbox.run("amp", prompt="用 Python 写一个返回 200 的 HTTP 服务")
        print(result)
    finally:
        await sandbox.kill()

asyncio.run(main())

命令行对应:

abx run <sandbox-id> amp --arg prompt="用 Python 写一个返回 200 的 HTTP 服务"

环境变量

变量 说明
AMP_API_KEY Amp 的 API 密钥。在创建沙箱时注入。模板里的值是空字符串,密钥不会写进镜像。未设置或只有空白时,amp 命令抛出 RuntimeError,错误信息包含 AMP_API_KEY,并且不会启动 CLI。

本地 e2e

在模板目录安装依赖并启动服务:

pip install agent-sandbox-server httpx
python3 commands.py

另一个终端运行:

python3 e2e_test.py

E2E_BASE_URL 默认是 http://127.0.0.1:9000。脚本只用 httpx,会检查 GET /health、GET /commands 是否包含 amp,以及不带 prompt 的 POST /commands/amp 是否为客户端错误。

E2E_RUN_LLM=0 时,LLM 调用记为 SKIP。根目录的本地 e2e 会强制这个值,退出码 0 只说明 server 契约过了。

带密钥的验收要设置 E2E_REQUIRE_LLM=1。密钥为空、输出里没有 ABX_E2E_OK,或同时又设置了 E2E_RUN_LLM=0,记为 FAIL,退出码为 1。密钥必须同时出现在跑测试的环境里,以及正在跑 commands.py 的进程里。

AMP_API_KEY=REPLACE_ME E2E_REQUIRE_LLM=1 python3 e2e_test.py

E2B

E2B 上如果已经存在模板 id amp,创建沙箱时只用 ABX_E2B_API_KEY。Amp CLI 的密钥仍是 AMP_API_KEY,在创建时注入沙箱。E2B 没有沙箱内具名命令,sandbox.run("amp", prompt=...) 会得到 E8004。那张预置沙箱里要直接执行 CLI,用 sandbox.commands.run,不要调用 sandbox.run。sandbox.run("amp", prompt=...) 只用在极速版发布后的本模板上。