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 で元に戻す (Undo) ことで、以前の動作していた状態に戻ることができます。

コントロールを維持

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

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

Working Set は、元に戻す (Undo) およびやり直し (Redo) 機能と合わせて、変更を正確に制御し、どこにどのように適用するかを正確に決定することを可能にします。Copilot Edits は、生成された編集をコード内の適切な場所に直接表示し、コード レビューのフローを提供します。そこでは、AI が生成した各編集を承認または破棄できます。Copilot Edits は、Working Set の外で変更を行うことはありません。唯一の例外は、新しいファイルの作成を提案する場合です。

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 へのコンテキストを維持した移行のサポート、Working Set へのファイルの提案、提案されたチャンクの元に戻す (Undo) の許可を計画しています。これらの改善をいち早く手に入れたい場合は、VS Code InsidersGitHub Copilot Chat 拡張機能のプレリリース版を必ず使用してください。機能の改善にご協力いただくため、私たちのリポジトリに issue を報告してください。

最終的に、重要なのは Copilot Edits 自体ではなく、それがあなたが何を構築するのに役立つかということです。

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

Isidor