SandboxJobsRuntimeCapability 通过 platform.sandbox.jobs 暴露 SandboxJobsApi。它在隔离的沙箱运行时中运行已注册、带版本的沙箱操作(Action),并将校验后的输出作为可移植工作区文件引用返回。
插件调用者只能选择 action、actionVersion、结构化载荷、可移植文件和声明的输出。运行时配置(Runtime Profile)、镜像、命令、入口点、环境变量、提供器与引擎选项均由宿主解析并强制执行。
关于操作包(Action Bundle)打包、队列归属和运维配置,另请阅读沙箱任务。
API 方法
如果产品功能是否可见取决于运行时,请在展示或入队操作前调用
getActionHealth():
运行沙箱操作
SandboxJobRunInput 包含:
read-only-seekable。materialized 会在执行前校验完整文件并复制到 /workspace/input。
状态与进度
持久化状态为waiting、starting、running、succeeded、failed、cancelled 或 lost。快照包含选中的运行时版本、操作版本、尝试次数、提供器和绑定证据、最新结构化进度、校验后输出、时间戳和稳定错误码。
可信操作可使用以下格式输出结构化进度:
SANDBOX_JOB_PROGRESS_PREFIX 提供固定前缀。progress 取值范围为 0 到 1,stage 应使用稳定、机器可读的名称。
错误与重试策略
run() 失败时会抛出 SandboxJobRuntimeError。动态加载插件可能解析到另一个 SDK 模块实例,因此不要只依赖 instanceof,应使用 isSandboxJobRuntimeError()。
retryable,不能匹配错误文本。
导出的 SANDBOX_JOB_ERROR_CODES 列表包含:
reason:ACTION_MISSING、ACTION_INVALID、PROFILE_MISSING、VERSION_MISMATCH、RUNTIME_UNBOUND、PROVIDER_UNAVAILABLE 或 PROFILE_UNHEALTHY。
运维规则
- 重型操作应从托管队列运行,不要阻塞 HTTP 处理器。
- 同一份不可变工作重试时保持幂等键不变。
- 队列状态中只能放结构化 JSON 和可移植文件引用。
getActionHealth()用于产品可用性判断,但run()时仍要处理失败,因为运行时健康状态可能变化。- 用户需要查看状态、取消或审计时,应在插件业务状态中持久化
jobId。 - 返回的提供器、绑定、运行时和摘要字段属于执行证据,不能用于替下一次任务选择基础设施。