auto-sync: 2026-05-28 08:19:04

This commit is contained in:
cfdaily
2026-05-28 08:19:04 +08:00
parent 2f09382de3
commit cb82289e65
+29 -29
View File
@@ -4,7 +4,7 @@
**基于**: PRD-v3.0 + architecture-v2.6 + v2.7~v3.0 增量设计 + 实际源码回溯
**作者**: 庞统(副军师)
**日期**: 2026-05-28
**状态**: 回溯定稿(v2用户复查修正版)
**状态**: 回溯定稿(v3司马懿评审修正版)
---
@@ -511,7 +511,7 @@ Ticker.tick()
| 设计文档 | 实际代码 | 状态 |
|---------|---------|------|
| 广播认领 (v3.0-router-refactor) | 认领基础设施完整,`_broadcast_claim()` 实现 | ⚠️ 待探讨实施时机 |
| 广播认领 (v3.0-router-refactor) | ticker.py `_broadcast_claim()` 已完整实现 | |
| Session 存档清理 | spawner 有 `_sessions` 注册表但清理逻辑未完整集成 | ⚠️ |
| L2 Subagent spawn | `spawner.spawn_subagent()` 存在但标注 TODO: F17 | ⚠️ 骨架已有 |
| `_parse_stdout_json` P0 修复 | 代码已修正为 `data["response"]["meta"]` 路径 | ✅ 已修复 |
@@ -638,19 +638,18 @@ route(task_info, action_type):
- `set_cooldown(agent_id, seconds=120)`: API 429 后冷却
- `is_cooling_down(agent_id)`: 检查冷却状态
### 8.3 广播认领 ⚠️(待进一步探讨
### 8.3 广播认领 ✅(已实现,司马评审确认
**设计文档 (v3.0-router-refactor §3.3)**:
- 确定性路径:已知下一步谁做 → 直接 spawn
- 广播认领路径:不确定 → spawn 所有空闲 Agent → 自主 claim
- 无人认领 → claim_timeout (5min) → pending → 再广播 → 庞统兜底
- 无人认领 → retry 3 次后升级庞统兜底
**实际代码**:
-认领基础设施完整:claim API (CAS 原子操作) + claim_task() + claim_timeout
- `_broadcast_claim()` 调度逻辑未实现
- ✅ 模糊场景直接 delegate 庞统(临时替代方案)
**实际代码 (ticker.py L540 `_broadcast_claim()`)**:
-完整实现,包含:全局并发检查(counter.is_near_limit)、空闲 Agent 列表(_get_idle_agents)、批量广播(攒一批任务一次广播)、spawn 广播、无人认领检测(retry_count >= 3 → escalated)、审计事件记录(events 表 broadcast_claim 类型)
- ✅ 确定性路径也完整(Router → Dispatcher → Spawner
**方向**: 广播认领是 v3.0 的设计目标,待进一步探讨实施时机和方案
****: 庞统初版误判为"未实现",因检查 router.py/spawner.py 时未查 ticker.py。司马懿评审纠正
---
@@ -1019,7 +1018,7 @@ SSEEventType:
| # | 功能 | 设计文档 | 复查结果 | 优先级 |
|---|------|---------|---------|--------|
| 7 | **广播认领** (自主 claim 调度) | v3.0-router-refactor §3.3 | ⚠️ 基础设施完整(claim API + CAS + claim_timeout),缺 `_broadcast_claim()` 调度逻辑。待进一步探讨实施时机 | P2 |
| 7 | ~~**广播认领** (自主 claim 调度)~~ | v3.0-router-refactor §3.3 | ✅ 已完整实现(ticker.py `_broadcast_claim()`),司马评审确认。移至 §17.3 | ~~P2~~ |
| 8 | **方案审查自动流程** | v2.6.4 §9.3 | ⚠️ reviews 表支持 plan_review 类型,但 Daemon 不会自动触发方案审查流程 | P2 |
| 9 | **审查协议注册表** (review_protocols/) | v2.6.4 §9.4 | ❌ bootstrap.py 有 `_load_review_protocols` 但 review_protocols/ 目录不存在 | P2 |
| 10 | **对抗辩论模式** (high 风险任务) | v2.6.4 §9.10 | ❌ 无自动 spawn 正反方辩论。comment_type 支持 debate 系列但无自动编排 | P3 |
@@ -1030,16 +1029,17 @@ SSEEventType:
| 15 | **CLI Schema 校验** (schemas/ 目录) | v2.6.3 §3.7 | ❌ schemas/ 目录不存在 | P2 |
| 16 | **per-provider 冷却** | v2.7.2 §5 | ❌ Counter 只有 per-agent 冷却,无 per-provider 粒度 | P4 |
### 17.3 已在复查中确认实现(从列表移除)
### 17.3 已确认实现(从待实现列表移除)
| # | 功能 | 证据 |
|---|------|------|
| — | **反驳权 (Rebuttal)** | ✅ RebuttalManager (review.py:273) + comment_type 含 rebuttal/rebuttal_response/debate_* + 前端 UI |
| — | **Checkpoint 机制** | ✅ checkpoint_routes.py (6 端点) + CheckpointPanel.tsx + db.py checkpoints 表 + 前端 TaskModal 集成 |
| — | **Artifact 成果物面板** | ✅ ArtifactPanel.tsx + ArtifactList.tsx + API 预览/下载端点 |
| — | **L2 Subagent spawn** | ⚠️ 骨架已有:spawner.spawn_subagent() 存在但标注 TODO: F17,通过 Gateway API 实现 |
| — | **假死复活术** | ⚠️ 部分实现:health.py zombie 检测 + spawner._revive_session() 存在,但 v2.7.2 完整流程未集成到 ticker |
| — | **Runaway Guard** | ⚠️ Ticker 有 max_ticks(测试用),但不是 per-task 粒度 |
| # | 功能 | 证据 | 移除原因 |
|---|------|------|---------|
| — | **反驳权 (Rebuttal)** | ✅ RebuttalManager (review.py:273) + comment_type 含 rebuttal/debate_* + 前端 UI | 用户复查确认 |
| — | **Checkpoint 机制** | ✅ checkpoint_routes.py (6 端点) + CheckpointPanel.tsx + db.py checkpoints 表 | 用户复查确认 |
| — | **Artifact 成果物面板** | ✅ ArtifactPanel.tsx + ArtifactList.tsx + API 预览/下载端点 | 用户复查确认 |
| — | **广播认领** | ✅ ticker.py `_broadcast_claim()` 完整实现(全局并发检查 + 批量广播 + retry 3 次 + 庞统兜底) | **司马懿评审纠正** |
| — | **L2 Subagent spawn** | ⚠️ 骨架已有:spawner.spawn_subagent() 存在但标注 TODO: F17 | 部分实现 |
| — | **假死复活术** | ⚠️ health.py zombie 检测 + spawner._revive_session() | 部分实现 |
| — | **Runaway Guard** | ⚠️ Ticker 有 max_ticks(测试用),但不是 per-task 粒度 | 部分实现 |
---
@@ -1104,21 +1104,21 @@ TERMINAL_STATUSES = frozenset() ← 空集,无终态
**司马重点验证**: 是否有 v2.8 之后的某个专题设计文档更新了状态转换矩阵,而我们没看到?
### 19.2 广播认领 vs Delegate 庞统 🔀(待进一步探讨
### 19.2 广播认领 vs Delegate 庞统 ✅(已解决,非矛盾
**v3.0-router-refactor 设计**: 双路径调度
- 确定性路径:已知下一步谁做 → 直接 spawn
- 广播认领路径:不确定 → spawn 所有空闲 Agent → 自主 claim
- 无人认领 → claim_timeout → 庞统兜底
- 无人认领 → retry 3 次 → 庞统兜底
**实际代码**:
- ✅ 确定性路径已实现(Router → Dispatcher → Spawner
- 广播认领路径未实现(`_broadcast_claim()` 不存在)
- 临时替代:模糊场景直接 delegate 庞统
**实际代码 (已确认实现)**:
- ✅ 确定性路径Router → Dispatcher → Spawner
- 广播认领路径ticker.py `_broadcast_claim()` 完整实现
- ✅ 庞统兜底:retry_count >= 3 → escalated → delegate
**评估**: 这是 v3.0 的核心设计目标,不是"已废弃"。当前 delegate 庞统是临时方案。**待进一步探讨实施时机和方案**
**结论**: 设计和代码一致,双路径都完整实现。从矛盾列表移除
**司马重点验证**: 是否有其他设计文档补充了广播认领的实施细节?
**纠正记录**: 庞统初版只检查了 router.py/spawner.py,遗漏了 ticker.py L540。司马懿评审纠正。
### 19.3 `_generate_title()` 绕过 Gateway 👻 BUG
@@ -1279,6 +1279,6 @@ PRAGMA busy_timeout=5000 # 写锁等待 5s
| **需求探索** | — | — | 苏格拉底对话, 动态规划 |
| **主动汇报** | SSE 推送 | — | 自然语言摘要 |
**总计**: ✅ 已实现 24 项 | ⚠️ 部分实现 9 项 | ❌ 未实现 13
**总计**: ✅ 已实现 25 项 | ⚠️ 部分实现 8 项 | ❌ 未实现 12
> 上述数据经 2026-05-28 用户复查修正。移除了已确认实现的 9 项(反驳权、Checkpoint、Artifact 面板等),合并了部分实现
> 上述数据经 2026-05-28 用户复查 + 司马懿评审修正。广播认领从未实现移至已实现。