--- phase: 11 reviewers: [codex, opencode] reviewed_at: 2026-05-01T12:30:00+08:00 plans_reviewed: [11-01-PLAN.md, 11-02-PLAN.md, 11-03-PLAN.md, 11-04-PLAN.md, 11-05-PLAN.md] --- # Cross-AI Plan Review — Phase 11: predictV3算法优化 ## Codex Review ### Summary 计划技术上是合理的,但有几个需要注意的地方:依赖关系修复、数据验证、性能保护和边缘情况处理。整体架构遵循现有模式良好,NDCG@5 和 MRR 作为排名评估指标是适当的。 ### Strengths - 计划结构清晰,任务分解合理 - NDCG@5、MRR、命中分布都是业界标准的排名质量评估指标 - 扩展字段明确(ndcg_5、mrr、hit_distribution、precision_5) - 整体架构遵循现有代码模式 ### Concerns | Severity | Concern | |----------|---------| | HIGH | **依赖关系错误**: Plan 05 (二阶马尔可夫) 不应依赖 Plans 01 和 03 — 它是独立的增强功能 | | HIGH | **数据验证缺失**: 需要最小样本量检查 — 置信度计算建议 50+ 期,二阶马尔可夫建议 150+ 期 | | MEDIUM | **性能保护**: 网格搜索需要超时保护和最优权重缓存机制 | | MEDIUM | **边缘情况**: NDCG 计算需要空预测保护;命中分布需要定义明确的统计桶 | ### Suggestions - 修复 Plan 05 的依赖关系,使其独立执行 - 添加数据量阈值验证,不足时返回提示或回退策略 - 为网格搜索添加执行超时限制(如 60 秒) - 在 NDCG/MRR 计算前检查 `$details` 是否为空 ### Risk Assessment **MEDIUM** — 依赖关系和边缘情况需要修复,否则执行可能失败。 --- ## OpenCode Review ### Summary Phase 11 计划在功能扩展方向上合理,在现有 V3 预测算法(9维度 + 动态权重)基础上增加置信度评估、回测指标扩展、权重优化和二阶马尔可夫链增强。计划整体结构清晰,依赖关系明确,但存在若干实现细节缺失和潜在风险需要补充。 ### Strengths - Plan 01 任务分解合理,指标选择专业 - Plan 02 与回测指标扩展解耦,可独立实现 - Plan 03 依赖明确,在现有弹窗架构内实现 - Plan 04 网格搜索是系统化的超参数优化方法 - Plan 05 二阶马尔可夫是合理的算法增强方向 ### Concerns | Severity | Concern | |----------|---------| | HIGH | **Plan 01: NDCG 计算公式不明确** — 需要确认基于什么"理想排名"计算,relevance score 定义模糊 | | HIGH | **Plan 01: hit_distribution 定义模糊** — 具体指什么分布?按命中排名?按命中/未命中按期数分布? | | HIGH | **Plan 02: "历史排名命中率"数据来源不明** — 现有 `_runBacktestV3` 不保存历史命中率数据,需要明确是实时计算还是缓存 | | HIGH | **Plan 02: "多维度一致性"定义不明** — 具体指哪些维度之间的一致性?如何量化? | | HIGH | **Plan 04: 5 种权重配置未明确** — 缺少具体配置清单 | | HIGH | **Plan 04: 优化目标不明确** — 用哪个指标作为优化目标?hit_rate?NDCG?MRR? | | HIGH | **Plan 05: 状态空间爆炸** — 二阶马尔可夫状态空间大(尾数 10×10=100),100 期历史数据下很多状态对从未出现,概率估计不准确 | | HIGH | **Plan 05: 100 期阈值缺乏依据** — 二阶马尔可夫需要更长历史,建议至少 200-300 期 | | MEDIUM | **Plan 01: precision_5 与 hit_rate 关系** — 两者都是 Top-5 命中,是否重复?建议区分或合并 | | MEDIUM | **Plan 02: 置信度百分比计算公式** — 三个维度如何加权组合?权重比例未明确 | | MEDIUM | **Plan 02: 数据量要求** — 历史 < 20 期时置信度不准确,缺少 fallback 策略 | | MEDIUM | **Plan 03: UI 设计细节缺失** — 未提供具体布局建议,置信度展示样式不明确 | | MEDIUM | **Plan 03: 命中分布图表实现** — 未说明使用 ECharts 还是 CSS,数据量大时需考虑性能 | | MEDIUM | **Plan 04: 结果持久化** — 每次调用都重新计算?建议增加缓存 | | MEDIUM | **Plan 04: 计算量** — 5 配置 × 50 期回测 = 250 次预测,响应时间长,建议异步 | | MEDIUM | **Plan 05: 一阶/二阶切换逻辑** — 判断条件不明确:总期数阈值还是状态对观察次数阈值? | | MEDIUM | **Plan 05: 与现有一阶权重关系** — 二阶是独立维度还是替换一阶? | | LOW | **Plan 01: 计算性能** — 每次回测批量计算可能影响性能 | | LOW | **Plan 02: 返回值结构** — 是否每个号码都提供置信度? | | LOW | **Plan 03: 前端数据量** — 命中分布是否需要分页/滚动加载? | | LOW | **Plan 03: 国际化** — 新增 UI 文本是否需要多语言? | | LOW | **Plan 05: 性能影响** — 二阶计算复杂度高于一阶 | ### Suggestions **Plan 01:** - 补充 NDCG 公式:DCG = Σ(1/log2(rank+1)),IDCG = Σ(1/log2(i+1)) for i=1..hits - 明确 hit_distribution 结构:`{rank_1: n, rank_2: n, ..., rank_5: n, miss: n}` - 添加回测结果缓存机制 **Plan 02:** - 将"多维度一致性"改为"预测得分集中度",基于 Top-5 得分与平均得分差距计算 - 明确加权公式:`confidence = 0.4*historical + 0.3*score + 0.3*consistency` - 历史命中率作为 `_runBacktestV3` 副产品,调用一次获取 **Plan 03:** - 补充 UI 设计 mockup 或具体说明 - 使用现有 ECharts 展示命中分布 - 置信度用红/黄/绿三色表示高/中/低 **Plan 04:** - 补充 5 种预定义配置的具体权重值 - 定义优化目标:综合 hit_rate(60%) + avg_rank(40%) - 使用后台队列异步处理,返回 task_id **Plan 05:** - 重新评估二阶马尔可夫必要性 — 49选1彩票数据稀疏性严重 - 替代方案:加权 N 阶马尔可夫(70% 二阶 + 30% 一阶) - 明确判断标准:`count($history) >= 200 && $statePairCount >= 5` ### Risk Assessment **MEDIUM** — 实现复杂度中等,数据稀疏性问题高,多处定义不明确需补充。建议优先实现 Plan 01、02、04,将 Plan 05 作为可选高阶优化或重新评估必要性。 --- ## Consensus Summary ### Agreed Strengths - 计划结构清晰,任务分解合理 ✓ - NDCG@5、MRR 是适当的排名质量评估指标 ✓ - 整体架构遵循现有代码模式 ✓ - 网格搜索是系统化的参数优化方法 ✓ ### Agreed Concerns (Highest Priority) | Priority | Concern | Source | |----------|---------|--------| | 1 | **Plan 05 依赖关系错误** — 不应依赖 01、03,是独立功能 | Codex + OpenCode | | 2 | **数据量验证缺失** — 置信度需 50+,二阶马尔可夫需 150-200+ | Codex + OpenCode | | 3 | **边缘情况处理** — NDCG/MRR 空预测保护,hit_distribution 定义模糊 | Codex + OpenCode | | 4 | **Plan 05 状态空间爆炸** — 100 期数据下二阶马尔可夫概率估计不准 | OpenCode | | 5 | **Plan 02 置信度维度定义不明** — "多维度一致性"如何量化 | OpenCode | | 6 | **Plan 04 配置未明确** — 5 种权重具体值缺失,优化目标不明 | OpenCode | | 7 | **性能影响** — 网格搜索需超时/异步,二阶马尔可夫计算量大 | Codex + OpenCode | ### Divergent Views | Issue | Codex | OpenCode | |-------|-------|----------| | Plan 05 数据阈值 | 建议 150+ | 建议 200-300+,并要求状态对观察次数 >= 5 | | precision_5 与 hit_rate | 未提及 | 认为可能重复,建议区分 | --- ## Action Items for Replanning 1. **Fix Plan 05 depends_on** → 改为 `depends_on: []` 2. **Add data validation** → 所有计算方法添加最小数据量检查和 fallback 3. **Clarify NDCG formula** → 补充完整公式到 Plan 01 Task 1 4. **Clarify hit_distribution** → 明确结构为 `{rank_1..rank_5: counts}` 5. **Clarify confidence dimensions** → 重命名"多维度一致性"为"得分集中度" 6. **Add weight configs** → Plan 04 补充 5 种具体权重配置值 7. **Raise 2nd-order threshold** → Plan 05 改为 200 期 + 状态对观察次数检查 8. **Add performance protection** → 网格搜索添加超时限制,考虑异步