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

2025年4月 (バージョン 1.100)

リリース日: 2025年5月8日

更新: VS Code StableでNext Edit Suggestions (NES) をデフォルトで有効化 (詳細...)。

更新 1.100.1: この更新により、以下のセキュリティ問題が解決されます。

更新 1.100.2: この更新により、以下の問題が解決されます。

更新 1.100.3: この更新により、以下の問題が解決されます。

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


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

  • チャット

    • カスタム指示と再利用可能なプロンプト (詳細...)。
    • GitHub、拡張機能、ノートブック用のツールでよりスマートな結果を (詳細...)。
    • MCPの画像およびストリーミング可能なHTTPのサポート (詳細...)。
  • チャットのパフォーマンス

    • 繰り返しのチャット要求に対する高速な応答 (詳細...)。
    • エージェントモードでの編集の高速化 (詳細...)。
  • エディターエクスペリエンス

    • チャットとエディターのマルチウィンドウサポートの改善 (詳細...)。
    • ステージングされた変更の識別が容易に (詳細...)。

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

チャット

プロンプトおよび指示ファイル

Markdownベースの指示ファイルとプロンプトファイルを使用することで、VS CodeでのAI体験を、お客様の特定のコーディング習慣や技術スタックに合わせて調整できます。これら2つの関連する概念の実装と使用法を調整しましたが、それぞれ異なる目的を持っています。

指示ファイル

設定: chat.instructionsFilesLocations

指示ファイル(カスタム指示またはルールとも呼ばれる)は、Markdownファイルで、AIモデルのための一般的なガイドラインやコンテキスト(コードスタイルルールや使用するフレームワークなど)を記述する方法を提供します。指示ファイルは単独のチャットリクエストではなく、チャットリクエストに適用できるコンテキストを提供します。

指示ファイルは.instructions.mdのファイルサフィックスを使用します。これらはユーザーデータフォルダまたはワークスペース内に配置できます。chat.instructionsFilesLocations設定は、指示ファイルを含むフォルダをリストします。

指示は特定のチャットリクエストに手動で添付することも、自動で追加することもできます。

  • 手動で追加するには、チャットビューのコンテキストの追加ボタンを使用し、指示...を選択します。または、コマンドパレットからチャット: 指示を添付...コマンドを使用します。これにより、既存の指示ファイルを選択するか、新しく作成して添付するためのピッカーが表示されます。

  • プロンプトに指示を自動的に追加するには、指示ファイルにapplyTo Front Matterヘッダーを追加して、指示がどのファイルに適用されるかを示します。チャットリクエストに指定されたグロブパターンに一致するファイルが含まれている場合、指示ファイルは自動的に添付されます。

    以下の例は、TypeScriptファイル用の指示を提供します (applyTo: '**/*.ts')。

    ---
    applyTo: '**/*.ts'
    ---
    Place curly braces on separate lines for multi-line blocks:
    if (condition)
    {
      doSomething();
    }
    else
    {
      doSomethingElse();
    }
    

チャット: 新しい指示ファイル...コマンドで指示ファイルを作成できます。さらに、ユーザーデータフォルダに作成されたファイルは、設定同期サービスを通じて複数のユーザーマシン間で自動的に同期できます。バックアップと同期の設定...ダイアログでプロンプトと指示オプションを必ずチェックしてください。

ドキュメントで指示ファイルについて詳しく学びましょう。

プロンプトファイル

設定: chat.promptFilesLocations

プロンプトファイルは、プロンプトテキスト、チャットモード、使用するツールなど、独立した完全なチャットリクエストを記述します。プロンプトファイルは、一般的なタスク用の再利用可能なチャットリクエストを作成するのに役立ちます。たとえば、フロントエンドコンポーネントを作成するため、またはセキュリティレビューを実行するためのプロンプトファイルを追加できます。

プロンプトファイルは.prompt.mdのファイルサフィックスを使用します。これらはユーザーデータフォルダまたはワークスペース内に配置できます。chat.promptFilesLocations設定は、プロンプトファイルが検索されるフォルダをリストします。

プロンプトファイルを実行するにはいくつかの方法があります。

  • チャット入力フィールドに/とプロンプトファイル名を入力します。チャットビューでスラッシュコマンドを使用してプロンプトを実行しているスクリーンショット。

  • エディターでプロンプトファイルを開き、エディターツールバーの「再生」ボタンを押します。これにより、チャットビューに戻ることなく、プロンプトを迅速に繰り返し実行できます。エディターの再生ボタンを使用してプロンプトを実行しているスクリーンショット。

  • コマンドパレットからチャット: プロンプトファイルを実行...コマンドを使用します。

プロンプトファイルには、実行方法を示す以下のFront Matterメタデータヘッダーを含めることができます。

  • mode: プロンプトを呼び出す際に使用するチャットモード (askedit、または agentモード)。
  • tools: modeagentの場合、プロンプトで利用可能なツールのリスト。

以下の例は、エージェントモードで実行され、一連のツールを使用できるリリースノート生成用のプロンプトファイルを示しています。

---
mode: 'agent'
tools: ['getCurrentMilestone', 'getReleaseFeatures', 'file_search', 'semantic_search', 'read_file', 'insert_edit_into_file', 'create_file', 'replace_string_in_file', 'fetch_webpage', 'vscode_search_extensions_internal']
---
Generate release notes for the features I worked in the current release and update them in the release notes file. Use [release notes writing instructions file](.github/instructions/release-notes-writing.instructions.md) as a guide.

プロンプトファイルを作成するには、コマンドパレットからチャット: 新しいプロンプトファイル...コマンドを使用します。

ドキュメントでプロンプトファイルについて詳しく学びましょう。

改善と注意事項

  • 指示ファイルとプロンプトファイルは、それぞれ独自の言語IDを持つようになりました(開いている任意のファイルの言語モードダイアログで設定可能。「プロンプト」と「指示」)。これにより、例えば、無題のドキュメントを一時的なプロンプトファイルとして、ディスクにファイルとして保存する前に使用できます。
  • チャット: プロンプトを使用コマンドをチャット: プロンプトを実行に名称変更しました。さらに、このコマンドは、以前のようにチャットコンテキストとして添付するのではなく、選択したプロンプトを即座に実行するようになりました。
  • 両方のファイルタイプが、ヘッダーでdescriptionメタデータをサポートするようになり、短くユーザーフレンドリーなプロンプトの要約を共通の場所に提供します。将来的には、このヘッダーはapplyToヘッダーと共に、ファイルがチャットリクエストに自動的に含まれる必要があるかどうかを決定するルールとして使用される予定です(例: description: 'TypeScriptで書かれたフロントエンドコンポーネントのコードスタイルルール。')。

エージェントモードでの編集の高速化

エージェントモードで、OpenAIの適用パッチ編集フォーマット (GPT 4.1およびo4-mini) とAnthropicの文字列置換ツール (Claude Sonnet 3.7および3.5) のサポートを実装しました。これにより、特に大きなファイルにおいて、編集が大幅に高速化されます。

OpenAIモデルの更新は、VS Code Insidersではデフォルトで有効になっており、Stable版にも順次展開されています。Anthropicの更新は、Stable版とInsiders版の両方で全ユーザーに利用可能です。

チャットのベースモデル

VS Codeのチャットにおけるデフォルトのベースモデルとして、GPT-4.1を順次展開しています。チャットビューのモデルスイッチャーを使用して、いつでも別のモデルに切り替えることができます。

#githubRepoツールでGitHubリポジトリのコードを検索する

GitHubリポジトリについて質問したいが、エディターで開いていない状況を想像してください。例えば、microsoft/vscodeリポジトリで特定の関数がどのように実装されているかを知りたい場合です。

#githubRepoツールを使用して、アクセス権のあるGitHubリポジトリのコードスニペットを検索できるようになりました。このツールは、追加の入力としてuser/repoを受け取ります。例えば、「TypeScriptでファクトリーパターンを実装する方法 #githubRepo microsoft/vscode」などです。

以下の例に示すように、カスタム指示を使用して、このツールをいつどのように使用するかをヒントとして与えることもできます。

---
applyTo: '**'
---
Use the `#githubRepo` tool with `microsoft/vscode` to find relevant code snippets in the VS Code codebase.
Use the `#githubRepo` tool with `microsoft/typescript` to answer questions about how TypeScript is implemented.

Screenshot showing using the #githubRepo tool in agent mode with hints from instructions files.

現在作業中のリポジトリについて質問したい場合は、#codebaseツールを使用するだけです。

また、#githubRepoツールは関連するコードスニペットを検索するためだけのものです。GitHub MCPサーバーは、GitHubのissueやプルリクエストを扱うためのツールを提供しています。VS CodeでMCPサーバーを追加する方法について詳しく学びましょう。

拡張機能ツールでMarketplace拡張機能を見つける

チャットで拡張機能ツール (#extensions) を使用して、Marketplaceから拡張機能を見つけることができます。チャットプロンプトに基づいてツールが自動的に呼び出されるか、#extensionsを使ってプロンプトで明示的に参照できます。ツールはクエリに一致する拡張機能のリストを返します。結果から直接拡張機能をインストールできます。

ウェブページ取得ツールの改善

先月、チャットから直接ウェブページのコンテンツを取得し、プロンプトのコンテキストとして含めるためのフェッチツール (#fetch) を導入しました。そのリリースノートを見逃した場合は、フェッチツールの初期リリースのリリースノートと例をご覧ください。

今回のイテレーションでは、このツールにいくつかの大きな変更を加えました。

  • ページ全体をコンテキストとして利用: これまでサブセットを追加していたのに対し、ページ全体をコンテキストとして追加するようになりました。コンテキストウィンドウが大きくなったことで、モデルにページ全体を提供できるようになりました。例えば、可能な限り多くのページを必要とする要約の質問をすることができるようになりました。もしコンテキストウィンドウがいっぱいになった場合でも、フェッチツールは関連性の低い部分を賢く除外します。これにより、コンテキストウィンドウの制限を超えずに、重要な部分を保持できます。
  • 標準化されたページ形式 (Markdown): 以前は、取得したウェブページをカスタムの階層形式でフォーマットしていました。これは機能していましたが、カスタムであるため推論が難しい場合がありました。現在、取得したウェブページを標準化された言語であるMarkdownに変換しています。これにより、関連性検出の信頼性が向上し、ほとんどの言語モデルが深く理解している形式であるため、より簡単に推論できるようになります。

フェッチツールの使い方や、望む機能があればぜひお聞かせください!

チャット入力の改善

チャット入力ボックスにいくつかの改善を加えました。

  • 添付ファイル: プロンプトテキストで#を使ってコンテキストを参照すると、それが添付ファイルピルとしても表示されるようになりました。これにより、言語モデルに何が送信されているかをより簡単に理解できます。
  • コンテキストピッカー: ファイル、フォルダ、その他の添付ファイルタイプを選択しやすくするために、コンテキストピッカーを合理化しました。
  • 完了ボタン: 「完了」ボタンに関するフィードバックを受け、削除しました!予期せぬセッション終了に関する混乱はもうありません。新しいチャットを作成した場合にのみ、新しいセッションを開始します (⌘N (Windows、Linux Ctrl+N))。

チャットモードのキーボードショートカット

キーボードショートカット ⌃⌘I (Windows、Linux Ctrl+Alt+I) は引き続きチャットビューを開くだけですが、⇧⌘I (Windows Ctrl+Shift+I、Linux Ctrl+Shift+Alt+I) ショートカットはチャットビューを開き、エージェントモードに切り替わるようになりました。他のチャットモードのキーボードショートカットを設定したい場合は、各モードにコマンドがあります。

  • workbench.action.chat.openAgent
  • workbench.action.chat.openEdit
  • workbench.action.chat.openAsk

エージェントモードの編集による診断の自動修正

設定: github.copilot.chat.agent.autoFix

エージェントモードでのファイル編集が新しいエラーを発生させた場合、エージェントモードはそれを検出し、自動的に修正提案を行うことができるようになりました。これにより、エージェントモードにエラーを修正するよう追跡プロンプトを送信する必要がなくなります。この動作はgithub.copilot.chat.agent.autoFixで無効にできます。

エージェントモードにおける元に戻す操作と手動編集の扱い

以前は、エージェントモードセッション中に手動で編集を行うと、モデルを混乱させる可能性がありました。現在は、エージェントは変更についてプロンプトされ、変更された可能性のあるファイルを編集する前に必要に応じてファイルを再読み込みするはずです。

会話の要約とプロンプトのキャッシュ

プロンプトキャッシュを最適化するために、エージェントモードのプロンプトの構築方法にいくつかの変更を加えました。プロンプトキャッシュは、プロンプトの安定したプレフィックスを維持することで、モデルの応答を高速化する方法です。次のリクエストはそのプレフィックスから再開でき、その結果、各リクエストが少し速くなるはずです。これは、エージェントモードで通常見られるような、大きなコンテキストを伴う繰り返しのリクエストシリーズで特に効果的です。

会話が長くなったり、コンテキストが非常に大きくなったりすると、エージェントモードセッションで「会話履歴が要約されました」というメッセージが表示されることがあります。

Screenshot showing a summarized conversation message in the Chat view.

会話全体をFIFOとして保持しキャッシュを破棄する代わりに、これまでの会話を最も重要な情報とタスクの現在の状態の要約に圧縮します。これにより、プロンプトのプレフィックスが安定し、応答が高速になります。

ストリーミング可能なHTTPに対するMCPのサポート

このリリースでは、Model Context Protocolサーバー用の新しいStreamable HTTPトランスポートのサポートが追加されました。Streamable HTTPサーバーは既存のSSEサーバーと同様に構成され、我々の実装はSSEサーバーと下位互換性があります。

{
  "servers": {
    "my-mcp-server": {
      "url": "https://:3000/mcp"
    }
  }
}

VS CodeでのMCPサポートについて詳しく学びましょう。

画像出力に対するMCPのサポート

ツールの出力の一部として画像を生成するMCPサーバーをサポートするようになりました。

すべての言語モデルがツール出力から画像を読み取ることをサポートしているわけではないことに注意してください。たとえば、GPT-4.1は視覚能力を持っていますが、現在ツールからの画像読み取りはサポートしていません。

MCPサーバーからの入力、出力、および進捗の強化

MCPサーバーツールの入力と出力を表示するUIを強化し、MCPの新しい進捗メッセージのサポートも追加しました。

テーマ: Codesong (vscode.devでプレビュー)

MCP構成生成での入力の使用

機密情報を安全に保つために、MCP: サーバーを追加コマンドで生成されるAI支援構成は、結果の構成に直接埋め込むのではなく、機密情報に対してinputsを生成するようになりました。

インラインチャット V2 (プレビュー)

設定: inlineChat.enableV2

インラインチャットの刷新されたバージョン ⌘I (Windows、Linux Ctrl+I) を開発してきました。そのテーマは引き続き「コードにチャットをもたらす」ですが、舞台裏ではチャット編集と同じロジックを使用しています。これにより、利用可能なコンテキストがより有効に活用され、より良いコード編集戦略が可能になります。インラインチャットv2はinlineChat.enableV2で有効にできます。

さらに、オプションで有効にできる、より軽量なUXが提供されました。inlineChat.hideOnRequest設定により、リクエストが送信されるとすぐにインラインチャットが非表示になります。その後、チャット編集オーバーレイに最小化され、変更を承認または破棄したり、インラインチャットコントロールを復元したりできます。

チャットにUI要素を選択して添付する (実験的)

設定: chat.sendElementsToChat.enabled

ウェブアプリケーションを開発している際、ウェブページの特定のUI要素についてチャットに質問したい場合があります。組み込みのSimple Browserを使用して、UI要素をコンテキストとしてチャットに添付できるようになりました。

組み込みのSimple Browser (Simple Browser: 表示コマンドで起動) を介してローカルホストされている任意のサイトを開くと、新しいツールバーが表示され、開始を選択してサイト内の任意の要素を選択できるようになりました。これにより、選択された要素のスクリーンショット、およびその要素のHTMLとCSSが添付されます。

チャットに添付する内容を設定する

この実験的な機能は、すべてのSimple Browserでデフォルトで有効になっていますが、chat.sendElementsToChat.enabledで無効にできます。

エージェントモードでタスクを作成して起動する (実験的)

設定: github.copilot.chat.newWorkspaceCreation.enabled

前回のリリースでは、エージェントモードでのワークスペース作成を有効にするgithub.copilot.chat.newWorkspaceCreation.enabled (実験的) 設定を導入しました。

今回、この作成フローの終わりに、アプリやプロジェクトを起動するためのタスクを作成して実行するよう促されます。これにより、プロジェクトの起動プロセスが合理化され、タスクの再利用が容易になります。

アクセシビリティ

マージエディターの改善

マージエディターのアクセシビリティが向上しました。利用可能なアクションについては、マージエディター内でアクセシビリティヘルプダイアログを開いてください (⌥F1 (Windows Alt+F1、Linux Shift+Alt+F1))。主なアクションには、マージエディター: マージを完了 (⌘Enter (Windows、Linux Ctrl+Enter)) と マージエディター入力間の切り替え (⇧⌘T (Windows、Linux Ctrl+Shift+T)) があります。現在フォーカスされている入力も、支援技術にアナウンスされるようになりました。

次の編集候補の強化

新しい設定accessibility.signals.nextEditSuggestionは、予測された候補が利用可能になったときに通知します。アクセシブルビュー (⌥F2 (Windows Alt+F2、Linux Shift+Alt+F2)) を介して候補を確認し、受け入れます。さらに、accessibility.signals.diffLineAddedaccessibility.signals.diffLineRemoved は、ナビゲーション中にオーディオキューを提供し、diffレビューをアクセシブルにします。

アクセシブルビューからCopilotユーザーリクエストを確認する

エージェントモードでは、ツール呼び出しやターミナルコマンドの実行にはユーザーの許可が必要な場合があります。これらのアクションはアクセシブルビュー (⌥F2 (Windows Alt+F2、Linux Shift+Alt+F2)) で確認できます。

独自のアクセシビリティサウンド

accessibility.signals.save.soundは独自の異なるサウンドを持つようになり、accessibility.signals.terminalCommandSucceeded.soundとオーディオを共有しなくなりました。

エディター体験

フローティングウィンドウモード

VS Codeのフローティングウィンドウを使用すると、エディターや特定のビューをメインウィンドウから小さなウィンドウに移動させて、軽量なマルチウィンドウ設定を構築できます。フローティングウィンドウには2つの新しいモードがあります。

  • コンパクト: 実際のコンテンツにより多くのスペースを確保するため、特定のUI要素を非表示にします。
  • 常に手前に表示: このモードを終了するまで、ウィンドウは他のすべてのウィンドウの上に表示され続けます。

フローティングエディターウィンドウをコンパクトモードにする方法の例を以下に示します。

新しいウィンドウでチャットを作成する際に、デフォルトでコンパクトモードを使用します。ウィンドウを常に手前に表示するオプションと組み合わせることで、質問するために常にチャットビューを開いたままにすることができます!

これらのアクションにキーボードショートカットを使用したい場合は、新しいコマンドを導入しました。

  • workbench.action.toggleWindowAlwaysOnTop: 常に手前に表示モードを切り替える
  • workbench.action.enableWindowAlwaysOnTop: フローティングウィンドウを常に手前に設定する
  • workbench.action.disableWindowAlwaysOnTop: フローティングウィンドウを通常に設定する
  • workbench.action.toggleCompactAuxiliaryWindow: コンパクトモードを切り替える
  • workbench.action.enableCompactAuxiliaryWindow: コンパクトモードを有効にする
  • workbench.action.disableCompactAuxiliaryWindow: コンパクトモードを無効にする

注: コンパクトモードでも、複雑なエディターレイアウトを作成したり、他のエディターを開いたりできます。

セカンダリサイドバーのデフォルトの表示設定

設定: workbench.secondarySideBar.defaultVisibility

デフォルトでは、新しいワークスペースまたはウィンドウを開くと、セカンダリサイドバーは非表示になります。新しい設定workbench.secondarySideBar.defaultVisibilityを使用すると、新しいワークスペースまたはウィンドウでセカンダリサイドバーを自動的に開くかどうかを制御できます。選択肢は以下の通りです。

  • hidden: デフォルトであり、セカンダリサイドバーを非表示にします。
  • visibleInWorkspace: フォルダまたはマルチルートワークスペースを開いた場合にセカンダリサイドバーを開きます。
  • visible: 常にセカンダリサイドバーを開きます。

ワークスペースまたはウィンドウが開かれた後、表示設定はワークスペースの状態となり、設定値を上書きすることに注意してください。セカンダリサイドバーを閉じると、そのワークスペースまたはウィンドウでは閉じられたままになります。

拡張機能の署名検証の義務化

拡張機能の署名検証は、すべてのプラットフォーム (Windows、macOS、Linux) で必須となりました。以前は、この検証はWindowsとmacOSでのみ必須でした。このリリースにより、Linuxでも拡張機能の署名検証が強制され、すべての拡張機能がインストール前に適切に検証されるようになります。

この変更により、悪意のある可能性のある拡張機能のインストールが防止され、セキュリティがさらに強化されます。詳細については、拡張機能の署名を参照してください。

注: issue #248308のため、Linux ARM32ビルドでは拡張機能の署名検証の義務化は引き続き無効です。これは次のリリースで解決される予定です。

拡張機能が悪意のあるものとして識別された場合、VS Codeは拡張機能がフラグ付けされた理由を説明する追加情報へのリンクを提供するようになりました。これらの「詳細を見る」リンクは、ユーザーをGitHubのイシューやセキュリティ上の懸念に関する詳細が記載されたドキュメントに誘導し、潜在的なリスクをよりよく理解するのに役立ちます。

VS Code StableでのCopilot Chatプレリリースバージョンのインストールを防止

VS Codeは、VS Code StableでのCopilot Chat拡張機能のプレリリースバージョンのインストールを防止するようになりました。これにより、誤ってCopilot Chatプレリリースバージョンをインストールしてしまい、壊れた状態に陥る状況を回避できます。つまり、Copilot Chat拡張機能のプレリリースバージョンは、VS CodeのInsidersビルドでのみインストールできます。

フォーカスせずにビューを開くコマンド

ビュー(ツリービューおよびウェブビュービュー)を、フォーカスすることなく開くことができるようになりました。これは、ビューを開きたいが現在のエディターからフォーカスを奪いたくない拡張機能やキーボードショートカットにとって有用です。コマンドはyour-view-id.openで、プロパティバッグ引数: { preserveFocus: boolean}を受け取ります。

キーワード候補付きのセマンティックテキスト検索 (実験的)

設定: github.copilot.chat.search.keywordSuggestions

セマンティックテキスト検索が、AIによるキーワード候補をサポートするようになりました。この機能を有効にすることで、探しているコードを見つけるのに役立つ可能性のある関連する参照や定義が表示されるようになります。

コード編集

新しいNext Edit Suggestions (NES) モデル

設定: github.copilot.nextEditSuggestions.enabled

NESを強化する新しいモデルを導入できることを嬉しく思います。これは、より高速でコンテキストに即したコード推奨を提供するために設計されています。この更新されたモデルは、パフォーマンスが向上し、遅延を減らして候補を提示し、より邪魔にならず、最近の編集内容とより密接に一致する候補を提供します。この更新は、Visual Studio Code内でAI支援開発ツールを改良するという我々の継続的なコミットメントの一部です。

インポートの候補

設定: github.copilot.nextEditSuggestions.fixes

Next Edit Suggestions (NES) は、JavaScriptおよびTypeScriptファイルで不足しているインポートステートメントの追加を自動的に提案できるようになりました。この機能は、github.copilot.nextEditSuggestions.fixesを設定することで有効にできます。今後のアップデートでは、追加の言語からのインポートもサポートし、この機能をさらに強化する予定です。

Screenshot showing NES suggesting an import statement.

Next Edit Suggestions (NES) のデフォルト有効化

Next Edit Suggestionsは、VS Code Insidersでデフォルトで有効になり、Stable版にも順次展開されています。

HTMLまたはMarkdownで代替テキストを生成する

HTMLおよびMarkdownファイルで、既存の代替テキストを生成または更新できるようになりました。埋め込み画像を含む任意の行に移動し、⌘. (Windows、Linux Ctrl+.) または電球アイコンを選択してクイックフィックスをトリガーします。

Screenshot that shows generating alt text for an image html element.

ノートブック

検索と置換の履歴の永続化

ノートブックの検索コントロールが、検索および置換入力フィールドの両方で永続的な履歴をサポートするようになりました。これは再読み込み後も保持され、editor.find.historyおよびeditor.find.replaceHistoryの設定によって制御されます。

セルの出力をチャットにドラッグアンドドロップ

チャット内でのセル出力使用の既存のサポートを強化するため、出力をチャットビューにドラッグできるようになり、シームレスな添付体験が可能になりました。現在、画像とテキスト出力のみがサポートされています。画像MIMEタイプを持つ出力は直接ドラッグ可能ですが、テキスト選択との競合を避けるため、テキスト出力はドラッグを有効にするためにAlt修飾キーを押しながら操作する必要があります。今後のリリースでUX改善を検討しています。

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

セルの実行

チャットには、ノートブックセルを実行するLLMツールが追加されました。これにより、エージェントはセルの実行結果に基づいて更新を実行したり、ノートブックを構築する際に独自のデータ探索を行ったりできます。

カーネル状態の取得

エージェントは、現在のカーネルセッションでどのセルが実行されたかを調べ、カーネル状態ツールを使用してアクティブな変数を読み取ることができます。

パッケージのリスト/インストール

Jupyter拡張機能は、ノートブックのカーネルとして使用されている環境にパッケージをリストアップおよびインストールするためのツールを提供します。利用可能な場合は、操作はPython Environments拡張機能に委任されます。そうでない場合は、pipパッケージマネージャーの使用を試みます。

ソース管理

ステージングされた変更のクイック差分デコレーション

長年の機能要求に対応するため、今回のマイルストーンでステージングされた変更に対するクイック差分エディターデコレーションを追加しました。これにより、ソース管理ビューを開くことなく、エディターから直接ステージングされた変更を表示できるようになりました。

ステージングされた変更のクイック差分デコレーションの色は、以下のテーマトークンを使用してカスタマイズできます: editorGutter.addedSecondaryBackgroundeditorGutter.modifiedSecondaryBackgroundeditorGutter.deletedSecondaryBackground

ステージングされた変更のクイック差分デコレーションを表示したくない場合は、エディターのガターコンテキストメニューで利用可能な差分デコレーションサブメニューを使用して非表示にできます。

デバッグ

逆アセンブリビューのコンテキストメニュー

コミュニティからの貢献により、逆アセンブリビューにコンテキストメニューが追加されました。

Screenshot that shows the context menu in the Disassembly view.

JavaScriptデバッガーのネットワークビュー

Node.jsの最近のバージョンでは、ネットワークデバッグ機能が強化されています。互換性の高いNode.jsの最近のバージョン (v22.14.0以降) では、実験的なネットワークビューがデフォルトで有効になります。

言語

CSSとHTMLのブラウザーサポートを表示

CSSプロパティ、HTML要素、またはHTML属性にカーソルを合わせると、Baselineを使用して、そのプロパティまたは要素がブラウザー全体でどの程度サポートされているかの概要が表示されるようになりました。

Screenshot that shows baseline browser support in the CSS hover.

.*.envファイルのデフォルトのシンタックスハイライト

ファイル名が.*.envのファイルは、.iniファイルとしてシンタックスハイライトされるようになりました。

JavaScriptとTypeScriptの展開可能なホバー (実験的)

設定: typescript.experimental.expandableHover

JavaScriptとTypeScriptの展開可能なホバー機能の改善を続けています。この機能により、ホバーコントロールで+-を使用して、より詳細な、またはより少ない型情報を表示できます。

この機能はまだ実験段階ですが、typescript.experimental.expandableHoverを有効にすることで今日から試すことができます。TypeScriptバージョン5.9以上を使用している必要があります。例えば、TypeScript nightly拡張機能をインストールすることで実現できます。

リモート開発

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

Devコンテナ指示ファイル

Dev Containerの機能とイメージに、そのツールと構成を記述する指示ファイルが含まれるようになりました。VS Codeのチャットはこのコンテキストを自動的に使用でき、開発中の提案の関連性と精度が向上します。

拡張機能への貢献

Python

ブランチカバレッジのサポート

Pythonのテストエクスプローラーでブランチカバレッジがサポートされるようになりました!この機能を使用するには、coveragepyのバージョンが7.7以上である必要があります。pip install coverage==7.7を実行してカバレッジをアップグレードできます。

Python環境クイック作成コマンド

Python Environments拡張機能にクイック作成のサポートが追加され、環境作成プロセスがよりシームレスになりました。クイック作成は、仮想環境を単一のクリックで作成し、ワークスペースの依存関係をインストールするために、マシン上の最新のPythonバージョンを検出することで、ユーザーからの必要な入力を最小限に抑えます。これにより、venvベースの環境にはワークスペース内に.venvが、condaベースの環境には.condaが作成されます。コマンドパレットのPython: 環境を作成コマンドを介してクイック作成にアクセスできます。

Screenshot showing Quick Create in the Python: Create Environment quick pick.

Python環境チャットツール

Python Environments拡張機能(プレビュー版)に、「Python環境情報の取得」と「Pythonパッケージのインストール」の2つのチャットツールが追加されました。これらのツールを使用するには、プロンプトで直接#pythonGetEnvironmentInfo #pythonInstallPackageと追加して参照するか、エージェントモードが適用される場合にツールを自動的に呼び出します。これらのツールは、ファイルまたはワークスペースのコンテキストに基づいて適切な環境情報をシームレスに検出し、正確な環境解決でパッケージインストールを処理します。

Pylance使用時のカラーピッカー

Pylanceは、Pythonファイルで認識された色の値に対して、エディターに直接インタラクティブなカラースウォッチを表示できるようになり、色の視覚化と選択がより簡単になりました。試すには、python.analysis.enableColorPickerを有効にしてください。サポートされている形式には、#RGB(例: "#001122")および#RGBA(例: "#001122FF")が含まれます。

Screenshot showing the color swatch displayed in the editor next to #RGB color format.

AIコードアクション: フォーマット文字列の変換 (実験的)

Pylanceを使用している場合、文字列の連結をf-stringまたはformat()に変換するための新しい実験的なAIコードアクションがあります。これを試すには、変換したい文字列内のシンボルを選択したときに電球アイコンから、またはCtrl + ./Cmd + .から、Copilotでf-stringに変換またはCopilotでformat()呼び出しに変換コードアクションを選択します。

Screenshot showing the convert strings Code Actions, powered by AI.

このエクスペリエンスは、以下の設定で有効になります。

"python.analysis.aiCodeActions": {"convertFormatString": true}

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

GitHub Pull Requests拡張機能にさらなる進展がありました。この拡張機能により、プルリクエストやイシューの作業、作成、管理が可能になります。新機能は以下の通りです。

  • チャットでアクティブなプルリクエストについて質問できます。例えば、「#activePullRequestのすべてのコメントに対処する」などです。
  • プルリクエストを表示するのと同様に、ウェブビューでイシューを表示できます。
  • 「プルリクエスト」、「イシュー」、「通知」ビューの洗練と調整。
  • GitHubのProject Padawanのリリースに備え、Copilotへのイシューの割り当て、Copilotの@-メンション、およびUIでの適切な表示を可能にしました。

その他のハイライトについては、拡張機能の0.110.0リリース変更ログをご確認ください。

拡張機能の作成

テキストエンコーディング

VS Codeでのテキストエンコーディングを扱うためのAPIを完成させました。

具体的には、この新しいAPIを使用すると次のことが可能になります。

  • TextDocumentの現在のencodingを取得する
  • 特定のencodingTextDocumentを開く
  • 特定のencodingstringUint8Arrayにエンコードする
  • 特定のencodingを使用してUint8Arraystringにデコードする

拡張機能のESMサポート

NodeJS拡張機能ホストは、JavaScriptモジュール (ESM) を使用する拡張機能をサポートするようになりました。必要なのは、拡張機能のpackage.jsonファイルに"type": "module"エントリを追加することだけです。これにより、JavaScriptコードはimportおよびexportステートメントを使用できるようになり、特殊なモジュールimport('vscode')も含まれます。サンプルはこちらで見つけることができます: https://github.com/jrieken/vscode-esm-sample-extension

ESMのサポートは、まだウェブワーカー拡張機能ホストには対応していません。まず克服すべき技術的な課題がいくつかあります。https://github.com/microsoft/vscode/issues/130367で最新情報をお知らせします。ご期待ください!

提案されたAPI

画像のためのツール呼び出し

前回のイテレーションでは、拡張機能が画像を添付し、言語モデルにビジョンリクエストを送信できる提案されたAPIを追加しました。今回のイテレーションでは、このAPIを拡張し、ツール呼び出しの結果にも画像を含めることができるようにしました。

使用例を確認し、このAPIのステータスに関する最新情報を得るには、このAPI提案イシューをご覧ください。

拡張機能によって貢献されるMCPサーバー

拡張機能は、新しい提案されたAPIを使用することで、プログラムでエディターに拡張機能を提供できるようになりました。これは、ユーザーが設定やmcp.jsonで各サーバーの構成をハードコーディングする代替手段です。

このAPIに興味がある場合は、そのサンプルと、このAPIのステータスに関する最新情報を得るためのAPI提案イシューをご覧ください。

MCPツールアノテーション

VS Codeは、適切なツールアノテーションで構成されたツールを持つMCPサーバーの人間が読める名前を表示するようになりました。さらに、アノテーションでreadOnlyHint: trueとマークされたツールは、ユーザーの確認を必要とせずに実行が許可されます。

可変行の高さ

Monacoエディターで、IModelDecorationOptions型の行の高さの値を設定することで、可変行の高さを定義できるようになりました。1行に2つの行の高さが設定されている場合、そのうちの最大値が使用されます。

なお、現時点では簡素化のため、行の高さは対応する装飾範囲の最初の行にのみ設定されます。以下のスクリーンレコーディングでは、24行目と32行目がデフォルトよりも大きな行の高さでレンダリングされています。

この機能はまだ拡張機能では利用できませんが、さらなるテストの後で展開される予定です。

注目すべき修正点

  • 244939 - 個人用Microsoftアカウントが非常に早くログアウトする(数分から数時間)

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-js-debugへの貢献者

vscode-json-languageserviceへの貢献

vscode-jupyterへの貢献者

vscode-mypyへの貢献

vscode-notebook-renderersへの貢献

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

vscode-python-debuggerへの貢献者

vscode-python-environmentsへの貢献

language-server-protocolへの貢献者

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