停止与超时

最近更新时间:2026-06-03 09:09:00

我的收藏
手动停止 Sandbox Instance、在创建时设置运行时长,以及在实例运行期间调整超时配置。

适用场景

主动停止不再使用的实例,释放运行配额。
在创建实例时显式限制可运行时长,避免任务结束后长时间占用资源。
在实例仍处于运行中时延长或缩短超时窗口。
通过实例详情区分手动停止与超时回收。

开始前准备

已安装 agr CLI。
已通过环境变量或 CLI 配置文件提供可用凭证。
已获取目标实例的 InstanceId;如果要创建新实例,还需要准备可用的 ToolIdToolName
执行以下命令确认 CLI 和凭证就绪:
agr version -o json --non-interactive
agr status -o json --non-interactive
agr doctor -o json --non-interactive
预期结果:
agr version 返回 CLI 版本和 commit 信息。
agr status 用于查看 CLI 当前读取到的配置与凭证来源;重点检查 Data.Auth.SecretId.PresentData.Auth.SecretKey.Present 是否都为 true
agr doctor 用于做凭证与连通性自检;当 SecretIdSecretKeyConnectivity 等检查项都为 ok 时,可继续执行后续实例操作。

停止实例

使用 agr CLI 停止

执行以下命令停止一个或多个实例:
agr instance delete <instance-id> [instance-id...] -o json
如果实例可能已被清理,可追加 --ignore-not-found,将“实例不存在”视为成功。
预期结果:
命令返回结构化 JSON 结果。
删除请求提交后,实例先进入 STOPPING,完成后进入 STOPPED
验证方式:
agr instance get <instance-id> -o json --non-interactive
重点检查以下字段:
Data.Status:预期从 RUNNING 变为 STOPPINGSTOPPED
Data.StopReason:手动停止时为 manual
Data.ExpiresAt:停止完成后不再继续延长。
兼容 E2B 的 HTTP 接口也可用于停止实例:
DELETE /sandboxes/{sandboxID}
该接口成功时返回 204 No Content。如需确认实例已结束,请继续调用实例详情接口检查 state
清理说明:
停止操作不可回滚。误停后需要重新创建实例。
如果只是临时释放资源并计划稍后恢复,请优先评估暂停/恢复能力。

创建实例时设置超时

使用 agr CLI 创建限时实例

执行以下命令,在创建时直接设置实例超时:
agr instance create --tool-id <tool-id> --timeout 30m -o json
--timeout 支持 duration 字符串,例如 5m30m300s;纯数字按秒处理。默认值为 5m
验证方式:
agr instance get <instance-id> -o json --non-interactive
重点检查以下字段:
Data.Status:实例启动完成后应为 RUNNING
Data.TimeoutSeconds:返回秒级超时值。
Data.ExpiresAt:返回实例预计结束时间。
创建实例时,也可通过兼容 E2B 的 HTTP 接口在请求体中传入秒级 timeout 字段;创建完成后建议通过实例详情接口复核实际生效值。

运行中调整超时

使用 agr CLI 更新超时

当实例仍处于运行中时,执行以下命令调整超时:
agr instance update <instance-id> --timeout 45m -o json
--timeout 支持 duration 字符串,例如 10m45m300s
限制说明:
只有 RUNNING 状态的实例支持原地更新超时。
Persistent=true 的实例不受 timeout 回收限制,不能通过该命令修改超时。
取值必须大于 0。
验证方式:
agr instance get <instance-id> -o json --non-interactive
重点检查以下字段:
Data.Status:更新后应保持为 RUNNING
Data.TimeoutSeconds:更新为新的秒数。
Data.ExpiresAt:随新的超时窗口刷新。

查看超时与停止原因

执行以下命令查看当前实例状态:
agr instance get <instance-id> -o json --non-interactive
重点字段如下:
字段
含义
Data.Status
当前实例状态,例如 RUNNINGSTOPPINGSTOPPED
Data.TimeoutSeconds
当前生效的超时值,单位为秒
Data.ExpiresAt
当前超时窗口对应的预计结束时间
Data.StopReason
停止原因;常见值包括 manualtimeouterrorsystem
Data.Persistent
是否为常驻实例;为 true 时不参与 timeout 自动回收
通过兼容 E2B 的 HTTP 接口查询实例详情时,对应可观察字段为 stateendAt

常见错误

场景
表现
处理建议
删除不存在的实例
agr instance delete 返回 INSTANCE_NOT_FOUND
确认 InstanceId 是否正确;如果目标可能已经不存在,可追加 --ignore-not-found
更新非 RUNNING 实例的超时
更新请求失败
先执行 agr instance get 确认实例状态;已停止实例需要重新创建。
更新超时为 0、负数或非法格式
更新请求失败
agr instance update 使用 10m300s 等合法 duration;对 E2B 兼容控制面请求使用大于 0 的秒级整数。
更新 Persistent=true 的实例超时
更新请求失败
常驻实例不依赖 timeout 回收;如需结束实例,请直接停止。