概述
工作流发布会把“你正在修改的配置”和“用户正在使用的配置”分开。
- Draft(草稿) 是工作流可编辑的版本。
- Live(线上) 是生产请求当前使用的已发布版本。
- Revision(修订版本) 是过去某次发布留下的不可变记录。
保存编辑只会更新 Draft,不会改变生产环境。要改变生产环境,请先审核 Draft,再选择 Publish。
1编辑 Draft → 测试 → 审核变更 → 发布 → Live 处理新请求应用仍然使用相同的工作流名称发起调用。发布改变的是该名称背后的 Live 版本,不需要修改应用中的 API 调用。
Draft、Live 与 History
在控制台中打开一个工作流,通过编辑器顶部的版本选择器查看当前状态。
| 区域 | 含义 |
|---|---|
| Draft | 已保存但尚未进入生产环境的修改。 |
| Live | 新生产请求当前使用的修订版本。 |
| History | 过去已发布的版本;可以查看、恢复到 Draft 或回滚到其中一个版本。 |
如果表单中还有未保存的修改,先点击 Save draft。当 Draft 已保存且与 Live 不同时,拥有发布权限的用户就可以选择 Publish。
如果不想保留已保存的 Draft,可以在版本选择器中选择 Discard draft。这会让 Draft 回到当前 Live 版本,但不会改变 Live。
发布前
发布前,请确认:
- 工作流处于 Production 模式。Test Mode 中的工作流不能发布。
- 所选 provider 和模型在当前项目中可用。
- 如果使用了结构化输出,它仍符合应用预期的响应格式。
- 如果后端流水线会调用其他工作流,目标工作流已经至少发布过一次,且仍处于启用状态。
- 同一项目中的后端流水线链接不能形成循环依赖。
- 已保存需要审核的编辑。
测试 Draft 或历史版本
使用 Playground 测试你真正准备使用的配置。选择工作流后,在 Run 下选择模式:
| 模式 | 运行内容 |
|---|---|
| Auto | Draft 存在未发布修改时运行 Draft;否则运行 Live。 |
| Draft | 已保存但尚未发布的 Draft。 |
| Live | 生产环境当前使用的版本。 |
| Historical | 你选择的某个历史 Revision。 |
要测试新的提示词、模型、schema 或流水线变更时,使用 Draft。要以生产版本作为基线时,使用 Live。想比较旧版本而不影响生产环境时,使用 Historical。
对于异步 Playground 请求,ModelRiver 会让请求在排队和后续流水线回调期间一直使用开始时选定的配置。之后再编辑或发布工作流,也不会让正在进行的测试悄悄切换到其他版本。
审核变更
在版本选择器的 Draft 区域中点击 changes from Live。Diff vs Live 对话框提供两种视图:
- Workflow:并排比较已发布的工作流路径和新的 Draft。
- JSON:显示准确的字段级变更。
不要只检查原本打算修改的字段。还应确认模型和回退链路、系统指令、结构化输出、缓存或 session 设置,以及后端流水线步骤。
如果 Draft 与 Live 没有差异,就没有新的内容需要发布。
发布新的 Live 版本
- 保存 Draft,并查看 changes from Live。
- 在工作流编辑器中选择 Publish。
- 查看当前 Live 版本、Draft 的修订版本号和变更数量。
- 阅读所有提示,并为后端流水线工作流查看依赖闭包。
- 可选填写发布备注,然后选择 Publish 确认。
新 Revision 会成为 Live,供新的生产请求使用。此前的 Revision 仍会保留在 History 中。
理解发布提示
提示通常不会阻止发布,但会指出值得审核的行为:
| 提示 | 需要考虑的内容 |
|---|---|
| 某个回调目标有更新的 Live 版本 | 判断父工作流现在是否应该采用这个依赖。 |
| 已启用响应缓存 | 现有缓存响应可能在过期前仍被返回。 |
| 已启用 Session memory | 已存在的 session 会保留此前的记忆;新的 Live 流量使用已发布配置。 |
| 某个回调 pin 使用旧版本 | 确认继续使用这个旧依赖是有意为之。 |
调用其他工作流时
如果一个工作流在后端流水线步骤中调用另一个工作流,发布时会记录目标工作流当时的 Live 版本。这称为依赖 pin。
例如,order_review 调用 fraud_check 时,发布 order_review 会记录它审核过的准确 fraud_check 版本。之后即使 fraud_check 发布新版本,已经发布的 order_review 行为也不会被悄悄改变。
当依赖向前发布时,父工作流的 Draft 可以在审核时显示这一变化。只有当你希望采用新依赖时,再发布父工作流。
回滚或恢复
两个操作都从 History 开始,但适合不同情况:
| 操作 | 适用场景 | 会改变什么 |
|---|---|---|
| Rollback | 当前 Live 版本需要停止服务新的生产请求。 | 将 Live 移到选定的早期 Revision;当前 Draft 不会被发布。 |
| Restore as draft | 想重新使用或调整某个旧版本,再决定是否发布。 | 选定 Revision 会替换当前 Draft;Live 不会改变。 |
生产环境需要立即恢复时,使用 Rollback。旧版本适合作为新修改起点时,使用 Restore。恢复会替换当前 Draft,因此确认前请先保存或丢弃仍然需要的 Draft 工作。
如果被恢复的 Revision 使用了结构化输出,且原始结构的 schema 与示例仍匹配,ModelRiver 会重新关联该结构。若该结构已被编辑或删除,则会克隆一个带唯一名称的结构,避免影响其他工作流。
两种操作都不会删除修订历史。
命名、删除与导入
- 工作流创建后不能修改名称。名称是应用在 API 中使用的稳定地址。
- Delete(删除) 会停用工作流。修订历史保留在该记录上。
- 删除后可以用相同名称创建新工作流。生产环境会将名称解析到新的活跃工作流。
- Import(导入) 与 Create(创建) 都会根据带入的配置生成初始 Live 修订版本(通常为 R1)。导入不会复制源项目的修订版本号。
权限
- 组织所有者和管理员可以发布及回滚工作流。
- 编辑者及以上可以保存 Draft、丢弃 Draft,以及将历史 Revision 恢复到 Draft。
- 在受保护项目中,编辑者权限可能受限;所有者和管理员始终拥有完整权限。
如果你看不到其他团队成员能看到的操作,请检查自己的组织角色和项目保护设置。
常见问题
保存 Draft 会改变生产环境吗?
不会。生产环境会继续使用 Live,直到你发布或回滚。
可以在发布前测试一个版本吗?
可以。保存 Draft 后,在 Playground 中选择 Draft。
发布时,已经在运行的请求会怎样?
它会继续使用请求开始时选定的配置。发布只会改变新请求使用的版本。
可以在生产 API 中固定某个 Revision 吗?
不可以。生产 API 密钥始终对工作流名称执行 Live 修订版本。无法选择历史 Revision,也无法通过请求头在生产环境覆盖 Live。
响应中可能包含修订版本元数据(例如 x-modelriver-revision 和 x-modelriver-configuration-source: live),便于在日志中关联实际运行的版本。
可以回到旧版本而不丢失新版本吗?
可以。Rollback 会把 Live 移到旧 Revision,但不会删除之后的版本。你可以随时在 History 中查看或恢复它们。