Claudeに計画書を監査させたら、シーソーが止まらなかった話

いつも楽しくAIプログラミングー。
俺はいつも、計画書を作って監査させて、さぁ実装だ、という流れでやってます。

特に Opus 4.7 になってから、その監査がうまくいかない気がしてた。Opusの視野が広がったからだろうか? 自分の計画とは的外れな指摘を持ってきたり、監査・修正の自動ループ回させると指摘が収束しないことも増えた。
モグラたたき
そしてある日、気づいた。
思想がちょっとややこしいプログラム書いてると、毎回あーでもないこーでもないって言って、遠回しなループっていうか、これモグラたたきし続けてるだろ。
「Aの観点でBが弱い」と言われて、Bを直す。次の監査で「Bが過剰でAが薄い」と言われる。Aを足したら今度は「Cの整合が取れてない」。Cを直したら「Cの記述が冗長」。直したら「Cの説明が足りない」。
シーソー。永遠に出口がない。
やってみたこと
これに気づいた俺は、こんなことをしてみた。
程々出来上がった計画書(監査は1, 2回やったやつ)に対して、「計画書の矛盾点だけを監査してくれ」とお願いする。
これがバッチリだった。矛盾点をちゃんと潰していってくれて、何度か監査させたらちゃんと収束した。
矛盾点の数は有限だから、ちゃんと収束するんだね。

そして計画書の矛盾が無くなった状態で実装させると、どこも止まらないで最後まで突っ走る(笑)
もちろん、たまに実装上のエラーがあってリトライしてたりはするけどね。
で、世の中にあるのか気になった
ここまで来て、ふと気になった。これって自分が初めて気づいたわけじゃないだろ、絶対。同じこと考えた人いるはずだ。
調べてみた。
似たのはあった。でも、なんか違う。端的にややこしい。
| 既存の呼び名 | どんな現象か | 自分のやり方との違い |
|---|---|---|
| Criteria Drift(Hamel Husain / Shankar et al.) | LLMにレビューさせると評価軸がじわじわズレる | 対策が「評価軸を磨き直して過去のスコアを再採点」…重い |
| Oscillatory Convergence(Fractal Thought Engine) | 反復フィードバックで解法を行ったり来たりするセッションが一定数ある | 観測はされてるけど、対策の話ではない |
| Moving the Goalposts(Microsoft) | 評価中にrubricを動かすな、開始前に確定しろ | 「確定させる」止まりで、軸を1点に絞る話ではない |
参照した一次ソースはこの3つ。
Creating a LLM-as-a-Judge That Drives Business ResultsLLMにレビューさせると評価軸がズレる Criteria Drift の解説(Shankar et al.)hamel.dev LLM Feedback Dynamics反復フィードバックで解法アプローチが振動する Oscillatory Convergence の観測Fractal Thought Engine Evaluating AI Agents: Techniques to Reduce Variance and Boost Alignment for LLM-Judges評価開始前に rubric を確定せよ(Moving the Goalposts を避ける)Microsoft Tech Community近い話はあるんだ。でも自分がやったのは「rubricを確定させる」じゃなくて「評価軸そのものを矛盾の1点に絞る」。観点が広い限り指摘ネタは無限に湧くから、観点側を有限な集合に閉じ込めにいく。これが端的に書かれた既存研究は見つからなかった。
たぶん、どこかには書いてあると思う。あるはずなんだけど、論文の言葉で書かれてて、自分が気づいた頃にはもう2ヶ月経ってた。
言われてみれば単純
書いてみると単純な話だった。「観点を絞れば収束する」、それだけ。
でも自分は2ヶ月気づかなかった。
「Claudeを賢く使えば直る」と思って、プロンプトの書き方をひたすら変えてた。「指摘しすぎないで」「過去の指摘と一貫して」と書いても、効かない。書き方の問題じゃなかったから。
観点を「有限なものだけ」に絞る、という発想が出るまで時間がかかった。普通に監査させると観点が広いから、何直しても別の角度から穴が見つかる。それだけの話だった。
まとめ
- 計画書を監査させて収束しない時は、観点を「矛盾点だけ」に絞る
- 矛盾点は有限なので、ちゃんと収束する
- 普通に監査させると観点が広いので、指摘が無限に湧いてモグラたたきになる
- 矛盾が無くなった計画書を実装させると、止まらず最後まで走る
同じ罠でモグラ叩きしてる人がいたら、書いた甲斐ある。
いいことをした日は気分がいい。