diff --git a/docs/review/v2-merged-audit.md b/docs/review/v2-merged-audit.md new file mode 100644 index 0000000..a89740d --- /dev/null +++ b/docs/review/v2-merged-audit.md @@ -0,0 +1,165 @@ +# moziplus v2.0 背靠背合并审查报告 + +> **版本**: v1.0 +> **日期**: 2026-05-19 +> **作者**: 庞统🐦 + 司马懿🗡️ +> **方法**: 庞统 vs 司马懿独立审查(背靠背),合并去重、交叉验证 +> **子报告**: 庞统 backend-audit.md / frontend-audit.md / prd-coverage-audit.md + 司马懿 simayi-independent-audit.md + +--- + +## 零、交叉验证结论 + +### 两份审查一致的部分(高置信度) + +两份报告在以下核心结论上**完全一致**: + +| 结论 | 庞统 | 司马懿 | +|------|------|--------| +| 安全红线(guardrails)是最大 P0 缺口 | ✅ C9 部分实现,R1/R4 缺失 | ✅ 6条中仅2.5条落地 | +| development-plan 严重滞后 | ✅ v2.8标注"待开发"但代码已完成 | ✅ 同 | +| 4个模块"已实现未集成" | ✅ HealthChecker/BootstrapBuilder/InboxWatcher/ExperienceDistiller | ✅ ExperienceStore未auto-distill + router.py未走新路由 | +| 前端组件死代码 | ✅ MorningPanel/GlobalSearch未注册 | ✅ 5个组件无import | +| 文档版本混乱 | ✅ architecture-v2.md应归档 + 10份Topic应归档 | ✅ 同+product-direction-notes | +| 黑板/Ticker/Checkpoint 质量高 | ✅ 与设计高度一致 | ✅ 端到端贯通质量高 | + +### 两份审查的互补发现 + +| 发现 | 来源 | 另一方是否覆盖 | +|------|------|--------------| +| checkpoint_routes.py `_bb()` Bug | 庞统 | ❌ 司马懿未发现 | +| TaskModal StatusButtons 无 onClick | 庞统 | ❌ 司马懿未发现(前端审查更深入) | +| GET /api/daemon/sessions 未实现 | 司马懿 | ❌ 庞统未发现 | +| PATCH vs POST status 偏差 | 司马懿 | ❌ 庞统未发现(API语义审查更细致) | +| DELETE vs POST archive 偏差 | 司马懿 | ❌ 庞统未发现 | +| FK恢复缺finally保护 | 司马懿 | ❌ 庞统未发现(DB层更仔细) | +| 5个前端Tab超前实现(Mail/Usage/Templates/Morning/GlobalSearch) | 庞统 | ⚠️ 司马懿标记为"死代码"(视角不同) | +| 10个任务模板(TEMPLATES)超前 | 庞统 | ❌ 司马懿未发现 | +| Dispatcher可能走legacy路由 | 司马懿 | ❌ 庞统未发现 | + +--- + +## 一、合并后的问题清单(按优先级排序) + +### 🔴 P0(必须修)— 5 项 + +| # | 问题 | 发现者 | 证据 | 行动 | +|---|------|--------|------|------| +| **P0-1** | **安全红线未落地** | 双方一致 | PRD §10.1 六条红线,实盘交易拦截(R1)+系统配置变更拦截(R3)完全无代码;Token消耗追踪(R4)无拦截 | 创建 guardrails.yaml,实现 L1 硬检查 | +| **P0-2** | **development-plan 严重滞后** | 双方一致 | v2.8/M3 标注"待开发"但代码已完成且评审通过 | 立即更新 development-plan | +| **P0-3** | **checkpoint_routes.py `_bb()` 运行时 Bug** | 庞统 | L35 调用 `registry.get_db_path()` 但 registry.py 无此方法 | 修复为正确的方法调用 | +| **P0-4** | **TaskModal StatusButtons 无 onClick** | 庞统 | TaskModal.tsx L141-168 渲染按钮但未绑定处理函数 | 补充 onClick 处理 | +| **P0-5** | **FK恢复缺finally保护** | 司马懿 | db.py _migrate_v28 中 `PRAGMA foreign_keys=OFF` 后异常时无法恢复 | 加 finally 块 | + +### 🟡 P1(应该修)— 10 项 + +| # | 问题 | 发现者 | 证据 | +|---|------|--------|------| +| **P1-1** | HealthChecker未集成到Ticker | 庞统 | health.py完整实现,Ticker未调用 | +| **P1-2** | BootstrapBuilder未集成到Spawner | 庞统 | bootstrap.py 215行,Spawner用自己模板 | +| **P1-3** | InboxWatcher未集成到Ticker | 庞统 | inbox.py完整,事件驱动未启用 | +| **P1-4** | ExperienceStore未自动蒸馏 | 双方 | experience.py 291行,无auto-distill | +| **P1-5** | GET /api/daemon/sessions 未实现 | 司马懿 | technical-design L768定义,spawner有数据未暴露 | +| **P1-6** | 5个前端组件死代码 | 双方 | MorningPanel/ArtifactList/ArtifactPanel/GlobalSearch/ConfirmDialog 无import | +| **P1-7** | ArtifactPanel未集成到TaskModal | 司马懿 | v2.8 §5.1要求,组件已写未接入 | +| **P1-8** | 设计文档版本混乱 | 双方 | architecture-v2.md + 3份重复Topic + product-direction-notes 未归档 | +| **P1-9** | Dispatcher可能走legacy路由 | 司马懿 | dispatcher.py _legacy_dispatch,新Router未生效 | +| **P1-10** | 苏格拉底Skill未注册 + AI规划环节缺失 | 司马懿 | PRD C1/C2核心能力,平台层未落地(依赖Agent Skill) | + +### 🟢 P2(可以后修)— 8 项 + +| # | 问题 | 发现者 | +|---|------|--------| +| P2-1 | PATCH status → POST status API语义偏差 | 司马懿 | +| P2-2 | DELETE project → POST archive 偏差(代码更安全,应更新设计) | 司马懿 | +| P2-3 | DAG拓扑视图未实现 | 庞统 | +| P2-4 | SSE实时推送(前端仍用HTTP 5s轮询) | 庞统 | +| P2-5 | 通知中心完整实现(仅铃铛占位) | 庞统 | +| P2-6 | 乐观锁(expected_version) | 庞统 | +| P2-7 | Subagent spawn为placeholder | 庞统 | +| P2-8 | agent-api-contract/routing-redesign未在主架构引用 | 司马懿 | + +--- + +## 二、合并后的 PRD 覆盖率 + +### §5 十大能力 + +| 能力 | 庞统评级 | 司马懿评级 | 合并评级 | +|------|---------|-----------|---------| +| C1 需求探索 | ⚠️ 部分(依赖Agent Skill) | ❌ 缺口(Skill未注册) | ⚠️ **部分** — 框架有,Skill未注册,属P1 | +| C2 动态规划 | ✅ 完整 | ⚠️ 部分(无AI规划环节) | ⚠️ **部分** — 有路由+审查+调度,缺显式AI规划 | +| C3 持续指挥 | ✅ 完整 | ✅ 完整 | ✅ **完整** | +| C4 共享意识 | ✅ 完整 | ✅ 完整 | ✅ **完整** | +| C5 自主协作 | ⚠️ v2.1+ | ❌ v2.1+ | ✅ **预期缺口** | +| C6 质量门禁 | ✅ 完整 | ✅ 完整 | ✅ **完整** | +| C7 主动汇报 | ✅ 完整 | ✅ 完整 | ✅ **完整** | +| C8 经验沉淀 | ✅ 完整 | ✅ 完整(+未自动调用) | ⚠️ **部分** — 代码完整但未集成自动流程 | +| C9 安全护栏 | ⚠️ 部分 | ⚠️ 部分(2/6落地) | ⚠️ **部分** — **P0缺口** | +| C10 工具链 | ❌ v2.1+ | ❌ v2.1+ | ✅ **预期缺口** | + +**合并覆盖率:4/10 完整,4/10 部分,2/10 预期缺口(v2.1+)** + +### §10.1 安全红线 + +| 红线 | 双方一致评级 | +|------|------------| +| R1 实盘交易拦截 | ❌ **P0** | +| R2 数据删除 | ⚠️ 部分(archive而非delete) | +| R3 系统配置变更 | ❌ **P0** | +| R4 Token消耗 | ⚠️ 部分(有警告无拦截) | +| R5 Agent不受控 | ✅ 完整 | +| R6 连续失败 | ✅ 完整 | + +--- + +## 三、做得好的(双方认可) + +1. **黑板模块完整扎实** — operations.py 20+方法,覆盖设计文档全部要求 +2. **v2.8 + M3 端到端贯通** — DDL→operations→routes→CheckpointPanel→TaskModal,质量高 +3. **Ticker 持续指挥** — 580行实现,调度/超时/依赖推进/审查分发职责清晰 +4. **状态机严格实现** — VALID_TRANSITIONS + CHECK约束双重保障 +5. **前端12 Tab全覆盖** — 远超PRD预期(PRD标注v2.1+) +6. **v2.7/v2.8超前实现** — 开发计划标"待开发"但实际已完成 +7. **per-project SQLite隔离** — registry.db + 多blackboard.db,架构清晰 +8. **Agent友好API** — 详细错误响应含hint + valid_values + +--- + +## 四、行动优先级 + +### 第一批(本周)— P0 修复 + +| 行动 | 工作量 | +|------|--------| +| 修复 checkpoint_routes.py `_bb()` Bug | 0.5h | +| 修复 TaskModal StatusButtons onClick | 2h | +| 修复 db.py _migrate_v28 FK finally 保护 | 0.5h | +| 更新 development-plan v2.8 状态 | 1h | +| 创建 guardrails.yaml(R1/R3/R4 三条红线) | 1-2天 | + +### 第二批(下周)— P1 集成 + +| 行动 | 工作量 | +|------|--------| +| HealthChecker 集成到 Ticker | 2h | +| BootstrapBuilder 集成到 Spawner | 4h | +| 补实现 GET /api/daemon/sessions | 1h | +| ArtifactPanel 集成到 TaskModal | 2h | +| 清理/接入前端死代码组件 | 2h | +| 文档归档(10份过期文档) | 0.5h | +| Dispatcher 确认走新路由 | 1h | + +### 第三批(v2.1+) + +| 行动 | 说明 | +|------|------| +| 苏格拉底Skill注册 | 依赖Agent层 | +| AI动态规划环节 | 依赖Agent层 | +| DAG拓扑视图 | 需React Flow | +| SSE实时推送 | 前端改造 | +| 工具链自动化 | PRD v2.1+ | + +--- + +*合并审查完毕。庞统🐦 + 司马懿🗡️ 2026-05-19*