























@@ -11,9 +11,9 @@ Options:
1111 --base REF Base ref for branch review. Default: PR base or origin/main.
1212 --commit REF Commit ref for commit review. Default: HEAD.
1313 --reviewer codex|claude|pi|opencode|droid|copilot|auto
14- Review engine. Default: auto (Codex, fallback reviewer on error).
15- --fallback-reviewer claude|pi|opencode|droid|copilot|none
16- Fallback when Codex is unavailable or exits nonzero. Default: claude.
14+ Review engine. Default: Codex with configured fallback on error.
15+ --fallback-reviewer auto|claude|pi|opencode|droid|copilot|none
16+ Fallback when Codex is unavailable or exits nonzero. Default: auto.
1717 --codex-bin PATH Codex binary. Default: codex.
1818 --claude-bin PATH Claude binary. Default: claude.
1919 --pi-bin PATH Pi binary. Default: pi.
@@ -39,7 +39,7 @@ mode=auto
3939base_ref=
4040commit_ref=HEAD
4141reviewer=${AUTOREVIEW_REVIEWER:-${CODEX_REVIEW_REVIEWER:-auto}}
42-fallback_reviewer=${AUTOREVIEW_FALLBACK_REVIEWER:-${CODEX_REVIEW_FALLBACK_REVIEWER:-claude}}
42+fallback_reviewer=${AUTOREVIEW_FALLBACK_REVIEWER:-${CODEX_REVIEW_FALLBACK_REVIEWER:-auto}}
4343codex_bin=${CODEX_BIN:-codex}
4444claude_bin=${CLAUDE_BIN:-claude}
4545pi_bin=${PI_BIN:-pi}
@@ -151,7 +151,7 @@ case "$reviewer" in
151151esac
152152153153case "$fallback_reviewer" in
154- claude|pi|opencode|droid|copilot|none) ;;
154+auto|claude|pi|opencode|droid|copilot|none) ;;
155155*)
156156echo "invalid --fallback-reviewer: $fallback_reviewer" >&2
157157exit 2
@@ -206,15 +206,13 @@ printf 'branch: %s\n' "${current_branch:-detached}"
206206if [[ -n "$pr_url" ]]; then
207207printf 'pr: %s\n' "$pr_url"
208208fi
209-printf 'reviewer: %s\n' "$reviewer"
210209if [[ "$reviewer" == auto ]]; then
211-printf 'fallback-reviewer: %s\n' "$fallback_reviewer"
210+printf 'reviewer: codex\n'
211+else
212+printf 'reviewer: %s\n' "$reviewer"
212213fi
213214case "$reviewer" in
214- codex) ;;
215- auto)
216-printf 'note: Codex native review mode is the recommended and best-supported review path; fallback reviewers use a generated diff prompt.\n'
217- ;;
215+ codex|auto) ;;
218216*)
219217printf 'note: Codex native review mode is the recommended and best-supported review path; %s uses a generated diff prompt.\n' "$reviewer"
220218 ;;
@@ -455,6 +453,36 @@ run_selected_review() {
455453esac
456454}
457455456+fallback_reviewer_is_available() {
457+local selected=$1
458+case "$selected" in
459+ claude) command -v "$claude_bin" >/dev/null 2>&1 ;;
460+ pi) command -v "$pi_bin" >/dev/null 2>&1 ;;
461+ opencode) command -v "$opencode_bin" >/dev/null 2>&1 ;;
462+ droid) command -v "$droid_bin" >/dev/null 2>&1 ;;
463+ copilot) command -v "$copilot_bin" >/dev/null 2>&1 ;;
464+*) return 1 ;;
465+esac
466+}
467+468+run_auto_fallback_review() {
469+local selected
470+if [[ "$fallback_reviewer" != auto ]]; then
471+ run_selected_review "$fallback_reviewer"
472+return $?
473+fi
474+475+for selected in claude pi opencode droid copilot; do
476+if fallback_reviewer_is_available "$selected"; then
477+ run_selected_review "$selected"
478+return $?
479+fi
480+done
481+482+echo "fallback reviewer unavailable: no configured fallback CLI found" >&2
483+return 127
484+}
485+458486run_auto_review() {
459487 run_selected_review codex
460488local status=$?
@@ -470,8 +498,12 @@ run_auto_review() {
470498if [[ "$fallback_reviewer" == none ]]; then
471499return "$status"
472500fi
473-printf 'autoreview warning: codex exited %s; falling back to %s\n' "$status" "$fallback_reviewer" >&2
474- run_selected_review "$fallback_reviewer"
501+if [[ "$fallback_reviewer" == auto ]]; then
502+printf 'autoreview warning: codex exited %s; trying configured fallback reviewers\n' "$status" >&2
503+else
504+printf 'autoreview warning: codex exited %s; falling back to %s\n' "$status" "$fallback_reviewer" >&2
505+fi
506+ run_auto_fallback_review
475507}
476508477509elapsed_since() {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。