如何管理 sim 工作流的已发布版本并用 Promote to live 回滚到旧版本
【免费下载链接】simSim is the collaborative workspace to build, deploy, and monitor AI agents and workflows. Used by 100,000+ builders.项目地址: https://gitcode.com/GitHub_Trending/sim16/sim
在 Sim 中,工作流在画布上编辑时只是草稿,只有点击Deploy发布后,外部调用者才能通过 REST 端点、聊天页或 MCP 工具运行它。发布后你会遇到两个典型问题:一是需要知道当前线上跑的是哪个版本、历次发布分别改了什么;二是新版发布后出了问题,需要立刻恢复上一个已知正常的版本。这篇文章基于 Sim 项目文档,说明如何用 Deploy 弹窗的 Versions 表管理这些已发布版本,并用Promote to live(以及对应的 API 端点)完成回滚。适用对象是已部署或即将部署 API 的工作流,操作在 Sim 工作区中完成。
先理解版本模型:快照、版本、Live 版本
管理版本之前,需要知道三个概念,它们决定了后续操作的判断依据(来源:deployment 概述):
- Snapshot(快照):部署那一刻对当前草稿的不可变副本。此后在画布上编辑只改草稿,不改快照,所有调用都针对快照运行。
- Version(版本):每次 Deploy 或 Update 都会产生一个带编号的版本(v1、v2……),记录在 Versions 表中,标注了部署人和时间。同一时间只有一个版本是 live,用绿色圆点标记;其余版本保留着,可以重命名、加描述、加载回画布或提升为 live。
- Live version(当前线上版本):General 标签页以Live Workflow只读小地图展示,它精确对应调用者正在运行的快照。
两条关键规则,后文的验证都依赖它们:
- 编辑画布永远不会改变线上内容。线上快照只在Update(发布新版本)或Promote to live(恢复旧版本)时被切换。
- Promote to live复用的是已有快照,不会创建新版本。
在 Deploy 弹窗中发布并管理版本
打开你的工作流,点击Deploy,弹窗首先打开General标签(来源:API deployment)。General 标签包含三部分:
- Live Workflow— 当前已部署快照的只读小地图;
- Versions— 所有已发布版本的表格,显示版本号、部署人、时间;
- Deploy / Update / Undeploy— 右下角的操作按钮。
首次发布点Deploy;之后在画布上改完内容,工具栏会出现Update deployment徽标,提示线上版本落后于草稿。此时点Update会打一个新快照、记录为下一个版本并使其 live,不需要重新打开 Deploy 弹窗——也可以直接从画布工具栏点Update完成。
发布完成后,对任一历史版本的管理入口是版本行右侧的上下文菜单(⋮),共四个选项:
| 操作 | 作用 |
|---|---|
| Rename | 给版本起一个可读名称(例如 "Added memory") |
| Add description | 附上说明该版本改了什么 |
| Promote to live | 不重新部署,直接把这个旧版本设为当前激活版本 |
| Load deployment | 把该版本的工作流快照加载回你的画布 |
养成给每个版本加 Rename 或 Add description 的习惯,回滚时才能一眼认出哪个是已知正常版本。
用 Promote to live 回滚到旧版本
回滚操作只有一步:在 General 标签的 Versions 表中,找到要恢复的那个版本(绿色圆点当前标记的是 live 版本),点击该行 ⋮ 菜单中的Promote to live(来源:API deployment、quick reference 中 "Revert deployment" 条目)。
这个操作的效果,文档定义得很明确:
- 被提升的旧版本立即成为 live 版本,后续 API 调用立即针对该快照运行(文档 FAQ 原文:"Subsequent API calls immediately run against the promoted snapshot. This is the fastest way to roll back to a previous state.");
- 不创建新版本,版本表总行数不变;
- 画布上的草稿不受影响,你可以之后修复草稿再Update发布。
推荐的完整工作路径是:把线上版本当生产环境、画布当 staging,在画布上跑通后再Deploy或Update;调用者在新版上线前一直打到旧快照,不存在"半部署"状态;新版出问题就Promote to live旧版本,之后再修草稿、重新 Update。
可选路径:通过 API 或 Deployments block 做版本管理
如果你需要把部署和回滚放进 CI/CD、事故脚本或另一个工作流里,Sim 提供两条编程路径。
v1 管理端点(来源:API deployment 的 "Managing Deployments via the API")。三个端点都要求 API key 具有该工作流工作区的 admin 权限;{workflow-id}替换为你的工作流 ID,$SIM_API_KEY替换为你的 API key(在Settings → Sim Keys中生成):
# 把当前草稿发布为新版本(body 可选) curl -X POST https://sim.ai/api/v1/workflows/{workflow-id}/deploy \ -H "Content-Type: application/json" \ -H "x-api-key: $SIM_API_KEY" \ -d '{ "name": "Release 4", "description": "Fixes the agent prompt" }' # 下线工作流 curl -X DELETE https://sim.ai/api/v1/workflows/{workflow-id}/deploy \ -H "x-api-key: $SIM_API_KEY" # 回滚到上一个版本(或传 { "version": N } 指定某个版本) curl -X POST https://sim.ai/api/v1/workflows/{workflow-id}/rollback \ -H "x-api-key: $SIM_API_KEY"rollback 端点"重新激活一个已有的部署版本——与 Promote to live 是同一操作",同样不动画布草稿。
Deployments block(来源:Deployments 集成文档)让你在另一个工作流中由 agent 以 block 形式执行版本管理,同样要求工作区 admin 权限:
- Promote Version to Live:输入
workflowId和version(要提升的版本号),输出包含version(当前 live 的版本)和isDeployed。它和弹窗里的 Promote to live 是同一操作;对已下线(undeployed)的工作流也有效——会按该版本重新上线。 - List Deployment Versions:输入
workflowId,输出按新到旧排列的版本数组,每项含version、name、description、isActive、createdAt、deployedByName,用isActive判断哪个版本 live。 - Get Deployment Version:输入
workflowId和version,返回该版本元数据(含isActive)和deployedState——完整的工作流状态快照(blocks、edges、loops、parallels、variables)。
如何验证回滚生效
文档给出三种确认方式,按使用成本从低到高:
Versions 表:Promote 后回到 General 标签,绿色圆点应该移到被你提升的那个版本上;Live Workflow小地图也变为该版本的只读快照。
实际调用一次 API:部署后工作流在 execute 端点响应请求(
x-api-key头传 API key),请求体对象匹配工作流的 Input Format,响应包含各 block 的输出和执行元数据:curl -X POST https://sim.ai/api/v2/workflows/{workflow-id}/execute \ -H "Content-Type: application/json" \ -H "x-api-key: $SIM_API_KEY" \ -d '{ "input": { "message": "Hello" } }'注意两处细节:文档各页对该路径写法不一致——专门的 API deployment 文档 使用带
/v2的路径https://sim.ai/api/v2/workflows/{workflow-id}/execute,而 deployment 概述 的示例写的是不带/v2的https://sim.ai/api/workflows/{workflow-id}/execute,请以 API 文档中的 v2 形式为准。请求 body 里的{ "input": ... }需要替换为你的工作流实际定义的输入格式。查日志确认某次运行用的是哪个快照:Logs & debugging 文档 说明日志记录每次运行,点击View Snapshot会打开"该次运行发生时工作流的冻结副本"。如果你上周的失败运行与现在画布上的版本不同,快照展示的正是当时实际运行的版本,而不是今天的版本。
边界与限制
- Promote to live 不创建版本:它只是切换哪个已有快照处于 live 状态,所以回滚本身不会污染版本历史;反过来,你也不能用 Promote 发布一个从未部署过的内容。
- 画布编辑与线上解耦:只要不点 Update 或 Promote,线上快照就不变;草稿改坏了也不会影响调用者。
- 权限:v1 管理端点和 Deployments block 的所有动作都要求工作区 admin 权限,没有 admin 权限的 key 无法执行部署、回滚或查询版本。
- Undeploy 的副作用:下线工作流会同时移除其 triggers、webhooks 和 schedules,API 执行停止;之后用 Promote 可以按某个已知版本重新上线。
- 异步模式(
"async": true)始终针对已部署版本运行,不支持草稿状态——这也是回滚对异步调用方立即生效的原因。
完成一次 Promote 后,以 Versions 表绿点位置和一次真实 API 调用的结果作为最终确认;如果需要继续排查某个具体版本的运行细节,从对应日志条目的View Snapshot进入即可。
【免费下载链接】simSim is the collaborative workspace to build, deploy, and monitor AI agents and workflows. Used by 100,000+ builders.项目地址: https://gitcode.com/GitHub_Trending/sim16/sim
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考