智能体会话的存续时间可以长于其环境。self_hosted 环境使用的计算资源和文件由您的应用管理。
启动环境
您的应用可以在创建会话后启动计算资源。先使用提供商的 SDK 或 API,再使用会话的环境 ID 和环境密钥连接执行器。
请参阅 OpenAI Cookbook 中的应用管理沙盒示例。

使用一个组件管理每个会话的环境。保存会话与提供商计算资源之间的映射关系。重复或并发请求不得创建重复的环境。
通过 Webhook 启动计算资源
您也可以等到输入需要连接环境时再启动。API 会先发出带有 required_action.type: "environment_connection" 的 agent.session.action_required 事件,再等待执行器连接。您的 Webhook 处理程序负责启动或重新连接环境。
请参阅 OpenAI Cookbook 中的Webhook 管理沙盒示例。

按照Webhook 设置指南为 agent.session.action_required 和 agent.session.failed 注册处理程序。将处理程序的签名密钥和会话读取凭据与执行器的环境密钥分开保存。如果多个提供商的处理程序共用一个项目,请将事件路由到负责相应会话的处理程序。
处理程序和工作进程各有分工:
- 验证并入队。 验证 Webhook 签名。仅当
data.required_action.type为environment_connection时,才将连接请求加入队列。还需将会话失败事件加入队列。只有入队成功后,才能返回表示成功的 HTTP 响应。 - 检查当前状态。 工作进程获取会话。忽略已删除的会话和已解决的操作。对于仍需连接的自托管会话,使用
session.environment.id和session.environment.remote_url启动或重新连接其执行器。对于仍处于失败状态的会话,释放其计算资源。
会话事件流通过 agent.session.requires_action 报告同一个请求。类型为 function_call 的待处理操作需要函数结果,而非启动环境。等到轮次创建和 agent.session.in_progress 事件到来时,再启动离线执行器就太晚了。
部署处理程序后,创建自托管会话并发送输入。确保工作目录与处理程序中的配置一致,并满足其中配置的所有智能体筛选条件。如果执行器在截止时间前建立连接,原始提交将继续处理。
保持环境可用或停止环境
您可以在轮次之间保持计算资源运行以供复用,也可以在轮次结束后留出一段宽限期再停止。协调关闭操作与新任务的处理。当收到连接请求或执行开始时,取消待执行的关闭操作。停止计算资源前,再次检查状态。
不能仅凭空闲事件判断是否可以安全关闭。它可能在连接请求解除时到达,而此时等待中的输入尚未开始其轮次。如果您的应用无法协调关闭操作与新任务的处理,请保持环境运行。
断开连接后重新连接
连接事件用于报告状态。使用 agent.session.environment.connected 和 agent.session.environment.disconnected 观察连接情况。设置过程中还可能发出 agent.session.environment.pending 或 agent.session.environment.failed。这些事件不会请求计算资源。使用类型为 environment_connection 的待处理操作触发启动,并单独检查提供商的健康状况。
轮次中途断开连接可能导致工具执行失败,即使该轮次最终完成。请检查工具结果和智能体的最终回复。断开连接不会自动通过 Webhook 请求重新连接,也不会重新启动已终止的命令。后续输入可以请求重新连接。
对于提交输入时所需的连接,API 最多等待五分钟。请根据这一等待时间配置客户端和代理的超时设置。如果等待超时,提交将失败。初始输入可能异步失败,并使会话处于 failed 状态。
API 不保证在进程崩溃后恢复待处理的输入。重试前,请检查请求或会话的结果。原始请求仍在等待时,请勿重新提交。超时后才建立的连接不会重放已超时的输入。
复用环境 ID 不会在替换后的计算资源中恢复文件。请使用提供商的存储或快照保留这些文件。
清理
停止接收新输入。协调清理操作与正在进行的启动工作,避免遗留仍在运行的计算资源。
删除会话,并单独停止提供商的计算资源。删除会话既不会停止其环境,也不会发出删除 Webhook。