背景:為什麼要匯出/匯入 GitHub Copilot 對話紀錄?
在使用 Visual Studio 內建的 GitHub Copilot Chat 開發功能時,我們常常會針對一個複雜的需求,跟 Copilot 進行來回好幾十輪的對話:討論架構設計、除錯思路、修正方案,甚至請 Copilot 逐步解釋一段舊程式碼的邏輯。這些對話累積下來,其實就是一份非常有價值的「開發脈絡 (Context)」——
- 裡面記錄了為什麼最後選擇了某個實作方式、放棄了哪些方案
- 包含了除錯過程中的假設與驗證紀錄
- 可以做為文件、教學或是團隊知識傳承的素材
但這份 Context 目前預設只存在單一專案、單一台機器上。一旦發生下列狀況,過去的對話紀錄就有可能無法存取或直接消失:
- 搬移、重新命名專案資料夾,或是刪除
.vs隱藏資料夾 - 換到新電腦、重灌作業系統
- 想把某個 Copilot Chat 的討論結果分享給團隊成員,或整理成文件保存
- 想要在新專案繼續沿用之前討論出來的 Context,而不是從零開始問一次
因此,「如何匯出(備份)現有的 Copilot Chat 對話紀錄」、「如何在其他專案/電腦匯入(還原)」,就成為許多開發者在 Visual Studio Developer Community 上多次提出的需求。截至目前,這也是官方持續在強化的功能之一,並非一開始就有完整的「一鍵匯出/匯入」體驗,因此了解目前的現況與替代做法就很重要。
實作:目前可行的匯出/匯入(備份/還原)做法
1. 內建的「聊天記錄面板」(Chat History Panel)
從 Visual Studio 2022 17.14 / Visual Studio 2026 18.5 開始,Copilot Chat 視窗提供了正式的「聊天記錄面板」,取代了原本簡易的下拉選單:
- 開啟 檢視 (View) → GitHub Copilot Chat
- 在聊天視窗中選擇聊天記錄圖示,會列出目前方案底下所有的對話 Thread
- 每一筆紀錄會顯示:對話標題、最後一則訊息預覽、最後更新時間
- 點選任一筆紀錄即可切換回該次對話,繼續延續原本的 Context
要注意的是,這個面板只能讓你在「同一個方案/專案」內切換、回顧既有的對話,它本身不是跨專案、跨機器的匯出/匯入功能。對話紀錄實際上是跟著方案(Solution)走的。
2. 使用「Copy All」快速複製對話內容
如果只是想把某一次對話的內容保存成文字或 Markdown 檔案(例如寫成技術文件),可以:
- 在 Copilot Chat 視窗中,將滑鼠移到想要複製的訊息上
- 點選訊息右上角的複製圖示,或使用整個對話的 Copy All 功能
- 貼到 Markdown 編輯器、Notion 或任何文字編輯器中保存
依版本不同,早期的 Copy All 有可能只會複製「目前選取/可視範圍」的訊息,而非整段完整對話,這也是社群回報最多的痛點之一(可參考 Developer Community 上的多筆回報,例如 Add an option to export the entire GitHub Copilot chat conversation、Export a conversation from Copilot chat 等票單)。這類「完整匯出對話」的需求已陸續被官方標記為 Fixed In: 18.8.0,代表較新版本的 Visual Studio 2026 已經逐步強化這部分的複製/匯出體驗,建議實際操作前先確認自己的 Visual Studio 版本,並在聊天視窗的選單或訊息右鍵選單中尋找是否已提供「匯出整個對話」的選項。
3. 手動備份/還原對話紀錄檔案(進階、非官方支援做法)
如果你需要在「搬移專案資料夾」或「更換電腦」時保留完整的 Copilot Chat 對話紀錄,目前沒有官方的匯出/匯入按鈕可以直接做到這件事。不過,社群回報(Developer Community 討論串)指出,對話紀錄實際上是以檔案的形式儲存在方案的隱藏資料夾中:
<專案資料夾>\.vs\<方案名稱>\copilot-chat\<Chat Thread ID>\sessions\<GUID 檔名,無副檔名>
這些檔案是內部使用的二進位格式(包含 Microsoft.VisualStudio.Copilot.* 相關的中繼資料、Markdown 格式的對話文字,以及程式碼變更的 XML 內容),並非公開文件化的格式,因此:
- 備份:直接複製整個
.vs\<方案名稱>\copilot-chat資料夾另存即可 - 還原:將備份的
copilot-chat資料夾複製回新專案(或新電腦)對應的.vs\<方案名稱>路徑下,重新開啟方案後,Copilot Chat 通常就能重新讀取到原本的對話 Thread
⚠️ 這個做法屬於「非官方支援」的權宜方式:
.vs資料夾一般會被.gitignore排除、不會被版本控制追蹤,而且此二進位格式未來版本可能會變更,因此不建議把這當作長期或跨版本的正式備份機制,僅適合短期救急使用。
4. 更推薦的長期做法:把重要 Context 轉存成 Repository 內的檔案
與其依賴不公開、可能隨版本改變的對話紀錄檔案,更建議把「值得保留的 Context」直接沉澱到專案儲存庫中,這樣不但可以被 Git 版本控制追蹤,也能被團隊成員與未來的 Copilot 對話重複使用:
- 使用
/savePromptSlash Command:在對話中打上/savePrompt,即可將目前對話萃取成一份可重複使用的 Prompt,存成.github/prompts/*.prompt.md - 使用
/generateInstructionsSlash Command:讓 Copilot 分析目前專案的程式風格與慣例,自動產生.github/copilot-instructions.md - 手動將重要的討論結論整理成
.github/copilot-instructions.md或一般的 Markdown 文件,作為往後 Copilot Chat 的長期 Context 來源
結論/心得
目前(截至本文撰寫時)Visual Studio 2022 / 2026 的 GitHub Copilot Chat,在「對話紀錄的匯出/匯入(備份/還原)」這塊仍在持續補強中:
- 官方提供的聊天記錄面板方便你在同一個方案內快速回顧、切換過去的對話,但無法跨專案、跨機器搬移
- Copy All / 複製訊息可以應急保存單次對話內容,社群針對「完整匯出」的需求也持續反映中,較新版本已陸續改善
- 若真的需要搬移整份對話紀錄,目前只能透過複製
.vs\copilot-chat資料夾這種非官方支援的方式來達成,且格式為二進位、未公開文件化,使用上要有心理準備
以心得來說,與其把 Copilot Chat 的對話紀錄當作唯一的 Context 保存位置,不如養成習慣,把每次討論出來的重要結論、決策理由,主動整理進 .github/copilot-instructions.md、.instructions.md 或 .prompt.md 這類會被 Git 版本控制追蹤的檔案中。這樣即使哪天真的遺失了 Chat 對話紀錄,團隊累積的知識與 Context 也不會跟著不見,而且能讓每一位開發者、甚至未來的 Copilot 對話都能重複利用這些內容,反而比單純保留一份聊天記錄更有長期價值。