HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

コーディングエージェントはなぜこんなに愚かなのか?

Why Are Coding Agents So Dumb? (mtlynch.io)

69 pointsby mtlynch47 コメント

要約

コーディングエージェントは、当初の期待に反して、その能力がLLMの進歩に追いついていません。記事では、エージェントがタスク管理、委任、自己認識、計画の伝達、リスク回避といった点で根本的な問題を抱えていると指摘しています。これらのエージェントは、LLMという「脳」とコードベースやシステムを繋ぐ「体」として機能しますが、その「体」が非効率的で、開発者の負担を軽減するどころか、むしろ増大させている現状を解説しています。

全文翻訳

初めてコーディングエージェントを使ったとき、私は魅了されました。エージェントが登場する前は、IDEとAIチャットインターフェースの間でコピー&ペーストをしていました。エージェントが直接ファイルを編集し、リアルタイムでエラーを修正するのを見るのは驚くべきことでした。 数日後、ハネムーン期間は終わりを迎え、頻繁なバグに遭遇しました。エージェントは再起動しないと完全に反応しなくなり、開発ワークフローは息苦しいほど原始的に感じられ、タスクが始まったばかりなのに完了したと宣言することもよくありました。 これは2025年2月のことで、コーディングエージェントはまだ初期段階でした。6ヶ月もすれば、エージェントは基盤となるLLMと同じくらい技術的に印象的になるだろうと考えていました。 代わりに、コーディングエージェントは悪いまま留まりました。 AI支援開発は明らかに進歩しましたが、モデルが重い作業を行っており、エージェントがボトルネックのままです。 エージェントはモデルではない 🔗︎ AIに関するあらゆる誇大広告の中で、用語は歪められがちです。「モデル」と「エージェント」のような用語を過負荷にし、混同し始めています。 「モデル」と言うとき、私はGPT Astra、Claude Sonnet、GLM-5.3のような大規模言語モデル(LLM)を指しています。モデルは、かなり良いソフトウェアコードを含むテキストや画像を生成します。 「エージェント」と言うとき、私はモデルをコードベースやコンピュータシステムに接続するソフトウェアを意味します。これらは、AnthropicのClaude CodeやOpenAIのCodexのようなツールです。 簡単なアナロジーとして、モデルは脳であり、エージェントは体です。モデルはテキストのストリームを生成し、エージェントは、そのテキストをシステム上の正しいコマンドやファイルにプラグインする接着剤として機能します。 現在のコーディングエージェントの限界 🔗︎ エージェントはタスクを管理できない 🔗︎ コーディングエージェントに対する私の最大の不満は、タスク管理がどれほどひどいかということです。 例えば、ファイルアップロード用の共有リンクを生成するオープンソースのWebアプリがあります。最近、パスフレーズでリンクを保護するサポートを追加しました。これは約1.5k行の新しいコードで、比較的簡単な変更でした。OpenCodeは忠実に機能を10個のサブタスクに分割しましたが、その後、それらを一つずつ実行しただけでした。 なぜあなたはこれらの、容易に並列化できるタスクを一つずつ実行しているのですか? ええと…あなたはコンピューターですよね!あなたはマルチタスクが非常に得意です。だから私たちはあなたにたくさんのCPUコアを与え続けているのです。あなたは人間よりもはるかに速く、複数のことを並列に実行し、コンテキストスイッチすることができます。なぜあなたはこれらの、容易に並列化できるタスクを一つずつ実行しているのですか? Claude Codeはマルチタスクを行いますが、それはわずかです。サブエージェントを1つか2つ起動しますが、それでもすべてが終了するのを待ってから先に進みます。1日に何度も、Claude Codeが数分間、私のエンドツーエンドテストの終了を待っているのを見かけます。そして、テストがパスした後になって初めて、「ふむ、今度はコミットメッセージの下書きを始めるべきだな。Git履歴を見て、あなたのコミットメッセージの慣習を学ぼう。」と言います。 エージェントは委任できない 🔗︎ 最先端のモデルを使用しているときに、特定のパターンをチェックするために50k行のコードが必要な場合でも、エージェントは停止して「待て、これは別のモデルがより安く、より速くできることだ」とは言いません。それはただ、遅くて高価なモデルで plough on するだけです。逆に、エージェントは「このモデルはこのタスクには賢すぎる。より賢いモデルに任せよう」とは決して言いません。 もちろん、私は積極的にタスクをマイクロマネジメントし、サブタスクの難易度に合わせてモデルと思考レベルを常に切り替えることができますが、それは私の仕事でしょうか?スレッドプールも管理する必要がありますか?未使用のRAMも解放する必要がありますか? タスクの難易度レベルを割り当て、その要件をモデルに一致させるのに適したテクノロジーは何だと思いますか?LLMです!タスクに最も安価で最速のモデルを選択するようにLLMに依頼するだけです。なぜ私にあなたをベビーシッターのように世話する必要があるのですか? 私は常に、95%が単純作業のタスクに遭遇しますが、それでも最も賢いモデルに割り当てる必要があります。なぜなら、タスクを分割してエージェントの代わりに委任するには、私の時間がかかりすぎるからです。 デフォルトモデルがClaudeであることを教えてくれてありがとう。 エージェントはエージェントのことを聞いたことがない 🔗︎ エージェントは自分自身について何も知りません。ClaudeにClaudeの機能の使い方を尋ねると、オンラインで検索して「Claude」というものが何であるかを理解する必要があります。ClaudeはCプログラミングに関する質問に答える方が、自分自身について話すことよりも快適です(公平に言えば、ほとんどの人間開発者も同様です)。 ええと、あなたはClaude Codeですよね!あなた自身の機能のいくつかを全く知らないのですか?そして、バージョン番号に合っているかどうかに関わらず、指示をGoogleで検索しているのですか?あなたはユーザーが一度も使ったことのない機能のために、平気で13GBのファイルをダウンロードするのに、あなた自身に機能の説明をするために、インストールパッケージに50KBのgzip圧縮されたテキストを割くことができないのですか? もしあなたがチームメイトにコードレビューを依頼して、彼らが開発者がコードレビューをするかどうかを調べるために必死にGoogle検索を始めたらどうなるでしょうか?そして翌日、彼に別のコードレビューを依頼したときに、以前の会話の記憶がなく、再びGoogleに戻って不安げに「ソフトウェアエンジニアはコードレビューをしますか?」とタイプしたとしたらどうでしょうか? エージェントは計画の伝達が下手 🔗︎ 私はかつて、エージェントのUX機能である「計画」と「実行」モードの分離を気に入っていました。複雑なタスクの場合、エージェントに計画を作成させ、それをレビューし、変更を提案し、より高速で安価なエージェントに実行を委任していました。 時間が経つにつれて、計画を読むことに嫌悪感を抱くようになりました。レビューをスキップして、エージェントに直接実装に進ませることがよくありました。 コーディングエージェントが私を怠惰にしたと思ったのですが、エージェントは計画を伝えるのが下手すぎて、読むのが苦痛だと気づきました。 Codex + GPT-6 Astraに私のメディアジャーナリングWebアプリに機能を追加するように依頼した例を次に示します。 単に無関係な詳細をリストアップして、それを計画と呼ぶことはできません、Codex。 それは計画ではありません!それは低レベルの設計上の決定の寄せ集めです。 もし私が有能な開発者にこの機能の計画を依頼したら、彼らはUIの変更に関する高レベルの計画から始めて下に降りていくか、データモデルの変更を記述して上に上がっていくでしょう。もし開発者がランダムな事実を列挙し始めたら、私は彼らがブレインストーミングしていると仮定し、後で戻ってくるでしょう。 エージェントは作業を停止する言い訳を見つける 🔗︎ 昨夜、寝る前にコーディングエージェントで長いタスクを開始しました。翌朝戻ってみると、エージェントはまだ作業を開始していませんでした。私が離れてから2分後に、Gitブランチに何という名前を付けるか私に尋ねて停止し、私の答えを待って一晩中座っていました。 もし私が人間の従業員から、些細な詳細について私の入力を求めてシフト全体をアイドル状態で過ごしたと言われたら、私はすぐに解雇するでしょう。 エージェントは、不必要なリスクを冒す場合にのみ役立つ 🔗︎ 最初に使用したコーディングエージェントで、エージェントがアクセスできるシステム上のファイルがどれかを制御する設定を探しました。ランダムで予測不可能なソフトウェアが私のコンピュータ全体を自由に探索するのを防ぐ、ファイルシステム権限や制限されたchrootのような保護機能があるはずですよね? そうではありませんでした。ドキュメントでは、LLMに特定のファイルやディレクトリを読み取らないように丁寧に依頼する手紙を書くように勧められました。それを試しましたが、エージェントはすぐに私の要求を無視し、プライベートなアプリケーションキーをOpenAIとAnthropicに流出させました。 セキュリティ境界がコーディングエージェントが最初に実装するものの1つになると考えていましたが、今日でさえ、エージェントはすべてにアクセスできるようにしないと使用できません。エージェントは、ベンダー自身のサンドボックスを日常的にバイパスします。代替案は、そこに座って1日に500回「許可」をクリックすることですが、それは信頼できる保護ではありません。なぜなら、最終的には誤クリックする可能性が高いからです。 これが非常に腹立たしいのは、コーディングエージェントのミスによる被害範囲を制限できるサンドボックスツールが10年以上前から存在していたことです。私は独自のサンドボックスを構築したので、エージェントはリポジトリディレクトリを超えてファイルシステムを探索できません。エージェントがホームディレクトリから機密情報を流出させたり、私のマシン上の重要なファイルをワイプしたりする心配は決してありません。なぜなら、それらのアクセス権限がないからです。 「コーディングエージェントは完璧です