00:00:00エージェントにコンテキストを追加するには、「Skills(スキル)」よりも「agents.md」ファイルに戻る方が、実は効果的かもしれません。
00:00:08これは、VercelがコーディングエージェントにNext.jsのドキュメントを提供するための最適な方法をテストしていた際に見つけた、驚きの結果です。
00:00:15それでは、具体的に何が起きたのか、なぜそうなったのか、そしてコーディングエージェントを効果的に使うための教訓を紐解いていきましょう。
00:00:26先ほど言ったように、Vercelの目的はエージェントにNext.jsのドキュメントという追加のコンテキストを与えることでした。そうすれば、最新のAPIが学習データに含まれていなくても、エージェントがそれを把握できるからです。
00:00:41あるいはその逆で、古いバージョンのNext.jsを使っている場合に、そのバージョンで利用可能なメソッドだけを確実に使わせたいという意図もあります。
00:00:47彼らは、エージェントが利用できる「バージョンが一致したドキュメントシステム」を求めていました。
00:00:51そのために、彼らは2つの一般的なアプローチをテストしました。
00:00:541つ目は「Skills(スキル)」です。
00:00:56これは最近、多くのフレームワークやツールで採用され、非常に人気が高まっています。
00:01:01皮肉なことに、Vercel自身もSkills CLIやリポジトリを通じて、この普及を後押ししている側の一人なのですが。
00:01:08これらは非常に素晴らしいので、チェックしてみることをお勧めします。
00:01:09「Skills」が何かをご存じない方のために説明すると、これはAnthropicが提唱しているオープン規格で、タスクをより正確に実行するためにエージェントが必要に応じて読み込む、指示、スクリプト、コンテキストのモジュール式バンドルのことです。
00:01:20しかし、ここが重要な点なのですが、この情報をいつ読み込むかは、完全にエージェントの判断に委ねられているのです。
00:01:26そして、その点が現状の弱点のようです。Vercelが評価(evals)を行ったところ、56%の確率でスキルが一度も呼び出されませんでした。
00:01:35エージェントが「使わない」と判断してしまったのです。
00:01:37さらに驚くべきことに、スキルを与えたエージェントと与えていないエージェントを比較しても、評価スコアに全く改善が見られませんでした。
00:01:44それどころか、スキルが逆効果になる可能性さえあることが分かりました。
00:01:48スキルが使われなかった際、ベースラインよりもパフォーマンスが低下する場合があり、使われないスキルがノイズや注意散漫を引き起こしている可能性が示唆されたのです。
00:01:57これを解決するために、彼らはプロンプトで「このスキルを使ってください」と明示的に指示してみました。
00:02:02すると確かに効果があり、スキルの発動率は95%に上昇し、評価の合格率も79%まで向上しました。
00:02:09しかし、それには別の問題が伴いました。言い回しが少し違うだけで、結果が劇的に変わってしまうことが判明したのです。
00:02:15例えば、「必ずスキルを使え」と言うと、スキルは使いますが、今度はプロジェクトのコンテキストを無視してしまいました。
00:02:21そのため、「スキルとプロジェクトのコンテキストの両方を使え」と言う必要がありました。
00:02:24Vercelは、わずかな言葉の調整で挙動が大きく変動するこのシステムの脆さを嫌い、「本番環境で使うには不安定すぎる」と結論付けました。
00:02:33そこで彼らは、エージェント自身に判断させる必要のない、より信頼性の高い解決策を必要としました。
00:02:40そこで試されたのが「agents.md」ファイルです。
00:02:42これは多くのエージェントで使われているオープン形式で、Claudeユーザーなら「claude.md」と同じものだと考えれば分かりやすいでしょう。
00:02:49これは、システムプロンプトに常に含まれるコーディングエージェントへの指示を提供するために使われます。
00:02:53つまり、Skillsとは異なり、情報を取得するかどうかをエージェントが判断するわけではありません。
00:02:58システムプロンプトに最初から存在しているのです。しかし、これにはコンテキストが肥大化するという特有の問題もあります。
00:03:03コンテキストが増えすぎると、出力の質が低下してしまう現象です。
00:03:06Next.jsのドキュメントすべてを「agents.md」に詰め込むわけにはいきません。
00:03:10ではどうしたか。これに対抗するため、Vercelは「agents.md」の中に「ドキュメント・インデックス」を作成しました。
00:03:17これは単に、ローカルファイルシステム内にある個々のドキュメントファイルへのパスをリスト化したものです。
00:03:22そしてもう一つの重要な要素として、「Next.jsのタスクについては、学習済みの知識よりも、検索ベースの推論を優先せよ」という指示を加えました。
00:03:31個人的には、これを聞いた時、結局エージェントがドキュメントを読みに行く必要があるなら、Skillsと同じような結果になるのではないかと思いました。
00:03:38しかし、彼らが評価を行ったところ、エージェントはすべての項目で100%を記録し、ビルド、Lint、テストの各評価で完璧なスコアを獲得しました。
00:03:47つまり、Skillsよりも大幅に信頼性と精度が高いことが証明されたのです。ソフトウェアエンジニアリングでよくあるパターンですね。
00:03:53よりシンプルで「愚直な」アプローチこそが、結局は最善だったということです。過剰なエンジニアリングは必要ありません。
00:03:58では、なぜそうなったのでしょうか? なぜagentsファイルの方がSkillsよりも優れているのか。その理由は、実は断定が難しい部分です。
00:04:03AIはブラックボックスですから。しかしVercelは、意思決定に関わる3つの要因が関係していると推測しています。
00:04:10「agents.md」を使う場合、エージェントには意思決定の余地がありません。
00:04:14システムプロンプトの冒頭で、ドキュメントを使うこと、そして各ファイルがどこにあるかを、最初から明確に指示しているからです。
00:04:20これにより、知識を「オンデマンドで使うかどうか判断するもの」から「永続的なコンテキスト」へと変えています。
00:04:27システムプロンプトに含まれているため、推論プロセスに最初から組み込まれているのです。
00:04:31ただし、これでSkillsが完全に無用になったわけではありません。実際、Vercelはこれらが互いに補完し合えることを見出しました。
00:04:36彼らによれば、Skillsはユーザーが明示的にトリガーするワークフローに向いています。例えば「Next.jsのバージョンをアップグレードして」とか、
00:04:41「App Routerに移行して」「フレームワークのベストプラクティスを適用して」といった指示です。
00:04:45一方で、コーディングエージェントにフレームワークの一般的な知識を持たせたいのであれば、
00:04:48「agents.md」による受動的なコンテキストの方が、現在のモデルにおいてはSkillsを凌駕します。
00:04:54将来、モデルがスキルベースの検索ワークフローに最適化される日は来るでしょうが、今はまだその段階ではありません。
00:04:59今のところ、フレームワークの作者や、Skillsあるいはagents.mdを作成しようとしている方々へのVercelの推奨事項はこうです。
00:05:06「スキルの向上を待つのではなく、コンテキストを可能な限り圧縮せよ」
00:05:10「記憶ではなく検索のために設計せよ。そして最も重要なのは、常に評価(evals)でテストすることだ」とのことです。
00:05:16また、これらのファイルの利用者向けに、Vercelはドキュメントをダウンロードするためのツールや、
00:05:21Next.jsの特定バージョンに合わせた、ビルド済みの「agents.md」ファイルを提供しており、この新しいアプローチをすぐに活用できるようになっています。
00:05:29他のツールもこのアプローチを採用するのか、非常に興味深いです。皆さんはどう思われますか?
00:05:34エージェントとSkillsについて、ぜひコメント欄で意見を聞かせてください。
00:05:37それから、チャンネル登録もお忘れなく。それでは、また次の動画でお会いしましょう。