Agent Sandbox Registry

python-sdk

配置参考

docs/zh/reference/configuration.md

配置参考

说明: 本页出现的 abx 命令由 cli 仓库中的 Node.js CLI 提供(npm install -g @agent-sandbox/cli)。CLI 专属文档(CLI 设计、教程、参考)也在该仓库;本仓库记录 Python SDK(agent-sandbox)与容器侧运行时(agent-sandbox-server)。

本文档列出 Agent Sandbox 的所有配置项、环境变量、默认值和优先级规则。


配置优先级

配置按以下优先级加载(从高到低):

1. 代码参数(sandbox_api_key=、sandbox_base_url=、provider= 等)   ← 最高
2. 进程环境变量
3. ./.env                  (项目文件)
4. ~/.abx/.env             (用户文件)
5. ~/.abx/config.toml
6. 提供方 / 内置默认值                                           ← 最低

解析是先按层的。每个键只有一个环境变量。第一个设置了该变量的层决定结果。

两个 .env 文件各自是一层,所以 ./.env 按键优先于 ~/.abx/.env。项目文件里没有的键,仍然来自 ~/.abx/.env。

空白或只含空格的值不算已配置,也不会挡住下一层。

凭证解析

每项凭证在真正使用时都按上面的分层顺序解析。abx config list 会标出来源:(env)、(user)、(default) 或 (not set)。

每个键只有一个名字。产品自己的设置用 ABX_<KEY>。厂商已经公布的变量就用那个变量:阿里云 AccessKey 是 ALICLOUD_ACCESS_KEY_ID 和 ALICLOUD_ACCESS_KEY_SECRET,地域是 ALIBABA_CLOUD_REGION_ID,GitHub token 是 GITHUB_TOKEN。模板构建(ACR_*、team_id)和模板生成(ABX_LLM_*)的设置属于 abx CLI,见其配置参考;Python SDK 不读取它们。

要用的值 键 环境变量
沙箱 API Key sandbox_api_key ABX_SANDBOX_API_KEY
沙箱 API 地址 sandbox_base_url ABX_SANDBOX_BASE_URL
数据平面域名 sandbox_domain ABX_SANDBOX_DOMAIN
地域 region ALIBABA_CLOUD_REGION_ID
阿里云 AK / SK access_key_id / access_key_secret ALICLOUD_ACCESS_KEY_ID / ALICLOUD_ACCESS_KEY_SECRET
GitHub token github_token GITHUB_TOKEN
默认提供方 provider ABX_PROVIDER

下面这些调用读的是同一条链:

abx mcp install 把 ABX_SANDBOX_API_KEY 写入 Cursor 和 Claude 的配置。ABX_SANDBOX_BASE_URL 和 ALIBABA_CLOUD_REGION_ID 只有在进程环境变量里设置了才会写进同一份文件。abx mcp start 会再次读取 ~/.abx,所以用 abx config set region 保存的区域在编辑器启动 server 时仍然生效。

abx config list 把进程环境变量标成 (env),把 ./.env 和 ~/.abx 标成 (user)。表里命中的那一列就是命令真正会用的值。

提供方作用域

通用键 sandbox_api_key、sandbox_base_url、sandbox_domain 属于内置提供方 alicloud-express。提供方插件只有在其清单的 [core] inherit 列出这些键,并且你在安装时同意了,才会收到它们。没有这条规则,切换 ABX_PROVIDER 会悄悄把你的阿里云密钥发给第三方进程。LLM、GitHub 和 MCP 的键永远不会交给提供方。插件自己的凭证是提供方作用域的键(ABX_<PROVIDER>_API_KEY,或 config.toml 的 [providers.<id>])。

为提供方 P 解析时,永远不会读取其他提供方 Q 的 ABX_<Q>_* 或 [providers.Q]。


环境变量

每一行都是该键唯一的环境变量。abx config set 写入同一个名字。

沙箱连接与调优

环境变量 配置键 说明
ABX_PROVIDER provider 默认提供方 id(默认 alicloud-express)
ABX_SANDBOX_API_KEY sandbox_api_key 沙箱 API Key
ABX_SANDBOX_BASE_URL sandbox_base_url 平台 API URL
ABX_SANDBOX_DOMAIN sandbox_domain 数据平面域名
ALIBABA_CLOUD_REGION_ID region 内置提供方的区域
ABX_HTTP_TIMEOUT http_timeout HTTP 超时秒数
ABX_HTTP2 http2 是否启用 HTTP/2
ABX_MAX_RETRIES max_retries 最大重试次数
ABX_MAX_CONNECTIONS、ABX_MAX_KEEPALIVE_CONNECTIONS、ABX_KEEPALIVE_EXPIRY、ABX_WS_PING_INTERVAL、ABX_RETRY_BASE_DELAY 同名小写 连接池、保活、WebSocket 和退避调优
ABX_LOG_LEVEL log_level SDK 日志级别(默认 WARNING)
ABX_DEFAULT_TEMPLATE default_template 默认模板(MCP server)

阿里云极速版(alicloud-express)

环境变量 配置键 说明
ALICLOUD_ACCESS_KEY_ID access_key_id 阿里云 AccessKey ID
ALICLOUD_ACCESS_KEY_SECRET access_key_secret 阿里云 AccessKey Secret

GitHub、模板、MCP

环境变量 配置键 说明
GITHUB_TOKEN github_token GitHub token(模板下载用;CI 以 Secret 注入)
ABX_TEMPLATE_INDEX_URL、ABX_TEMPLATE_DIR template_index_url、template_dir 模板索引与目录(仅环境变量)
ABX_MCP_AUTH_TOKEN、ABX_MCP_ALLOWED_ORIGINS、ABX_MCP_RUNTIME_DIR mcp_* MCP server(仅环境变量)

标注"仅环境变量"的键从相同的分层读取,但不能用 abx config set 写入。

沙箱密钥的 SDK 字段是 sandbox_api_key。基础 URL 的 SDK 字段是 sandbox_base_url。数据平面域名的 SDK 字段是 sandbox_domain。

每个键一个名字

读取某个键时只看它那一个环境变量,保存时也用同一个名字。abx config set sandbox_api_key 把 ABX_SANDBOX_API_KEY 写入 ~/.abx/.env。abx config set sandbox_base_url 把 sandbox_base_url 写入 [transport]。abx config set github_token 写入 GITHUB_TOKEN。abx config set region 为内置提供方写入 region;该键的环境变量是 ALIBABA_CLOUD_REGION_ID。

Server 端环境变量

以下环境变量用于沙箱内部 Server 配置:

环境变量 默认值 说明
ABX_SERVER_TOKEN — Server 认证令牌
ABX_SERVER_BASE_DIR /home/user 所有接收路径的端点(包括 shell 的 cwd)必须留在其下的目录
ABX_SERVER_ENABLED_GROUPS — 要打开的组,逗号分隔,例如 agents,dev_tools。唯一的组环境变量,没有用来关闭组的变量
ABX_SERVER_POLICY — 内联 JSON 策略文档(键与 server: 块相同)
ABX_SERVER_POLICY_FILE — 策略 JSON 文件路径
ABX_PTY_PORT 9001 PTY 终端 WebSocket 端口
ABX_MAX_UPLOAD_SIZE 100 MiB 解码后上传大小上限

构建与部署相关的键

ACR_*、team_id 和 ABX_LLM_* 键由 abx CLI 声明,只有它会构建或生成模板。Python SDK 是运行时客户端,既不声明也不读取它们。


config.toml 配置

配置文件路径:~/.abx/config.toml

[core]
provider = "alicloud-express"   # 默认提供方(abx provider default NAME)

[transport]
sandbox_base_url = "https://api.cn-hangzhou.e2b.fc.aliyuncs.com"
sandbox_domain = "cn-hangzhou.e2b.fc.aliyuncs.com"
http_timeout = 30.0
max_retries = 3

[providers.alicloud-express]
region = "cn-hangzhou"

[providers.my-cloud]            # 插件自己的作用域键
endpoint = "https://sandbox.my-cloud.example"   # 该插件声明的键

[shortcuts]
init = "template init"          # 命令路径,不要写成 "abx template init"
ps   = "sandbox process list"

config.toml 中某个键的查找顺序:[providers.<id>].<key>,然后 [transport].<key>。文件里的键名就是上表中的配置键。

[shortcuts](顶层命令别名)只由 abx CLI 读取,SDK 会忽略。其规则(值不带 abx 前缀、写错的行在启动时被跳过)见 CLI 参考。


TransportConfig 字段

字段 类型 默认值 说明
provider str "alicloud-express" 当前提供方 id
sandbox_base_url str "https://api.cn-hangzhou.e2b.fc.aliyuncs.com" 平台 API URL
sandbox_domain str "cn-hangzhou.e2b.fc.aliyuncs.com" 数据平面域名
region str "cn-hangzhou" 区域(alicloud-express)
sandbox_api_key str \| None None 沙箱 API Key
access_key_id str \| None None 阿里云 AK
access_key_secret str \| None None 阿里云 SK
provider_options dict {} 提供方作用域的值:插件自己的键
http_timeout float 30.0 HTTP 请求超时(秒,≥1.0)
max_connections int 100 最大连接数
max_keepalive_connections int 20 最大保活连接数
keepalive_expiry float 30.0 保活连接过期时间(秒)
http2 bool True 是否启用 HTTP/2
ws_ping_interval float 30.0 WebSocket ping 间隔(秒)
max_retries int 3 最大重试次数
retry_base_delay float 1.0 重试基础延迟(秒)

构造函数和 load_config(...) 使用这些字段名。

区域自动推导

当基础 URL 没有通过参数或进程环境变量设置,但设置了区域时,内置提供方会推导:

sandbox_base_url = "https://api.{region}.e2b.fc.aliyuncs.com"
sandbox_domain   = "{region}.e2b.fc.aliyuncs.com"

来自 .env 文件或 config.toml 的值算作默认值,因此保存在那里的基础 URL 会保留,另一个值仍由区域推导。这是历史行为,保持不变。alicloud-express 之外的提供方没有区域推导,除非其清单声明了。

查看解析结果

from agent_sandbox.transport.config import explain_config

explain_config()   # {"sandbox_api_key": {"value": "****3dc1", "source": "environ", "name": "ABX_SANDBOX_API_KEY", "secret": True}, ...}

explain_config() 告诉你每个键由哪一层(override、environ、dotenv、toml、derived、default)的哪个变量决定,密钥已脱敏。name 就是该键唯一的环境变量。


SDK 参数覆盖

在代码中直接传参(最高优先级):

from agent_sandbox.api.sandbox import Sandbox

sandbox = await Sandbox.create(
    sandbox_api_key="REPLACE_ME",
    sandbox_base_url="https://api.cn-beijing.e2b.fc.aliyuncs.com",
    access_key_id="REPLACE_ME",
    access_key_secret="REPLACE_ME",
)

# 为这次调用选择另一个提供方;选项按提供方作用域
sandbox = await Sandbox.create(provider="my-cloud", provider_options={"endpoint": "https://sandbox.my-cloud.example"})

见提供方。


.env 文件

SDK 会读取这两个 .env,每个文件各自是一层,所以按键合并:

  1. 当前目录下的 .env(写了该键时优先)
  2. ~/.abx/.env(项目文件没有的键用这里的值)

.env 文件格式。每个键使用它那一个变量:

ABX_SANDBOX_API_KEY=your-api-key
ALIBABA_CLOUD_REGION_ID=cn-beijing
ABX_PROVIDER=alicloud-express

abx config set sandbox_api_key <KEY> 命令将 API Key 以 ABX_SANDBOX_API_KEY 保存到 ~/.abx/.env(文件权限 600)。github_token 存为 GITHUB_TOKEN。AccessKey 存为 ALICLOUD_ACCESS_KEY_ID 和 ALICLOUD_ACCESS_KEY_SECRET。


配置文件位置汇总

文件 路径 说明
config.toml ~/.abx/config.toml SDK 扩展配置([core]、[transport]、[providers.<id>]、[shortcuts])
.env ~/.abx/.env 认证凭证(auth login / abx config set 写入)
.env(本地) ./.env 项目级环境变量
会话存储 ~/.abx/sessions/*.json 本地会话数据
模板缓存 ~/.abx/templates/ 已安装的模板
提供方插件 ~/.abx/providers/<id>/ 已安装的提供方插件(代码、abx-provider.toml、.abx-install.json 回执;data/ 是插件自己的状态目录)

相关:abx CLI

从命令行读写这些配置属于 CLI 功能:abx config list|get|set|init、abx config get|set 接受的键,以及显示变量 ABX_ACTIVITY_LINES。它们记录在 CLI 仓库:CLI 配置参考;面向 provider 的键见其 Provider 与凭证 CLI 规格。