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

2024年2月 (バージョン 1.87)

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

更新 1.87.2: この更新は、このセキュリティ問題に対処しています。

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

Visual Studio Code の 2024 年 2 月リリースへようこそ。このバージョンには、お役に立つと期待される多くの更新が含まれています。主なハイライトの一部を次に示します。

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

アクセシビリティ

エディターでのディクテーションの使用

VS Code Speech 拡張機能をインストールしていれば、音声を使ってエディターに直接ディクテーションできるようになりました。

エディターのディクテーションを開始および停止するための新しいコマンドが追加されました: 音声: エディターでディクテーションを開始 (⌥⌘V (Windows, Linux Ctrl+Alt+V)) と 音声: エディターでディクテーションを停止 (Escape)。

開始コマンドのキーバインド (⌥⌘V (Windows, Linux Ctrl+Alt+V)) を長押しすると、キーを離すとすぐに音声認識が停止するウォーキートーキーモードを有効にできます。

注: ディクテーションは、SCM コミット入力ボックスやプルリクエストのレビュー時のコメント入力フィールドなど、リッチエディターが使用される他の場所でも機能します。

音声認識の多言語サポート

VS Code Speech 拡張機能を使用すると、accessibility.voice.speechLanguage 設定を使用して、サポートされている 26 言語の中から選択できるようになりました。

音声拡張機能の各言語は、独自の拡張機能として提供されます。音声認識を初めて開始すると、選択した言語ごとに拡張機能のインストールが表示されます。

アクセシビリティ信号

アクセシビリティ信号には、以前はオーディオキューと呼ばれていたサウンドと、以前はアラートと呼ばれていたアナウンスの両方が含まれます。

ヘルプ: 信号サウンドを一覧表示 および ヘルプ: 信号アナウンスを一覧表示 コマンドを使用すると、利用可能な信号を表示および構成できます。この新しい構成への移行は自動的に行われます。

以前

"audioCues.clear": "on | auto | off"
"accessibility.alert.clear": true | false

以後

"accessibility.signals.clear": {
    "sound": "auto | on | off",
    "announcement" (optional): "auto | off"
}

ワークベンチ

リリースノートのインタラクティブな設定

新機能の利用を容易にするため、リリースノートから直接設定を有効にしたり表示したりできるようになりました。VS Code 内からリリースノートを表示する場合 (リリースノートを表示 コマンド)、一部の設定に歯車アイコンがあることに注目してください。設定または歯車アイコンを選択すると、すぐに設定とやり取りできます。

Example of an interactive setting in release notes

言語モデルアクセスにおける透明性と制御

今回のイテレーションでは、拡張機能が GitHub Copilot Chat の言語モデルを使用できる提案 API を導入しました。モデルへのアクセスを最大限に透明化し、制御するために、以下の機能を追加しました。

認証アクセスと同様に言語モデルアクセスを管理

言語モデルへのアクセス管理は、VS Code での GitHub アカウントまたは Microsoft アカウント (または AuthenticationProvider モデルを活用するもの) へのアクセス管理と非常によく似ていることがわかりました。これらの類似点があるため、言語モデルへのアクセスにも VS Code の認証スタックを活用しました。

ある拡張機能が別の拡張機能の言語モデルにアクセスしたい場合、アクセスを許可するための 1 回限りのプロンプトが表示され、その設定は永続化されます: 言語モデルアクセスを要求する拡張機能を示すモーダルダイアログ

アクセスが許可されると、アカウントメニューの、アカウントアクセスを管理するのと同じ場所でそのアクセスを管理できます。

Manage trusted extensions options in the account menu

「信頼できる拡張機能を管理」を選択すると、必要に応じてアクセスを管理できるクイックピックが表示されます。

Manage trusted extensions quick pick

最初の作業が完了したので、可能な限りスムーズで明確な体験になるよう、引き続き改良を加えていきます。

拡張機能の言語モデル使用状況を追跡

拡張機能エディターとランタイム拡張機能エディターで、拡張機能の言語モデル使用状況を追跡できます。以下の画像は、Copilot Chat Sample Extension が GitHub Copilot Chat 言語モデルに対して行ったリクエストの数を示しています。

Tracking language model usage in extension editor

Tracking language model usage in running extensions editor

エディター

エディタースティッキースクロール

今回のイテレーションでは、エディターでスティッキースクロールを既定で有効にしています。これは、設定 editor.stickyScroll.enabled を使用して変更できます。

また、エディターのスティッキーウィジェット内に表示できる最大行数を 10 から 20 に増やしました。設定 editor.stickyScroll.maxLineCount で最大行数を構成できます。

複数カーソルでのインライン補完

今回のイテレーションでは、複数カーソルでのインライン補完をサポートしました。これにより、インライン補完は、プライマリカーソル位置とセカンダリカーソル位置の両方でプレビューされ、適用されます。

マルチ差分エディターでのリファクタリングプレビュー

リファクタリングプレビューを使用すると、コードのリファクタリングによって適用される変更を確認できます。リファクタリングプレビューの変更は、マルチ差分エディターで表示されるようになり、すべての変更を一目で確認し、以前のバージョンと比較することが容易になりました。

ターミナル

コマンド実行時間の追跡

シェル統合が有効になっている場合、ターミナルの実行時間が追跡され、詳細がコマンドホバーに表示されるようになりました。

Hovering the terminal command shows how long it took in milliseconds

ズームイン、ズームアウト、リセットの新しいコマンド

ターミナルのフォントサイズをズームイン、ズームアウト、リセットするための新しいコマンドがあります。これらは既定ではバインドされていませんが、好みのキーバインドにバインドできます。

  • ターミナル: フォントサイズを拡大 (workbench.action.terminal.fontZoomIn)
  • ターミナル: フォントサイズを縮小 (workbench.action.terminal.fontZoomOut)
  • ターミナル: フォントサイズをリセット (workbench.action.terminal.fontZoomReset)

ソース管理

ウィンドウタイトルにリポジトリ名またはブランチ名を含める

ユーザーは、window.title 設定を使用してウィンドウタイトルをカスタマイズできます。今回のイテレーションでは、この設定で使用できる 2 つの新しい変数 ${activeRepositoryName}${activeRepositoryBranchName} を追加しました。これらの変数は、それぞれアクティブなリポジトリの名前とアクティブなブランチの名前に置き換えられます。

コミット入力検証の改善

今回のイテレーションでは、言語診断を使用してコミットメッセージ作成のためのより良い入力検証を提供することを検討しました。言語診断を使用すると、入力検証の警告を解決するために呼び出すことができるコードアクションを表示できます。git.inputValidationSubjectLength および git.inputValidationLength 設定に基づいて空白文字を削除し、行をハードラップするコードアクションを追加しました。今後さらに多くのコードアクションを追加する予定です。

これを有効にするには、git.inputValidation 設定を切り替えます。これを既定で有効にする前に解決すべき問題がいくつかありますが、その間は自由に有効にしてフィードバックをお聞かせください。

受信/送信変更の設定管理

ソース管理ビューの受信/送信セクションの改良を続けています。今回のイテレーションでは、「受信/送信」セパレーターに設定アクションを追加しました。これにより、ユーザーはscm.showIncomingChangesscm.showOutgoingChanges、およびscm.showChangesSummaryの設定をより簡単に切り替えることができます。これらのアクションは、ソース管理ビューのタイトルバーの...メニューにある受信と送信メニューでも利用できます。

すべての未変更エディターを閉じるコマンド

エディターの管理を支援するため、コマンドパレットにすべての未変更エディターを閉じるコマンドを追加しました。これにより、未変更のファイルを持つすべてのエディターが閉じられます。このコマンドは、保存されていない変更があるエディターは閉じません。

ノートブック

ノートブックのインデント設定

notebook.editorOptionsCustomizations 設定を通じて、ノートブック固有のインデント設定をサポートするようになりました。この設定により、ユーザーは editor.tabSizeeditor.indentSize、および editor.insertSpaces 設定を通じて、ノートブックに特定のインデントスタイルを設定できます。

また、ユーザーは、ノートブックエディターの現在のインデント設定を示すノートブックインデントというステータスバーエントリにも気づくでしょう。このエントリにはクイックピックメニューがあり、設定エディターを開かずにインデント設定を管理できます。これは、エディターでも利用できるのと同じクイックピックメニューです。

デバッグ

新しい BreakpointMode のサポート

VS Code は、ブレークポイントの異なる「モード」を設定できる Debug Adapter Protocol (DAP) への新しい追加をサポートしています。この機能は、ネイティブコードのデバッガーによって、たとえば、ハードウェアブレークポイントとソフトウェアブレークポイントを設定するために一般的に使用される可能性があります。ブレークポイントのモードは、コンテキストメニューのモードの編集アクションで変更できます。

Breakpoint context menu now has an 'Edit Mode...' option to change the breakpoint mode

リモート開発

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

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

  • GitHub Copilot Chat は、ワークスペースに開発コンテナ構成ファイルを追加する際にテンプレートと機能を提案します。

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

VS Code のさまざまなリモート開発機能の概要を知るには、最近のVisual Studio Code のリモート開発ラーニングパスをお見逃しなく。

拡張機能への貢献

GitHub Copilot

名前変更の提案

Copilot による名前変更の提案を順次展開しています。エディターでシンボル名を変更すると、GitHub Copilot はコードに基づいて、そのシンボルの新しい名前の候補リストを提案します。

インラインチャットのアクセシビリティビュー

インラインチャットに、アクセシブルな差分ビューアと同様にコード変更を表示するアクセシビリティビューが追加されました。アクセシビリティビューは、スクリーンリーダーモードを使用すると有効になります。また、inlineChat.accessibleDiffView 設定を使用して、常にオンまたはオフに構成することもできます。

また、変更の塊は、F7 および Shift+F7 キーバインドでキーボードでナビゲートできるようになりました。

インラインチャットのデフォルトモード

live preview モードは廃止され、live がインラインチャットのデフォルトモードになりました。これにより、提案がエディターに直接適用され、変更がインライン差分で強調表示されます。

マイクアイコンは常に表示されます

Copilot Chat で音声認識を開始するためのマイクアイコンが常に表示されるようになりました。VS Code Speech 拡張機能がまだインストールされていない場合、アイコンを選択するとまず、音声認識機能を有効にするために拡張機能をインストールするよう求められます。

Microphone icon in chat input

この機能に興味がない場合、またはキーボードショートカットのみで使用したい場合は、コンテキストメニューからこの機能を非表示にすることができます。

Hide microphone icon in chat input

エージェントとスラッシュコマンドの音声サポート

VS Code Speech 拡張機能を使用してチャット入力フィールドに音声を埋め込むと、「@workspace」や「/fix」などのフレーズがそれぞれのエージェントやスラッシュコマンドに変換されるようになりました。これはチャットビューとインラインチャットの両方で機能します。

どこでもウォーキートーキーモード

VS Code Speech 拡張機能を使用すると、コマンド音声: 音声チャットを開始 (⌘I (Windows, Linux Ctrl+I)) がどこでも機能するようになり、フォーカスのある場所 (エディターのインラインチャット、それ以外の場合はパネルチャット) に応じて音声チャットが表示されます。

ウォーキートーキーモードを有効にするには、キーバインドを押し続けます。キーを離すまで音声認識がアクティブになり、その後リクエストが自動的に送信されます。

Copilot: Explain This はカーソル位置に基づきます

以前は、チャットで Explain This を入力するには、まずアクティブなエディターで説明するテキストを選択する必要がありました。カーソルを識別子に置いて、Copilot に識別子の定義を確認させることもできるようになりました。定義が別のファイルにある場合、これにはリッチ言語サポートが利用可能である必要があります。

プレビュー: #codebase 変数

今回のイテレーションでは、GitHub Copilot Chat のプレリリース版で、#codebase という新しいチャット変数を導入しました。この変数は、クエリに基づいてワークスペースのコンテキストを Copilot または話しているチャット参加者に提供するために使用できます。

この例では、#codebase を、まず @workspace に質問し、その応答を @terminal に質問する内容に追加すると考えることができます。

これはプレビュー機能であり、#codebase はこの変数の最終的な名前ではないかもしれませんが、チャット参加者にワークスペースコンテキストを含める方法を提供するという意図はあります。

繰り返しになりますが、これは GitHub Copilot Chat のプレリリースバージョンのみです。ご意見や使用方法をお聞かせください!

ターミナルワークスペースのコンテキスト

ターミナルは、時間がかかる可能性があったワークスペースのコンテキストを自動的に引き込まなくなりました。代わりに、#codebase 変数を使用して明示的に含める必要があります。

ターミナルチャットの場所

新しい設定 github.copilot.chat.terminalChatLocation が追加され、ターミナルチャットの動作を制御します。デフォルト値は chatView で、以前の動作を希望する場合は quickChat に設定できます。

Jupyter

ローカルで実行中の Jupyter サーバーの言語サーバーサポート

以前、ローカルの Jupyter サーバーに接続する際、Jupyter 拡張機能はこれらの Jupyter サーバーをリモートとして扱っていました。その結果、Pylance 拡張機能はインストールされたパッケージを検出できませんでした。

Failed language features for remote Jupyter Servers

今回のイテレーションでは、Jupyter 拡張機能が接続された Jupyter サーバーがローカルかリモートかを検出するようになりました。これにより、Pylance 拡張機能は (ローカルの Python 環境内に) インストールされたパッケージに基づいて、より豊富な言語機能を提供できるようになります。

Language features for remote Jupyter Servers

Python

Python REPL のシェル統合

WSL 拡張機能を介して、Mac、Linux、Windows で Python REPL のシェル統合を有効にしました。Python REPL でコマンドを実行すると、色付きの丸いデコレータがコマンドの成功または失敗を示します。さらに、Python REPL のターミナル: 最近のコマンドを実行…コマンドもサポートされており、REPL のコマンド履歴を表示および利用できます。

すべてのオペレーティングシステムで、ターミナル: 最近のコマンドを実行からアクセスできる Python のシェルファイル履歴もサポートするようになりました。

最初のコマンドが無視されるリスクの軽減

以前、多くの Python REPL ユーザーが、Python REPL への最初のコマンド (たとえば、Shift+Enter を使用した場合) で問題に気づいていました。Python コマンドが無視されて Python REPL に送信されなかったり、Python REPL 自体ではなく Python REPL を起動するシェルにコマンドが複数回貼り付けられたりする動作が発生していました。この動作は、特に Windows ユーザーや古いマシンで作業しているユーザーで発生しました。

今回のイテレーションでは、この動作が発生するリスクを軽減するために努力しました。ユーザーは、VS Code 内の最初の REPL インスタンスに Python コマンドを送信する際に、最初のコマンドが失われる頻度が少なくなりました。

不足しているインポートを追加する際の改善

Pylance 拡張機能は、不足しているインポートを追加するためのインポートを追加コードアクションを提供します。Pylance のプレリリース版では、このコードアクションが改善されました。Pylance はヒューリスティックを使用して、最も信頼性の高い上位 3 つのインポートオプションのみを表示するようになりました。これは、最近使用されたインポート、同じモジュールからのシンボル、標準ライブラリからのシンボル、ユーザーモジュールからのシンボル、サードパーティパッケージからのシンボル、そして最後にモジュールとシンボル名でソートするという基準に基づいて優先順位が付けられます。

さらに、2つの新しいコードアクションが導入されました。1つは、不足しているインポートシンボルと接頭辞が一致するインポートオプションを検索できるクイックピックメニューを表示する追加のインポート一致を検索、もう1つは、タイプミスによる不足しているインポートに対してインポート提案を提供するスペルを変更です。

この動作は、python.analysis.addImport.heuristics 設定で今すぐ有効にできます。これを近いうちに新しい既定の動作とし、将来のリリースでこの設定を非推奨にする予定です。

Django または Flask アプリをデバッグする際にブラウザを自動的に開く

Python Debugger 拡張機能により、Python Web アプリケーションの開発とテストがより便利になりました!launch.json 設定で autoStartBrowser: true を設定することで、Django または Flask アプリケーションでデバッガーを開始する際にブラウザを自動的に開くことができるようになりました。

{
  "name": "Python Debugger: Flask",
  "type": "debugpy",
  "request": "launch",
  "module": "flask",
  "env": {
    "FLASK_APP": "hello_app.webapp",
    "FLASK_DEBUG": "1"
  },
  "args": ["run"],
  "jinja": true,
  "autoStartBrowser": true
}

シンボリックリンクされたワークスペースでの Pytest のバグ修正

シンボリックリンクを持つワークスペースで pytest テストが正しく機能するようにバグ修正を実装しました。テストのリライトにおいて、シンボリックリンクの場所からのテストは、そのシンボリックリンクパスによって正しく参照され、実行されます。

GitHubプルリクエスト

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

  • 「GitHub Pull Requests and Issues」から「GitHub Pull Requests」に名称変更
  • マージまたはスカッシュコミットに関連付けられたメールアドレスは、マージ/スカッシュ時に選択可能
  • 設定 githubPullRequests.labelCreated を使用して、作成された PR に自動的に追加されるラベルを構成可能
  • 「オーナーレベル」の PR テンプレートをサポート
  • PR と課題の作成時にプロジェクトを追加可能

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

プレビュー機能

拡張機能作成者向け: @vscode/l10n-dev と Azure AI Translator のプレビュー

今回のイテレーションでは、新しいコマンド、@vscode/l10n-dev のサブコマンドを導入しました。これにより、Azure AI Translator を使用して文字列を翻訳できます。

文字列をエクスポートし、Azure AI Translator インスタンスを作成した後、AZURE_TRANSLATOR_KEYAZURE_TRANSLATOR_REGION 環境変数を設定すると、以下のコマンドを実行して Azure AI Translator を使用して翻訳を生成できます。

npx @vscode/l10n-dev generate-azure -o ./l10n/ ./l10n/bundle.l10n.json ./package.nls.json

Azure AI Translator は無料ティアを提供しています。これは、拡張機能の作成者がさまざまな言語を話す多くのユーザーをより簡単にサポートできるツールを提供するための良い機会だと考えました。これらは機械翻訳であるため、常に完璧とは限らないことに注意してください。しかし、言語を話す人がいれば、より洗練された翻訳のための良い出発点となるでしょう。

詳細については、Azure AI Translator 統合に関する l10n-dev ドキュメントを参照してください。

拡張機能の作成

拡張機能のテストカバレッジ

拡張機能にテスト CLIを使用している拡張機能の作成者は、@vscode/test-cliパッケージの最新バージョンに更新することでテストカバレッジを生成できます。

カバレッジは、テスト実行時に--coverageフラグを渡すことでコマンドラインで、またカバレッジ付きで実行アクションを使用することでVS Code UIで生成できます。

launch.json のテスト構成

launch.json 設定でテスト構成ファイルを参照できるようになりました。

{
    "type": "extensionHost",
    "request": "launch",
    "name": "My extension tests",
+   "testConfiguration": "${workspaceFolder}/.vscode-test.js",
-   "args": ["--extensionDevelopmentPath=${workspaceFolder}"]
},

以前必要だったさまざまな args は自動的に生成されますが、追加の引数は VS Code のコマンドラインに追記されます。

課題レポーターへの追加データの提供

前回のイテレーションでは、workbench.action.openIssueReporter コマンドに datauri のフィールドを追加しました。これにより、拡張機能がより多くの事前入力情報を含むネイティブ課題レポーターを直接開くことができるようになりました。

Help: Reporter Issues... を介して通常の課題レポーターフローをナビゲートする別のケースで拡張機能がこれを利用できるようにするには、拡張機能はカスタムコマンド (openIssueReporter を呼び出す) とメニュー貢献ポイントを issue/reporter に提供できます。

package.jsoncontributes の貢献コマンドとメニューの例

"commands": [
    {
        "command": "extension.myCommand",
        "title": "Report Issue"
    }
],
    "menus": {
        "issue/reporter": [
            {
                "command": "extension.myCommand"
            }
        ]
    }

API および openIssueReporter コマンドの更新または変更については、issue #196863 を購読してください。

提案されたAPI

チャットおよび言語モデル API の最終化に向けて

私たちは、チャットビューへの拡張機能の貢献と、言語モデルの一般的な使用をサポートするための作業を行ってきました。現在、以下の API の最終段階に入っており、皆様からのフィードバックをお待ちしております。

拡張機能ガイドで、チャット拡張機能を構築する方法と、言語モデルを使用する方法について詳しく学びましょう。

FindFiles2 API

既存の workspace.FindFiles API の改良版である新しい提案拡張機能 API を追加しました。新しい workspace.FindFiles2 API は、ワークスペースファイルの検索を可能にする新しいオプションを導入しています。

  • files.exclude および search.exclude 設定を尊重する
  • 無視ファイルを尊重する
  • あいまい検索を実行する
  • シンボリックリンクをたどる

新しい API はこちらで確認できます。

FindFiles2 は仮称であり、この機能は将来的に FindFiles の代替オーバーロードとして提供される可能性があります。

テストカバレッジAPI

今回のイテレーションでは、テストカバレッジAPIとエディター内エクスペリエンスは機能的に完成した状態です。VS Code 1.88リリースでの最終化が予測される前に、拡張機能の作成者にはぜひ試してフィードバックを提供することをお勧めします。

Extension Pack for JavaはすでにテストカバレッジAPIを採用しています。開発者はJavaテスト実行時のカバレッジ結果をすでに確認できます。これで、Run Test With Coverageボタンを選択し、テストエクスプローラービューでTest Coverageパネルを表示することで、テストカバレッジにアクセスできるようになります。Java用Extension Packでのテストカバレッジの詳細については、チームの12月1月の更新情報を参照してください。

APIはここに含めるには長すぎますが、非常に分かりやすいと考えており、issue #123713での提案に対するご意見を歓迎します。

デバッグビジュアライザーAPI

新しい API が追加され、拡張機能が変数の「ビジュアライザー」を提供できるようになりました。これらのビジュアライザーは、新しいエディターを開くなどのコマンドを実行するアクション、またはデバッグビューにインラインで埋め込まれ、データのデフォルト表現に代わるツリーのいずれかです。

新しいAPIはこちらで確認できます。

新しいシンボル名プロバイダーAPI

この API を使用すると、ユーザーがシンボル名を変更したいときに、拡張機能が名前の提案を提供できます。

注目すべき修正点

  • 184046 ターミナルでリンクが完全に機能しなくなることがある

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-black-formatterへの貢献

vscode-hexeditorへの貢献

  • @deitry (Dmitry Vornychev): プラグインの説明を修正 PR #480
  • @jogo-
    • 符号付き int64 の前に符号なしを表示 PR #482
    • データインスペクターに ASCII 文字を表示 PR #483
    • ステータスオフセットと選択範囲を 10 進数と 16 進数で表示 PR #486
    • データインスペクターに ULEB128 と SLEB128 を表示 PR #488
    • CHANGELOG.md のタイプミスを修正 PR #489
  • @liudonghua123 (liudonghua): 一般的な CJK エンコーディング (簡体字中国語の gb18030、繁体字中国語の big5、韓国語の euc-kr、日本語の euc-jp) のデータ型サポートを追加 PR #465

vscode-isortへの貢献

vscode-languageserver-nodeへの貢献者

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

language-server-protocolへの貢献者

node-ptyへの貢献