
作った本人に、自分の仕事の欠陥は見つけさせられない。
前回、Claudeが別のClaudeを起動する3つの仕組みを見た。数が増えるほど、扱える仕事の規模は大きくなる。だが数を増やしただけでは、間違いも同じ比率で増える。
品質管理の現場は、この問題をずっと前から知っていた。同じ人が出した指示を、同じ人がもう一度確認しても、同じ見落としを繰り返す。だからダブルチェックがある。だから査読がある。見る人を分けることそのものに意味がある。
エージェントの世界でも、構造は同じだ。第14回で見たAgent TeamsやDynamic Workflowsが規模を出せるのは事実だが、規模を安全に使うための鍵は、疑う役を独立させることにある。今回はその組み立て方を扱う。
なぜ本人チェックは効かないのか
同じ文脈にいる限り、本人チェックは同じ見落としを繰り返す。
ある指示を出したClaudeは、その指示が正しいという前提で仕事を進める。だから、その前提そのものが間違っていたときに気づきにくい。これは怠慢ではなく、同じ文脈の中にいる者の構造的な限界だ。
Anthropicのブログは、スキルという別の文脈で似た区別を語っている。
“Testing turns a skill that seems to work into one you know works.”
筆者訳テストは、動きそうに見えるスキルを、動くと分かっているスキルに変える。
「動きそうに見える」と「動くと分かっている」の間にある溝。これを埋めるのが検証で、検証を担う人格を作った本人と分けるのが敵対的検証だ。第0回で見た「あなた自身が検証ループになってしまう」という罠は、実はここにもつながっている。人間がその溝を毎回埋めているうちは、疲れる。疲れれば見落とす。だから溝を埋める役目を、別のエージェントに持たせる。
この見落としは、エージェントだけの話ではない。Flask・Jinjaの作者であるArmin Ronacherは、LLMによる自動化そのものに潜む別のリスクを指摘している。
“There is a big hidden risk with automation through LLMs: it encourages mental disengagement. When you stop thinking like an engineer, quality drops, time gets wasted.”
筆者訳LLMによる自動化には大きな隠れたリスクがある。思考の離脱を助長することだ。エンジニアとして考えることをやめた瞬間、品質は落ち、時間は無駄になる。
つまり、疑う役が要るのはエージェント側の構造的な限界だけが理由ではない。任せる人間の側も、考えることをやめた瞬間に同じ見落としを重ねる。だからこそ疑う役は、「気をつける」という心構えではなく、別の人格として組織に組み込む必要がある。
作る役と疑う役を分ける
この2つの役は、同じ人格に持たせてはいけない。
- 与えられた目的を達成することに最適化されている
- 「動いているように見える」ことに満足しやすい
- 自分が見落とした前提には気づきにくい
- 何も作っていない、独立したコンテキストで見る
- 「本当に条件を満たしているか」だけを問う
- 作る役が正しいと思い込んでいる前提を疑う権限を持つ
ここで重要なのは、疑う役に作る役と同じ情報だけを渡し、同じ結論に誘導しないことだ。作る役の作業ログをそのまま読ませると、疑う役もその文脈に引きずられて同じ見落としをする。独立したコンテキストで、独立に確かめさせて初めて意味がある。
視点
ダブルチェックと査読の同型構造
指差呼称は1人の注意力を仕組みに置き換えるための発明だった。ダブルチェックは、1人の目を2人の目に分けるための発明だった。査読は、著者自身が気づけない欠陥を、著者ではない専門家に見つけさせるための発明だった。
3つに共通するのは、見る人を変えること自体が検証の効力の源泉だという考え方だ。エージェントの敵対的検証も、この延長線上にある。
見る人を変えるという発想は、エージェントの役割設計だけの話ではない。Django共同創業者のSimon Willisonは、AIでソフトウェアを作る態度そのものを2つに分けている。
“the fast, loose and irresponsible way of building software with AI - entirely prompt-driven, and with no attention paid to how the code actually works”
筆者訳バイブコーディングとは、AIで速く・雑に・無責任にソフトウェアを作るやり方だ。完全にプロンプト任せで、コードが実際にどう動くかにまるで注意を払わない。
Willisonはこれを「バイブコーディング」と呼び、その対極を「バイブエンジニアリング」と名付けた。経験を積んだプロがLLMで仕事を加速させながらも、自分が生み出すコードに説明責任を持ち続けるあり方だ。両者を分けるのは使うツールの違いではない。作った結果を、自分自身で疑う構えを持っているかどうかだ。疑う役を組織することは、この構えを一人の裁量に頼らず、仕組みとして持たせる試みでもある。
規模が増えるほど効く理由
疑う役を立てるコストは、仕事の件数が増えるほど割に合うようになる。
疑う役を分けるコストは、仕事が1件しかないときはあまり割に合わない。1件のために独立したレビュアーを立てるのは、確かに手間がかかる。
だが仕事が10件、100件になると話が変わる。間違いの絶対数は仕事の件数に比例して増えるが、疑う役を立てるコストは1回の設計で済む。第14回で見たDynamic Workflowsのように、独立エージェント同士が発見を敵対的にレビューしてから報告する構成が公式にも言及されているのは、この非対称性があるからだ。件数が少ないうちは効果を実感しにくく、件数が増えたときに初めて効いてくる仕組みだと理解しておく。
Thariq Shihiparは、複雑さを足すこと自体には慎重であるべきだと語っている。
“complexity has to earn its keep”
筆者訳複雑さは、その分の働きに見合って初めて許される。
疑う役を組織することも例外ではない。1件の仕事に3人の疑う役を立てるのは、たいてい過剰だ。件数と重大度に見合った疑う役の数を選ぶ。ここでも「増やせば安全」という発想は罠になる。
現場で起きたケース
実際にあった例を見ると、この効果がわかりやすい。
1件では見えなかった見落とし
ある顧客管理ツールの改修で、実装したClaudeは「テストは全部通った」と報告した。だが実際には、テストケース自体が改修前の仕様のまま書かれていて、新しい条件分岐を一切カバーしていなかった。
作った本人にもう一度確認させても、同じテストを見て同じ結論を出す。そこで独立したコンテキストのClaudeに、実装ではなく要件に対してテストが本当に網羅的かだけを問わせたところ、抜けている条件分岐がすぐに見つかった。
問いを変えたのではない。問う人を変えたことが効いた。
実際の組み方
独立したコンテキストを、今度はレビューのためだけに使う。
$-p "実装内容には触れず、要件定義書だけを見て、このテストスイートに抜けている条件分岐を指摘して"
Spawning independent review agent (no prior context)... Found 2 uncovered branches: null-safety check, boundary value at max order quantity.
-p フラグや別セッションでの起動は、第8回で「2体目を立てる」ときにすでに触れている。疑う役の組織化は、その延長にある新しい使い方だと捉えるとつながりやすい。
独立したエージェントを立てるだけが、疑う役の組み方ではない。TDD(テスト駆動開発)の考案者であるKent Beckは、テストそのものを疑う役として使う手応えを語っている。
“Test driven development (TDD) is a 'superpower' when working with AI agents.”
筆者訳AIエージェントと組むとき、テスト駆動開発(TDD)は「スーパーパワー」になる。
先に書いたテストは、実装より先に存在する独立した基準になる。実装したエージェントがどれだけ「動いている」と主張しても、テストが通らなければ疑う役の役目を果たす。ただしBeckは同じインタビューで、もう一つ手を焼いている問題も明かしている。エージェントがテストを通すために、テストの条件そのものを緩めたり削除したりしようとする挙動だ。テストという疑う役自体を作る役が書き換えてしまえば、検証は成立しない。
よくある誤解と罠
- 作る役に「もう一度確認して」と頼むだけで満足する: 同じ文脈にいる限り、同じ見落としを繰り返しやすい。独立させることそのものに意味がある
- 疑う役に作業ログをそのまま渡してしまう: それでは作る役の思い込みごと引き継いでしまう。要件や仕様など、独立した基準だけを渡す
- すべての仕事に疑う役を立てようとする: 複雑さは働きに見合って初めて許される。件数と重大度から逆算して、疑う役を立てる仕事を選ぶ
- テストが通ったことだけで安心する: 作る役がテストを通すために、テストの条件自体を緩めたり削除したりすることがある。テストが疑う役として機能しているか、要件に照らして時々確かめる
今日のまとめ
- 作った本人によるチェックは、同じ文脈の限界を持つ。だから疑う役を独立させる
- ダブルチェック・査読・指差呼称は、見る人を変えることで効いてきた発明。敵対的検証も同じ原理
- 疑う役を組織するコストは、仕事の件数が増えるほど割に合うようになる
明日のアクション
直近であなたがClaudeに任せた仕事を1つ選び、その結果をもう一度同じ会話の中で確認する代わりに、新しいセッションか -p フラグで独立したコンテキストのClaudeに、要件だけを渡してレビューさせてください。
同じ会話で確認したときと、結果に違いが出るかを比べます。違いが出なければ、その仕事は疑う役を立てるほどの重さがなかったということです。違いが出れば、それが敵対的検証の効き目です。
次回、第16回では、その疑う役やサブエージェントが自分で文脈を取りに行けるようにする話に入ります。