VS Codeのエージェントモードを拡張するには、を試してください!

Copilot Edits (プレビュー) の紹介

2024年11月12日 Isidor Nikolic

最近まで、VS Code で GitHub Copilot を使用するには、2つの方法がありました。補完機能やインラインチャットを使ってエディター内でコードを修正するか、チャットビューで Copilot を使ってコードに関する質問をするか、です。プレビュー機能である Copilot Edits は、VS Code で Copilot を使用するまったく新しい方法です。チャットとインラインチャットの長所、つまり会話の流れと、管理する一連のファイル全体にインライン変更を加える機能を組み合わせたもので、すぐに使えます。

複数のファイルにわたる反復作業のために設計されています

Copilot Edits では、編集するファイルセットを指定し、自然言語で Copilot に必要なことを尋ねます。Copilot Edits は、高速な反復作業のために設計されたUIを使用し、ワークスペース内の複数のファイルにインライン変更を加えます。提案された変更をレビューしながらコードのフローを維持し、機能するものを承認し、追加の要求で反復作業を行います。

Screenshot of the Copilot edits, and the proposed inline changes

Copilot Edits は、適切なコンテキストの設定から変更の承認まで、ユーザーが制御できるため機能します。決して間違いを犯さない高度なモデルに依存しているからではありません。そして、その体験は反復的です。モデルが間違った場合でも、複数のファイルにわたる変更をレビューし、適切なものを承認し、Copilot と協力して正しい解決策に到達するまで反復できます。変更を承認する際には、コードを実行して変更を検証でき、必要に応じて Copilot Edits で元に戻すことで、以前の動作状態に戻すことができます。

制御を維持

変更を適用する必要があるファイルを定義できる新しいUIコンセプト、「ワーキングセット」があります。ファイルをドラッグ&ドロップしたり、エディタータブをドラッグ&ドロップしたり、# を押して明示的に追加したりすることで、ワーキングセットにファイルを追加することもできます。Copilot Edits は、エディターグループ全体のアクティブなエディターを自動的にワーキングセットに追加します。

Screenshot of the Working Set, showing the user adding index.js

ワーキングセットは、元に戻す機能とやり直す機能とともに、変更を正確に制御し、どこにどのように適用するかを正確に決定できるようにします。Copilot Edits は、生成された編集内容をコード内に直接インプレースで表示し、AIが生成した各編集内容を承認または破棄できるコードレビューフローを提供します。Copilot Edits はワーキングセット外で変更を行うことはありません。唯一の例外は、新しいファイルの作成を提案する場合です。

Screenshot of the inline changes, showing the Accept / Discard widget

Copilot Edits はセカンダリサイドバー(デフォルトでは右側)に表示されるため、提案された変更をレビューしながら、エクスプローラー、デバッグ、ソース管理ビューなど、プライマリサイドバーのビューと対話できます。たとえば、左側で テスト ビューでユニットテストを実行しながら、右側で Copilot Edits ビューを使用することで、各反復で Copilot Edits が提案した変更がユニットテストに合格しているかどうかを確認できます。

Copilot Edits を使用する際、音声 を使うことは自然な体験です。Copilot と話すだけで、スムーズで会話形式のやり取りができます。まるで、現実のペアプログラミングで使うのと同じ反復的なフローで、分野の専門家である同僚と対話しているような感覚です。

Copilot Edits は、AI を使用したコード編集を、さまざまなスキルを持つユーザーが利用できるようにします。Microsoft のプロダクトマネージャーとして、私は Copilot Edits を使えば、あまりコードを書かずに初期のアイデアを素早く反復できます。VS Code のエンジニアリング担当の同僚にとっては、Copilot Edits は vscode リポジトリ で複数のファイルにわたる複雑なリファクタリングを簡単に作成するのに役立ちます。たとえば、Swift の経験がまったく無いチームメンバーの一人は、Copilot Edits を使ってカスタム macOS アプリを一から作成しました。各反復の後でアプリを実行し、動作しない部分を特定し、Copilot Edits に適切な追加指示を与えました。

舞台裏

Copilot Edits は、編集の効率と精度を高めるためにデュアルモデルアーキテクチャを活用しています。まず、基盤となる言語モデルが Edits セッションの完全なコンテキストを考慮して、最初の編集提案を生成します。基盤となる言語モデルは、GPT-4o、o1-preview、o1-mini、および Claude 3.5 Sonnet から選択できます。パフォーマンスの高いエクスペリエンスのために、チームはファイルへの変更の高速な適用に最適化された推測的デコーディングエンドポイントを開発しました。基盤モデルからの提案された編集は、推測的デコーディングエンドポイントに送信され、そこでそれらの変更がエディター内にインラインで提案されます。推測的デコーディングエンドポイントは通常のモデルよりも高速ですが、チームはさらに高速化できることを認識しており、その改善に取り組んでいますので、ご期待ください。

本日提供開始

Copilot Edits はプレビュー版であり、すべての GitHub Copilot ユーザーが本日より利用可能です!過去に提供していただいた #1#2 のフィードバックは、この機能の提供に不可欠でした。心より感謝申し上げます!

Copilot Edits の詳細については、公式ドキュメント をご覧ください。

次に、チームは変更適用における推測的デコーディングエンドポイントのパフォーマンス改善、コンテキストを保持したCopilot ChatからのCopilot Editsへの移行のサポート、ワーキングセットへのファイルの提案、および提案されたチャンクの元に戻す機能の許可を計画しています。これらの改善をいち早く体験したい場合は、VS Code InsidersGitHub Copilot Chat 拡張機能のプレリリース版を使用してください。機能改善にご協力いただくには、弊社のリポジトリ に課題を報告してください。

究極的には、Copilot Edits そのものだけでなく、それが何を作り出すのに役立つか、が重要なのです。

楽しくコーディングしましょう!

Isidor