1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VS Code Copilot Chat の過去セッション復元は可能か?・・・無理なので Issue に👍しよう

Posted at

背景

VS Code 上の GitHub Copilot Chat を使っていると、過去の会話を振り返りたい場面がよくある
最近の Update (107など) でセッションを一覧で見られるようになったが、それでも Workspace 単位であって、「あれ?○○の調査どこでしたっけ?」ってよくなる・・ :sweat:
ということで、検索・Workspace 横断での一覧確認がしたかったので、VS Code の実装を調査し、「過去セッションの復元」が技術的に可能かどうかを検証した記録

TL;DR(結論)

  • 短答: 既存のローカルファイルから過去の Copilot Chat セッションを復元することは、現状では実用的に不可能に近い。
  • 理由: Copilot Chat の UI は Webview を使用し、会話データはランタイムで blob/object URL 経由で供給されるため、平文のチャット本文がディスクに保持されていない。
  • 次善策: 既存 Issue に賛同して「Save As / Export Chat / Make Searchable」機能を要望するか、拡張側でセッションを定期的に globalStorage に保存する改修(PR)を行うかの二択。

ということで、以下に賛同するのが早いかもって結論

調査したこと(概要)

  • globalStorage フォルダ(例: %APPDATA%\Code\User\globalStorage\github.copilot-chat)にある api.json を解析。長い文字列は存在したが、平文の会話本文は見つからなかった。
  • VS Code のランタイム(workbench.desktop.main.js 等)と拡張の dist/*.js を横断検索し、webview / createObjectURL / asWebviewUri に関連する箇所を抽出。
  • microsoft/vscode を clone して src/vs/platform/webview/electron-main/webviewProtocolProvider.tssrc/vs/workbench/contrib/webview/common/webview.ts を確認。

技術的なポイント

  • Webview の提供方式:

    • asWebviewUri はリソース URI を特殊な https 形式に変換する(例: ${scheme}+${encodedAuthority}.vscode-resource.vscode-cdn.net)。
    • webviewProtocolProvider はランタイムでのリクエストをハンドリングし、/index.html/service-worker.js のような限られた組み込みリソースを返す。
    • 多くの UI コンテンツはブラウザ側で createObjectURL(Blob)経由で生成・配信されるため、チャット本文は実行時メモリやブラウザ内ストレージ(必要に応じて service worker 経由)に留まり、恒久的に平文でディスクに残らない。
  • api.json の中身:

    • 長い文字列や埋め込みが含まれているが、これらはコードやバイナリに近い形式で保存されており、直接的な会話テキストの復元には使えない。

なぜ復元できないのか

  • UI レイヤー(Webview)で生成される会話データは、ランタイムの Blob/メモリに依存しており、既存のローカルストレージ(globalStorage 等)に平文で保持されていないため。
  • 拡張・ランタイム双方のコードを追った結果、チャット履歴を後から抽出できる「まとまった平文ファイル」は確認できなかった。

選択肢

  1. Issue に賛同
  • ただし、結構古めのものだけど、1.107 のアップデートで session が強化されたので、もうすぐ?
  1. PR を作る
  • 頑張れば行けるはず・・・ただ、今は名古屋に変えるための活動が優先なんだよね・・誰か転職先紹介して 😁

あとがき

結構頑張って調べたけど、Local にあるファイルからは無理
VS Code 拡張を作るのも、現状のを抜くのは出来るけど、過去解析は無理ってのがわかった。

セキュリティ的には、ちゃんとしてそうってことで安心できた :laughing:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?