Bonsai
文档目录
概念
文档

Turn

issue 追踪器通常只有一条轴:状态。Backlog、Todo、In Progress、Done,从左到右像一条时间线。人组成的团队一直是这么用的。

当大部分步骤由 AI 助手来做,时间线就不再是你真正关心的问题。一个 feature 先交给写代码的 agent,再交给审代码的 agent,然后到你这里审 PR,然后由 agent 部署到 staging,再回到你这里确认,然后又交给 agent。步骤每小时都在变。早上九点你想知道的事其实很简单:有没有什么在等我?

Bonsai 用第二条轴来回答它。

现在到哪一步。 看板按 Turn 分列,Issue 类型 按四个 Turn 列出状态,自动推进 在 issue 进到轮到 agent 的状态时自动派出角色,到了你的 Turn 就停下来等你。

四个 Turn

任何时候,一篇 issue 都恰好处在四个 Turn 中的一个:

Turn含义
Todo没有人在动它:在排队,或者被项目之外的事卡住
Agent’s turn有 agent 在做,或者现在就该派一个
Your turn在等人
Closed没有人需要再看它

Turn 是 Bonsai 内置的。四个不能改名,也不能加第五个。这是有意的:看板、派发器和每个 agent 都靠这同样的四个词表达同样的意思。

Turn 说的是轮到谁,不是一个工作单位。Codex 这类编码 agent 把会话里的一次执行叫 “turn”,Bonsai 不这么用这个词。agent 在一篇 issue 上被派一次叫 run,review 走一遍叫 round(第几轮)。run 发生在 agent 的 turn 里;一个 round 可能跨过 agent 的 turn 和你的 turn。

状态由你定

每个 Turn 下面是状态,状态由你来定义。一个状态是流程里的一步;它所属的 Turn 说的是这一步球在谁手里。内置的 Feature 类型是这样的:

Turn状态
TodoBacklog、Blocked、Ready
Agent’s turnDeveloping、Reviewing、Revising、Deploying to Staging、Deploying to Production
Your turnReview PR、Verify Staging、Needs Decision
ClosedDone、Canceled、Duplicate

把一个 feature 的一生按顺序读一遍,Turn 来回翻转:

Ready → Developing → Reviewing → Review PR → Deploying to Staging → Verify Staging → Deploying to Production → Done

粗体是 agent 的回合,斜体是你的。这种来回跳是和 agent 一起工作的常态,不是例外。Turn 这条轴让它一眼能看清。

一个状态只属于一个 Turn,所以「该谁动」从来不含糊:

  • Agent’s turn 里的状态在 issue 类型里有一行 Automation:issue 到了,这一行说派哪个角色。
  • Your turn 里的状态没有行。你不动它,什么都不会跑。
  • Todo 里的状态在等调度:依赖做完、有空闲的机器,或者外面的阻碍解除。
  • 自动化从不把 issue 挪进 Closed。收尾是人的动作。

和 Issue 类型 里的状态一样,名字随你起。Bug 可以把第一个状态叫 Triage,用 Won’t Fix 收尾;下面的四个 Turn 不变。

看板

issue 看板按 Turn 分组,Your turn 是最左边那一列。打开一个项目,第一眼看到的就是在等你的事。下一列是 agent 此刻在做的事。然后才是 Todo 和 Closed。

同一列里,每张卡片仍然显示它的状态,所以 Review PR 和 Verify Staging 并排在 Your turn 下面,一眼能分清。

为什么是内置的轴

我们试过让五个大类来承担这件事。做不到,因为大类描述的是 issue 在时间线上的位置,而时间线已经说不清该谁动。审代码的 agent 和审 PR 的人在时间线上都是「进行中」,在 Turn 上却是相反的两边。

Turn 固定不变,也让所有项目、所有类型、所有 agent 共用同一套词。角色笔记里写一句「做完交回给人」,含义只有一种:把 issue 改到 Your turn 里的某个状态。

下一步:Issue 类型 讲一种类型怎么列出它的状态,以及 Agent’s turn 里的每个状态派哪个角色。