P0: 状态机回退语义 — 从 done/terminal 回到 working #34

Open
opened 2026-06-12 22:38:26 +08:00 by orion · 0 comments
Owner

背景

当前 DSL 的状态转换是单向 DAG(或循环图),但多 Agent 协作中最常见的模式是回退

// 当前:只能前进
working → review_done → approved
// 想要:能返回
working → review_done → (发现新问题) → back_to working

ROADMAP 阶段 C.1 明确写了这个需求:"Agent 状态机支持回退(从 done 回到 working)"

需求

状态机应支持回退语义,即在任意状态(包括已标记为 done/terminal 的状态)可以回到之前的状态。

具体场景:

  1. Agent A 评审 Agent B 的产出,发现要返工 → 发一个 REWORK 事件让 B 从 done 回到 working
  2. Pipeline 中 judge 判定不通过 → 让 Agent 回到之前的步骤重新执行
  3. 多轮对话中 Agent 需要回到"等待输入"状态

设计考虑

  1. 不能破坏当前的终止状态检测逻辑(is_terminal
  2. 回退路径应在 DSL 中显式声明(不是隐式万能跳转)
  3. 事务回滚(TransactionContext)应配合回退——状态回退时副作用也应可撤销
  4. # 跳出语法的兼容

示例 DSL(草稿)

{
  "states": {
    "drafting": {
      "transitions": [
        { "event": "SUBMIT", "target": "review" }
      ]
    },
    "review": {
      "transitions": [
        { "event": "APPROVE", "target": "done" },
        { "event": "REWORK",  "target": "drafting", "rollback": true }
      ]
    },
    "done": {}
  }
}

"rollback": true 表示进入目标状态前执行事务回滚。

关联

  • ROADMAP: 阶段 C.1
  • 依赖: TransactionContext(已有 bixiweave/transaction.py)
  • 相关: #28 增强 context 管理
## 背景 当前 DSL 的状态转换是单向 DAG(或循环图),但多 Agent 协作中最常见的模式是**回退**: ``` // 当前:只能前进 working → review_done → approved // 想要:能返回 working → review_done → (发现新问题) → back_to working ``` ROADMAP 阶段 C.1 明确写了这个需求:*"Agent 状态机支持回退(从 done 回到 working)"*。 ## 需求 状态机应支持**回退语义**,即在任意状态(包括已标记为 done/terminal 的状态)可以回到之前的状态。 具体场景: 1. Agent A 评审 Agent B 的产出,发现要返工 → 发一个 `REWORK` 事件让 B 从 done 回到 working 2. Pipeline 中 `judge` 判定不通过 → 让 Agent 回到之前的步骤重新执行 3. 多轮对话中 Agent 需要回到"等待输入"状态 ## 设计考虑 1. 不能破坏当前的终止状态检测逻辑(`is_terminal`) 2. 回退路径应在 DSL 中显式声明(不是隐式万能跳转) 3. 事务回滚(TransactionContext)应配合回退——状态回退时副作用也应可撤销 4. `#` 跳出语法的兼容 ## 示例 DSL(草稿) ```json { "states": { "drafting": { "transitions": [ { "event": "SUBMIT", "target": "review" } ] }, "review": { "transitions": [ { "event": "APPROVE", "target": "done" }, { "event": "REWORK", "target": "drafting", "rollback": true } ] }, "done": {} } } ``` `"rollback": true` 表示进入目标状态前执行事务回滚。 ## 关联 - ROADMAP: 阶段 C.1 - 依赖: TransactionContext(已有 bixiweave/transaction.py) - 相关: #28 增强 context 管理
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bixiu/bixiweave#34
No description provided.