管理 AI 上下文
透過提供正確的上下文,你可以從 VS Code 中的 AI 獲得更相關、更準確的響應。在本文中,你將學習如何在聊天中管理上下文,包括如何使用 #-提及來引用檔案、資料夾和符號,如何引用 Web 內容,或者如何使用自定義指令來引導 AI 的響應。
隱式上下文
VS Code 會根據你當前的活動自動為聊天提示提供上下文。以下資訊會隱式地包含在聊天上下文中:
如果你正在使用代理模式,代理工具會自動判斷是否需要將活動檔案新增到聊天上下文中。
#-提及
在聊天中,你可以透過輸入 #
後跟你想提及的上下文專案來顯式引用上下文。這使得 AI 能夠根據你引用的特定上下文提供更相關的響應。
在聊天輸入框中輸入 #
符號,可以檢視可用的上下文專案列表。
要引用特定的工作區檔案、資料夾或程式碼符號,請輸入 #
後跟檔名、資料夾名或符號名。瞭解更多關於在聊天中引用檔案和資料夾的資訊。
或者,從可用的預定義上下文專案列表中選擇,例如使用 #changes
來獲取已更改檔案的差異,或使用 #codebase
對你的工作區執行程式碼庫搜尋。
請確保啟用 github.copilot.chat.codesearch.enabled (預覽版)設定以獲得最佳結果。
在速查表的聊天變數部分檢視支援的上下文專案的完整列表。
提示示例
以下示例展示瞭如何在聊天提示中使用 #-提及:
引用你待處理的原始碼控制變更
“總結 #changes”
“根據 #changes 生成釋出說明”
理解程式碼庫
“解釋 #codebase 中的身份驗證是如何工作的”
“資料庫連線字串在哪裡配置? #codebase”
“如何構建這個 #codebase?”
“#getUser 在哪裡被使用了? #usages”
生成與你的程式碼庫風格一致的程式碼
“建立一個關於頁面並將其包含在導航欄中 #codebase”
“為更新地址資訊新增一個新的 API 路由 #codebase”
“新增一個登入按鈕,並根據 #styles.css 為其設定樣式”
修復工作區中的問題
“修復 #problems 中的問題”
“修復失敗的測試 #testFailure”
獲取有關擴充套件的資訊
“這個工作區排名前列的 #extensions 是什麼?”
引用來自 Web 的內容
“在 React 18 中如何使用 'useState' 鉤子? #fetch https://18.react.dev/reference/react/useState#usage”
“構建一個 API 端點來獲取地址資訊,使用來自 #githubRepo contoso/api-templates 的模板”
將檔案新增為上下文
要讓 AI 自動在你的工作區中查詢相關檔案和符號,你可以使用 #codebase
。要提供特定的檔案、資料夾或符號作為上下文,請使用以下方法將它們新增到聊天中:
-
在你的聊天訊息中透過輸入
#
後跟檔案、資料夾或符號的名稱來 #-提及它。要引用一個符號,請確保首先在編輯器中開啟包含該符號的檔案。 -
從資源管理器檢視、搜尋檢視或編輯器標籤頁將檔案或資料夾拖放到聊天檢視中,以將它們新增為上下文。
-
使用聊天檢視中的“新增上下文”按鈕,然後選擇“檔案和資料夾”或“符號”。
如果可能,附加檔案時將包含其完整內容。如果檔案太大無法容納到上下文視窗中,則會包含檔案的概要,其中包含函式及其描述,但不包含實現。如果概要也太大,則該檔案將不會成為提示的一部分。
執行程式碼庫搜尋
你可以讓 VS Code 自動從你的程式碼庫中查詢正確的檔案,而無需手動新增單個檔案。當你不確定哪些檔案與你的問題相關時,這會很有用。
在你的提示中新增 #codebase
,或選擇“新增上下文” > “工具” > “codebase”,為你的工作區啟用程式碼搜尋。
以下提示示例展示瞭如何使用程式碼庫搜尋:
“解釋 #codebase 中的身份驗證是如何工作的”
“資料庫連線字串在哪裡配置? #codebase”
“為更新地址新增一個新的 API 路由 #codebase”
請確保啟用 github.copilot.chat.codesearch.enabled (預覽版)設定以獲得最佳結果。
引用 Web 內容
你可以在聊天提示中引用來自 Web 的內容,例如獲取最新的 API 參考或程式碼示例。
-
#fetch
:使用此工具從特定網頁檢索內容,例如某個框架的特定版本文件頁面。要使用此工具,請輸入#fetch
後跟你想要引用的頁面的 URL。“VS Code 1.100 的亮點是什麼 #fetch https://vscode.com.tw/updates/v1_100”
“將 asp.net 應用更新到 .net 9 #fetch https://learn.microsoft.com/en-us/aspnet/core/migration/80-90”
-
#githubRepo
:使用此工具在 GitHub 倉庫內執行程式碼搜尋,例如引用其他專案的程式碼模式或示例。輸入#githubRepo
後跟倉庫名稱(例如,microsoft/vscode-docs
)。“next.js 中的路由是如何工作的 #githubRepo vercel/next.js”
“執行程式碼審查,以驗證其是否與 #githubRepo microsoft/typescript 一致”
“為我的應用新增單元測試。使用與 #githubRepo rust-lang/rust 相同的測試設定和結構”
引用工具
VS Code 中的聊天有幾個內建工具,你還可以透過MCP 伺服器或擴充套件來進一步擴充套件它。例如,#fetch
工具是一個內建工具,允許你從網頁獲取內容。你還可以將工具分組到工具集中,然後在聊天提示中引用它們。
要在聊天提示中直接引用工具或工具集,請輸入 #
後跟工具(集)名稱和可選的工具引數。以下提示示例展示瞭如何使用工具:
-
使用 GitHub MCP 伺服器工具(在你的
mcp.json
中配置為github-mcp
)“我有哪些未解決的 issue #github-mcp”
“為 contoso/tailwindtraders 中的 issue #123 實現一個修復 #github-mcp”
“microsoft/vscode-docs 中的 PR 8407 是關於什麼的? #github-mcp”
-
使用
#postgres
MCP 伺服器查詢 PostgreSQL 資料庫“為從 #postgres 獲取天氣資料生成一個 API 端點和資料訪問層”
“從 #postgres 獲取的公司名稱最大長度是多少”
@-提及
聊天參與者是專門的助手,使你能夠在聊天中提出特定領域的問題。可以把聊天參與者想象成一個領域專家,你將聊天請求交給他,他會處理剩下的事情。
聊天參與者與作為代理流程一部分被呼叫以貢獻和執行特定任務的工具不同。
你可以透過 @-提及來呼叫聊天參與者:輸入 @
後跟參與者名稱。VS Code 有幾個內建的聊天參與者,如 @vscode
、@terminal
或 @workspace
。它們經過最佳化,可以回答各自領域的問題。
以下示例展示瞭如何在聊天提示中使用 @-提及:
“@vscode 如何啟用自動換行”
“@terminal 當前目錄中最大的 5 個檔案是什麼”
在聊天輸入框中輸入 @
,可以檢視可用的聊天參與者列表。
擴充套件也可以貢獻自己的聊天參與者。
從 VS Code 簡易瀏覽器新增元素(實驗性)
VS Code 有一個內建的簡易瀏覽器,你可以用它來檢視和與本地託管的 Web 應用程式互動,例如對你的 Web 應用程式進行快速測試和除錯。
你可以將簡易瀏覽器視窗中的元素作為上下文新增到你的聊天提示中。要做到這一點:
-
確保透過 chat.sendElementsToChat.enabled 設定啟用從簡易瀏覽器選擇元素。
-
在本地執行你的 Web 應用程式。
-
透過從命令面板執行“簡易瀏覽器:顯示”命令來開啟簡易瀏覽器檢視。
-
選擇“開始”按鈕,開始從當前頁面選擇元素。
-
將滑鼠懸停在網頁元素上,然後單擊以將它們新增到聊天提示中。
請注意,所選元素會作為上下文新增到當前聊天提示中。
你可以配置上下文中包含哪些資訊:
- 附加 CSS - 透過 chat.sendElementsToChat.attachCSS 設定啟用。
- 附加影像 - 透過 chat.sendElementsToChat.attachImages 設定啟用。
此功能在 Live Preview 擴充套件(預釋出版)中也可用。
聊天曆史
VS Code 中的聊天被設計為多輪對話。在一個聊天會話中,VS Code 會使用對話的歷史作為你當前提示的上下文。這意味著你可以提出後續問題或澄清你之前的問題,而無需重複上下文。
要開始一個新的聊天會話並丟棄當前上下文,請在聊天檢視中選擇“新建聊天”(+
) 按鈕(⌘N (Windows, Linux Ctrl+N))。如果你想切換到不同的話題並避免之前的上下文和歷史記錄,這會很有用。
瞭解更多關於聊天曆史和上下文管理的資訊。
自定義指令
透過指令檔案,你可以為 AI 提供通用指南和規則,以生成符合你的編碼風格和偏好的響應。指令檔案是 Markdown 檔案,你可以在你的工作區或當前配置檔案中建立。
透過使用指令檔案,你可以避免在聊天提示中重複新增通用指令,而是讓 AI 自動將這些指令應用於你的聊天互動。
瞭解更多關於使用指令檔案的資訊。
工作區索引
VS Code 使用索引來快速準確地在你的程式碼庫中搜索相關的程式碼片段。這個索引可以由 GitHub 維護,也可以儲存在你的本地機器上。
可用的工作區索引選項如下:
- 遠端索引:如果你的程式碼託管在 GitHub 倉庫中,你可以構建一個遠端索引來快速搜尋你的程式碼庫,即使對於大型程式碼庫也是如此。
- 本地索引:使用儲存在你本地機器上的高階語義索引,為你的程式碼庫提供快速準確的搜尋結果。
- 基本索引:如果本地索引不可用,你可以使用更簡單的演算法,這些演算法經過最佳化,可以在本地處理較大的程式碼庫。
瞭解更多關於工作區索引的資訊。
相關資源
- 瞭解代理模式中的工具。
- 使用指令檔案自定義 AI。
- 瞭解工作區索引。
- 開始使用VS Code 中的聊天。