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

2024年5月 (バージョン 1.90)

バージョン 1.90.2 の更新: このアップデートでは、これらの問題が解決されています。

バージョン 1.90.1 の更新: このアップデートでは、これらの問題が解決されています。

ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Visual Studio Code の2024年5月リリースへようこそ。このバージョンには、皆様に気に入っていただけるであろう多くの更新が含まれています。主なハイライトは以下の通りです。

これらのリリースノートをオンラインで読むには、code.visualstudio.com更新ページにアクセスしてください。Insiders: 新しい機能をいち早く試したいですか?夜間ビルドのInsidersビルドをダウンロードして、最新の更新が利用可能になり次第すぐに試すことができます。

アクセシビリティ

アクセシビリティヘルプダイアログからキーバインドを設定

アクセシビリティヘルプダイアログは、機能やビューの重要なコマンドの概要を提供します。コマンドにキーバインドが割り当てられていない場合、アクセシビリティヘルプダイアログ内から⌥K (Windows, Linux Alt+K)を使用して設定できるようになりました。

実験的: シグナル遅延設定

設定 位置変更のデバウンス が有効になっている場合、設定 シグナルオプションの遅延 を使用して、さまざまなアクセシビリティシグナルのデバウンス時間をカスタマイズできます。

ワークベンチ

エディタータブの複数選択

複数のタブを同時に選択できるようになり、一度に複数のエディターにアクションを適用できます。この新機能により、複数のタブを1つのアクションで移動、固定、または閉じることができます。選択に別のタブを追加するには、Ctrl + Click (macOSではCmd + Click)を使用します。タブの範囲を選択するには、Shift + Clickを使用します。

エディターアクションを常に表示

常にエディターアクションを表示設定を導入しました。この設定を有効にすると、エディターがアクティブであるかどうかにかかわらず、各エディターグループのエディタータイトルアクションが常に表示されます。

設定が有効でない場合 (デフォルト値)、エディターアクションはエディターがアクティブな場合にのみ表示されます。

Editor Actions of each group when the setting is disabled

設定を有効にすると、エディターがアクティブでない場合でも、エディターアクションは常に利用可能になります。

Editor Actions of each group when the setting is enabled

disable-lcd-text をランタイム引数として設定

disable-lcd-text を使用すると、Windows で RGB サブピクセルレンダリングを無効にできます。disable-lcd-text 設定は、argv.json ファイルのランタイム引数としてサポートされるようになりました。以前は、ドキュメント化されていない CLI フラグとしてのみ利用可能でした。ランタイム引数を設定するには、設定: ランタイム引数を構成 コマンドを使用します。

次の画像では、左右で比較されており、左側では disable-lcd-texttrue で、右側では false です。

Comparison showing that disable-lcd-text disables RGB subpixel rendering

テーマ: Light Pink (プレビューは vscode.dev で)

新しいウィンドウにカスタムプロファイルを設定

以前は、新しい VS Code ウィンドウを開くと、アクティブなウィンドウのプロファイルが使用され、アクティブなウィンドウがない場合はデフォルトのプロファイルが使用されました。現在では、window.newWindowProfile 設定を構成することにより、新しいウィンドウを開くときに使用するプロファイルを指定できます。

Configure custom profile for new window

ソース管理

入力/リソースグループのコマンドにフォーカスする

今期のマイルストーンで、ワークベンチコマンドをいくつか追加し、それらのキーボードショートカットを作成できるようにしました。

  • 次のまたは前のソースコントロール入力フィールドにフォーカスする: workbench.scm.action.focusNextInput, workbench.scm.action.focusPreviousInput
  • リポジトリ内の次のまたは前のリソースグループにフォーカスする: workbench.scm.action.focusNextResourceGroup, workbench.scm.action.focusPreviousResourceGroup

ノートブック

セル選択範囲内で検索

ノートブックで、検索コントロールを使用して、選択したセルの特定の範囲内で検索できるようになりました。

notebook.experimental.find.scope.enabledtrue に設定すると、検索コントロールにセル選択範囲内で検索トグルが表示されます。その後、セルの範囲を選択し、検索コントロールを開くか、すでに開いている場合は「セル選択範囲内で検索」ボタンを選択できます。

ノートブックのフォーマットコードアクション

ノートブックは、新しい種類のコードアクションをサポートするようになりました。これは、notebook.format コードアクションの種類プレフィックスで定義されています。これらのコードアクションは、明示的なフォーマット要求 (コマンドノートブック: ノートブックをフォーマットを使用) または保存時のフォーマット要求によって自動的にトリガーできます。

これらは、ワークスペース編集とノートブック編集を使用することで、より強力なフォーマットを提供するために使用できます。始めるには、vscode-extension-samples リポジトリの拡張機能の例を確認してください。

ターミナル

⚠️ Canvas レンダラーの削除

VS Code 1.89 リリースで非推奨となったキャンバスレンダラーは、完全に削除されました。これは、WebGL2 をサポートしない少数のマシンでは、ターミナルが DOM ベースのレンダラーを使用することを意味します。GPU アクセラレーションの詳細については、ターミナル ドキュメントを参照してください。

ターミナルでの重複グリフのリスケーリング

VS Code 1.88 リリースでプレビュー機能として導入された設定 terminal.integrated.rescaleOverlappingGlyphs が、デフォルトで有効になりました。この機能は、曖昧な幅の文字をカバーすることを意図しており、かつ、バッキング pty/Unicode バージョンが想定しているフォントグリフと一致しない可能性のある、後続のセルと重なるグリフをリスケールします。

たとえば、ほとんどのフォントでは、ローマ数字のUnicode文字(U+2160+)は通常複数のセルを占めるため、この設定が有効になっている場合、水平方向にリスケールされます。

リスケーリングなし

Before the glyphs for Ⅷ and Ⅻ depending on the font would always overlap the following cells

リスケーリングあり

After the glyphs for Ⅷ and Ⅻ depending on the font are rescaled horizontally to fit a single cell

拡張機能への貢献

GitHub Copilot

チャットにコンテキストを添付

チャットプロンプトをより具体的にするために、チャットメッセージにコンテキストを追加できます。ワークスペースシンボルなど、より多くの種類のコンテキストをチャットメッセージに添付できるようになりました。以前は、ファイルまたは現在の選択範囲を参照するために「#」記号を使用していました。現在では、チャットビューの入力フィールドにある📎アイコンを選択するか、⌘/ (Windows、Linux Ctrl+/)を入力することで、チャットメッセージにコンテキストを添付できます。

ヒント: 右矢印キーを使用して、コンテキストピッカーを開いたままにして、バックグラウンドでコンテキストを素早く添付できます。エディターでは、選択範囲を右クリックしてCopilot > 選択範囲をチャットに追加を選択することもできます。

Bing 検索と企業ナレッジベースを使用して質問する

VS Code の GitHub Copilot Enterprise ユーザーは、ウェブ検索結果や企業のナレッジベースからのコンテキストで補強された質問をできるようになりました。この機能を試すには、Copilot Chat の最新のプレリリース版をインストールしてください。

チャットビューで、@github Node.js の最新の LTS は何ですか? #web のように質問して、ウェブ検索を利用できます。Copilot が参照した検索結果は、チャット応答の使用された参照セクションに表示されます。

Web search results in Copilot Chat

また、企業のナレッジベース(ドキュメントを含むMarkdownリポジトリのコレクション)についても、VS Codeから直接質問できます。単に@github #kbと入力するだけで、利用可能なナレッジベースから選択できます。同様に、Copilotが参照したナレッジベースのスニペットは、チャット応答の使用された参照セクションに表示されます。

これにより、Copilot Enterpriseユーザーは、#file#selectionなどの既存のチャット変数を活用して、検索結果と内部ドキュメントをエディターのコンテキストと組み合わせることができます。ぜひお試しいただき、https://github.com/microsoft/vscode/issuesまでフィードバックをお寄せください!

チャットコードブロックのIntelliSense

Copilotが生成するコードブロック内で基本的なIntelliSenseをサポートするようになりました。これにより、エディターですでに使用している多くのIntelliSenseツールを使用でき、生成されたコードをよりよく理解するのに役立ちます。

Hover IntelliSense in Copilot chat code block

サポートされているIntelliSense機能には以下が含まれます。

  • ctrl クリック / cmd クリック または F12 を使用して定義へ移動
  • ホバー
  • 実装へ移動
  • 型定義へ移動

IntelliSenseは@workspaceでも使用でき、Copilotの応答で使用されているワークスペースシンボルについて学習できます。

TypeScript、JavaScript、HTML、CSS コードブロック用の IntelliSense はすぐに利用できます。追加の言語サポートについては、その言語の拡張機能をインストールしてみてください。ただし、すべての言語拡張機能がコードブロック IntelliSense をすでにサポートしているわけではありません。まだサポートされていない言語については、機能要求を提出してください。

ファイル名とシンボルのリンクを追加することで、チャット応答を改善しました。これらのリンクを選択すると、エディターで対応するファイルまたはシンボルに移動できます。

Clickable links for symbols used with /explain

Clickable file and symbol links for an @workspace question

インラインチャットとチャットビューの間でアクティブなチャットを移動

完了した、またはまだアクティブなチャットリクエストを、インラインチャットからチャットビューに移動できるようになりました。この機能を使用して、インラインチャットを整理し、会話をより永続的な場所に移動できます。リクエストを移動するには、チャット入力ボックスの隣にあるチャットアイコンを選択します。

Move a chat conversation from inline chat to the Chat view

自動名前変更の提案

Copilot Chat 拡張機能を使用している場合、シンボル名を変更すると Copilot による名前変更の提案が自動的にトリガーされるようになりました。この機能は、設定 github.copilot.renameSuggestions.triggerAutomatically を使用してオフにできます。

Python

バグ修正のテスト

Python テスト書き換えを使用する際の pytest のエクスペリエンスが改善され、pytest の cwd を VS Code ワークスペースのルートに隣接して設定する際のサポートが向上し、関数名がクラス間で重複する場合にテストエクスプローラーにパラメータ化されたテストを表示できるようになりました。

さらに、テスト実行のためのシェルを有効にするために、PATH にシステム構成スクリプトパスを追加することで、テスト検出失敗のシナリオの一部を削減しました。

実験的: IntelliSense と構文ハイライトを備えた Python ネイティブ REPL

IntelliSense や構文ハイライトなどの機能を備えたエディターのような REPL 環境で Python コードを実行できるようになり、REPL とのやり取りがより効率的になりました。この機能を有効にするには、settings.json ファイルで "python.REPL.sendToNativeREPL": true を設定します。これにより、Shift+Enter選択/行を実行で Python ネイティブ REPL でコードが実行されます。

settings.json"python.REPL.sendToNativeREPL": false を設定することで、ターミナル内の Python REPL ( >>> ) を使用することを選択できます。さらに、settings.json に設定 "interactiveWindow.executeWithShiftEnter": false を追加すると、Python ネイティブ REPL は Python の元の対話型インタープリタと同様に、Enter でスマートに実行されます。

GitHub プルリクエストとイシュー

プルリクエストとイシューの作業、作成、管理を可能にするGitHub プルリクエスト拡張機能がさらに進展しました。その他のハイライトについては、拡張機能の0.90.0 リリース用の変更ログを確認してください。

VS Code Speech

VS Code Speech 拡張機能にテキスト読み上げ機能のサポートを追加しました。音声も入力として使用された場合、Copilot Chat の応答を自動的に読み上げるために、新しい設定 accessibility.voice.autoSynthesize を有効にできます。

入力フィールドのマイクアイコンが変化し、テキストが読み上げられていることを示していることに注目してください。読み上げを中断するには、アイコンを選択するか、Escape を押します。

各チャット応答には新しいスピーカーアイコンも表示され、応答を選択的に読み上げることができます。

Text to Speech for a Chat Response

既存の accessibility.voice.speechLanguage 設定で、テキスト読み上げに使用する言語を変更できます。

プレビュー機能

PowerShell 用 VS Code ネイティブ IntelliSense

いくつかの信頼性向上の改善に加えて、ターミナルの PowerShell IntelliSense に以下の変更を加えました。

  • terminal.integrated.shellIntegration.suggestEnabledterminal.integrated.suggest.enabled に変更されました。
  • 新しい terminal.integrated.suggest.quickSuggestions は、空白を入力した後に提案を表示するかどうかを制御します。
  • 新しい terminal.integrated.suggest.suggestOnTriggerCharacters は、/\、または - を入力したときに提案を表示するかどうかを制御します。

TypeScript 5.5

来る TypeScript 5.5 リリースのサポートを引き続き改善しました。このリリースの詳細については、TypeScript 5.5 ベータブログ投稿イテレーション計画をご覧ください。

TypeScript 5.5 ベータ版の使用を開始するには、TypeScript Nightly 拡張機能をインストールしてください。フィードバックを共有し、TypeScript 5.5 でバグが発生した場合はお知らせください。

Web 用イシューレポーター

Web 用 VS Code のイシュー報告フローを改善し、デスクトップユーザーが現在利用しているものと一致させました。ヘルプ: イシューを報告を選択すると、新しいウィンドウでイシューレポーターページが開かれ、ユーザーは必要に応じてバグの種類、ソース、拡張機能を選択できます。拡張機能情報、システム情報などは、GitHub で作成されるイシューに自動的に添付されます。

この機能は現在、このリリースではデフォルトで無効になっていますが、issueReporter.experimental.webReporter 設定をオンにして、ぜひフィードバックを共有してください。

拡張機能作成

拡張機能に esbuild を使用する

TypeScript および Web 用の yo code 拡張機能ジェネレーターに、バンドラーとして esbuild を使用するオプションが追加されました。esbuild を選択すると、esbuild.js ビルドスクリプトが作成され、package.json にスクリプトエントリが追加され、.vscode/tasks.json にビルドタスクが追加されます。

既存の拡張機能で esbuild を使用するには、拡張機能のバンドルWeb 拡張機能のガイドを参照してください。

サンプルプロジェクトはvscode-extension-samples/esbuild-sampleにあります。

チャットおよび言語モデル API

拡張機能がチャットに参加し、言語モデルにアクセスできるようにする API を完成させました。拡張機能のサンプルチャット拡張機能のドキュメントページで詳細を確認するか、Microsoft Build カンファレンスで発表したGitHub Copilot で VS Code 拡張機能を強化する講演をご覧ください。

重要: これらの API は最終版ですが、現在は VS Code Insiders でのみ利用可能です。

チャット参加者

チャット参加者 API を使用すると、拡張機能は、チャット入力フィールドで @ を使用して呼び出すことができるチャット参加者で GitHub Copilot Chat を拡張できます。参加者は、マークダウン、ファイルツリー、VS Code コマンドを実行するためのボタン、またはその他の種類のコンテンツでユーザーリクエストに返信できます。

Chat Participant example in the Chat view

言語モデル

言語モデル API は、gpt-3.5 や gpt-4 などの Copilot のチャットモデルへのアクセスを可能にします。この API はチャット参加者だけでなく、他の機能を強化するためにも使用できます。この API は、チャットリクエストやトークンのカウントに使用される LanguageModelChat オブジェクトを中心に構築されています。

チャットオブジェクトにアクセスする唯一の方法は vscode.lm.selectChatModels 関数です。この関数は、ベンダー、ファミリー、バージョン、識別子など、チャットモデルのさまざまなプロパティを絞り込むためのセレクターを受け入れます。値は比較的自由形式であり、それらを提供する拡張機能のドキュメントで検索する必要があります。現在、Copilot Chat 拡張機能のみがチャットモデルを提供しています。これは copilot ベンダーを使用し、現在のファミリーは gpt-3.5-turbogpt-4 ですが、変更される可能性があります。

このスニペットは、copilotベンダーのすべてのチャットモデルを選択する方法を示しています。

const models = await vscode.lm.selectChatModels({
  vendor: 'copilot'
});

if (models.length === 0) {
  // no models available
  return;
}

selectChatModelsを呼び出す際に非常に重要な点が2つあります。

  1. モデルが利用できない場合、関数は空の配列を返し、拡張機能はこのケースを処理する必要があります。
  2. Copilot のチャットモデルを使用するには、拡張機能が使用する前にユーザーの同意が必要です。同意は認証ダイアログとして実装されます。そのため、selectChatModels はコマンドなどのユーザーが開始したアクションの一部として呼び出すべきであり、突然呼び出すべきではありません。

チャットオブジェクトが手元にあれば、拡張機能はそれを使用してチャットリクエストを送信できます。以下のスニペットは、チャットリクエストを送信し、応答ストリームを処理する方法を示しています。

// take the first model and say "Hello"
const [chat] = models;
const messages = [vscode.LanguageModelChatMessage.User('Hello')];
const response = await chat.sendRequest(messages);

// the response is always an async iterable that can be consumed with for-await
for await (const part of response.text) {
  console.log(part);
}

これが言語モデル API の核心です。より完全な例については、拡張機能のサンプルを参照してください。さらに多くのサンプル、ドキュメント、API の拡張にご期待ください。

VS Code 用の Java 拡張機能は、すでに言語モデル API を使用して、Java コードの Copilot ベースのリライト機能を提供しています。これらの更新の詳細については、Visual Studio Code の Java 2024 年 5 月のブログ投稿でご確認ください。

@vscode/prompt-tsx ライブラリ

VS Code 向けの GitHub Copilot 拡張機能の開発を支援するために、複雑なプロンプトを宣言し、LLM のコンテキストウィンドウの制限に従ってチャットメッセージに変換するための TSX ベースのライブラリを開発・公開しました。この開発にあたり、Anysphere の priompt ライブラリからインスピレーションを得ました。チャットおよび言語モデル API の使用を計画している拡張機能開発者の方は、このライブラリの最新のアルファリリース @vscode/prompt-tsx を試すことを検討してください。

GitHub Apps を通じた GitHub Copilot の拡張

GitHub App を提供することによって、GitHub Copilot を拡張することも可能です。この GitHub App は、チャットビューでチャット参加者を提供でき、@ を使用して呼び出すことができます。GitHub App はサービスによってサポートされており、github.com、Visual Studio、VS Code など、すべての GitHub Copilot のサーフェスで機能します。GitHub App は VS Code API へのフルアクセスを持ちません。GitHub App を通じて GitHub Copilot を拡張するには、Copilot Partner Program に参加する必要があります。Microsoft Build カンファレンスで発表したGitHub Copilot の拡張に関する講演を見ることで、さらに学ぶことができます。

デバッグスタックフォーカスAPI

VS Code は、新しい API を通じて、デバッグビューでどのスタックフレームとスレッドがフォーカスされているかを公開するようになりました。vscode.debug.activeStackItem は現在フォーカスされているスタックアイテム (スレッドまたはスタックフレーム) を取得し、vscode.debug.onDidChangeActiveStackItem はそれが変更されたときに発火するイベントです。

これは、DebugAdapterTracker を使用するなど、VS Code のデバッグ機能を拡張する API と組み合わせて役立ちます。デバッガー拡張機能の作成について詳しく学ぶことができます。

TestRunRequest.preserveFocus API

以前は、拡張機能によってトリガーされたテスト実行では、UI から開始された実行と同じように、テスト結果ビューにフォーカスが移動することはありませんでした。この動作は、TestRunRequest を作成するときに設定できる preserveFocus フラグを介して設定可能になりました。このフラグのデフォルトは後方互換性を維持するために true です。

提案されたAPI

属性付きテストカバレッジ

現在、テストごとにコードカバレッジを割り当てるAPIの開発に取り組んでいます。これにより、ユーザーはどのテストがどのコードを実行したかを確認でき、エディターとテストカバレッジビューの両方に表示されるカバレッジをフィルタリングできます。詳細と更新情報については、vscode#212196 を確認してください。

ホバー詳細度レベル

前回のマイルストーンで、詳細度を増減できるホバーを提供する新しい API が提案されました。今回のマイルストーンで、API が変更され、HoverVerbosityRequestverbosityDelta を使用してホバーの詳細度レベルの相対的な増減を通知するようになりました。以前は、HoverVerbosityRequest は列挙型 HoverVerbosityAction を使用して、詳細度を増やすべきか減らすべきかを通知していました。

エンジニアリング

起動時のメモリ効率の追跡

毎日、Windows、macOS、Linux で VS Code insiders の起動パフォーマンスを測定しています。私たちの主な関心は、テキストファイルがオープンされるまでの起動速度です。

今月、起動をさらに高速化するために改善を計画している別のメトリックを追加しました。それは、どれだけのメモリを消費し、そのうちどれだけが V8 によってガーベージコレクションされるかです。この数値を減らすことができれば、V8 のガーベージコレクション実行による起動時間への影響は少なくなります。

Memory consumption statistics for VS Code

Electron 29 の更新

今期のマイルストーンでは、安定版リリースで Electron 29 のアップデートをユーザーに提供しています。このアップデートには Chromium 122.0.6261.156 と Node.js 20.9.0 が含まれています。Insiders ビルドで自己ホストして早期のフィードバックを提供してくださった皆様に感謝いたします。

注目すべき修正点

  • 212386 ローカル履歴: 以前に削除されたファイルのエントリを保持しない
  • 213645 Aux window が Firefox で動作しない
  • vscode-js-debug#2000/2002 JavaScript デバッガーはより高速になり、特にソースマップのリネーム処理が改善されました

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-eslintへの貢献者

vscode-extension-samplesへの貢献

vscode-generator-codeへの貢献者

vscode-hexeditorへの貢献

vscode-languageserver-nodeへの貢献者

vscode-mypyへの貢献

vscode-remote-try-dotnet への貢献

language-server-protocolへの貢献者

monaco-editorへのコントリビューション