PolyAI 中文文档 下载 App

Sync 同步:Branch 落后于父版本时怎么办

什么时候会 out of sync

在 Branches 模式里,每个人有自己的 Branch。同事 A 在 Branch A 上改了 Flow 并 Publish → Live 更新了。同事 B 的 Branch B 是在同事 A Publish 之前从 Live 分出来的。此时 Branch B 的状态变成 out of sync——它落后于 Live。

Live: v1 → v2(同事 A Publish)→ v3
Branch B: 基于 v1 分出来的 → ← out of sync(落后 v2 和 v3)

为什么会有这个机制

这是 PolyAI 强制版本同步的设计——不允许一个 Branch 在落后于父版本的情况下直接 Publish,否则会把父版本上已有的新改动"冲掉"(如果是替换模式)或者产生不可预期的冲突。

Sync 操作

当 Branch 处于 out of sync 状态时:

  1. Agent Studio 会在 Branch 名称旁边显示红色的 Out of sync 标签
  2. Publish 按钮被禁用(点不了)
  3. 你必须先点 Sync 按钮

Sync 操作做的事是:把父版本(Live)上自你分 Branch 以来的所有增量改动合并进你的 Branch。如果合并过程中产生冲突(你和同事都改了同一个配置项),会弹出冲突对话框让你选版本。

Sync 完成后 Branch 状态变回 In sync,Publish 按钮恢复可用。

一个完整例子

时间线:
  T1: Live = v1
  T2: 你从 v1 分出 Branch
  T3: 同事 A Publish → Live = v2(改了欢迎语)
  T4: 你改了 Flow(完全不同的文件)
  T5: 你想 Publish → Branch 显示 Out of sync → 必须 Sync
  T6: 你点 Sync → Branch 自动吸收 v2 的欢迎语改动 → 状态变回 In sync
  T7: 你 Publish → Live = v3(包含同事 A 的欢迎语 + 你的 Flow 改动)

关键:T6 的 Sync 是自动合并、没有冲突——因为你改的是 Flow,同事改的是欢迎语,两个改动不在同一个文件里。PolyAI 的合并引擎能自动处理这种情况,不会让你手动干预。

Sync 在 ADK 里的对应操作

如果你用 ADK,在本地也能做 Sync:

poly branch sync        # 把远端父版本的改动同步到本地 Branch
poly diff               # 查看同步后、Publish 前的完整 diff

ADK 的 poly sync 对应 Studio 界面里的 Sync 按钮。合并冲突时也是在本地解决、再 push。

常见问题

Sync 会不会覆盖我 Branch 上的改动?

不会。Sync 只合入父版本上不属于你 Branch 的增量改动。你 Branch 上自己改的东西全部保留——除非父版本上也改了同一个地方,此时会弹冲突让你选。

如果我就是不想 Sync 怎么办?

可以——直接新建一个 Branch 基于最新的 Live,把旧 Branch 上需要的改动手动搬过去。这比 Sync 麻烦,但在极特殊情况下可能更合适。

Sub-branch 模式下的 Sync

Sub-branch 的父版本不是 Live,而是它所属的主 Branch。Sync 的机制完全相同,只是父版本变了。