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

2025年5月 (バージョン 1.101)

リリース日:2025年6月12日

セキュリティ更新:以下の拡張機能にセキュリティ更新があります:ms-python.python

更新 1.101.1:この更新は、これらの問題に対処します。

更新 1.101.2:この更新は、これらの問題に対処します。

ダウンロード:Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap


Visual Studio Code 2025年5月リリースへようこそ。このバージョンには多くの更新が含まれており、皆様に喜んでいただけると幸いです。主なハイライトの一部を以下にご紹介します。

  • MCP

    • プロンプト、リソース、サンプリングのサポートにより、エージェントのコーディングフローを拡張します (詳細を表示)。
    • 認証が必要なMCPサーバーにアクセスします (詳細を表示)。
    • 開発モードでMCPサーバーをデバッグします (詳細を表示)。
    • 拡張機能からMCPサーバーを公開します (詳細を表示)。
  • チャット

    • 関連ツールをツールセットにまとめ、グループ化して管理します (詳細を表示)。
  • ソース管理

    • ソース管理グラフビューでファイルを表示します (詳細を表示)。
    • VS Code内からGitHub Copilotコーディングエージェントの作業を割り当て、追跡します (詳細を表示)。

これらのリリースノートをオンラインで読むには、code.visualstudio.com更新情報をご覧ください。Insiders版: 新機能をいち早く試したいですか?毎晩のInsidersビルドをダウンロードして、最新の更新が利用可能になり次第お試しいただけます。

チャット

チャットツールセット

VS Codeでは、提案されたAPIまたはUIを介してツールセットを定義できるようになりました。ツールセットは、個々のツールと同様に使用できるさまざまなツールのコレクションです。ツールセットを使用すると、関連するツールをグループ化しやすくなり、エージェントモードですばやく有効または無効にできます。たとえば、以下のツールセットはGitHub通知の管理用です (GitHub MCPサーバーを使用)。

{
  "gh-news": {
    "tools": ["list_notifications", "dismiss_notification", "get_notification_details"],
    "description": "Manage GH notification",
    "icon": "github-project"
  }
}

ツールセットを作成するには、コマンドパレットからツールセットの構成 > 新しいツールセットファイルを作成コマンドを実行します。その後、ツールセットに含めるツールを選択し、説明とアイコンを提供できます。

チャットクエリでツールセットを使用するには、#gh-newsのようにその名前を#-メンションで参照します。また、チャット入力ボックスのツールピッカーから選択することもできます。

Screenshot of the Chat view showing a query about unread notifications, using the 'gh-news' tool set highlighted in both the chat interface and a JSON configuration file which defines this tool set.

ツールセットの詳細については、ドキュメントをご覧ください。

MCPのプロンプトサポート

VS CodeのModel Context Protocolのサポートにプロンプトサポートが含まれるようになりました。プロンプトは、言語モデル用の再利用可能なスニペットやタスクを生成するためにMCPサーバーによって定義できます。プロンプトは、チャットでスラッシュ/コマンドとして、/mcp.servername.promptnameの形式でアクセスできます。プレーンテキストを入力したり、コマンド出力をプロンプト変数に含めたりできます。サーバーが提供する場合には、補完もサポートしています。

以下の例は、AIを使用してプロンプトを生成し、Gistpad MCPサーバーを使用して保存し、それを使って変更履歴エントリを生成する方法を示しています。

MCPのリソースサポート

VS CodeのModel Context Protocolのサポートには、リソーステンプレートのサポートを含むリソースサポートが含まれるようになりました。これはいくつかの場所で利用できます。

  1. MCPツール呼び出しから返されるリソースはモデルで利用でき、保存ボタンまたはリソースをエクスプローラービューにドラッグすることで、チャットに保存できます。
  2. リソースは、チャットのコンテキストの追加...ボタンをクリックし、次にMCPリソース...を選択することで、コンテキストとしてアタッチできます。
  3. MCP: リソースの参照コマンドを使用するか、MCP: サーバーを一覧表示コマンドでサーバーのエントリを選択することで、サーバー全体のリソースを参照および表示できます。

これは、Gistpad MCPサーバーからチャットにリソースをアタッチする例です。

MCPのサンプリングサポート (実験的)

VS CodeのModel Context Protocolのサポートには、MCPサーバーがモデルにリクエストを返すことを可能にするサンプリングが含まれるようになりました。MCPサーバーがサンプリングリクエストを初めて行う際に確認を求められ、MCP: サーバーを一覧表示でサーバーを選択することで、MCPサーバーがアクセスできるモデルを構成したり、リクエストログを表示したりできます。

サンプリングサポートはまだ初期段階であり、今後のイテレーションで拡張および改善する予定です。

MCPの認証サポート

VS Codeは、認証を必要とするMCPサーバーをサポートするようになり、そのサービスのためにユーザーアカウントに代わって動作するMCPサーバーと対話できるようになりました。

この機能は、クライアント向けのMCP承認仕様を実装しており、両方をサポートしています。

  • 2025年3月26日版の仕様: MCPサーバーが承認サーバーとして動作する場合。
  • ドラフト仕様: MCPサーバーがリソースサーバーとして動作する場合 (これは近日中に確定する予定です)。

MCPサーバーがドラフト仕様を実装し、GitHubまたはEntraを認証サーバーとして利用している場合、どのMCPサーバーがあなたのアカウントにアクセスできるかを管理できます。

Screenshot of the "Manage Trusted MCP Servers" option in the account menu.

Screenshot of the "Manage Trusted MCP Servers" Quick Pick.

また、そのサーバーがどのアカウントを使用すべきか (前のクイックピックの歯車ボタンから) 管理することもできます。

Screenshot of the "Account Preference" Quick Pick.

動的クライアント登録に依存する他のMCPサーバーの場合、Linearのように、他のすべてと同じ場所に認証状態を含めます。

Screenshot of Linear appearing in the account menu.

そこからサインアウトすることもできます。これらの場合、コード認証フローだけでなく、認証サーバーがサポートしていればデバイスコードフローもサポートします。

また、これらの動的クライアント登録をクリーンアップできるコマンド認証: 動的認証プロバイダーを削除を導入しました。これにより、VS Codeに発行されたクライアントIDと、この認証プロバイダーに関連付けられたすべてのデータが破棄されます。

MCPサーバーを追加するには、MCP: サーバーを追加...コマンドを使用できることを覚えておいてください。これは認証を伴うサーバーでも同じ入り口です。

MCP開発モード

サーバー構成にdevキーを追加することで、MCPサーバーの開発モードを有効にできます。これは2つのプロパティを持つオブジェクトです。

  • watch: MCPサーバーを再起動するファイル変更を監視するためのファイルグロブパターン。
  • debug: MCPサーバーでデバッガーを設定できるようにします。現在、Node.jsおよびPythonサーバーをそれぞれnodeおよびpythonで起動した場合のデバッグのみをサポートしています。

.vscode/mcp.json

{
  "servers": {
    "gistpad": {
      "command": "node",
      "args": ["build/index.js"],
+     "dev": {
+       "watch": "build/**/*.js",
+       "debug": { "type": "node" }
+     },

チャットUXの改善

皆様からのフィードバックに基づいて、VS Codeのチャットユーザーエクスペリエンスを継続的に改善しています。そのフィードバックの一つに、チャットでユーザーメッセージとAI応答を区別するのが難しいというものがありました。これに対処するため、ユーザーメッセージの外観をより明確にしました。

以前のリクエストの取り消しも、より分かりやすくなりました。リクエストにカーソルを合わせ、Xボタンを選択すると、そのリクエストとそれに続くすべてのリクエストを取り消すことができます。さらに手早く行うには、キーボードショートカット⌘Backspace (Windows, LinuxではDelete)を使用してください!

最後に、チャット入力ボックスからの添付ファイルがよりナビゲートしやすくなりました。

VS Codeでのチャットの使用に関する詳細については、ドキュメントをご覧ください。

編集をより効率的に適用

ファイルを編集する際、VS Codeは2つの異なるアプローチをとります。ファイルを上から下へ書き換えるか、複数の小さな編集を行うかです。両方のアプローチには違いがあり、例えば前者は大きなファイルでは遅くなることがあり、中間状態ではコンパイルが成功しないことがよくあります。そのため、UIは適応し、必要に応じてのみ自動保存と波線を条件付きで無効にします。

保持および元に戻すコマンドのキーバインディングも統一しました。個々の変更の保持と元に戻すは、⌘Y (Windows, LinuxではCtrl+Y)⌘N (Windows, LinuxではCtrl+N)で行われるようになりました。同様に、ファイル内のすべての変更を保持および元に戻すキーバインディングも統一され、現在は⇧⌘Y (Windows, LinuxではCtrl+Shift+Y)⇧⌘N (Windows, LinuxではCtrl+Shift+N)です。これは統一のためだけでなく、以前の一般的な編集コマンド (すべて左を削除など) との競合を解消するためでもあります。

暗黙的なコンテキスト

現在のファイルをチャットのコンテキストとして追加する機能が合理化され、簡素化されました。以前の「目玉トグル」は少し扱いにくいと感じる人が多かったためです。今では、現在のファイルが推奨コンテキスト項目として提示されます。項目を選択するだけで、チャットコンテキストに追加または削除できます。プロンプト入力フィールドから、Shift+Tab, Enterを押すと、キーボードですばやく実行できます。

さらに、エージェントモードでは、現在のエディターに関するヒントが含まれるようになりました。これにはファイルの内容は含まれず、ファイル名とカーソル位置のみです。エージェントは、クエリに関連すると判断した場合、持っているツールを使用してファイルの内容を自分で読み取ることができます。

チャットでのコンテキスト追加に関する詳細については、ドキュメントをご覧ください。

タスク構成エラーの修正

タスクと問題マッチャーの構成は難しい場合があります。タスク構成にエラーがある場合に提示されるGithub Copilotで修正アクションを使用して、すばやく効率的に対処してください。

カスタムチャットモード (プレビュー)

デフォルトでは、チャットビューは、Ask、Edit、Agentの3つの組み込みチャットモードをサポートしています。各チャットモードには、LLMがリクエストをどのように処理すべきかを記述する一連の基本指示と、そのモードで使用できるツールのリストが付属しています。

チャットビューで使用できる独自のカスタムチャットモードを定義できるようになりました。カスタムチャットモードを使用すると、チャットの動作を調整し、そのモードでどのツールを利用できるかを指定できます。これは、特定のワークフローや、LLMに特定の指示を提供したい場合に特に便利です。たとえば、コードベースへの読み取り専用アクセスのみを持つ、新機能の計画用のカスタムチャットモードを作成できます。

カスタムチャットモードを定義して使用するには、次の手順に従います。

  1. コマンドパレットからチャット: チャットモードを構成コマンドを使用して、カスタムモードを定義します。
  2. 作成された*.chatprompt.mdファイルに、カスタムチャットモードの指示と利用可能なツールを提供します。
  3. チャットビューで、チャットモードのドロップダウンリストからチャットモードを選択します。
  4. チャットプロンプトを送信します。

Screenshot of the custom chat mode selected in the Chat view.

以下の例は、カスタムの「計画」チャットモードを示しています。

---
description: Generate an implementation plan for new features or refactoring existing code.
tools: ['codebase', 'fetch', 'findTestFiles', 'githubRepo', 'search', 'usages']
---
# Planning mode instructions
You are in planning mode. Your task is to generate an implementation plan for a new feature or for refactoring existing code.
Don't make any code edits, just generate a plan.

The plan consists of a Markdown document that describes the implementation plan, including the following sections:

* Overview: A brief description of the feature or refactoring task.
* Requirements: A list of requirements for the feature or refactoring task.
* Implementation Steps: A detailed list of steps to implement the feature or refactoring task.
* Testing: A list of tests that need to be implemented to verify the feature or refactoring task.

: この機能はまだ開発中ですが、ぜひお試しください!VS Code Insidersで最新の進捗状況を追跡し、動作しない点や不足している点をお知らせください。

タスク診断の認識

チャットエージェントがタスクを実行する際、問題マッチャーによって特定されたエラーや警告を認識するようになりました。この診断コンテキストにより、チャットエージェントは問題が発生したときに、よりインテリジェントに対応できます。

ターミナルのCWDコンテキスト

エージェントモードがターミナルを開き、シェル統合がアクティブな場合、チャットエージェントは現在の作業ディレクトリ (CWD) を認識します。これにより、より正確でコンテキストを認識したコマンドサポートが可能になります。

フローティングウィンドウの改善

チャットセッションをフローティングウィンドウに移動すると、タイトルバーに2つの新しいアクションが利用可能になりました。

  • チャットを元のVS Codeウィンドウにドックに戻す
  • フローティングウィンドウで新しいチャットセッションを開始する

Screenshot of the Chat view in a floating window, highlighting the Dock and New Chat buttons in the title bar.

フェッチツールの確認

フェッチツールを使用すると、ウェブページから情報を取得できます。プロンプトインジェクションの可能性について警告するメッセージを、確認ダイアログに追加しました。

Screenshot of the fetch tool with a warning about prompt injection.

より多くの組み込みツールをカスタマイズ

エージェントモードまたはカスタムモードで、すべての組み込みツールを有効または無効にできるようになりました。たとえば、editFilesを無効にしてエージェントモードがファイルを直接編集できないようにしたり、runCommandsを無効にしてターミナルコマンドを実行できないようにしたりできます。

エージェントモードで、ツールの構成ボタンを選択してツールピッカーを開き、目的のツールセットを選択します。

Screenshot of the tool picker, showing the "editFiles" tool set item cleared.

このメニューの一部のエントリは、複数のツールをグループ化するツールセットを表しています。たとえば、モデルにはテキストファイルやノートブックを編集または作成するための複数のツールが提供されており、これらはモデルファミリーによって異なる場合もあります。editFilesはこれらすべてをグループ化します。

要素をチャットに送信 (実験的)

前回のマイルストーンで、Simple Browserを開き、埋め込みブラウザからチャットに追加するウェブ要素を選択できる新しい実験的機能を追加しました。

Screenshot showing the Live Preview extension, highlighting the overlay controls to select web elements from the web page.

この機能の改善を続けるにあたり、Live Preview拡張機能でもウェブ要素の選択をサポートしました。拡張機能をダウンロードし、任意のHTMLファイルからライブサーバーを起動して、この機能をお試しください。

アクセシビリティ

ユーザーアクションが必要なサウンド

チャットでユーザーアクションが必要な場合に、それを通知するアクセシビリティ信号を追加しました。サウンドを微調整中のため、この機能はオプトインです。accessibility.signals.chatUserActionRequiredでこの動作を設定できます。

新しいコードアクションサウンド

以下の際、異なるサウンドを導入しました。

エージェントモードのアクセシビリティ改善

アクセシブルビューに確認ダイアログに関する豊富な情報が含まれるようになり、過去のツール実行、現在のツール実行、および保留中の確認をカバーしています。これには、使用される入力も含まれます。

応答に確認ダイアログが表示される場合、アクションのタイトルが対応するコードブロックのARIAラベル、応答のARIAラベル、およびライブアラートに含まれるようになり、スクリーンリーダーユーザーにより良いコンテキストを提供します。

エディター体験

入力時の検索 (Find as you type)

設定: editor.find.findOnType

入力時の検索は、検索コントロールのデフォルトの動作でしたが、この動作を維持するか、無効にしてEnterキーを押した後でのみ検索を実行するかを制御できるようになりました。

ネイティブウィンドウタイトルバーを備えたカスタムメニュー

設定: window.menuStyle

window.menuStyle設定を使用することで、WindowsとLinuxのメニューバーとコンテキストメニュー、およびmacOSのコンテキストメニューに使用されるメニューのスタイルを指定できるようになりました。

  • native: OSによってレンダリングされます
  • custom: VS Codeによってレンダリングされます
  • inherit: window.titleBarStyleで設定されたタイトルバーのスタイルと一致します(ネイティブタイトルバーをカスタムメニューバーとコンテキストメニューで使用できます)。

Linuxネイティブウィンドウコンテキストメニュー

カスタムタイトルバーのアプリケーションアイコンを右クリックすると、ネイティブウィンドウコンテキストメニューがサポートされるようになりました。

Screenshot of the native window context menu over the custom title bar.

プロセスエクスプローラーのWebサポート

プロセスエクスプローラーは、エディターウィンドウ用にワークベンチにあるフローティングウィンドウインフラストラクチャを使用するように変換されました。その結果、リモートに接続している場合(たとえば、Codespacesで)、Webでもプロセスエクスプローラーをサポートするようになりました。

Screenshot of the VS Code process explorer in a floating window.

Windowsシェル環境の検出

WindowsのPowerShell向けにシェル環境検出を実装しました。これにより、Node.jsがさまざまなバージョンマネージャーを通じて構成するPATHの更新など、PowerShellプロファイルで構成された環境がVS Codeに継承されます。

未公開拡張機能の警告

インストール済みの拡張機能がマーケットプレイスで利用できなくなった場合、警告インジケーターが表示されるようになり、非公開または削除された可能性のある問題のある拡張機能を特定するのに役立ちます。

Screenshot of an extension with a warning indicator and a message indicating it's no longer available in the Marketplace.

設定検索候補 (プレビュー)

設定: workbench.settings.showAISearchToggle

今回のマイルストーンで、文字列一致に基づく結果ではなく、意味的に類似した結果を見つけるAI検索を開始するトグルを「設定」エディターに追加しました。たとえば、AI検索では「テキストサイズを大きくする」と検索するとeditor.fontSize設定が見つかります。

トグルを表示するには、設定を有効にしてVS Codeを再起動してください。また、精度が低い設定検索結果を特定して修正する作業も進めており、自然言語クエリで期待される設定が見つからなかった場合のご意見を歓迎します。

次のマイルストーンでは、トグルを削除し、実験的な設定を、遅いAI検索結果をリストの末尾に直接追加するタイミングを制御する設定に変更することも検討しています。

検索キーワードの提案 (プレビュー)

設定: search.searchView.keywordSuggestions

前回のマイルストーンで、関連性の高い結果をより早く見つけられるように、検索ビューにキーワード候補を導入しました。今回、候補のパフォーマンスを大幅に改善し、以前よりも約5倍速く結果が表示されるようになりました。

また、設定をChat拡張機能からVS Codeコアに移動し、github.copilot.chat.search.keywordSuggestionsからsearch.searchView.keywordSuggestionsに名前を変更しました。

セマンティック検索動作オプション (プレビュー)

設定: search.searchView.semanticSearchBehavior

検索ビューのセマンティック検索を使用すると、単にテキストを一致させるだけでなく、クエリの意味に基づいて結果を得ることができます。これは、検索する正確な用語がわからない場合に特に便利です。

デフォルトでは、セマンティック検索は明示的に要求された場合にのみ実行されます。セマンティック検索をトリガーするタイミングを制御する設定が追加されました。

  • manual (デフォルト): UIから手動でトリガーされた場合にのみセマンティック検索を実行します (⌘I (Windows, LinuxではCtrl+I))
  • runOnEmpty: テキスト検索で結果が返されない場合に自動的にセマンティック検索を実行します
  • auto: すべての検索クエリに対して、テキスト検索と並行して常にセマンティック検索を実行します

編集コンテキスト

設定: editor.editContext

Stable版で、editor.editContext設定をデフォルトで有効にしました。これは、エディターの入力がEditContext APIによって提供されるようになったことを意味します。これにより、特にIME体験に関連する多数のバグが修正され、今後、エディター内でより汎用性と堅牢性の高い入力体験への道が開かれるでしょう。

EditContext APIの詳細については、MDNドキュメントを参照してください。

コード編集

NESインポートの提案

設定: github.copilot.nextEditSuggestions.fixes

先月、TypeScriptとJavaScriptの欠落しているimportステートメントの追加を自動的に提案する「次の編集候補 (NES)」のサポートを導入しました。今回のリリースでは、これらの候補の精度と信頼性を向上させ、Pythonファイルへのサポートも拡大しました。

Screenshot showing NES suggesting an import statement.

NESはすべてのVS Code Insidersユーザー向けに有効になっており、6月中にStableユーザー向けにデフォルトで段階的に有効になります。いつでも設定からNESを有効にすることができます。

NESの承認フロー

次の編集候補の承認は、キーボードナビゲーションの改善により、よりシームレスになりました。一度候補を承認すると、再入力しない限り、単一のTabキーを押すだけで、後続の候補を承認し続けることができます。入力し始めた後は、Tabキーを押すと、まずカーソルが次の候補に移動し、その後承認できます。

ノートブック

エージェントのセル実行におけるフォローモード

設定: github.copilot.chat.notebook.followCellExecution.enabled

フォローモードでは、ノートブックビューがエージェントによって現在実行されているセルに自動的にスクロールします。Jupyter Notebookのセル実行におけるエージェントのフォローモードを有効または無効にするには、github.copilot.chat.notebook.followCellExecution.enabled設定を使用してください。

エージェントがセル実行ツールを使用すると、ノートブックのツールバーがピンアイコンで更新され、フォローモードの状態を示します。エージェント応答の途中で基本設定値を変更せずに動作を切り替えることができ、エージェントの作業をリアルタイムで追跡したり、エージェントが反復を続ける間にコードの特定の部分を確認したい場合にオフにしたりできます。再度フォローしたい場合は、モードを切り替えるだけで、次の実行から参加できます。

エージェントモードのノートブックツール

ノートブックの構成

Jupyter拡張機能は、Jupyter Notebookのカーネルを構成するためのツールを提供します。このツールは、カーネルが選択され、ノートブックで使用する準備ができていることを保証します。これには、必要に応じて仮想環境を作成するプロセス(推奨されるアプローチ)を案内したり、既存のPython環境を選択するように促したりすることが含まれます。

このツールは、LLMがユーザーの操作を最小限に抑えてセルを実行するなど、ノートブック上での操作を実行できるようにし、エージェントモードでの全体的なユーザーエクスペリエンスを向上させます。

長時間の実行エージェントワークフロー

エージェントは、正確なコンテキストで作業を続けるために、内部のNotebook Summaryツールにアクセスできます。コンテキストが大きすぎてエージェントが複雑な操作を続行できない場合、会話履歴を要約する際にもその要約が含まれます。

実行確認時のセルプレビュー

エージェントがノートブックセルの実行確認を要求する際に、そのセルのコードスニペットが表示されます。チャットビューのセルリンクから、ノートブック内のセルに直接移動できるようになりました。

ソース管理

Copilotコーディングエージェントの統合

Copilotコーディングエージェントを使用すると、GitHub Copilotは人間開発者と同じようにバックグラウンドで独立してタスクを完了できます。GitHub Pull Requests拡張機能を拡張し、VS Code内からエージェントのタスクを簡単に割り当てて追跡できるようにしました。

拡張機能に以下の機能を追加しました。

  • Copilotに割り当て: VS CodeのIssueまたはPRビューからプルリクエストまたはIssueをCopilotに割り当てます。
  • Copilotが私のためにPRクエリ: Copilotがあなたのために作業しているすべてのプルリクエストをすばやく確認できます。
  • PRビュー: Copilotコーディングエージェントのステータスを確認し、ブラウザでセッションの詳細を開きます。

Screenshot showing the GitHub Pull Requests view, highlighting the assign to Copilot action, and the PR query for work assigned to Copilot.

ソース管理履歴項目の詳細

多くの方のご要望に応え、ソース管理グラフビューで項目を選択すると、その履歴項目のリソースが表示されるようになりました。...メニューからツリービューまたはリストビューの表示を選択できます。

複数ファイル差分エディターで履歴項目のすべてのリソースを開くには、ホバー時に変更を開くアクションを使用します。グラフビューから特定のリソースを選択すると、そのリソースのみの差分エディターが開きます。ファイルを開くアクションを選択すると、その特定のバージョンのファイルが開きます。

チャットコンテキストに履歴項目を追加

ソース管理履歴項目をチャットリクエストのコンテキストとして追加できるようになりました。これは、特定のコミットやプルリクエストの内容をチャットプロンプトのコンテキストとして提供したい場合に便利です。

Screenshot of the Chat view input box that has a history item added as context.

履歴項目をチャットに追加するには、チャットビューからコンテキストを追加 > ソース管理を使用し、特定の履歴項目を選択します。または、ソース管理グラフで履歴項目を右クリックし、コンテキストメニューからCopilot > 履歴項目をチャットに追加を選択します。

タスク

インスタンスポリシー

タスクのrunOptionsinstancePolicyプロパティが追加されました。これは、タスクがinstanceLimitに達した場合の動作を決定します。

オプションには、prompt (デフォルト)、silentterminateNewestterminateOldest、およびwarnが含まれます。

Screenshot showing an  being configured in a  file and displays the options with prompt as the default value.

ターミナル

言語サーバーベースのターミナル提案

対話型Python REPLセッションのターミナルで言語サーバーの補完が利用可能になりました。これにより、エディターで受け取るのと同じ言語補完がターミナル内でも利用できるようになります。Pylance経由でのPythonのサポートから開始し、将来的にはより多くの言語に拡大する予定です。

試すには、以下の設定が有効になっていることを確認してください。

リモート開発

Remote Development拡張機能を使用すると、開発コンテナー、SSHを介したリモートマシン、リモートトンネル、またはLinux用Windowsサブシステム (WSL) をフル機能の開発環境として使用できます。

主なハイライトは次のとおりです。

  • SSH接続前スクリプト
  • リモートエクスプローラーの改善

これらの機能の詳細については、Remote Developmentリリースノートを参照してください。

拡張機能への貢献

Python

Pythonチャットツール

Python拡張機能に、「Python環境の情報を取得」、「Python環境の実行可能ファイル情報を取得」、「Pythonパッケージのインストール」、「Python環境の構成」というチャットツールが含まれるようになりました。プロンプトに#getPythonEnvironmentInfo #installPythonPackageを追加して直接参照するか、エージェントモードが適用可能な場合にツールを自動的に呼び出します。これらのツールは、ファイルまたはワークスペースのコンテキストに基づいて適切な環境情報をシームレスに検出し、正確な環境解決でパッケージのインストールを処理します。

「Python環境の構成」ツールは、ワークスペース用にPython環境が正しくセットアップされていることを保証します。これには、必要に応じて仮想環境を作成し、それをワークスペースのアクティブなPython環境として選択することが含まれます。

以前Python Environments拡張機能(プレビュー)で導入されたツールは、Python拡張機能に移行され、Python拡張機能がインストールされているすべてのユーザーがこれらのツールを利用できるようになりました。

テンプレートからプロジェクトを作成する

Python Environments拡張機能は、Pythonパッケージと基本的なスクリプトのプロジェクト作成をサポートするようになり、足場組を迂回してより迅速にコーディングを開始できるようになりました。Python環境: テンプレートからプロジェクトを作成コマンドを使用して、パッケージを作成するかスクリプトを作成するかを選択します。

パッケージ作成の場合、パッケージの名前を付け、仮想環境を作成し、テストサブフォルダー、pyproject.tomldev-requirements.txt、および定型的な__main__.py__init__.pyファイルを含む足場組されたプロジェクトを受け取ることができます。

スクリプトの場合、選択した名前で新しいPythonファイルを作成し、定型コードを含めます。

PyEnvとPoetryのサポート

Python Environments拡張機能に、環境管理のためのpyenv、およびパッケージと環境管理の両方のためのpoetryのサポートが追加されました。

GitHubプルリクエスト

GitHub Pull Requests拡張機能は、プルリクエストと課題の作業、作成、管理を可能にするもので、さらに進展がありました。新機能は以下の通りです。

  • プライベートリポジトリのコメント内の画像が、プルリクエストのファイルコメントに表示されるようになりました。
  • 「通知」ビューがデフォルトで折りたたまれた状態で表示されるようになりました。—タイムラインおよびIssue/プルリクエスト本文内のIssueおよびプルリクエストのリンクは、ブラウザではなくVS Code内で開かれるようになりました。
  • 「プルリクエスト」ビューの「私に割り当てられた」クエリが削除され、「ローカルプルリクエストブランチ」および「すべてのオープン」クエリは設定githubPullRequests.queriesを使用して削除できます。Copilotを使用するリポジトリの場合、設定が未構成の場合に「Copilotが私の代わりに」クエリが追加されます。
  • Copilotの「作業開始」、「作業停止」、「セッション表示」がタイムラインに表示されるようになりました。

その他のハイライトについては、拡張機能の0.112.0リリースに関する変更履歴を確認してください。

拡張機能の作成

MCP拡張機能API

拡張機能はMCPサーバーのコレクションを公開できるようになりました。これにより、MCPサーバーを拡張機能とバンドルしたり、他のソースからMCPサーバーを動的に検出する拡張機能を構築したりできます。MCP拡張機能開発ガイドまたはMCP拡張機能サンプルをチェックして詳細を確認してください。

拡張機能のパッケージ化時のシークレットスキャン

VSCEは、拡張機能をパッケージ化する際にシークレットをスキャンするようになりました。ソースファイルに潜在的なシークレット(例:APIキー、トークン、資格情報、または.envなどの環境変数ファイル)が検出された場合、VSCEはパッケージ化プロセス中にエラーを表示します。これにより、機密情報が誤ってマーケットプレイスに公開されるのを防ぐことができます。拡張機能を公開する前に、必ずエラーを確認して対処してください。

特定のチェックをバイパスする必要がある場合は、VSCEの実行時に--allow-package-secrets <secret_type>または--allow-package-env-fileフラグを使用できます。これらのフラグを使用すると、パッケージ化中にスキップするシークレットまたは環境ファイルのチェックを構成できます。

Web環境検出

⚠️ 破壊的変更 ⚠️

設定: extensions.supportNodeGlobalNavigator

Node.js拡張ホストは、Electron 35ランタイム更新の一環として、v20からv22に更新されました。この更新により、デスクトップおよびリモート拡張ホストでnavigatorグローバルオブジェクトのサポートが導入されます。

この変更は、Web環境を検出するためにnavigatorオブジェクトの存在に依存している拡張機能に破壊的変更をもたらす可能性があります。

拡張機能の作者が移行できるよう、globalThis.navigatorのポリフィルを作成し、undefinedに初期化しました。これにより、拡張機能は引き続き正しく動作します。このポリフィルはextensions.supportNodeGlobalNavigator VS Code設定の背後にあります。デフォルトでは、この設定は無効になっており、ポリフィルが有効になっています。拡張機能開発モードで拡張機能がこのようにnavigatorにアクセスしようとすると、テレメトリーをキャプチャし、エラーをログに記録します。

将来的には、この設定がデフォルトで有効になる可能性があるため、拡張機能の作者は、新しいnavigatorグローバルオブジェクトと互換性があるようにコードを移行することを強くお勧めします。コードを移行するには、次の手順に従ってください。

  • 拡張機能から発生するエラースタックを持つPendingMigrationErrorについて、拡張機能ホストログを確認します。
  • typeof navigator === 'object'のようなチェックが、必要に応じてtypeof process === 'object' && process.versions.nodeに移行されていることを確認します。
  • extensions.supportNodeGlobalNavigatorを有効にします。
  • 拡張機能の動作が変更されていないことを確認します。

提案されたAPI

認証プロバイダー: MCPでサポートされる認証サーバー

現在、MCP認証でのみ利用されていますが、このAPI提案により、AuthenticationProviderがそれに関連付けられている認証サーバーを宣言できるようになります。

たとえば、GitHub認証プロバイダーを見ると、認証プロバイダーのコントリビューションのauthorizationServerGlobsプロパティに、一般的なGitHub認証URLが含まれています。

{
  "label": "GitHub",
  "id": "github",
  "authorizationServerGlobs": ["https://github.com/login/oauth"]
}

このプロパティは、拡張機能の有効化に使用されます。要求された認証サーバーが一致した場合、拡張機能が有効になります。

さらに、認証プロバイダーを登録する際には、最終的な認証サーバーURLグロブを含める必要があります。GitHub認証が行うように、これを行う必要があります。

vscode.authentication.registerAuthenticationProvider(
  type,
  this._githubServer.friendlyName,
  this,
  {
    supportsMultipleAccounts: true,
    supportedAuthorizationServers: [
      ghesUri ?? vscode.Uri.parse('https://github.com/login/oauth')
    ]
  }
);

より複雑な例としては、Microsoft認証を見てください。認証サーバーは、テナントがパスに配置されるかどうかによって異なります。このため、コントリビューションではワイルドカードを使用し、

{
  "label": "Microsoft",
  "id": "microsoft",
  "authorizationServerGlobs": [
    "https://login.microsoftonline.com/*/v2.0"
  ]
},

登録でも同様です。

authentication.registerAuthenticationProvider('microsoft', 'Microsoft', authProvider, {
  supportsMultipleAccounts: true,
  supportedAuthorizationServers: [Uri.parse('https://login.microsoftonline.com/*/v2.0')]
});

その後、呼び出し元が認証を要求する際に認証サーバーURLを渡すと、それは既存のAuthenticationProviderSessionOptionsを介してgetSessionsおよびcreateSession関数の両方に渡されます。

前述のとおり、この機能は現在MCPサポートで使用されており、MCPサーバーから認証するための認証サーバーURLを受け取ります。そのURLはその後、認証プロバイダーにマッピングされるか、存在しない場合は、その認証サーバーの認証プロバイダーが動的に作成されます。

完全なAPI提案はvscodeリポジトリで見つけることができ、GitHubのIssueで皆様からのフィードバックをお待ちしております!

エンジニアリング

Electron 35への更新

今回のマイルストーンでは、Electron 35への更新をStableリリースユーザー向けに提供します。この更新には、Chromium 134.0.6998.205とNode.js 22.15.1が含まれています。Insidersビルドでセルフホストを行い、早期のフィードバックを提供してくださった皆様に感謝いたします。

実世界の拡張機能でのESMの採用

前回のマイルストーンで、JavaScriptモジュール (ESM) のサポートを発表しました。これにより、拡張機能はimportおよびexportステートメントを使用できますが、現在、Node.js拡張ホストをターゲットにしている場合に限られます。

今月、GitHub Issue Notebooksで実世界への導入を行いました。この拡張機能は、Node.js拡張ホスト(ESM拡張機能をサポート)と、現在ESM拡張機能をサポートしていないWebワーカー拡張ホストの両方で実行できるため、これは簡単ではありませんでした。これにより、より複雑なバンドラー構成が必要となり、そのesbuild-configからヒントを得るのが良いかもしれません。

注目すべき修正点

  • 250077 - Tree-Sitterベースの構文ハイライトがモデルサービスに依存している

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-copilot-releaseへの貢献者

vscode-css-languageserviceへの貢献者

vscode-custom-dataへの貢献者

vscode-eslintへの貢献者

vscode-generator-codeへの貢献者

vscode-js-debugへの貢献者

vscode-jupyterへの貢献者

  • @WillHirsch: パッケージインストールでパーセントの代わりにバンを使用した場合の診断重大度をダウングレード PR #16601

vscode-languageserver-nodeへの貢献者

vscode-markdown-tm-grammarへの貢献者

vscode-prompt-tsxへの貢献者

vscode-pull-request-githubへの貢献者

vscode-python-debuggerへの貢献者

debug-adapter-protocolへの貢献者

language-server-protocolへの貢献者

lsprotocolへの貢献者