本日はVisualStudioCodeの学習枠です。
VisualStudioCodeのGitHubCopilotのドキュメントを読みながら実際に操作を試してみました。
前回記事
以下の前回記事の続きです。
bluebirdofoz.hatenablog.com
Use agent mode in VS Code
以下のUse agent mode in VS Codeドキュメントを日本語訳しながら実行時のキャプチャをしていきます。
code.visualstudio.com
Agentモードを使用する
AgentモードではCopilotは自律的に動作し、プロンプトに関連するコンテキストを決定します。
VS Code StableまたはInsidersでAgentモードを開きます。
またはチャットビューを開き(Ctrl + Alt + I)、チャットモードセレクターから[Agent]を選択します。

チャット入力フィールドにプロンプトを入力し、[送信](Enter)を選択して送信します。
高レベルの要件を指定でき、作業するファイルを指定する必要はありません。AgentモードではCopilotが自律的に編集する関連コンテキストとファイルを決定します。
例えば以下のような質問が実行できます。
・ReactとNode.jsを使って食事計画ウェブアプリを作成する。 ・ソーシャルメディアへの共有機能を追加する。 ・現在の認証をOAuthに置き換える。
Agentモードでは様々なタスクを実行するために複数のツールが呼び出される場合があります。
必要に応じて[Tool]ボタンを選択して要求に応答するために使用できるツールを構成します。

プロンプトでツールを直接参照するには #ツール名 を入力します。
これは全てのチャットモード(質問、編集、エージェントモード)で実行できます。

ツールの起動と端末コマンドを確認します。
ターミナルコマンドまたは組み込み以外のツールを実行する前にCopilotは続行の確認を要求します。
これはツールがコンピューター上でローカルに実行され、ファイルやデータを変更するアクションを実行する可能性があるためです。
[Continue]ボタンのドロップダウンオプションを使用して現在のセッション、ワークスペース、または今後のすべての呼び出しに対して特定のツールを自動的に確認します

プロジェクトがtasks.jsonでタスクを設定している場合、Agentモードは適切なタスクを実行しようとします。
例えばビルドタスクを定義した場合、Agentモードはアプリケーションを実行する前にビルドタスクを実行します。
ワークスペースのタスクを実行するかどうかは github.copilot.chat.agent.runTasks 設定で行います。

必要に応じてツールを実行する前に、ツールの入力パラメーターを確認および編集します。
ツール名の横にあるシェブロンを選択してその詳細と入力パラメーターを表示します。
ツールを実行する前に入力パラメーターを編集できます。

Copilotはコード編集やターミナルコマンドの問題や問題を検出し、それらを解決するための追加のアクションを反復して実行します。
github.copilot.chat.agent.autoFix 設定を有効にして生成されたコード変更の問題を自動的に診断して修正します。
この設定はデフォルトで有効になっています。

またAgentモードはコード編集の結果としてユニットテストを実行するかもしれません。
テストが失敗した場合、その結果を使用して問題を解決します。
Copilot Editsのエージェントモードは問題や課題を解決するために複数回繰り返し実行されます。
chat.agent.maxRequests 設定はCopilot Editsがエージェントモードで実行できるリクエストの最大数を制御します。

Copilotがリクエストを処理するとCopilotは提案されたコード編集をエディターで直接ストリーミングします。
チャットビューには編集されたファイルのリストが太字で表示されます。
エディターのオーバーレイコントロールを使用すると提案された編集間を移動できます。

提案された編集内容を確認し、提案された編集内容を受け入れるか破棄します。

コードの変更を引き続き反復処理して編集を調整したり、追加機能を実装したりします。
Agentモードツール
Agentモードではツールを使用してユーザー要求の処理中に特殊なタスクを実行します。
このようなタスクの例としてはディレクトリ内のファイルの一覧表示、ワークスペース内のファイルの編集、ターミナルコマンドの実行、ターミナルからの出力の取得などがあります。
Agentモードでは、次のツールを使用できます。
・組み込みツール
・MCPツール
・拡張機能から提供されたツール
要求に応答するために使用できるツールを表示および管理できます。
チャットビューのツールアイコンを選択してAgentモードで使用できるツールを表示および管理します。

ツールの結果に基づいてCopilotは他のツールを呼び出して全体的な要求を達成する場合があります。
例えばコードの編集によってファイル内の構文エラーが発生した場合、Copilotは別のアプローチを検討し、別のコード変更を提案することがあります。
chat.extensionTools.enabled 設定を構成することでAgentツールの使用を有効または無効にできます。

ツールの承認を管理する
ツールが呼び出されるとCopilotはツールの実行確認を要求します。
これはツールがコンピューター上でローカルに実行され、ファイルやデータを変更するアクションを実行する可能性があるためです。
チャットビューでツールを呼び出した後、「Continue」ボタンのドロップダウンオプションを使用して、現在のセッション、ワークスペース、または今後のすべての呼び出しに対して特定のツールを自動的に確認します。

ツールの確認をリセットするにはコマンドパレットの[Chat: Reset Tool Confirmations]コマンドを使用します。

全てのツールを自動承認したい場合、実験的な chat.tools.autoApprove 設定を使用できるようになりました。
これにより、全てのツールの起動が自動的に承認され、VS Codeは言語モデルがツールを実行したいときに確認を求めなくなります。
この設定を有効にするとモデルが実行したい潜在的に破壊的なアクションをキャンセルする機会がなくなることに注意してください。

拡張境界としてリモート環境に接続されているときのみ chat.tools.autoApprove を設定することもできます。これはユーザーレベルではなくリモートとして設定します。
あなたのローカルマシンの一部であるリモート環境(開発コンテナのような)や、あなたの認証情報にアクセスできるリモート環境は依然として異なるレベルのリスクをもたらすことに注意してください。
編集を承認または破棄する
Copilotは編集されたファイルをチャットビューの変更されたファイルの一覧に一覧表示します。
保留中の編集があるファイルにはエクスプローラービューとエディタータブにもインジケーターがあります。

エディターオーバーレイコントロールを使用すると、[↑(上)]ボタンと[↓(下)]ボタンを使用して提案された編集間を移動できます。
[Keep]ボタンまたは[Undo]ボタンを使用して特定のファイルの編集を承認または拒否します。

エディターまたはチャットビューの[Keep]ボタンまたは[Undo]ボタンを使用して提案された個々の編集またはすべての編集を承認または拒否できます。

chat.editing.autoAcceptDelay設定では提案された編集が自動的に受け入れられるまでの遅延を構成できます。
エディターのオーバーレイコントロールにカーソルを合わせると自動承認カウントダウンがキャンセルされます。またデフォルト値の0では自動承認が無効化されています。

VS Codeを閉じた場合、保留中の編集のステータスが記憶されます。
VS Codeを再度開くと保留中の編集内容が復元され、編集内容を受け入れるか破棄するかを引き続き変更することができます。

