9 月 15 日,Claude Code 的 GitHub 上多了一則 issue(#94519)。作者想用高一點的等級審一段分支差異,打了這行:

1
/code-review origin/main...origin/my-feature-branch high

等級擺最後面,讀起來很順,像在句尾補一句「用 high 跑」。照他自己的描述,「my high got swallowed into the review target」,那個 high 被吞進了審查目標。沒有錯誤,也沒有警告,review 落回 session 原本的 effort 去跑。他回報的數字是 36 個 subagent、大約 1,560 則訊息、56 分鐘,然後收到一行 403 insufficient balance。他填的版本是 2.1.271。

5 月 26 日我寫過一篇〈Claude Code /code-review 完整教學〉,講 /simplify 改名和 --comment 的幾種行為。那篇提到的「四個平行 agent」跟「confidence 80 門檻」,在現行官方文件裡已經找不到,別再拿來當規格用。這篇補兩件那篇沒寫的事:一行指令到底是怎麼被切開的,還有 v2.1.288 新增的 --max-findings。後者有個跟等級一樣的脾氣,它會記住你上次打了什麼。

前面是勾選框,後面是備註欄

commands 頁列的完整語法長這樣(/review 是它的別名,語法相同):

1
/code-review [low|medium|high|xhigh|max|ultra] [--fix] [--comment] [--max-findings n|all|default] [pr#|branch|path]

把它想成一張紙本申請單。上半部是一排勾選框,等級勾一個,旗標要哪個勾哪個。最底下有一大格「備註」,寫什麼都照收。Claude Code 讀這行字也是照這個順序。code-review 頁寫得很直白:讀完等級和旗標之後,沒有 ultra 的時候,「everything left is the review target, even when it starts with another command name」。剩下的全部都是審查目標,連開頭長得像另一個指令名稱的字串也一樣。

麻煩就在那格備註不挑內容。origin/main...origin/my-feature-branch high 整串掉進備註欄之後,high 只是備註的最後一個字。申請單不會退回來問你「這個字是不是想勾等級」,所以 issue 的作者一點提示都沒拿到。等到出結果,已經是 56 分鐘之後的事。

這裡有個容易想歪的地方。你可能會覺得 high 沒生效,頂多就是用比較低的等級跑一輪,便宜收場。但它掉回去的是 session 當下的 effort,那個值是多少,取決於 session 當下設的是什麼,跟你這行字想表達的毫無關係。那位作者落回去的那個 effort,最後燒到餘額不足。

所以第一條規則很土:等級和旗標放前面,目標放最後。

嫌它報得少,先分清楚是哪一種少

順序搞定之後,還有另一種不滿:review 跑完只報了幾條,你總覺得不只這些。直覺反應是把等級往上推。

推等級確實會改變結果,改的卻不是條數。文件對 effort 的描述是拿 coverage 換 confidence。low 只回報它最有把握的那些,誤報比較少;medium 到 max 則是「broadens coverage」,看的範圍變廣。

看得廣跟報得多,是兩個不同的旋鈕。拿出海捕魚來比,effort 是網子撒多大一片,回報上限是船艙裝得下幾條。網子撒得再大,船艙沒變的話,多撈到的就裝不回來。上限會不會跟著等級變,文件沒寫,我也不知道,所以這個比喻只講到「它們是兩個旋鈕」為止。

那個上限是多少?官方文件只用了「the review’s usual limit」這幾個字,沒給數字。我找到最接近的線索在另一則 issue #92436:一位使用者從 coordinator subagent 的轉錄裡,抄出了他看到的提示開頭:high effort → 3+5 angles × 6 candidates → 1-vote verify (recall-biased) → ≤10 findings。

這是第三方貼出來的轉錄,不是官方規格。那則 issue 本身也是在報 bug,內容是 low 等級照樣跑完整的高等級流程,到 2026 年 10 月 8 日還是 open 狀態。所以我不會把「10 條」當成定數,只當它是「上限確實存在」的旁證。

–max-findings 動的是船艙

v2.1.288 給了一個直接改船艙大小的旗標。CHANGELOG 那條寫的是 --max-findings <n>|all,用途是「to report more or fewer findings than the usual limit」。文件版多列了一個值 default。所以它有三種寫法:給數字 n,最多報 n 條;給 all,有幾條報幾條;給 default,回到平常的上限。changelog 寫的是「more or fewer」,填一個比較小的數字讓報告變短,也是正當用法。

官方文件沒有給這個旗標的範例指令。下面這行是我照前面那條語法的順序拼出來的,等級在前、旗標在後,我沒有實際跑過:

1
/code-review high --max-findings all

2.1.288 上 npm 的時間是 UTC 2026 年 10 月 2 日。要注意通道:同樣以 10 月 8 日 npm 的 dist-tags 來看,stable 還停在 2.1.285,比 2.1.288 舊,所以走 stable 通道的人目前應該還沒有這個旗標。這是我從版本號推出來的,文件沒有直接這樣寫。我本機的 claude --version 是 2.1.294(2026 年 10 月 8 日)。

兩個會跟著你到下一個 session 的值

--max-findings 的文件說明最後一句是:「Later reviews reuse the value you typed until you pass --max-findings default.」你今天打一次 all,之後每一次 review 都是 all,直到你親手打 default 為止。

等級也有類似的記憶,只是規則不一樣。沒打等級的時候,review 會沿用你最後一次打的 low 到 max 之間那個等級,「even in an earlier session」,前一個 session 打的也算,並且會跳一則提示,例如 Reusing high effort, the level you typed last time。有兩個例外:在非互動的 -p 模式裡打的等級不會更新這個記憶;ultra 既不更新、也不使用這個記憶。

早餐店老闆記得你的「老樣子」,很方便。但這家店其實有兩本帳:一本記你點幾號餐,一本記你要不要加蛋。你今天改口說要大杯,加蛋那本照舊翻到上次那頁。兩本帳的重設方式也不同,餐點這本你換個說法它就更新,加蛋那本得明講「恢復原本的」才會改。

對照到 /code-review,等級是第一本,--max-findings 是第二本。旗標說明那段只寫了值會沿用到你打 default 為止,沒說沿用時會不會像等級那樣跳提示。如果不會,你上週為了某個大 PR 打過的 all,就會安安靜靜地套在今天每一個小改動上。

所以我自己的做法會是:等級每次明打在最前面,不靠記憶;--max-findings 只在需要的那一次加,下一次 review 就打 default 收回來。如果你本來就固定用同一個等級、同一個條數,這兩本帳反而替你省事,上面這段可以直接跳過。另一個會讓我改變做法的情況,是文件哪天寫明了 all 要多花多少時間跟用量。

還沒弄清楚的部分

all 會多花多少 token、多跑多久,文件沒寫,n 有沒有上限也沒寫。#94519 那次燒到餘額不足跟 --max-findings 無關,它是等級被吞掉的結果,我不想把兩件事混在一起。不過它讓我多留意一件事:review 預設在背景跑,結果等 review 完成才回到對話裡。如果 review 停不下來,你在對話裡大概只會看到它「還沒回來」。這是我讀文件時的推論,文件沒有這樣寫。

條數放寬也不代表每一條都對。--max-findings 改的是報幾條,沒有改每一條的判斷。在乎誤報的話,文件指的方向是 low,它只報最有把握的那些。

另外提一個跟記憶無關、但也是「事後才發現」型的坑:搭配 --fix 時,文件寫背景 review 套用的修改「outside your session’s checkpoints」,/rewind 退不回去,要用 git 還原。

這篇關於旗標行為的描述,全部來自官方文件和兩則 issue。我沒有在自己的 repo 上跑過 /code-review 搭 --max-findings,那兩則 issue 也是作者自述,我沒有重現。兩則到今天都還 open,在 2.1.294 上是不是還會發生,我不知道。

那行指令該怎麼排

issue 裡那行指令如果交給我打,我會改成這樣:

1
/code-review high origin/main...origin/my-feature-branch

high 搬到最前面,其他一個字都沒動。這行一樣是照文件語法排的,我沒跑過。真的嫌報得少,就在 high 後面插一個 --max-findings,並且記得下一次要把它收回 default。

那位作者的指令沒有打錯任何一個字,只是 high 填進了備註欄。一行字的最後一個詞如果是你想勾的選項,它就放錯格子了。

原文來源:Code Review - Claude Code Docs(Review a diff locally、Run in the foreground 各節)、Commands - Claude Code Docs、Claude Code CHANGELOG(2.1.288 條目),以上皆以 2026 年 10 月 8 日讀取的版本為準;GitHub issue #94519、#92436;版本發布時間與 dist-tags 取自 npm view @anthropic-ai/claude-code(2026 年 10 月 8 日)