请参阅 OpenAI Cookbook 中的应用管理和 Webhook 管理示例。
有关执行器设置和连接要求,请参阅自行托管的沙盒。
选择资源配置模式:
- 应用管理: 按照本指南从您的应用中启动和停止沙盒。
- Webhook 管理: 部署一个处理程序,根据 OpenAI Webhook 启动或重新连接沙盒。
请参阅沙盒生命周期,了解这两种模式的对比。
Webhook 管理
使用控制器验证 OpenAI Webhook 投递,并将资源配置工作加入队列。将控制器与运行各会话执行器的工作进程沙盒分开。按照部署并连接处理程序中的说明注册端点和签名密钥。
通过启动或重新连接工作进程来处理 environment_connection 请求,并在会话失败时释放工作进程。明确配置工作进程和控制器的超时时间。若要在空闲时停止计算资源,需要制定与传入工作相协调的策略;请参阅生命周期行为。
应用管理
开始之前
您需要一个 OpenAI 项目 API 密钥、一个 Daytona API 密钥以及 Codex CLI 软件包。
设置 DAYTONA_API_KEY,并使用 OPENAI_API_KEY 发起应用请求。将 OPENAI_EXECUTOR_API_KEY 设置为环境密钥,并仅将该密钥作为 CODEX_API_KEY 传入沙盒。
1. 设置 Daytona 环境
创建一个自托管会话并保存其环境 ID。使用 Daytona SDK 或 API 创建一个使用已配置工作目录的隔离沙盒。在沙盒中安装 Codex CLI,然后使用该环境 ID 和环境密钥启动其执行器。
执行器与 OpenAI 的连接是出站长连接,Daytona 的空闲状态跟踪机制无法感知该连接。设置 auto_stop_interval=0,避免沙盒在智能体工作期间被停止,并配置最长存活时间,避免运行中断后计算资源仍无限期运行。
如果经常使用,请将 Codex 和 ripgrep 放入 Daytona 快照中,以便沙盒更快地建立连接。
2. 运行会话
在 Daytona 执行器连接后,使用运行和继续会话中的 HTTP 示例发送输入并以流式方式接收结果。完成后,删除会话,并单独停止提供商的沙盒。
提交输入前,请先启动沙盒。该轮交互会等待环境连接,会话则通过事件流中的 agent.session.environment.connected 报告连接情况。
使用 agent.session.turn.completed 判断一轮交互是否成功。失败或取消的交互之后也可能出现 agent.session.idle,因此不要将会话空闲视为该轮交互成功的证明。在事件发生后立即获取会话信息,可能会短暂返回先前的状态。