🧑‍✈️

Catch-up! VS Code Updates for GitHub Copilot on Jan 2024

2024/02/07に公開

Catch-up! VS Code Updates for GitHub Copilot on Jan 2024

こんにちは、@dz_ こと、岩永かづみです。

2024年1月のVS CodeにおけるGitHub Copilotの更新が盛りだくさんだったのでキャッチアップしましょう!

https://code.visualstudio.com/updates/v1_86#_github-copilot

インラインの提案におけるフォントファミリーの設定

editor.inlineSuggest.fontFamilyの設定項目を追加し、インラインの提案におけるフォントファミリーを変更できるようになりました。

の設定
editor.inlineSuggest.fontFamilyの設定

インラインの提案のフォントを「Bradley Hand ITC Regular」に変更した様子
インラインの提案のフォントを「Bradley Hand ITC Regular」に変更した様子

インライン チャットにおける保存前の確認

とくにソースコードに関連して、AIの責任ある利用を重視しています。そのため、GitHub Copilotが生成したコードを承諾または破棄してない状態でファイルを保存しようとしたとき、ユーザーに確認する新しい設定を追加しました。この設定は、inlineChat.acceptedOrDiscardBeforeSaveで初期値は有効です。

インライン チャットによる提案を承諾/破棄していない状態で保存する場合に確認
インライン チャットによる提案を承諾/破棄していない状態で保存する場合に確認

この設定はAuto Saveが有効な場合でも適用され、インライン チャットが完了するまで一時的に保存が保留されます。

Hold to Speakモード

少し前にVS Codeに音声入力のサポートを追加しました。VS Code Speech拡張機能をインストールすると、チャットの入力フィールドでspeech-to-textのサポートを利用できます。

Cmd + I(macOS)かCtrl+I(Win、Linux)を押下するとインライン チャットが開き、さらにこのショートカットキーを押し続けると音声入力モードが開始され、音声でインライン チャットに入力できます。(補足: 現時点では英語のみのようです)キーを離すと終了します。

このモードは設定のinlineChat.holdToSpeechで切り替えができ、初期値は有効です。

Preview: インライン チャット クイック ボイス

上記の"Hold to Speek"に加え、より軽快な新しいUIを試しています。Cmd+KCtrl+Kを押下ののちIを押し続けることによってクイック ボイスを起動します。Iを押し続けている間、軽量な録音UIが表示され、キーを離すとリクエストが送信されます。

インライン チャット ライブ モード

過去に、live3という試験的なインライン チャット モードを試験的にリリースしました。これはよりスムーズなストリーミング体験とより簡便なdiffビューを提供するものです。今回、この機能が以前のliveモードに代わり昇格されます。既定値は今でもlivePreviewですが、ユーザーにはliveの利用をおすすめしています。これからも、どのモードがよりよいか継続して試行していきます。

AIによる修正のための光る電球アイコン(sparkle)

Copilotを起動するために、エディタの中で光る電球アイコンを使うことができます。範囲を選択するか新しい業にカーソルを移動し、光る電球を選択し、Modify with CopilotGenerate with Copilotを選択します。

光る電球のアイコン
光る電球のアイコン

光る電球アイコンを選択して開くメニューの例
光る電球アイコンを選択して開くメニューの例

もし他の動作がなければ、光る電球アイコンはSparkleアイコンとして表示され、直接インライン チャットが開きます。

#fileコンテキスト変数

チャットで#を入力することによって使えるコンテキスト変数がいくつか既にありますが、今回、チャットへの指示にコンテキストとして特定のファイルを含めるための#fileを追加しました。入力の候補から#fileを選択し、表示されるクイック ピックからファイルを選択します。

コンテキスト変数#fileを選択し、ファイルを選択する
コンテキスト変数#fileを選択し、ファイルを選択する

もし可能なら、ファイルの内容すべてが挿入されます。コンテキスト ウィンドウに収まりきらないほど大きい場合は、関数の大枠や説明文を含むファイルの概要が挿入されます。概要さえも大きすぎる場合は、ファイルは読み込まれません。

チャットにおける既定のコンテキスト

これまで、チャット リクエストに対して、アクティブなコード エディタから2つのタイプのコンテキストを含めてました。

  1. 選択されたテキストがあれば、その選択部分を含める
  2. 選択がなければ、アクティブなエディタで表示されている範囲のコードを含める

このうち2つ目は、一般的な質問をしたいのにLLMがコンテキストとして含められたエディタのコードに関する質問として解釈してしまい、混乱を招くことに気付きました。そこで、試験的に、既定では表示されているコードを含まず、コードが選択されているときだけ含むようにします。

もちろん、エディタに見えているコードについて尋ねたいときのために、#editorという新しいコンテキスト変数を追加します。

コンテキスト変数#editorを指定して、表示されているコードについて会話する
コンテキスト変数#editorを指定して、表示されているコードについて会話する

"Clear All Workspace Chats"コマンドの追加

新しい会話を始めるために+ボタンを使うと、これまでの会話はワークスペースのチャット履歴に保存されます。チャット履歴はチャット ビューのヘッダにある時計のアイコンからアクセスできます。今回、過去のチャット履歴をすべて削除するためのClear All Workspace Chatsコマンドを追加しました。

チャットビューのヘッダにあるボタンと時計アイコンのボタン
チャットビューのヘッダにある+ボタンと時計アイコンのボタン

コマンド パレットから"Clear All Workspace Chats"コマンドを実行できる
コマンド パレットから"Clear All Workspace Chats"コマンドを実行できる

コミットメッセージの言語

Gitのコミットメッセージを生成する際、言語を指定するためにgithub.copilot.chat.localeOverride設定が追加されました。

Discussion