Skip to content

[FEAT] plan-review REVIEW_ENGINE 未知值应否 fail loud(现为静默回落 agy) #149

Description

@WooDragon

功能概述

目标: 决定 REVIEW_ENGINE 取到未知值时应该静默回落到 agy,还是显式失败。

动机: 现状是静默回落。这是 #146 引擎接口重构时刻意保留的既有语义,不是设计选择——当时的约束是零行为变更,策略决定被明确推给本 issue。

当前状态

plugins/plan-review/scripts/plan-review.sh 的引擎白名单:

case "$REVIEW_ENGINE" in
  claude) ENGINE_LIB="claude.sh" ; ENGINE_CMD="claude" ;;
  codex)  ENGINE_LIB="codex.sh"  ; ENGINE_CMD="${CODEX_BIN:-codex}" ;;
  *)      ENGINE_LIB="agy.sh"    ; ENGINE_CMD="agy" ;;
esac

*) 吞掉一切未知值。重构前的脚本只对 claudecodex 做特判,其余全落 agy 路径——包括默认值 gemini,也包括 REVIEW_ENGINE=gemni 这种拼写错误。

问题

拼错引擎名不会有任何提示,用户以为在用 codex,实际一直在跑 agy。审阅结果里的 Red Team Review — <engine> 头部会显示用户输入的原值(如 gemni),进一步掩盖了实际用的是别的引擎。

三个候选

方案 行为 代价
A. 维持现状 未知值静默走 agy 拼写错误无提示,可能长期误用
B. 未知值 fail-open + WARNING 走 allow + [WARNING] 未知 REVIEW_ENGINE=x,跳过审阅 拼错就等于关掉审阅,可能比静默降级更糟
C. 未知值回落 agy 但记 WARNING 日志 + stderr 行为同 A,但用户能看见 需要区分「显式 gemini / 未设」与「真未知值」,否则默认路径每次都刷警告

倾向 C:拼错的代价应该是「看得见的提示」,而不是「静默误用」(A)或「静默关掉审阅」(B)。实现上把 gemini*) 提出来做显式分支,*) 才是真未知值。

注意 B 有个反直觉的风险:审阅是质量门禁,因为一个拼写错误就整体跳过,比降级到另一个可用引擎更危险。

实现步骤

  1. 定方案(需要一次决策,不是纯实现)
  2. gemini 提为显式 case 分支,*) 只匹配真未知值
  3. 按选定方案处理 *)
  4. 补 bats:显式 gemini 无警告;未设(默认)无警告;未知值按选定行为

涉及文件

文件 变更类型 说明
plugins/plan-review/scripts/plan-review.sh 修改 引擎白名单 case
plugins/plan-review/tests/plan-review.bats 修改 新增用例
plugins/plan-review/README.md 修改 若行为变更需同步文档

兼容性考虑

  • 方案 B、C 都是行为变更,需按版本铁律同步 bump plugin.jsonmarketplace.json
  • 方案 B 会改变现有用户的实际行为(拼错的人从"跑 agy"变成"不审阅"),风险高于 C

验证方法

  • REVIEW_ENGINE=gemini 显式设置 → 无警告,走 agy
  • REVIEW_ENGINE 未设 → 无警告,走 agy(默认路径不能刷警告)
  • REVIEW_ENGINE=gemni(拼错)→ 按选定方案,且提示可见
  • bash 3.2 与 5.3 双版本全绿

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions