软体工程师不会在没有版本控制的情况下部署程式码。他们会审查差异、在测试环境中测试,并在出错时回滚。AI 工作流程也应该有同样的纪律。
JieGou 的工作流程版本控制系统为您提供不可变的版本历史记录、结构化差异比对、一键回滚和金丝雀部署——全部内建在工作流程编辑器中。
每次编辑都会建立一个版本
当您修改工作流程的结构时——新增、删除或重新排列步骤,变更输入/输出 schema——JieGou 会自动建立新版本。历史记录是只能附加的,不会覆写任何内容。
每个版本都是完整的快照:每个步骤、每个输入映射、每个 schema 定义,都冻结在那个时间点。您可以浏览工作流程演进的完整时间轴,查看每次变更是谁在什么时候做的,并准确了解工作流程如何达到目前状态。
这一切都是透明进行的。您编辑工作流程的方式与以往相同——版本控制层在幕后运作。
结构化差异比对
光知道有东西改变是不够的。您需要知道什么改变了。
差异引擎会在结构层面比较任意两个版本。它会识别:
- 新增的步骤 — 先前版本中不存在的新步骤
- 删除的步骤 — 被删除的步骤
- 修改的步骤 — 设定有变更的步骤(recipe、输入映射、条件、回圈设定、审批政策)
- 重新排序的步骤 — 在执行顺序中移动位置的步骤
- Schema 变更 — 输入/输出 schema 中新增、删除或修改的栏位
对于修改的步骤,差异比对会更深入。像条件分支(thenSteps / elseSteps)、回圈主体和平行分支等巢状结构会递回比较。您可以准确看到哪个步骤中的哪个栏位发生了变更。
结果是人类可读的摘要——「2 个步骤已修改,1 个步骤已新增,输入 schema 已变更」——以及详细的差异检视。
回滚作为新版本
回滚不会改写历史记录。当您回滚到版本 3 时,JieGou 会将该版本的步骤和 schema 复制到全新的版本(例如版本 8)。时间轴会显示完整故事:版本 4 到 7 曾经存在,出了问题,而版本 8 是版本 3 的还原。
这意味着回滚是安全的。如果回滚本身是个错误,您随时可以再次向前滚动。
金丝雀发布
对任何工作流程来说,最危险的时刻就是变更后。金丝雀发布让您在完全提交之前,先在一部分自动化流量上测试变更。
运作方式如下:
- 启动金丝雀。 选择新版本和流量百分比——例如 10%。
- 自动路由。 当排程或 webhook 触发工作流程时,
resolveWorkflowVersion()会产生随机数。10% 的执行会路由到金丝雀版本;90% 继续使用活跃版本。 - 指标累积。 每次执行都会记录成功/失败、持续时间和 token 使用量到对应版本。Redis 计数器即时汇总这些资料。
- 升级或回滚。 当您有信心时,将金丝雀升级为活跃版本(淘汰旧版本)。或者如果指标看起来不对劲就回滚。
对于无人值守操作,可设定自动升级:设定最小执行次数和最小成功率。一旦金丝雀达到两个门槛,就会自动升级。如果金丝雀在可设定的时间限制后还没达到门槛,就会自动回滚。
手动执行始终使用活跃版本,除非您明确选择不同版本。
每个版本的指标
每个版本都会累积自己的效能资料:
- 总执行次数 — 此版本执行了多少次
- 成功率 — 没有错误完成的执行百分比
- 平均持续时间 — 此版本的执行需要多长时间
- 错误计数 — 失败的执行次数
这些指标支援金丝雀的升级/回滚决策,但对于发现效能衰退也很有用。如果版本 5 的成功率是 98%,版本 6 降到 91%,您就知道有东西变了——而且可以比对两个版本来找出是什么。
为什么这很重要
没有版本控制,工作流程变更是不可逆的。错误的编辑意味着要手动重建工作流程之前的样子。有了版本控制:
- 稽核人员可以准确追踪什么改变了、何时改变以及谁改的
- 团队可以在将变更升级到生产环境之前审查差异
- 维运人员可以在实际流量上进行金丝雀测试变更,而不用担心风险
- 任何人都可以在出问题时立即回滚