跳转到主要内容
本更新日志重点介绍会影响 rollout 安装、开发、evaluation 和 training 的 SDK 与 CLI 变更。它比规范的 SDK changelog 更侧重实际任务;后者仍是完整的仓库发布记录。
Release candidate 会作为增量发布记录保留在时间线中。每个稳定版本都会提供相对上一个稳定版本的完整摘要,因此升级时无需先阅读每一条 release-candidate 记录。
0.3.10
0.3.10 是稳定版本,涵盖自 0.3.9 以来的变更。

破坏性变更

  • eval upload 和 eval run --upload 需要平台支持 archive import。没有逐文件上传的回退方式,因此请先升级平台,再升级 CLI。
  • 直接调用 OsmosisClient.start_eval_run_import() 的集成必须用 archive= 替换 files=。上传 files.jsonl 和 run.zip,然后通过 start_eval_run_import_extraction() 启动 extraction,并用 get_eval_run_import_extraction() 轮询,直到其达到 ready 后再完成导入。参见迁移指南。
  • Eval-import 结果要求 upload_mode,在 files 中列出 archive 上传 slot,并允许 slot 的 sha256 为 None。请更新 model 构造和结果处理代码。

变更

  • 本地 eval 上传 会逐个 part 流式上传 ZIP64 archive,不会将其写入磁盘。这取代了逐文件请求,重试时会跳过平台已有的上传 slot。

修复

  • Strands rollout 会在后续请求、实时预览和 ATIF trajectory 中保留先前的 assistant reasoning,不再丢弃 reasoning_content。

升级

确认平台支持 archive import 后,在 CLI 和每个 rollout 环境中安装带所需 extras 的 osmosis-ai>=0.3.10,<0.4。如果您直接调用 eval-import API,请按照 0.3.10 迁移步骤 操作。SDK changelog · GitHub release · 完整 diff
0.3.9
0.3.9 是稳定版本,涵盖自 0.3.8 以来的变更。

破坏性变更

  • Source digest 格式改变后,使用 0.3.8 或更早版本创建的命名本地 eval run 会拒绝恢复和 --retry-failed,即使 rollout 文件没有变化。请使用原 SDK 完成被中断的 run,选择新名称,或通过 --fresh 归档并重新开始。旧 manifest 和结果会保留,已完成的 run 仍然可以上传。参见迁移指南。

新增

  • agent_started_at 用于区分准备阶段失败与 agent 已启动的 attempt。使用该字段作判断前,请同时升级调用方和 rollout server。
  • 内置 OpenSandbox 环境支持通过正整数 OPENSANDBOX_REQUEST_TIMEOUT_SEC 为客户端请求设置默认超时秒数;显式超时设置优先。
  • 本地 eval 上传 包含 dataset_rows.jsonl,支持在 Evaluation Samples 中按 prompt 和 ground truth 搜索,以及按 ground truth 排序。已完成的旧 run 仍可在没有该文件的情况下上传。
  • eval download 支持带进度显示的分页 manifest,以及仅下载逐 sample 摘要的 --type summary。Dataset-row 上传和显式 summary 下载需要相应的平台支持。

变更

  • strands、openai-agents、harbor、rubric 和 eval extras 要求 LiteLLM >=1.103.1,<2.0.0(排除 1.104.0rc1)和 filelock >=4.2.1,以获取安全修复。
  • strands extra 要求 Strands Agents >=1.48.0,<2.0.0。server、strands、harbor 和 eval extras 要求 OpenTelemetry API >=1.45.1,<2.0.0。full extra 包含所有更新后的要求。

修复

  • CLI 输出、debug trace、平台错误、provider 诊断和本地 eval 日志中的已知凭据脱敏更完整,包括转义和多行形式。脱敏仅涵盖已知 secret 值;共享前仍需检查数据集、trajectory 和 artifact。
  • 格式异常的 provider 响应会经过脱敏错误处理。HTTP 426 响应中的 status 不是字符串时会显示标准升级提示。Rubric 数据集加载会跳过非对象消息,并在没有可用 assistant 响应时报告带行号的错误。

升级

在 CLI 和每个 rollout 环境中使用所需 extras 安装 osmosis-ai>=0.3.9,<0.4。更新冲突的依赖版本约束,重新生成 lockfile,并重新构建受影响的运行时镜像。Harbor bundle cache 会重建一次。重新开始旧本地 eval run 前,请按 0.3.9 迁移步骤 操作。SDK changelog · 完整 diff
0.3.8
0.3.8 是稳定版本,覆盖自 0.3.7 以来的变更。本版本改进了 Harbor 启动和 CLI 输出,修复了本地 evaluation 行为,并提高了依赖的安全版本下限。

破坏性变更

  • 移除了 RolloutInfo.is_active、rollout list 的 Active 列,以及 JSON 中的 is_active 字段。请移除对这个始终为 true 的标志的读取,以及 RolloutInfo(is_active=...) 构造参数。JSON 现在包含 description 和 last_synced_at,分别提供描述和同步元数据。参见迁移指南。

新增功能

  • Harbor 预热支持 auto、full、healthcheck 和 off 模式,省略 task ID 时会自动发现数据集任务,并报告进度。将 OPENSANDBOX_MAX_SANDBOXES 设置为正整数后,还会限制并发。个别任务失败时,服务器仍可启动,但这些任务不可用;系统性故障会阻止启动。参见 Harbor backend。
  • Train、eval 和 benchmark 提交确认会先显示目标工作区或其关联仓库。--json 确认详情也包含同样的目标信息。参见工作区范围。
  • 基础模型的 model info 显示输入、缓存输入和输出价格,低于 $0.10 的价格最多保留四位小数。JSON 始终包含三个价格字段。未提供的价格在终端显示为 –,在 JSON 中为 null。

变更

  • harbor extra 支持 Harbor >=0.20.0,<0.25。原生 OpenCode 会复用预装在 /opt/osmosis-agent/bin 下的兼容运行时,无需每次 trial 都重新安装。
  • strands、openai-agents、harbor、rubric 和 eval extra 要求 aiohttp>=3.14.4 和 multidict>=6.9.1。Strands 和 OpenAI Agents 集成还要求 MCP >=1.30.0,排除 2.0.* 和 2.1.*。
  • 基础安装要求 certifi>=2026.10.19。harbor 和 eval extra 要求 uv>=0.13.4,<0.14。这两项更新从各自独立的 CA 信任库中移除了受影响的 emSign 根证书。

修复

  • train info --output 会保留已有文件,除非您传入 --overwrite。指标导出采用原子写入;保存失败时会报告 save_warning,命令本身仍然成功。
  • 本地 eval 在 rollout 未返回 sample 时不再等待不存在的 trajectory,实时通过率也会排除 skipped sample。第二次按 Ctrl-C 会跳过长时间的关闭等待,给 rollout server 五秒退出时间后再强制停止,同时仍会停止隧道和监听器。此时 sandbox 清理可能尚未完成。
  • 新训练 scaffold 不再包含不受支持的 eval_interval 示例,并引导您使用 osmosis model list --type base 查看支持的模型。

升级

在 CLI 和每个 rollout 环境中使用所需 extra 安装 osmosis-ai>=0.3.8,<0.4。请更新冲突的依赖版本约束,重新生成 lockfile,并重新构建受影响的运行时镜像。仅升级 CLI 不会更新 rollout 或 sandbox 内的软件包。参见 0.3.8 迁移步骤。SDK changelog · 完整 diff
0.3.7
0.3.7 是稳定版本,本节汇总自 0.3.6 以来影响 SDK 和 CLI 用户的变更,包括 Harbor 的 OpenSandbox 支持、预构建镜像 task、更可靠的结果轮询,以及 fsspec 安全升级。

新增功能

  • harbor extra 现在包含 OpenSandbox 支持。HarborBackend 会为内置 OpenSandbox 环境应用 protocol 和 managed proxy 默认值,您显式传入的环境 kwargs 仍然优先。参见 Harbor backend。

变更

  • strands、openai-agents、harbor、rubric 和 eval extras(包括 full)现在要求 fsspec>=2026.6.0,以修复 fsspec ReferenceFileSystem 中的代码执行问题。请更新冲突的应用版本固定,重新生成 lockfile,并重新构建受影响的运行时镜像。

修复

  • 没有 Dockerfile 的 Harbor task 现在会跳过 SDK 预安装补丁,而不是失败。使用预构建镜像的 task 会使用默认 bundle 设置运行。
  • RolloutClient 会在轮询 lease 内对返回 HTTP 502、503 或 504 的结果读取最多重试六次。
  • 新的 rollout scaffold 和 Harbor source gateway 会让连接保持活跃,时间超过 platform 负载均衡器的空闲超时。

升级

在 CLI 与 rollout 环境中使用所需 extras 安装 osmosis-ai>=0.3.7,<0.4,并更新已有 rollout lockfile。如果固定了 fsspec 版本,请将其提高到 >=2026.6.0,并重新构建包含它的运行时镜像。已有 server 入口需要在 uvicorn.run(...) 中设置 timeout_keep_alive=2160;升级软件包不会重写已有 scaffold。SDK changelog · 完整 diff
0.3.6
0.3.6 是稳定版本,覆盖自 0.3.5 以来的完整变更。它移除了 drain API,在 shutdown 时清理 execution backend 资源,并新增 Harbor 0.23 支持。

破坏性变更

  • 移除了 POST /drain、RolloutClient.drain() 以及 drain 请求与响应 model。请使用 RolloutClient.health() 和 wait_idle(process_id=...) 观察完成情况,并通过 SIGTERM 关闭 rollout server。wait_idle() 不会阻止新的 admission,也不会确认外部上传,因此请保留已提交的 rollout ID 以进行 evidence 验证。

新增功能

  • Rollout server 在 shutdown 时会调用 ExecutionBackend.shutdown() 清理 backend 资源,包括 Harbor trial 和 artifact。请将 host 的 termination grace period 设置为足以覆盖 server 的有界 shutdown 阶段和 Harbor 的额外清理等待时间。
  • Host 可以为支持的本地 source、原生 Harbor agent 和 bundled workflow 启用有界的实时 trajectory 预览。预览不会改变最终结果或评分。Bundled workflow 需要 sandbox 内安装支持预览的 SDK。

变更

  • SDK 支持 Harbor >=0.20.0,<0.24,并保留已发布的 harbor-v1 image 标识和 Mini-SWE endpoint。升级到 Harbor 0.23 前,请检查其更严格的输入校验、有限 JSON reward、Mini-SWE 托管的 Python 3.12 环境,以及 Terminus ATIF 1.8 的使用方。参见 Harbor backend。
  • 包含相关依赖的 extras 现在要求 LiteLLM >=1.94.3,<2.0.0(排除 1.95.0.*、1.96.0.* 和 1.96.1.*)、urllib3 >=2.8.0 和 PyJWT >=2.15.1 以获得安全修复。请更新冲突的应用版本固定并重新生成 lockfile。

修复

  • 已有的 Harbor 子类保留原有的 build_trial_config、build_agent_config 和 harness_agent_config 签名,不再因意外的 preview_path 关键字参数而在启动时失败。
  • Execution task 意外崩溃时会产生终止状态的 internal_error 失败,客户端不再一直轮询到 lease 过期。
  • 原生 evidence 脱敏在处理长标识符时保持线性耗时,不再卡住 health check 和结果轮询。

升级

在 CLI 与 rollout 环境中使用所需 extras 安装 osmosis-ai>=0.3.6,<0.4,并更新已有 rollout lockfile。升级 rollout 调用方前,请移除所有 drain() 调用。SDK changelog · 完整 diff
0.3.5
0.3.5 是稳定版本,本节汇总自 0.3.4 以来影响 SDK 和 CLI 用户的变更,包括 rollout server 生命周期控制、Harbor source image 与 evidence 保留、可复用的 CLI 组合,以及推理参数透传。

破坏性变更

  • 公开 CLI 中移除了 osmosis dev server 和 osmosis images 命令组。OsmosisClient 上相关的 dev-server 和 image-build 方法、模型与枚举也一并移除。
  • Harbor rollout ID 不能再包含冒号或控制字符。请使用可移植的 ID,确保保留的 evidence 路径在所有文件系统上可用。

新增功能

  • Rollout server 新增了可选的 bearer 认证,RolloutClient 新增 health()、wait_idle() 和 drain(),用于进程身份检查和生命周期控制。drain() API 已在 0.3.6 中移除;升级时请遵循该版本条目中的关闭指引。
  • Harbor source gateway 使用不可变镜像和经过校验的 HarborGatewayConfig 设置运行固定版本的 GitHub task。SourceImageManifest 和 SourceImageBuildResult 会校验镜像绑定与 task 选择。
  • Harbor 会保留经过清理的原生结果和日志,并附带校验和清单。原生日志导出会排除 OpenCode 数据库和快照。
  • osmosis_ai.cli.main.create_app() 和 run_cli() 允许您基于公开的命令树、根选项和输出处理构建下游 CLI,并添加自己的命令。

变更

  • JSON 错误信封会根据实际调用的命令树解析 command。未知子命令(例如 dataset lst)会被保留,--workspace 的值不再被报告为命令。

修复

  • 本地 eval 以及 OpenAI Agents 和 Strands 集成会保留自定义推理参数,包括 OpenRouter 的 reasoning 和 provider 字段。Bridge 控制参数的覆盖会被拒绝。

升级

在 CLI 与 rollout 环境中使用所需 extras 安装 osmosis-ai>=0.3.5,<0.4,并更新已有 rollout lockfile。请替换包含冒号或控制字符的 Harbor rollout ID。Cloud eval 的自定义推理参数透传还需要 controller 集成;仅升级 SDK 并不会使托管环境获得此支持。SDK changelog · 完整 diff
0.3.4
0.3.4 是稳定版本,本节汇总自 0.3.3 以来影响 SDK 和 CLI 用户的变更,包括 evaluation 重试、base model 详情、Harbor 原生 OpenCode,以及 rollout 可靠性改进。

新增功能

  • osmosis eval retry <name|id> 重试 hosted evaluation 中失败和跳过的 sample,并保留已评分的结果。本地重试后如需替换已上传的结果,请运行 osmosis eval upload <run-name> --replace 或 osmosis eval run <config_path> --name <run-name> --retry-failed --upload。
  • osmosis model info 和 OsmosisClient.get_base_model() 接受 base model 名称或 Hugging Face 路径,并在可用时报告参数量、context window 和推理定价。
  • HarborBackend(agent="opencode") 通过 rollout chat-completions endpoint 运行原生 OpenCode,并禁用 compaction 和 pruning。原生 agent 选项(包括版本固定)也会在 prewarm 期间生效。参见 Harbor backend。

变更

  • SDK 现在要求 anyio>=4.14.2 以获得安全修复。升级前请更新 CLI 与 rollout 环境中较旧的 AnyIO 版本固定。

修复

  • Harbor artifact 归档不再阻塞 event loop,也不会在存储较慢时拖慢结果轮询。Rollout 仍会等待归档完成后再返回结果。
  • RolloutClient 会在最后确认的轮询 lease 截止时间内,对短暂的结果轮询断连和读取超时最多重试两次。请移除结果轮询外层的自定义重试逻辑,避免嵌套重试。
  • 可识别的 sandbox provider 故障现在报告 HTTP_ERROR。Task 级 API 错误和没有结构化状态的通用 Harbor API 错误仍报告 AGENT_ERROR。
  • CLI 失败时会显示可操作的 platform 与登录说明,并使用一致的 HTTP 错误分类。跳过 rollout preflight 的警告会包含适用于 CLI 环境的安装指引。

升级

在 CLI 与 rollout 环境中使用所需 extras 安装 osmosis-ai>=0.3.4,<0.4,并更新已有 rollout lockfile。如果固定了 AnyIO 版本,请将其提高到 >=4.14.2。SDK changelog · 完整 diff
0.3.3
0.3.3 是稳定版本,覆盖自 0.3.2 以来的完整变更。它用基于 lease 的 long polling 替代 rollout 完成 callback,并改进本地 evaluation 和 headless 认证。

破坏性变更

  • Rollout 调用方与 server 必须一起升级。使用 RolloutClient 替换 HttpRolloutDriver 和 callback model;每个请求都需要唯一的 rollout_id,chat endpoint 需要认证时还需显式提供 llm_api_key。
  • 自定义 backend 的 execute(request) 返回 ExecutionOutcome,并通过 await RolloutContext.set_status() 发布进度。本地 LLM bridge 的 import 从 osmosis_ai.rollout.controller 迁移到 osmosis_ai.eval.local。
  • 本地 evaluation 的协议指纹现在是 0.4。使用旧协议记录的 run 需要更换 run name,或使用之前版本的 SDK 恢复。
  • 移除 managed SkyPilot placement。请使用 EnvironmentType.DAYTONA 和 Daytona credentials;HARBOR_SKYPILOT_CONTEXT 不再被读取。省略 environment_config 时仍选择 Docker。

新增功能

  • RolloutClient 负责 lease 续期、HTTP 429 admission 重试、取消,以及可选的 grade=False。await run_rollout_async() 返回可 await 的 RolloutHandle,提供实时状态与 milestone 等待方法。
  • osmosis eval upload 和 osmosis eval run --upload 会上传 logs.txt,显示在 platform 的 Logs 标签页中。本地日志记录和上传会脱敏当前进程环境中已知的、长度至少八个字符的 provider 与 platform 凭证;脱敏无法识别所有可能的 secret,分享前请检查日志。

变更

  • delete=True 的内置 Daytona 环境默认在 Daytona 观测到 60 分钟无活动后停止,并立即删除。对于较长时间无 provider 可见活动的阶段,请增大 auto_stop_interval_mins,或设为 0 禁用自动停止。参见 Daytona 生命周期默认值。
  • 支持的依赖范围扩展为 Harbor >=0.20.0,<0.23 和 OpenAI Agents >=0.18.1,<0.21。升级 Harbor 时,请从 SDK workflow task 目录移除顶层 trajectory.json 输入,并在运行受限网络 trial 前检查 Docker host 的 nftables 支持。生成的 rollout trajectory artifact 仍受支持。

修复

  • 轮询会保留已完成的 reward 和失败详情,限定 admission 与取消清理时长,并让没有记录终态结果的本地 evaluation 工作保持 pending 以便恢复。
  • System keyring 不可用时,login 回退到仅文件所有者可读写的凭证文件。OSMOSIS_TOKEN_STORE=keyring 强制要求 keyring;file 显式选择文件存储。参见凭证存储。
  • osmosis train info 可在 training run 仍运行时列出 checkpoints。

升级

在 CLI 与 rollout 环境中使用所需 extras 安装 osmosis-ai>=0.3.3,<0.4,并更新已有 rollout lockfile。自定义 client 与 backend 的升级步骤参见迁移指南。SDK changelog · 完整 diff
0.3.3rc3
0.3.3rc3 新增 Daytona idle 清理默认值、移除 managed SkyPilot placement,并显示运行中 training run 的 checkpoints。上方稳定版 0.3.3 条目包含完整升级指导。Release notes · 完整 diff
0.3.3rc2
0.3.3rc2 为 rollout 调用方提供了更丰富的进度观测 handle,让轮询在状态变更时立即返回,并在脱敏凭证后把本地 evaluation 日志上传到 platform。

变更内容

  • RolloutClient.run_rollout_async() 现在返回可 await 的 RolloutHandle,而不是 asyncio.Task。该 handle 提供 status、latest_result、done()、cancel(),以及 milestone 等待方法 wait_for_running()、wait_for_grading() 和 wait_for_completion()。当阶段已经过去或 rollout 已终止时,milestone 等待也会结束。
  • 结果 long polling 会在状态变更时返回,包括来自 Local 与 Harbor backend 的 grading milestone,无需等满整个轮询超时。
  • 自定义 backend 通过 await 活跃的 RolloutContext.set_status() 方法发布中间进度。结果轮询不再从 ExecutionBackend.rollout_status() 读取进度。
  • osmosis eval upload 和 osmosis eval run --upload 会包含合并后的 logs.txt,因此本地 evaluation 日志会显示在 platform 的 run Logs 标签页中。
  • 本地 evaluation 会从日志中脱敏 process environment 中已知的、长度至少八个字符的 provider 与 platform 凭证,并在上传哈希计算前再次执行脱敏。

谁需要采取行动

  • 更新将 run_rollout_async() 返回值当作 asyncio.Task 使用的调用方。请继续 await 该 handle 以获取终态结果,并使用其 done()、cancel() 和 milestone 方法替代 Task 专有 API。
  • 更新通过 ExecutionBackend.rollout_status() 报告中间进度的自定义 backend,改为 await RolloutContext.set_status()。
SDK changelog · 完整 diff
0.3.3rc1
0.3.3rc1 在稳定版 0.3.3 发布之前,用基于 lease 的 long polling 取代了基于 callback 的 rollout 完成机制。调用方现在凭借 server 签发的 lease 向 rollout server 轮询结果,而不再接收 callback。调用方与 rollout server 必须一起升级。

变更内容

  • Rollout 完成机制现在使用基于 lease 的 long polling,而不是 callback。新的 RolloutClient 会提交 rollout、自动续期由 server 签发的 polling lease、在 HTTP 429 时重试 admission、轮询终态结果,并支持显式取消。请求可以通过 grade=False 跳过 grading。
  • 移除 HttpRolloutDriver 和 callback model。每个请求需要提供唯一的 rollout_id;当 chat endpoint 需要认证时,还需显式提供 llm_api_key。
  • 自定义 backend 的 execute(request) 现在返回 ExecutionOutcome,而不是调用 result callback。本地 LLM bridge 的 import 从已移除的 osmosis_ai.rollout.controller 包迁移到 osmosis_ai.eval.local。
  • 支持的 Harbor 版本扩展为 >=0.20.0,<0.23,OpenAI Agents 扩展为 >=0.18.1,<0.21。
  • 轮询到的结果在取消和序列化错误时仍会保留已完成的 reward 与失败详情;lease 过期或 server 关闭时,workflow 和 sandbox 可以在有限时间内完成清理。
  • Admission deadline 现在覆盖 HTTP 请求和重试等待。丢失的 admission response 会把未观测到的工作交给 lease 过期处理,而不是冒险取消另一个使用相同 ID 的 rollout。
  • 本地 evaluation 会限定结果轮询时长、等待取消清理完成,并让没有记录终态结果的工作保持 pending 以便 resume,包括轮询遇到 403 和 404 错误的情况。

谁需要采取行动

  • 调用方与 rollout server 必须一起升级。基于 lease 的 long-poll 协议无法与 0.3.2 的 callback 协议互通,请用 RolloutClient 替换 HttpRolloutDriver 和 callback model。
  • 本地 evaluation 的协议指纹现在是 0.4。使用旧协议记录的 run 无法在本版本下 resume;请使用新的 run name,或用之前版本的 SDK 完成该 run。
  • 升级 Harbor 时,请从 SDK workflow task 中移除顶层的 trajectory.json 输入,并在运行受限网络 trial 前确认 Docker host 能通过其 nftables 探测。
SDK changelog · 完整 diff
0.3.2
0.3.2 是稳定版本,覆盖自 0.3.1 以来的完整变更。它让本地 evaluation 可以使用云端 sandbox,让 workspace-scoped command 无需本地 repository 即可运行,并移除了若干 public API。

破坏性变更

  • 移除 public 的 MessageResult、GraderInitRequest、GraderInitResponse、RolloutDriver 和 resolve_workspace_directory_from_cwd() API。请改用 OperationResult、HttpRolloutDriver 和 resolve_workspace_directory();两个未被使用的 grader-init 类型没有替代项。
  • SDK 不再声明 requests 为基础 dependency,也不再在 rubric extra 中声明 tqdm。如果您的代码直接 import 这些包,请自行声明。

新增功能

  • osmosis eval run 可通过托管的 cloudflared tunnel 访问 Daytona、SkyPilot 等云端 sandbox;当解析出的 sandbox 无法访问 host loopback 时会自动启动该 tunnel,也可以使用 --advertise-url 指向您自行运行的 tunnel。
  • 根级 --workspace <name> 可按名称选择 platform workspace。此时 benchmark、dataset、model、secret 与 run inspection 命令无需本地 repository 即可运行;当 config 所在的 Git repository 与所选 workspace 匹配时,eval submit 和 train submit 也接受绝对 config 路径。
  • osmosis eval upload <run-name> 会在 .osmosis/evals/ 下解析已完成的 run;显式 run directory 仍然可用。
  • 新增 eval 安装 extra 的文档,并支持 Python 3.14。

变更

  • 本地 osmosis eval run --dataset-file ... 在未请求 --upload 时不再加载 platform credentials。
  • 新脚手架生成的 rollout 依赖稳定的 osmosis-ai[server]>=0.3.0,<0.4 版本线。
  • 本地 evaluation 的 output、retry、resume 与 upload 路径会相对命令调用目录显示。

修复

  • 本地 evaluation 会在打开 tunnel 前校验 model 和 rollout server,保持较慢的 non-streaming tunnel response 存活,在 host 无法探测 tunnel URL 时接受已注册的 Cloudflare connection,并在 loopback endpoint 不可达时快速失败而不是挂起。
  • 当 CLI 与 rollout environment 使用不同的 osmosis-ai 版本时,本地 evaluation 会给出警告。
  • harbor extra 会安装 Harbor 的 Daytona dependencies,因此 Daytona environment 无需单独配置依赖即可使用。
  • --secrets-file 中的值仅在本地 evaluation run 期间覆盖 process environment,并在所有退出路径上恢复;orphan cleanup 也会拒绝 symlink 的 run directory。

升级

使用 rollout 所需的 extra 安装 osmosis-ai>=0.3.2,<0.4,并替换上文列出的已移除 API。针对云端 sandbox 运行本地 evaluation 时,还需要在 PATH 中提供 cloudflared binary,除非您使用 --advertise-url 提供自己的 tunnel。SDK changelog · 完整 diff
0.3.1
0.3.1 把 evaluation run 带到您自己的机器上,新增将这些结果导入平台的路径,标准化了机器可读的 CLI 输出,并把登录凭证迁移到操作系统 keyring 中。

破坏性变更

  • RolloutDriver.run 现在只接受单个 RolloutRunRequest 参数。请更新自定义 driver 及其调用方,改为传入该 request 对象。
  • ExecutionBackend.max_concurrency 和 import 时的 osmosis_ai.platform.auth.PLATFORM_URL 已移除。请从 rollout server 的 /health 响应读取并发容量,并使用 get_platform_url() 获取当前 platform URL。
  • 公共 record 类型中未使用的 server-owned 字段已移除。请不要再读取 UploadInfo.s3_key 和 .upload_id、DatasetFile.df_stats 和 .organization_id、TrainingRunMetrics.training_run_id、EvalRunMetrics.eval_run_id、RolloutInfo.last_synced_at 以及 TrainingRunCheckpoints.training_run_id。

新增功能

  • osmosis eval run 通过新的 eval 安装 extra,使用与 managed run 相同的 TOML 在本地执行 crash-safe evaluation。它支持 dataset 切片、可恢复的输出、uv 管理的 rollout environment、LocalBackend 和 Harbor 的 Docker environment、可读的自动生成 run 名称、OpenAI Responses 路由、有界 admission,以及 orphan rollout server 清理。
  • osmosis eval upload <run-dir> 和 eval run --upload 可将已完成的本地 run 导入平台。两者都以服务端为准且 idempotent,并且都不会启动 managed evaluation。

变更

  • CLI machine contract 已标准化。--json 和 --plain 绝不会发出提示,JSON error 在 stderr 上使用稳定的 {code, message, details} envelope,机器可读的 warning 使用 JSON Lines,non-finite 值也不再可能产生无效 JSON。
  • 登录凭证按 platform 划分 scope,并持久化在操作系统 keyring 中,可跨目录和环境复用。它们在 HTTP 401 响应后仍会保留;针对非生产环境的 OSMOSIS_TOKEN 会在任何网络访问之前与 OSMOSIS_TOKEN_PLATFORM_URL 校验。

修复

  • Mini SWE-agent benchmark 的凭据校验与 Platform 保持一致,同时保留 Cursor CLI harness key 的要求。
  • osmosis dev server up 会打印 Platform 返回的一次性 API key,因此新建的 server 可以立即使用。

升级

请安装 osmosis-ai>=0.3.1,<0.4,在需要本地 evaluation 的地方添加 eval extra,并替换上文列出的已移除 API。SDK changelog · 完整 diff
0.3.0
0.3.0 是新 rollout protocol 与 execution stack 的稳定版本,覆盖自 0.2.31 以来的完整变更。

破坏性变更

  • 每个 rollout 现在都会通过 rollout-scoped URL 生成且仅生成一个 RolloutSample 和 reward。请将自定义 context、grader、integration、callback 与 backend adapter 更新为 single-sample contract。
  • Runtime integration 使用显式的 server、strands、openai-agents、harbor、rubric 和 parquet extra,并从 feature-specific module import。AgentWorkflow.run() 返回一个 message history,原有 loader、validator 和 multi-trajectory helper 已移除。
  • HarborBackend 现在是此前名为 HarborBackendV2 的 container-native 实现;legacy backend、对应 constructor argument、OsmosisInstalledAgent 和 HarborAgentWorkflowContext 均已移除。
  • Prompt 与 metadata dataset 各自在所有 row 中使用统一 schema,benchmark detail output 则以 requires_judge_api_key 替代 required_secret_names。

新增功能

  • osmosis benchmark 现在支持 catalog discovery、submission、run inspection、logs、cancellation 和 output download。
  • Container-native Harbor backend 新增 installable workflow bundle、native agent、template 与 dataset mode、prewarming、diagnostics、artifact、admission control、status polling 和 cancellation。
  • Training、evaluation 与 benchmark submission 可以从 dotenv file、standard input、process environment 或 hidden terminal prompt 解析 per-run secret,无需将其保存到 Platform secret store。
  • osmosis quickstart 会引导用户完成 authentication、workspace repository setup、clone、billing check,并生成可直接粘贴的 agent prompt;OsmosisClient 也提供对应的 onboarding API。

可靠性与安全性

  • Rollout bundle 使用 content-addressed atomic cache,支持 flat、src/ 和 PEP 420 layout,拒绝不安全的 symlink 与 cache layout,并通过 Harbor extra 安装兼容的 uv builder。
  • Local execution 会执行 controller deadline、校验 reward、清理 optional callback telemetry,并保持一致的 terminal callback outcome。
  • Harbor 会保留 sample、diagnostics 与 ATIF trajectory,同时防止 task-source symlink 和 rollout credential 进入 archived trial data;secrets-file error 也不会再回显可能包含 secret 的输入。

升级

使用 rollout 所需的 extra 安装 osmosis-ai>=0.3.0,<0.4,然后按照从 v0.2 迁移到 v0.3完成 API、dataset、dependency 与 Harbor migration。SDK changelog · 完整 diff
0.3.0rc4
0.3.0rc4 在稳定版 0.3.0 发布前加入 workspace 引导式 onboarding,并加固 rollout execution、packaging、callback 与 secret handling。

变更内容

  • osmosis quickstart 现在会完成登录、选择 workspace、等待 repository 连接、clone 或复用 workspace directory、检查 billing,并为 training、evaluation 或 benchmark 生成可直接粘贴的 agent prompt。
  • OsmosisClient 新增 list_workspaces()、get_quickstart_status() 和 complete_quickstart(),用于 workspace-scoped onboarding integration。
  • RolloutSample.reward 现在会在构造与赋值时拒绝 NaN、无穷大和非数值。若 grader 传入此类值,会抛出 pydantic.ValidationError,而不再静默地以“无 reward”方式抵达控制器。NumPy 风格的数值标量会被规范化为 float。
  • LocalBackend 将并发限流器的排队时间计入控制器下发的 agent_timeout_sec,并对 grading 应用独立的 grader_timeout_sec。吞掉 CancelledError 或阻塞事件循环超过截止时间的代码,现在会被报告为超时,而不是返回一个迟到的成功。
  • osmosis eval submit、osmosis train submit 和 osmosis benchmark submit 的 --secrets-file 现在接受 export NAME=value 与 NAME="quoted value" 形式。格式错误的行仅按来源与行号报告,不会把行内容回显到 CI 日志。名称若无法通过 Python 的标识符检查会被直接拒绝。
  • Rollout bundle 的构建改为按项目内容、解释器 ABI 与平台进行内容寻址,且每次构建在隔离的目录中运行,必须恰好产出一个 wheel。除 flat layout 之外,现在也支持 src/ layout(如 uv init --lib 生成的)与 PEP 420 namespace package,Harbor extra 也会安装兼容的 uv builder。
  • Harbor 会在 task materialization 前拒绝 symlink,并在 retained trial file 被归档前清除 rollout controller credential。

谁需要采取行动

  • 使用 osmosis quickstart 或依赖这些 rollout 加固修复前,请升级到 osmosis-ai>=0.3.0rc4。
  • 更新任何可能向 ctx.set_reward 传入 float("nan")、float("inf") 或非数值的 grader —— Osmosis 现在会拒绝这些值。请返回预期的数值 reward,或者不调用 set_reward 以表示“未评分”。
  • 更新此前依赖旧解析器把引号当作值一部分或把 export 前缀当作名称一部分的 --secrets-file 数据源。旧行为会静默提交错误字符串;新解析器会将两种形式都解析为预期的值。
SDK changelog · 完整 diff
0.3.0rc3
0.3.0rc3 收紧了 dataset validation,并允许 submit command 为单次 run 提供所需 secret value,而无需将其保存到 platform secret store。

变更内容

  • Prompt dataset 需要 user_prompt 加 ground_truth 或其 label alias;system_prompt 仍为 optional。
  • Metadata dataset 的每一行都需要 non-empty metadata object。Validation 现在会检查每一行 JSONL 和 CSV,以及每个 Parquet metadata value。
  • osmosis train submit、osmosis eval submit 和 osmosis benchmark submit 接受 --secrets-file;value 也可以来自 process environment 或 interactive prompt。
  • Benchmark detail 中的 required_secret_names 替换为 requires_judge_api_key。

谁需要采取行动

使用 osmosis dataset validate <file> 验证现有 dataset,并更新混用 schema 或缺少 required value 的行。如果 run 使用本地 per-run secret,请在每次 submission 时重新提供;stored secret name 仍由 server-side 解析。请按照从 v0.2 迁移到 v0.3中的 dataset 和 secret 迁移步骤完成升级。SDK 更新日志 · 完整 diff
0.3.0rc2
0.3.0rc2 明确了 optional feature 的使用方式,并将 container-native Harbor 实现升级为 HarborBackend。

变更内容

  • 使用 server、strands、openai-agents、harbor、rubric 或 parquet extra 安装 optional feature;full 会安装全部功能。
  • 从各自的 public submodule import server、Harbor、Strands、OpenAI Agents 和 rubric 功能,而不是从 rollout 或 package root import。
  • AgentWorkflow.run() 通过 AgentWorkflowOutput、bare message list 或 None 返回一个 message history;None 使用 active sample-source fallback。Output metrics 必须是有限值。
  • 原 HarborBackendV2 现更名为 HarborBackend;legacy backend 和 HarborAgentWorkflowContext 已移除。
  • CLI 新增 benchmark catalog、submission、status、logs、cancellation 和 output download workflow。

谁需要采取行动

更新 rollout dependency extras 和 imports、workflow return value,以及所有 Harbor constructor 或 context 用法。适用时,rollout server 还应处理 accepted work、queue saturation、status polling 和 cancellation。请按照从 v0.2 迁移到 v0.3中的 canonical import 和 Harbor 迁移步骤完成升级。SDK 更新日志 · 完整 diff
0.3.0rc1
0.3.0rc1 引入 0.3 rollout protocol。每次 workflow 执行现在只生成一个 RolloutSample,grader 也只分配一个 reward。

变更内容

  • GraderContext.samples 改为 GraderContext.sample,set_sample_reward(sample_id, reward) 改为 set_reward(reward)。
  • 自定义 integration 通过 set_sample_source() 注册一个 source,并通过 get_sample() 读取它。
  • 移除了 RolloutSample.id 和 MultiTurnMode。执行身份现在由 rollout URL 提供。
  • 模型和 callback 请求使用 rollout-scoped URL。Integration 不再为每次调用附加 sample 或 rollout routing headers。
  • Backend 交换 sample.json 和只包含单个值的 reward.json({"reward": <float>})。
  • Strands 和 OpenAI Agents integration 强制每次 workflow 执行只能注册一个 agent 或 session。

谁需要采取行动

如果你使用自定义 grader、自定义 sample source、backend adapter,或在一个 workflow 执行中创建多个已注册的 Strands agent / OpenAI Agents session,请更新相关代码。Evaluation 和 training 仍可针对同一个 prompt 请求多次独立执行。请按照从 v0.2 迁移到 v0.3中的前后对比代码和验证步骤完成升级。SDK 更新日志 · GitHub 发布页 · 完整 diff
最后修改于 2026年11月2日