应用托管
前置条件
- OpenAI Agent Environment —— 在 Environments 标签页创建一个,并将其 API key 保存为
OPENAI_ENVIRONMENT_KEY。 - PPIO Sandbox —— 安装 SDK 或 CLI,然后在环境中设置
PPIO_API_KEY。
创建 Agent
前往 Agents 页面创建一个新 Agent。你的应用将通过 Agents API 调用这个 Agent。 给 Agent 命名并填写描述,然后在 Model 下选择一个模型。模型和推理设置可以按需选择。
启动会话
在 Sessions 标签页启动一个新会话。执行模式选择 Self-hosted —— 这告诉 OpenAI 连接到你自行托管、管理的环境,也就是 PPIO Sandbox。 选择你刚创建的 Agent,并设置工作目录(默认/workspace)。该目录必须在你的 Sandbox 内存在。

连接环境
会话创建后,打开它并点击 Connect environment。对话框会引导你把自托管环境连接到会话,开头就是稍后要运行的代码块。 保存对话框中的 Connect an environment 命令 —— 稍后你会在“运行 Executor”一节里于 Sandbox 内运行它。它形如:--remote 与 --environment-id 的值是该会话特有的,请从对话框复制,而不要照抄本页。

启动 Sandbox
当前仅支持 v2 区域,详见区域说明。
openai-agents-api-executor 模板启动一个 Sandbox。该模板提供了会话所要连接的自托管环境。
--long-running 解除该上限,让 Sandbox 可以按你设置的 --timeout 存活 —— 这里是 720 小时(30 天),这样会话可以一直连接到同一环境,而无需重建。
Sandbox 的文件系统与沙箱绑定,会随沙箱一起销毁。如果你希望代码与数据在沙箱之外留存、并可被其他 Agent 读取,请用 Git 管理代码,或挂载 Volume 将数据保存在沙箱之外并在多个沙箱间共享。
运行 Executor
在 Sandbox 内启动 Codex executor,指向你的会话。这就是你在“连接环境”一节里保存的 Connect an environment 命令:--remote 与 --environment-id 是你创建的会话特有的 —— 从它的 Connect environment 对话框复制这两个值。CODEX_API_KEY 是前置条件中创建的 OpenAI Agent Environment 的 API key。
你可以在 PPIO Sandbox 内运行该命令,例如通过 CLI 后台执行:
确认连接
会话现已接通。在会话页面向 Agent 发送一条消息,让它报告自己的运行时环境,例如:
Webhook 托管
PPIO Sandbox 遵循 OpenAI 的最佳实践,提供了一个长时间运行的控制器openai-agents-api-executor,为你管理会话与沙箱之间的关系。
与“应用托管”相比,这里无需手动创建沙箱,也没有 codex exec-server 注册步骤 —— 会话在运行时自动连接到 PPIO 托管的环境。
前置条件
克隆 executor 仓库
克隆 executor 仓库,其中包含你后续要部署的 webhook 控制器与客户端:环境变量
从仓库的.env.example 创建一个 .env 文件,然后填写下列变量:
- PPIO Sandbox —— 安装 SDK 或 CLI,然后在环境中设置
PPIO_API_KEY。 - OpenAI 应用密钥 —— 在 API keys 页面创建一个,然后将其设置为
OPENAI_API_KEY。该密钥需要api.agents.read、api.agents.write与api.responses.write三个作用域;它保留在你的应用中,绝不进入沙箱。 - OpenAI Agent Environment —— 在 Environments 标签页创建一个,其余权限全部设为
None,并将其 API key 保存为OPENAI_EXECUTOR_API_KEY。这是唯一会进入沙箱的密钥。 - Agent ID —— 把
OPENAI_AGENT_ID设置为“创建 Agent”一节里--create-agent打印的 ID。控制器只服务于该 Agent,并忽略属于其他 Agent 的会话。 - Webhook 签名密钥 —— 设置
OPENAI_WEBHOOK_SECRET,该值在“注册 Webhook”一节中获得。首次部署先留空,之后填入并重新部署。
创建 Agent
创建控制器将要服务的 Agent:.env 的 OPENAI_AGENT_ID。传入 --instructions 与 --model 可给 Agent 指定角色;--update-agent <id> 则原位编辑它们,从而保留 Agent ID,无需重新部署。
获取 Webhook URL
部署控制器,它接收 OpenAI webhook,并为每个会话启动或恢复一个 worker 沙箱:.controller.json。重新运行 webhook:deploy 会重新连接到同一控制器,并用新的环境变量重启它。若该沙箱已不存在,则会创建一个新的,URL 随之改变,因此需更新在 OpenAI 平台注册的 webhook 以匹配。
注册 Webhook
在 OpenAI 平台打开 Project settings → Webhooks,添加一个指向上述 URL 的 webhook。订阅以下两个事件:agent.session.action_requiredagent.session.failed
OPENAI_API_KEY 的项目中注册 —— 注册到同一组织下其他项目的 webhook 不会被投递。

重新部署控制器
将签名密钥以OPENAI_WEBHOOK_SECRET 填入 .env,然后重新部署,让控制器读取它:
发送输入
通过客户端向 Agent 发送消息,客户端与运行在 worker 沙箱中的 Agent 通信:
--session-id 传回即可在同一工作区继续: