優れたエージェントが決して尋ねない質問

1 分で読めます

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

「愚問などない」というのは、私たちが互いに掛け合う優しい言葉のひとつで、人間同士であれば確かにその通りだ。新しく加わったメンバーが「請求関連のコードはどこにありますか」と尋ねるのは、システムの全体像を学んでいる過程であり、その質問は共有の文脈を築き、答えるのに一分もかからない。しかし自律型エージェントは、まだ足元がおぼつかない新人ではない。あなたがこの一文を読み終える間に、リポジトリ全体を読み終えることができる。エージェントにとって、確かに「愚問」は存在する——そして最も愚かな質問とは、自分で見に行けば答えられたはずの質問だ。

エージェントにとっての「愚問」とは

愚問とは、答えがすでにコードベースの中に存在している質問のことだ。「これを処理しているコードはどこですか」「ビルドコマンドは何ですか」「この種のことにはすでに決まったパターンがありますか」。人間であれば、入社初日にこれらを尋ねても不自然ではない。しかしエージェントがこれを尋ねるということは、自分で見つけに行くよりも、文脈を口移しで与えてもらう方を選んでいると宣言しているに等しい——見つけに行くことこそ、あなたより明らかに得意なはずのことなのに。

見分け方は、その答えが「発見可能」かどうかだ。ファイルを読む、ツリーをgrepする、CI設定を確認する、あるいはその領域に触れた直近のコミットを読むことで到達できる答えなら、それをあなたに尋ねるのは慎重さではない。本来自分がすべきだった作業を、あなたに押し戻しているだけだ。

非同期エージェントは、質問の代償を「日」単位で支払う

あなたの隣に座るチャットアシスタントにとって、質問のコストは低い。あなたはそこにいて、答え、処理は続く。しかしTaskGoblinはあなたの隣には座っていない。issueの割り当てやメンション、新しいマージリクエストによって起動し、あなたが会議中であろうと、眠っていようと、別のタイムゾーンにいようと、サンドボックスの中で作業を進める。その世界では、質問は一時停止ではなく、完全な停止を意味する。

「これはservices/に置くべきですか、それともlib/ですか」と尋ねて待つエージェントは、数分で終わったはずの実行を、あなたが次にたまたまスレッドを見るときまで終わらないものに変えてしまう。誤ったタイミングで発せられたたった一つの二択の質問が、三十秒の実思考と引き換えに丸一日分の実時間を消費させることがある。エージェントを価値あるものにしている非同期・人間不介在のモデルこそが、避けられたはずの質問をこれほど高くつくものにしている。

過剰な仕様提示も、同じ過ちを前倒ししただけ

質問好きなエージェントへの自然な対策は、あらかじめすべてに答えておくことだ——ディレクトリ構成をプロンプトに貼り付け、コマンドを列挙し、命名規則を細かく書き出し、従うべきパターンの断片まで含める。一見責任ある行動に見える。しかしそれは同じ過ちが装いを変えただけだ。

手書きの文脈は、コードが先に進んだ瞬間から古くなっていく。「リポジトリはapp/Repositoriesに置いている」とプロンプトに事前に書き込むとき、あなたは三つの賭けをしていることになる——それが今も事実であること、関連するすべての詳細を漏れなく覚えていたこと、そしてそのどれもがエージェントを昨日のやり方に偏らせていないこと。たいていはそのうち少なくとも一つが外れ、エージェントはあなたが与えた事実の上に、本来読めば分かったはずの真実の代わりに、自信満々に積み上げていくことになる。あなたは本来の仕事——システムの現在の状態を理解すること——を、その仕事についての別の仕事に置き換えてしまい、結果として成果物の質はむしろ下がる。

優れたエージェントは自分の質問に自分で答える

その解決策は、より良いプロンプトを書くことではない。あなたの指示を目標として扱い、事実そのものを自ら確認しに行くエージェントを用意することだ。

だからこそTaskGoblinの実行は、レビュー対象の差分だけでなく作業ツリー全体を、まずリポジトリごとサンドボックスにクローンすることから始まる——一次情報がそこにあり、いつでも読めるようにするためだ。ファイルを読み、変更対象の領域の履歴を読み、実行を引き起こしたissueとそこでの議論を読み、同じスレッドの過去の実行から引き継がれたメモリを読む。誰かが六週間前にプロンプトに打ち込んだビルドコマンドを信じる代わりに、サンドボックス内でプロジェクト自身のコマンドを実際に走らせ、何が本当にビルドされ、何が本当に通るのかを確認できる。あなたのツールから最新の状態が必要な場合には、あなたに仲介を頼む代わりに、連携機能を通じて直接読み取る。

その結果、エージェントは優れたエンジニアが一時間かけて読んで得るのと同じ理解に到達する——ただし数秒で、しかも誰かの記憶ではなく今日のコードそのものに基づいて。

それでも尋ねるべきとき

だからといって、エージェントが何も尋ねてはいけないわけではない。尋ねる価値のある質問とは、コードには本当に答えられないものだ——二つの許容できる挙動のうちどちらを本当に望んでいるか、リスクを伴う移行が今回の範囲に含まれるか、あなたの頭の中にしか存在しないプロダクト上の判断。これらは愚問ではない——あなたにしか下せない判断であり、優れたエージェントは推測に頼るのではなく、それを早く、明確に提示する。

その違いこそがすべてだ。コードがどこにあるかを尋ねるエージェントは、自分が最も得意とすることを無駄にしている。あなたが二つの製品のうちどちらを作ろうとしているのかを尋ねるエージェントは、あなたの時間を、あなたにしかできない唯一のことのために使っている。私たちがTaskGoblinを作ったのは、前者の質問をエージェント自身に答えさせるためだ——あなたのもとに届く質問が、本当に注意を払う価値のあるものだけになるように。