概要
detectRuleIndex() のステータスタグ検出を、最初のマッチから最後のマッチに変更する。
背景
エージェントの出力中に [STEP_NAME:N] パターンが複数出現する場合がある。例えばレビュアーが前回のイテレーション結果を引用して [AI_REVIEW:1] と書き、末尾で実際の判定として [AI_REVIEW:2] を出力するケース。
現在の detectRuleIndex() は最初のマッチを採用するため、引用中のタグ([AI_REVIEW:1])が本来の判定([AI_REVIEW:2])より先にヒットし、意図しない遷移が発生する。
再現例
[ai-antipattern-reviewer]:
# AI生成コードレビュー — Iteration 2
前回の [AI_REVIEW:1] では問題なしだったが... ← これが先にヒット
## 結果: REJECT
[AI_REVIEW:2] ← 本来の判定
期待: rule index 2 → ai_fix へ遷移
実際: rule index 1 → 次のレビューステップへ遷移
修正方針
src/claude/client.ts の detectRuleIndex() で、正規表現マッチの最後の出現を採用する。
// before: 最初のマッチ
const match = content.match(pattern);
// after: 最後のマッチ(全マッチから末尾を取得)
const matches = [...content.matchAll(patternGlobal)];
const match = matches.at(-1);
概要
detectRuleIndex()のステータスタグ検出を、最初のマッチから最後のマッチに変更する。背景
エージェントの出力中に
[STEP_NAME:N]パターンが複数出現する場合がある。例えばレビュアーが前回のイテレーション結果を引用して[AI_REVIEW:1]と書き、末尾で実際の判定として[AI_REVIEW:2]を出力するケース。現在の
detectRuleIndex()は最初のマッチを採用するため、引用中のタグ([AI_REVIEW:1])が本来の判定([AI_REVIEW:2])より先にヒットし、意図しない遷移が発生する。再現例
期待: rule index 2 →
ai_fixへ遷移実際: rule index 1 → 次のレビューステップへ遷移
修正方針
src/claude/client.tsのdetectRuleIndex()で、正規表現マッチの最後の出現を採用する。