Copilot Edits(プレビュー)のご紹介
2024年11月12日 Isidor Nikolic 著
最近まで、VS CodeでGitHub Copilotを使用するには、2つの別々の方法がありました。補完またはインラインチャットを使用してエディター内でコードを変更する方法と、チャットビューでコードについてCopilotに質問する方法です。プレビュー機能であるCopilot Editsは、VS CodeでCopilotを使用するまったく新しい方法です。会話の流れと、管理するファイルのセット全体にわたってインラインで変更を加える機能を、チャットとインラインチャットの長所を兼ね備えています。そして、それはまさに機能します。
複数ファイルにわたる反復作業向けに設計
Copilot Editsでは、編集するファイルのセットを指定し、Copilotに必要なものを自然言語で尋ねます。Copilot Editsは、高速な反復作業向けに設計されたUIを使用して、ワークスペース内の複数のファイルにわたってインラインで変更を加えます。提案された変更を確認し、うまくいくものを受け入れ、フォローアップの質問で反復作業を行う間、コードの流れを維持できます。
Copilot Editsが機能するのは、決して間違いを犯さない高度なモデルに依存しているからではなく、適切なコンテキストの設定から変更の受け入れまで、ユーザーが制御できるからです。そして、その体験は反復的です。モデルが間違った場合でも、複数のファイルにわたる変更を確認し、良いものを受け入れ、Copilotと一緒に適切な解決策にたどり着くまで反復作業を行うことができます。変更を受け入れる際には、コードを実行して変更を検証し、必要に応じてCopilot Editsで元に戻して以前の作業状態に戻ることができます。
制御下に置く
新しいUIコンセプトであるワーキングセットは、ユーザーが制御できるようにし、編集を適用する必要があるファイルを定義できるようにします。ファイルをドラッグアンドドロップするか、エディタータブをドラッグアンドドロップするか、#
を押して明示的に追加することで、ワーキングセットにファイルを追加することもできます。Copilot Editsは、エディターグループ全体のアクティブなエディターをワーキングセットに自動的に追加します。
ワーキングセットは、元に戻す機能とやり直す機能とともに、変更を正確に制御し、変更を適用する場所と方法を正確に決定できるようにします。Copilot Editsは、生成された編集内容をコード内の適切な場所にインプレースで表示し、AIが生成した編集内容のそれぞれを受け入れるか破棄できるコードレビューフローを提供します。Copilot Editsは、ワーキングセットの外部に変更を加えることはありません。唯一の例外は、新しいファイルの作成を提案する場合です。
Copilot Editsは、セカンダリサイドバー(デフォルトでは右側)にあるため、提案された変更を確認している間も、エクスプローラー、デバッグ、ソース管理ビューなどのプライマリサイドバーのビューを操作できます。たとえば、左側のテストビューでユニットテストを実行し、右側のCopilot Editsビューを使用することで、反復作業ごとにCopilot Editsが提案した変更がユニットテストに合格しているかどうかを検証できます。
音声を使用することは、Copilot Editsを使用している間、自然な体験です。Copilotに話しかけるだけで、やり取りがスムーズで会話的になります。まるで、実際のペアプログラミングで使用するような反復的な流れで、その分野の専門家である同僚と対話しているような感覚になります。
Copilot Editsは、さまざまなスキルを持つユーザーがAIによるコード編集を容易に行えるようにします。マイクロソフトのプロダクトマネージャーとして、私は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 InsidersとGitHub Copilot Chat拡張機能のプレリリースバージョンを使用してください。機能改善にご協力いただける場合は、リポジトリに問題を報告してください。
結局のところ、重要なのはCopilot Edits自体だけでなく、それが何を作るのに役立つかということです。
ハッピーコーディング!
Isidor