auto-sync: 2026-05-21 19:58:22
This commit is contained in:
@@ -338,31 +338,96 @@ Agent 超时/广播无人认领
|
||||
| 状态转换 API | `blackboard_routes.py` POST /tasks/{id}/status | VALID_TRANSITIONS 校验 |
|
||||
| 转换矩阵 | `db.py` VALID_TRANSITIONS | escalated → {working, pending, cancelled} |
|
||||
|
||||
### 5.6 前端按钮完整矩阵
|
||||
### 5.6 前端按钮完整矩阵(v3.1 用户确认版)
|
||||
|
||||
**PRIMARY_ACTIONS(主操作区,直接展示):**
|
||||
**设计原则:**
|
||||
- 暂停和取消是用户的通用权利,所有非终态都有
|
||||
- AI 自动流转的操作(认领、开始、提审、通过、打回)不需要按钮
|
||||
- escalated / waiting_human 是 AI 发起后等待用户决策,不是通用按钮
|
||||
- blocked 任务本身没在动,暂停无意义
|
||||
- failed 的升级是 AI 发起不是按钮
|
||||
|
||||
| 状态 | 按钮 | 目标状态 | 说明 |
|
||||
|------|------|----------|------|
|
||||
| pending | ⏳ 等待 Agent 自动认领... | — | 提示文字(待补取消按钮) |
|
||||
| claimed | ⏳ Agent 已认领,即将开始... | — | 提示文字 |
|
||||
| working | ⏸ 暂停任务 | paused | |
|
||||
| review | 🔍 Agent 审查中... | — | 提示文字 |
|
||||
| waiting_human | ✅ 确认完成 / 🔄 拒绝继续做 | done / working | |
|
||||
| escalated | ▶ 继续执行 / 🔄 重新分配 | working / pending | |
|
||||
| failed | 🔄 重试 | pending | |
|
||||
| blocked | 🔓 解除阻塞 | pending | |
|
||||
| paused | ▶ 继续执行 / 🚫 取消任务 | working / cancelled | |
|
||||
| done | 📦 归档 | — | |
|
||||
| cancelled | 📦 归档 | — | |
|
||||
#### 状态定义
|
||||
|
||||
**ADVANCED_ACTIONS(折叠在"▸ 高级操作"下):**
|
||||
| 状态 | 含义 | 谁触发 | 颜色 |
|
||||
|------|------|--------|------|
|
||||
| pending | 等待 AI 认领 | 用户创建/AI流转 | 蓝 |
|
||||
| claimed | AI 已认领 | AI 认领 | 紫 |
|
||||
| working | AI 执行中 | AI 开始 | 蓝 |
|
||||
| paused | 用户暂停 | 用户 | 紫 |
|
||||
| review | AI 审查中 | AI 提交审查 | 紫 |
|
||||
| failed | 失败 | AI 或 daemon | 红 |
|
||||
| blocked | 缺条件卡住 | Agent 遇到外部阻塞 | 橙 |
|
||||
| escalated | AI 解决不了,升级求助 | Agent | 红 |
|
||||
| waiting_human | 流程验收点等用户确认 | Agent Checkpoint | 橙 |
|
||||
| done | 完成 | 审查通过/用户确认 | 绿 |
|
||||
| cancelled | 取消 | 用户 | 灰 |
|
||||
|
||||
| 状态 | 按钮 | 说明 |
|
||||
|------|------|------|
|
||||
| working | 🔍 手动提交审查 / 🚫 取消 | |
|
||||
| review | ✅ 手动通过 / 🔄 打回重做 | |
|
||||
| failed | 🚫 取消 | |
|
||||
**escalated vs waiting_human 区别:**
|
||||
- escalated:Agent 遇到**意外问题**解决不了(如技术选型不确定)→ 红色 → 严重
|
||||
- waiting_human:执行到**计划中的验收点**(如 Checkpoint)→ 橙色 → 正常进度
|
||||
|
||||
#### 按钮矩阵
|
||||
|
||||
| 状态 | 用户按钮 | 说明 |
|
||||
|------|---------|------|
|
||||
| **pending** | ⏸ 暂停、🚫 取消 | 等 AI 认领时用户可暂停或取消 |
|
||||
| **claimed** | ⏸ 暂停、🚫 取消 | AI 已认领未开始 |
|
||||
| **working** | ⏸ 暂停、🚫 取消 | AI 执行中 |
|
||||
| **paused** | ▶ 恢复、🚫 取消 | 恢复回暂停前状态 |
|
||||
| **review** | ⏸ 暂停、🚫 取消 | AI 审查中 |
|
||||
| **failed** | 🔄 重试、🚫 取消 | 重试回 pending |
|
||||
| **blocked** | 🔓 解除(→pending)、🚫 取消 | 任务本身没在动,暂停无意义 |
|
||||
| **escalated** | ▶ 继续(→working)、🔄 重分配(→pending)、🚫 取消 | AI 发起升级后用户决策 |
|
||||
| **waiting_human** | ✅ 确认、🔄 拒绝(→working)、🚫 取消 | 流程验收点 |
|
||||
| **done** | 📦 归档 | 终态 |
|
||||
| **cancelled** | 🔄 重新启动(→pending)、📦 归档 | 可重启保留历史 |
|
||||
|
||||
#### 状态机变更
|
||||
|
||||
暂停是通用权利,需要在更多状态允许 → paused 转换:
|
||||
|
||||
```python
|
||||
# 当前
|
||||
VALID_TRANSITIONS = {
|
||||
"pending": {"claimed", "cancelled"},
|
||||
"claimed": {"working", "paused", "pending", "cancelled"},
|
||||
"working": {"review", "blocked", "failed", "paused", "escalated", "waiting_human", "cancelled"},
|
||||
"paused": {"working", "cancelled"},
|
||||
"review": {"done", "pending", "failed", "escalated", "waiting_human", "cancelled"},
|
||||
"blocked": {"pending", "escalated", "cancelled"},
|
||||
"failed": {"pending", "escalated", "cancelled"},
|
||||
"escalated": {"working", "pending", "cancelled"},
|
||||
"waiting_human": {"working", "done", "cancelled"},
|
||||
"done": set(),
|
||||
"cancelled": set(),
|
||||
}
|
||||
|
||||
# 变更后
|
||||
VALID_TRANSITIONS = {
|
||||
"pending": {"claimed", "paused", "cancelled"}, # +paused
|
||||
"claimed": {"working", "paused", "pending", "cancelled"}, # 不变
|
||||
"working": {"review", "blocked", "failed", "paused", "escalated", "waiting_human", "cancelled"}, # 不变
|
||||
"paused": {"working", "pending", "cancelled"}, # +pending(恢复到原状态)
|
||||
"review": {"done", "pending", "failed", "paused", "escalated", "waiting_human", "cancelled"}, # +paused
|
||||
"blocked": {"pending", "escalated", "paused", "cancelled"}, # +paused
|
||||
"failed": {"pending", "escalated", "cancelled"}, # 不变(暂停语义不清晰)
|
||||
"escalated": {"working", "pending", "paused", "cancelled"}, # +paused
|
||||
"waiting_human": {"working", "done", "paused", "cancelled"}, # +paused
|
||||
"done": {"cancelled"}, # +cancelled(取消已完成任务)
|
||||
"cancelled": {"pending"}, # +pending(重新启动)
|
||||
}
|
||||
```
|
||||
|
||||
**paused 恢复机制:** paused 加 `resumed_from` 字段,记录暂停前状态。恢复时回到暂停前状态:
|
||||
- pending → paused → ▶恢复 → pending
|
||||
- review → paused → ▶恢复 → review
|
||||
- claimed → paused → ▶恢复 → claimed
|
||||
|
||||
#### 取消 ADVANCED_ACTIONS 折叠区
|
||||
|
||||
v3.1 不再使用 ADVANCED_ACTIONS 折叠区。所有用户操作直接展示在主操作区。
|
||||
原因:暂停和取消是通用权利,不应隐藏在折叠区里。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user