🤖

VSCode v1.100のCopilot周り

に公開

こんにちは。mashimoです

この記事で解説すること

プロンプトと指示ファイルによる開発スタイルの標準化

本バージョンで導入された注目すべき機能として、「指示ファイル」と「プロンプトファイル」の2つがあります。

指示ファイル(.instructions.md)によるAIの挙動制御

指示ファイルは、特定のファイルやプロジェクト全体に適用される指示をAIに与えるための機能です。これによりAIの出力を組織のコーディング規約に準拠させることが可能になります。

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

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

この機能により、チーム間でのコーディング規約の統一や、プロジェクト固有のアーキテクチャ要件をAIに伝達することが簡単になるかと

設定手順
  1. コマンドパレットから Chat: New Instructions File... を実行
  2. .instructions.md ファイルを作成・編集
  3. Front Matterで applyTo ヘッダーを設定して適用範囲を指定

プロンプトファイル(.prompt.md)による作業の標準化

プロンプトファイルは、頻繁に使用するプロンプトをファイルとして保存し、再利用できる機能です。これにより、複雑な指示や一連の作業手順を標準化することができます。

---
mode: 'agent'
tools: ['file_search', 'semantic_search', 'read_file', 'insert_edit_into_file']
---
このプロジェクトの全テストファイルを分析し、テストカバレッジが不足している機能を特定して、不足しているテストケースを作成してください。

プロンプトファイルを実行する方法

実行方法
  • チャット入力欄で / に続けてプロンプトファイル名を入力
  • エディタでプロンプトファイルを開き、ツールバーの「Play」ボタンをクリック
  • コマンドパレットから Chat: Run Prompt File... を実行

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

VSCode v1.100では、以下の改善により編集操作が大幅に高速化されました:

  • OpenAIのapply patch editing format(GPT-4.1およびo4-mini)
  • Anthropicのreplace string tool(Claude Sonnet 3.7/3.5)

これらの改善により、特に大規模ファイルの編集処理が効率化され、レスポンス時間が短縮されます。開発者はより迅速なAIアシスタンスを受けながら作業を進めることができるようになりました。

チャットのベースモデル

VS Codeのチャットのデフォルトのベースモデルとして、GPT-4.1を段階的に展開

自動エラー修正機能

# 設定項目
github.copilot.chat.agent.autoFix

新たに導入された自動エラー修正機能は、エージェントモードでのファイル編集時に発生したエラーを自動検出し、修正提案を行います。この機能を有効にすると、コード内のエラーが発生した際に、Copilotが自動的に解析を行い、適切な修正候補を提示します。たとえば、構文エラーや型の不一致、未定義変数の使用などの一般的なエラーに対して、修正案を提供します。これにより、デバッグの時間を短縮できるかもしれません。

新しい検索ツールとUI要素活用機能

GitHubリポジトリ検索 (#githubRepo)

新たに実装されたGitHubリポジトリ検索機能は、ローカル環境にクローンしていないリポジトリに対しても質問を行うことができます。

TypeScriptでファクトリーパターンを実装する方法を教えて #githubRepo microsoft/vscode

このように指定することで、指定したリポジトリ内のコードを参照した回答を得ることができます。これにより、オープンソースプロジェクトのコード調査や学習効率が向上します。

マーケットプレイス拡張機能の検索ツール

チャットから直接マーケットプレイスの拡張機能を検索できる #extensions ツールが追加されました。チャットのプロンプトに基づいて自動的に呼び出されるか、明示的に #extensions をプロンプトに追加することで使用できます。検索結果から直接拡張機能をインストールすることも可能です。

Webページ取得ツールの改善

前回のバージョンで導入された #fetch ツールが大幅に改善されました:

  • ページ全体をコンテキストとして取得: 以前はページの一部のみが取得されていましたが、より大きなコンテキストウィンドウを活用して、ページ全体を取得できるようになりました。コンテキストウィンドウの制限に達した場合でも、重要な部分を優先して保持するよう最適化されています。
  • 標準化されたMarkdown形式: 以前は独自の階層形式でWebページが整形されていましたが、現在は標準的なMarkdown形式に変換されるようになりました。これにより、言語モデルがコンテンツをより効果的に理解・処理できるようになりました。

チャット入力の改善点

チャット入力ボックスに以下の改善が加えられました:

  • 添付ファイル: プロンプトテキストで # を使ってコンテキストを参照すると、添付ピルとしても表示されるようになり、言語モデルに送信される内容が視覚的に分かりやすくなりました。
  • コンテキストピッカー: ファイル、フォルダー、その他の添付タイプを選びやすくするため、コンテキストピッカーが簡素化されました。
  • 完了ボタンの削除: 「完了」ボタンが削除されました。セッションが予期せず終了するという混乱がなくなり、新しいチャットを作成するとき(Ctrl+L)のみ新しいセッションが開始されるようになりました。

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

従来の ⌃⌘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

MCP(Model Context Protocol)のストリーマブルHTTPサポート

https://code.visualstudio.com/updates/v1_100#_mcp-support-for-streamable-http
新しいStreameble HTTP転送のサポートが追加されました。これは既存のSSEサーバーと同様に設定でき、SSEサーバーとの下位互換性も維持されています:

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

エディタ体験の向上

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

フローティングウィンドウに2つの新しいモードが追加されました:

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

これらのモードを切り替えるためのコマンドも複数追加されました:

workbench.action.toggleWindowAlwaysOnTop
workbench.action.enableWindowAlwaysOnTop
workbench.action.disableWindowAlwaysOnTop
workbench.action.toggleCompactAuxiliaryWindow
workbench.action.enableCompactAuxiliaryWindow
workbench.action.disableCompactAuxiliaryWindow

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

参考文献

  1. VSCode公式リリースノート v1.100
  2. Microsoft Developer Blog - AI-assisted development
    VSCodeの各機能の詳細な設定や最適な活用方法については、公式ドキュメントも併せてご参照ください。

Discussion