#12 Pipeline 设计专题 + 广播定义修正
- 新建 12-pipeline-design.md: Pipeline/自由模式二选一、硬约束工作流、@mention优先、广播轮次定义 - 更新 architecture-v3.0.md §8.3: 一轮广播=所有Agent反馈、§19.2: 已知问题标注
This commit is contained in:
@@ -763,17 +763,27 @@ route(task_info, action_type):
|
||||
- `set_cooldown(agent_id, seconds=120)`: API 429 后冷却
|
||||
- `is_cooling_down(agent_id)`: 检查冷却状态
|
||||
|
||||
### 8.3 广播认领 ✅(已实现,司马评审确认)
|
||||
### 8.3 广播认领 ✅(已实现,司马评审确认)— 定义修正 2026-06-04
|
||||
|
||||
**设计文档 (v3.0-router-refactor §3.3)**:
|
||||
- 确定性路径:已知下一步谁做 → 直接 spawn
|
||||
- 广播认领路径:不确定 → spawn 所有空闲 Agent → 自主 claim
|
||||
- 无人认领 → retry 3 次后升级庞统兜底
|
||||
**定义**:一轮广播 = 所有 Agent 都收到了任务并给出了反馈(认领/NO_REPLY),才算一轮完成。
|
||||
|
||||
**机制**:
|
||||
- 每个 pending 广播任务,维护 `notified_agents` 追踪已通知和已反馈的 Agent
|
||||
- 每次 tick:spawn 空闲且尚未被通知的 Agent
|
||||
- Agent 返回(认领/NO_REPLY/observation)→ 记录为已反馈
|
||||
- Agent 忙(counter 阻塞)→ 不算已通知,下次 tick 继续尝试
|
||||
- 当所有 Agent 都已反馈且没人认领 → 一轮结束 → retry_count +1
|
||||
- 有人认领 → 广播立即结束(不需要等其他 Agent 反馈)
|
||||
- 连续 3 轮广播无人认领 → 升级庞统
|
||||
|
||||
**实际代码 (ticker.py L540 `_broadcast_claim()`)**:
|
||||
- ✅ 完整实现,包含:全局并发检查(counter.is_near_limit)、空闲 Agent 列表(_get_idle_agents)、批量广播(攒一批任务一次广播)、spawn 广播、无人认领检测(retry_count >= 3 → escalated)、审计事件记录(events 表 broadcast_claim 类型)
|
||||
- ✅ 确定性路径也完整(Router → Dispatcher → Spawner)
|
||||
|
||||
**与旧实现的区别**:
|
||||
- 旧:每次 tick spawn 所有空闲 Agent = 一轮,Agent 忙就跳过,retry_count 不递增
|
||||
- 新:追踪每个 Agent 的通知/反馈状态,全部反馈才算一轮,防止忙 Agent 被反复跳过导致无限循环
|
||||
|
||||
**注**: 庞统初版误判为"未实现",因检查 router.py/spawner.py 时未查 ticker.py。司马懿评审纠正。
|
||||
|
||||
---
|
||||
@@ -1447,6 +1457,12 @@ SSEEventType:
|
||||
|
||||
**纠正记录**: 庞统初版只检查了 router.py/spawner.py,遗漏了 ticker.py L540。司马懿评审纠正。
|
||||
|
||||
**⚠️ 已知问题(2026-06-04 发现)**:
|
||||
- 广播计数器不递增:`_broadcast_claim` 中只检查 `retry_count >= 3` 但不递增 retry_count
|
||||
- retry_count 只在 `_check_timeouts` 的 claimed 超时路径递增
|
||||
- 导致广播任务无限循环:每 tick 广播一次,没人认领也不计数
|
||||
- **修复方案**:见 `docs/design/12-pipeline-design.md` §5 广播定义修正
|
||||
|
||||
### 19.3 `_generate_title()` 绕过 Gateway ⚠️ TODO(保留,待替换本地 LLM)
|
||||
|
||||
**现状**: `blackboard_routes._generate_title()`(line 138-175)直接用 OpenAI client 调 zhipu API,不走 Gateway。
|
||||
|
||||
Reference in New Issue
Block a user