エージェント型開発を探求する -

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

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

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

アップデート 1.101.1: このアップデートでは、これらの問題に対処しています。

アップデート 1.101.2: このアップデートでは、これらの問題に対処しています。

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


Visual Studio Code 2025年5月リリースへようこそ。今回のバージョンには、皆さまに気に入っていただける多くのアップデートが含まれています。主なハイライトは以下の通りです。

  • MCP

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

    • 関連するツールをツールセットにまとめることで、ツールをグループ化・管理できるようになりました (詳細を表示)。
  • ソース管理

    • ソース管理グラフビューでファイルを表示できるようになりました (詳細を表示)。
    • VS Code内からGitHub Copilotコーディングエージェントの作業の割り当てと追跡が可能になりました (詳細を表示)。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.comUpdates を参照してください。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"
  }
}

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

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

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: Browse Resourcesコマンドを使用するか、MCP: List Serversコマンドからサーバーを選択することで、サーバー全体のリソースを閲覧・表示できます。

Gistpad MCPサーバーからチャットにリソースを添付する例を以下に示します。

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

VS CodeのModel Context Protocolサポートにサンプリングが追加されました。これにより、MCPサーバーがモデルに対してリクエストを送信できるようになります。MCPサーバーが初めてサンプリングリクエストを行う際には確認が求められます。また、MCP: List Serversでサーバーを選択することで、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.

そこからサインアウトも可能です。これらについては、コード認可フローだけでなく、認証サーバーがサポートしていればデバイスコードフローもサポートしています。

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

MCP: Add Server...コマンドを使用してMCPサーバーを追加できることを忘れないでください。これは認証が必要なサーバーについても同じ入り口となります。

MCP開発モード

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

  • watch: MCP サーバーを再起動するファイル変更の監視対象となるファイル グロブ パターン。
  • debug: MCPサーバーでデバッガーをセットアップできるようにします。現在、nodeおよびpythonで起動されたNode.jsと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は自動保存や波線を条件付きで無効にするように調整されています。

また、Keep(保持)およびUndo(取り消し)コマンドのキーバインドも調整しました。個別の変更を保持・取り消しするには、⌘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を押してください。

さらに、エージェントモードでは、現在のエディターに関するヒントが含まれます。これにはファイルの内容は含まれず、ファイル名とカーソル位置のみです。エージェントはその後、クエリに関連があると思われる場合に、自身のツールを使用してファイルの内容を読み取ることができます。

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

タスク構成エラーの修正

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

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

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

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

カスタムチャットモードを定義・使用するには、以下の手順に従ってください。

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

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

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

---
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.

フェッチツールの確認

フェッチツールを使用すると、Webページから情報を取得できます。潜在的なプロンプトインジェクションについて通知するため、確認メッセージに警告を追加しました。

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

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

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

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

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

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

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

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

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

この機能を改善し続ける中で、Live Preview拡張機能でもWeb要素を選択できるようにサポートを追加しました。拡張機能をダウンロードし、HTMLファイルからライブサーバーを起動して、ぜひお試しください。

アクセシビリティ

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

チャットがユーザーアクションを必要とする際に示すアクセシビリティ信号を追加しました。サウンドを微調整中のため、この機能はオプトインとなります。設定は accessibility.signals.chatUserActionRequired Open in VS Code Open in VS Code Insiders で構成できます。

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

以下のタイミングで個別のサウンドを導入しました。

  • コードアクションがトリガーされた時: accessibility.signals.codeActionTriggered Open in VS Code Open in VS Code Insiders
  • コードアクションが適用された時: accessibility.signals.codeActionApplied Open in VS Code Open in VS Code Insiders

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

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

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

エディターエクスペリエンス

入力しながら検索(Find as you type)

設定: editor.find.findOnType Open in VS Code Open in VS Code Insiders

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

ネイティブウィンドウタイトルバー付きのカスタムメニュー

設定: window.menuStyle Open in VS Code Open in VS Code Insiders

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

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

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のシェル環境検出を実装しました。これにより、VS CodeはNode.jsなどがバージョンマネージャーを通じて構成するPATHの更新など、PowerShellプロファイルで設定された環境を継承します。

未公開の拡張機能に関する警告

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

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

設定検索の提案(プレビュー)

設定: workbench.settings.showAISearchToggle Open in VS Code Open in VS Code Insiders

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

トグルを表示するには、設定を有効にしてVS Codeをリロードしてください。現在、精度の低い設定検索結果を特定・修正するプロセスを進めており、自然言語クエリが期待される設定を見つけられなかった場合のフィードバックを歓迎します。

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

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

設定: search.searchView.keywordSuggestions Open in VS Code Open in VS Code Insiders

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

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

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

設定: search.searchView.semanticSearchBehavior Open in VS Code Open in VS Code Insiders

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

デフォルトでは、セマンティック検索は明示的にリクエストされた場合にのみ実行されます。セマンティック検索をいつトリガーするかを制御する設定を追加しました。

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

Edit Context

設定: editor.editContext Open in VS Code Open in VS Code Insiders

Stable版で editor.editContext Open in VS Code Open in VS Code Insiders 設定をデフォルトで有効にしました。つまり、エディターの入力がEditContext APIによって動作するようになりました。これにより、特にIME関連の多数のバグが修正され、今後、エディター内のより汎用的で堅牢な入力体験への道が開かれます。

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

コード編集

NES インポートの提案

設定: github.copilot.nextEditSuggestions.fixes Open in VS Code Open in VS Code Insiders

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

Screenshot showing NES suggesting an import statement.

NESはすべてのVS Code Insidersユーザーで有効になっており、6月中にStableユーザーに対しても段階的にデフォルトで有効になります。設定を通じていつでもご自身でNESを有効にできます。

NESの承認フロー

キーボードナビゲーションの改善により、Next Edit Suggestionsの承認がよりスムーズになりました。提案を承認した後は、再び入力を開始しない限り、Tabキーを1回押すだけで後続の提案を継続して承認できます。入力を開始した場合は、Tabキーを押すと、最初にカーソルを次の提案に移動させてから承認できるようになります。

ノートブック

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

設定: github.copilot.chat.notebook.followCellExecution.enabled Open in VS Code Open in VS Code Insiders

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

エージェントがセルの実行ツールを使用すると、Notebookツールバーが更新され、フォローモードの状態を示すピンアイコンが表示されます。ベースの設定値を変更せずに、エージェントの応答の途中でこの動作を切り替えることができます。これにより、エージェントが反復処理を続ける間、リアルタイムで作業をフォローしたり、コードの特定の箇所をレビューしたい時にオフにしたりできます。再びフォローしたい場合は、モードを切り替えて次の実行から参加してください。

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

ノートブックの構成

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

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

長時間実行されるエージェントワークフロー

エージェントは、正確なコンテキストを維持するのに役立つ内部ノートブック要約ツールにアクセスできます。コンテキストが大きくなりすぎてエージェントが複雑な操作を継続できなくなった場合、会話履歴を要約する際にもその要約が含まれます。

実行確認におけるセルプレビュー

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

ソース管理

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

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

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

  • Assign to Copilot(Copilotに割り当て): VS CodeのissueまたはPRビューからプルリクエストやissueをCopilotに割り当てます。
  • Copilot on My Behalf(自分の代わりにCopilot)PRクエリ: Copilotがあなたのために取り組んでいるすべてのプルリクエストを素早く確認できます。
  • PR view(PRビュー): Copilotコーディングエージェントの状態を確認し、ブラウザーでセッションの詳細を開くことができます。

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

ソース管理履歴アイテムの詳細

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

履歴アイテムのすべてのリソースをマルチファイルdiffエディターで開くには、ホバー時にOpen Changes(変更を開く)アクションを使用します。グラフビューから特定のリソースを選択すると、そのリソース専用のdiffエディターが開きます。Open File(ファイルを開く)アクションを選択すると、そのバージョンのファイルが開きます。

履歴アイテムをチャットコンテキストに追加

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

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

履歴アイテムをチャットに追加するには、チャットビューからAdd Context(コンテキストの追加)> Source Control(ソース管理)を選択し、特定の履歴アイテムを選択します。または、ソース管理グラフの履歴アイテムを右クリックし、コンテキストメニューからCopilot > Add History Item to Chat(履歴アイテムをチャットに追加)を選択します。

タスク

インスタンスポリシー

タスクのrunOptionsinstancePolicyプロパティが追加され、タスクがinstanceLimitに達した時の動作を決定できるようになりました。

オプションには、prompt(デフォルト)、silentterminateNewestterminateOldestwarnがあります。

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

ターミナル

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

対話型Python REPLセッションのターミナルで、言語サーバーの補完が利用可能になりました。これにより、エディターで受け取るのと同じ言語補完がターミナル内でも利用できます。まずはPylanceを通じてPythonのサポートを開始し、今後は他の言語にも拡大する予定です。

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

  • terminal.integrated.shellIntegration.enabled Open in VS Code Open in VS Code Insiders
  • python.terminal.shellIntegration.enabled Open in VS Code Open in VS Code Insiders
  • terminal.integrated.suggest.enabled Open in VS Code Open in VS Code Insiders
  • python.analysis.supportAllPythonDocuments Open in VS Code Open in VS Code Insiders

リモート開発

リモート開発拡張機能を使用すると、Dev Container、SSH 経由のリモートマシン、またはリモートトンネル、あるいはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。

ハイライト

  • SSH接続前スクリプト
  • Remote Explorerの改善

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

拡張機能への貢献

Python

Pythonチャットツール

Python拡張機能に以下のチャットツールが追加されました:「Get information for a Python Environment(Python環境情報の取得)」、「Get executable information for a Python Environment(Python環境の実行可能ファイル情報の取得)」、「Install Python Package(Pythonパッケージのインストール)」、「Configure Python Environment(Python環境の構成)」。プロンプトで#getPythonEnvironmentInfo #installPythonPackageを追加して直接参照することも、エージェントモードで適宜ツールが自動的に呼び出されることもあります。これらのツールは、ファイルやワークスペースのコンテキストに基づいて適切な環境情報を検出し、正確な環境解決でパッケージインストールを処理します。

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

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

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

Python Environments拡張機能で、Pythonパッケージや基本的なスクリプトのプロジェクト作成がサポートされるようになり、足場作りを省略してコーディングを素早く開始できるようになりました。Python Envs: Create Project from Templateコマンドを使用して、パッケージを作成するかスクリプトを作成するかを選択します。

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

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

PyEnvとPoetryのサポート

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

GitHub Pull Requests

プルリクエストと課題の操作、作成、管理を可能にする GitHub Pull Requests 拡張機能にさらなる進歩がありました。新機能には次のようなものがあります。

  • プライベートリポジトリのコメント内の画像が、プルリクエストのファイルコメントに表示されるようになりました。
  • 「Notifications(通知)」ビューがデフォルトで折りたたまれた状態で表示されるようになりました。-- タイムライン内およびissue/プルリクエスト本文内のissueおよびプルリクエストへのリンクが、ブラウザーへ移動するのではなく、VS Codeで開かれるようになりました。
  • 「Pull Requests(プルリクエスト)」ビューの「Assigned to Me(自分に割り当て済み)」クエリが削除されました。「Local Pull Request Branches(ローカルプルリクエストブランチ)」および「All Open(すべてのオープン)」クエリは、設定githubPullRequests.queriesを使用して削除できます。Copilotを使用しているリポジトリの場合、設定が未構成の時は「Copilot on My Behalf(自分の代わりにCopilot)」クエリが追加されます。
  • Copilotの「start working(作業開始)」、「stop working(作業停止)」、「View Session(セッション表示)」がタイムラインに表示されるようになりました。

その他のハイライトについては、拡張機能の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 Open in VS Code Open in VS Code Insiders

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

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

拡張機能作成者の移行を支援するため、globalThis.navigatorのpolyfillを作成し、undefinedに初期化することで、拡張機能が正しく動作し続けるようにしました。このpolyfillは extensions.supportNodeGlobalNavigator Open in VS Code Open in VS Code Insiders VS Code設定の裏にあります。デフォルトでは、この設定は無効で、polyfillが適用されています。拡張機能がこの方法でnavigatorにアクセスしようとした場合、テレメトリを収集し、(拡張機能開発モードで)エラーをログに記録します。

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

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

提案API

認証プロバイダー: MCP用サポート済み認可サーバー

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

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

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

このプロパティは拡張機能の起動に使用されます。リクエストされた認可サーバーが一致する場合、拡張機能が起動されます。

さらに、認証プロバイダーを登録する際、GitHub認証が行っているように、確定した認可サーバーURLのglobを含める必要があります。

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を通じてgetSessionscreateSession関数の両方に渡されます。

前述の通り、この機能は現在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ステートメントを使用できますが、現在はNodeJS拡張機能ホストをターゲットにする場合に限られています。

今月、GitHub Issue Notebooksで実際に採用を行いました。これは容易ではありません。なぜなら、この拡張機能は(ESM拡張機能をサポートする)NodeJS拡張機能ホストと、現在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 への貢献

© . This site is unofficial and not affiliated with Microsoft.