🐺

コンテキストを減らして精度を上げる:GitHub Copilot Agent 活用術

に公開

はじめに

GitHub Copilot Agent を利用したデータ組成や自動化タスクを実行する際に、指示通りに動作しないケースに遭遇することがあります。特に複雑なプロジェクト環境では、Agent が既存のコードやファイルから多くの「コンテキスト」を取得し、それに基づいて独自の解釈や最適化を行おうとするため、必ずしも指示した通りに動作しないことがあります。

GitHub Copilot Agent に正確に指示通りの作業を実行させるための逆説的なアプローチ - コンテキストを与えない方法 - について書いていきます。

https://github.blog/jp/2025-02-07-github-copilot-the-agent-awakens/

環境

  • Editor: VSCode
  • Agent: GitHub Copilot Agent
  • Model: Claude 3.7 Sonnet
  • MCP: Playwright (Model Context Protocol)

Agent が指示通りに動かない理由

GitHub Copilot Agent のようなツールは、与えられたコンテキストから「最適」だと判断する行動を選択します。
しかし、この「最適」の判断基準は必ずしもユーザーの意図と一致するとは限りません。

具体的には以下のような問題が発生することがあると思います。

  1. 過剰な最適化: プロジェクト内の既存コードパターンに合わせようとして指示と異なる実装をする
  2. 誤った前提: コンテキストから取得した情報を基に、指示にない機能や処理を追加する
  3. 優先順位の誤解: 広範なコンテキストがあると、指示の中で何が重要かの判断を誤る

結論

何か指示をして作業をさせるなら何もコンテキストを与えずに実施する

予想に反して、Agent に正確に従ってもらいたい場合は、コンテキストを「減らす」ことが効果的です。
新しいウィンドウや空のワークスペースから指示を出すことで、Agent は純粋に与えられた指示だけに集中します。

PlaywrightMCPを利用したブラウザ操作の例

実際の例として、Playwright MCPを利用したウェブスクレイピングタスクを見てみましょう。同じ指示でも、コンテキストの有無によって結果が大きく変わります。

具体的なタスク:「GitHub の trending リポジトリページから、今日の JavaScript のトレンドリポジトリ名とスター数を取得する」

コンテキストあり

ワークスペースに大量のコードがある状態で実施すると、以下のような問題が発生します:

  1. 既存のプロジェクト構造に合わせようとする

    • 既存のライブラリやフレームワークに依存した実装を試みる
    • プロジェクト固有の設定ファイルを参照・修正しようとする
  2. 必要以上に複雑な実装

    • エラーハンドリング、データ永続化、ログ機能など、指示にない機能を追加する
    • 既存コードベースとの統合を意識した余分なコードが生成される

コンテキストなし(新規ウィンドウで実行)

対照的に、新しいウィンドウや空のワークスペースから同じ指示を出すと:

  1. シンプルな実装

    • 必要最小限のコード(Playwrightの基本操作のみ)
    • 指示に直接関係する機能だけに集中
  2. より正確な結果

    • 既存のプロジェクト構造に左右されない
    • 明示的に指示した通りの出力だけを生成

補足:コンテキスト処理の関係

GitHubの公式ブログより

https://github.blog/ai-and-ml/llms/what-the-heck-is-mcp-and-why-is-everyone-talking-about-it/#the-context-problem-for-llms

Giving them the right amount of context when you prompt them (whether it’s your codebase, your repository data, your documentation, etc.) is necessary for AI agents built on top of LLMs to be useful.

LLMには適切なコンテキストを与えることが重要であると述べられています。

効果的な指示の出し方

効果的な指示を出すためのプロンプトについては公式でも紹介されています。

https://docs.github.com/ja/copilot/using-github-copilot/copilot-chat/prompt-engineering-for-copilot-chat

まとめ

GitHub Copilot Agent に指示通りに作業させるためには、直感に反するかもしれませんが、コンテキストを制限するアプローチが効果的な所管でした。
New Window や空のプロジェクトから始めることで、余分な情報による誤解や過剰な最適化を防ぎ、より直接的で正確な結果を得ることができます。

特に一時的なスクリプトの作成や、データ組成、概念実証(PoC)の段階では、この方法が効率的に働くこともある印象です。

最終的には、Agent との効果的な協業は「最適な量のコンテキスト」を見極めることが大切なので
シンプルで明確な指示と、必要最小限のコンテキストのバランスを意識すると生産性の向上に繋がると思います。

Discussion