動くかどうかを聞くな。証拠を求めよ

1 分で読めます

ほかの言語: EnglishEspañolPortuguês简体中文한국어DeutschFrançaisไทยTiếng ViệtTe Reo Māori

コーディングエージェントを使うほぼ全員が陥るパターンがあり、それはエージェントを使う意味そのものを静かに損なっています。エージェントが変更を加えると、あなたは当然の質問をします。「これは動きますか?」。エージェントは「動きます」と答えます。自信に満ちた口調で、たいていは正しいので、あなたはそれを信じます。そして時折、エージェントは自信満々に、完全に間違っており――それを本番環境で知ることになります。

問題はエージェントが嘘をつくことではありません。問題は質問そのものです。

なぜ「これは動きますか?」は間違った質問なのか

エージェントに自分自身の変更が動くかどうかを尋ねるとき、あなたはその出力を、それを生み出したのとまったく同じ推論で評価するよう求めています。同じペンで自分の答案を採点しているのです。コードを書く際にエッジケースを見逃していたなら、それを判定する際にも同じエッジケースを見逃します。新しい情報は何も入ってきていないからです――同じモデル、同じコンテキスト、同じ死角のままです。

さらに悪いことに、言語モデルは同意する方向に傾きがちです。「これはnullのメールアドレスを正しく処理していますよね?」という形で質問すると、あなたは評価を求めたのではなく、結論を提示してエージェントにそれを確認するよう促したことになります。エージェントはたいていそれに従います。返ってくるのは検証ではありません。あなた自身の期待の、非常に流暢なこだまです。

代わりに証拠を求める

修正は小さく、しかしすべてを変えます。エージェントに変更が動くと主張させるのをやめ、代わりに見せるよう求めるのです。証拠とは、エージェントの意見ではなくシステム自身が生み出した、あなた自身で確認できる成果物です。すべての証拠が同じ価値を持つわけではなく、おおまかな階層があります。

  • 実行による証拠が最も強力です。エージェントが実際にコードを実行し、通過したテストや、期待通りの結果を返したコマンドなど、実際の出力を見せてくれます。
  • 変更前後の証拠もほぼ同じくらい良いものです。観測可能な状態の具体的な変化――クエリ数が47から2に減った、失敗していたリクエストが今は200を返す、など。
  • エージェントが書いたテストはやや弱いものです。バグを見逃した同じ死角が、テストでも同じバグを見逃す可能性があるからです。しかし、読んで実行できるテストは、それでも単なる主張よりはるかに優れています。
  • 口頭での説明が最も弱いものです。それしか得られないこともありますが、「これが私の推論です」は証拠ではありません。それは証拠が本来検証すべき対象そのものです。

どの場合でも、やるべきことは同じです。イエス/ノーの質問を、観測可能な何かを求める依頼に変えることです。

具体的にはこうなります

「このマイグレーションはnullのメールアドレスを処理できますか?」と聞く代わりに、null のメールアドレスを持つ行を投入し、マイグレーションを実行し、その出力を見せるよう求めます。「これはN+1クエリの問題を修正しましたか?」と聞く代わりに、クエリログを追加し、エンドポイントにアクセスし、前後のクエリ数を見せるよう求めます。「レートリミッターはリセットされますか?」と聞く代わりに、上限に達し、待機し、再試行し、リクエストが成功する様子を見せるよう求めます。いずれの場合も、信じるしかなかった主張を、読める結果に置き換えたことになります。

これが私たちのエージェントがサンドボックスで動く理由です

証拠が成立するのは、エージェントが実際に物事を実行できる場合だけです。これは後付けの発想ではなく、設計上の決定です。すべてのTaskGoblinの実行は、リポジトリがクローンされツールチェーンが利用可能なサンドボックス内で行われます。そのためエージェントはコードが何をするかを推測しているのではなく、テストを実行し、コマンドを実行し、実際の結果を観察できます。マージリクエストをレビューする際、その指摘は具体的な挙動を指し示し、あなたが @taskgoblin fix と返信すれば、その変更は単に主張されるだけでなく、実際に検証できるものになります。

だからこそ、優れた開発環境はこれまで以上に価値を持つのです。サービスを起動し、シードデータを読み込み、テストスイートを実行できるエージェントは、本物の証拠を生み出せます。コードを読むことしかできないエージェントは、意見しか与えられません。プロジェクトが実行可能であればあるほど、あなたは信じるのではなく検証できるエージェントの出力を、より多く得られます。

一文でまとめると

エージェントに自分の仕事が正しいかどうかを尋ねてはいけません。それを見せるよう求めましょう――そして、自分自身で確認できる種類の提示を優先しましょう。コードを実行し、出力をあなたに手渡すエージェントは、コードを保証するだけのエージェントには決してできない、たったひとつのことを実現しています。それは、自分自身の自信以外に、信じるに値する何かをあなたに与えることです。