在AI使用中,我們經常需要AI或AI工具描述代碼中的某個具體部分。但如果工具能直接“看到”所指的代碼、錯誤信息甚至終端輸出,協作效率會不會大幅提升?這正是 Roo Code 的“上下文提及(Context Mentions)”功能所要實現的。
簡單來說,上下文提及是一種讓 Roo Code 獲取項目中特定信息的強大方式。通過在聊天輸入框中輸入@
符號,可以快速引用文件、文件夾、問題列表、終端輸出或 Git 提交記錄,使 Roo Code 能夠更準確、高效地完成任務。
▍ 上下文提及的基本使用
一旦在輸入框中鍵入@
,Roo Code 會自動觸發一個下拉菜單,其中會智能建議可供引用的內容,包括最近打開的文件、當前可見的文件夾、最近的 Git 提交以及一些特殊關鍵詞(如 problems
或 terminal
)。既可以繼續輸入以過濾選項,也可以用鍵盤或鼠標選擇。操作界面如下圖:
值得一提的是,即便某些目錄通常被忽略(如 node_modules
或 .git
),手動輸入其路徑仍可被引用,但下拉菜單會自動過濾這些目錄以減少干擾。
▍ 不同類型的提及及其用途
Roo Code 支持多種類型的提及,每種適用于不同場景:
- 文件提及(File Mentions)
格式:@/path/to/file.ts
功能:將文件的全部內容(包括行號)引入對話上下文中,便于直接分析與引用。
支持文本文件、PDF 和 DOCX 文件(后者會進行文本提取),但注意,過大的文件可能會被截斷,且不支持二進制文件。
- 文件夾提及(Folder Mentions)
格式:@/path/to/folder
(無需末尾斜杠)
功能:包含該文件夾內所有文件的文本內容(僅當前層級,不遞歸子目錄)。
適用于需要同時提供同一目錄下多個文件上下文的情況,但需注意上下文長度限制。
- 問題提及(Problems Mentions)
格式:@problems
功能:直接導入 VS Code 問題面板中的所有錯誤和警告信息,包括文件路徑、行號和具體描述。
非常適合快速修復代碼錯誤,無需手動復制粘貼。
- 終端提及(Terminal Mentions)
格式:@terminal
功能:捕獲最近執行的命令及其完整輸出,便于調試或分析。
注意:它僅捕獲終端緩沖區中可見的內容,且不會清除終端當前狀態。
- Git 相關提及
- Commit 提及:格式為
@a1b2c3d
(提交哈希值),提供該次提交的完整信息(提交信息、作者、日期和 diff 內容)。 - 工作區變更提及:格式為
@git-changes
,顯示未提交的變更狀態和 diff 內容。
注意:這兩個功能僅在 Git 倉庫中有效。
- Commit 提及:格式為
- URL 提及
格式:@https://example.com
功能:自動獲取網頁內容,并將其轉換為易讀的 Markdown 格式,同時過濾掉腳本、樣式和導航元素。
適用于快速引用在線文檔或文章,但復雜頁面的轉換效果可能有限。
▍ 組合使用與典型場景
上下文提及支持組合使用,進一步擴展應用場景。例如,你可以輸入:
“請幫我修復
@/src/components/Button.tsx
中的錯誤,特別是@problems
中列出的類型問題。”
Roo Code 將同時獲取文件內容與當前所有問題信息,提供更精準的解答。
▍ 重要注意事項
- 忽略文件的處理:文件與文件夾提及會繞過
.rooignore
和.gitignore
規則。只要手動輸入路徑,即使是被忽略的文件,其內容也會被包含在上下文中。 - Git 相關提及的差異:但 Git 提及(如
@git-changes
)仍遵循.gitignore
,因為它們依賴于 Git 命令本身。 - 上下文長度限制:雖然提及功能強大,但過大的文件或目錄內容仍可能受限于模型的上下文窗口,導致部分內容被截斷。
▍ 結語
Roo Code 的上下文提及功能極大簡化了開發者與 AI 助手之間的協作流程。無論是分析代碼、調試錯誤,還是理解項目變更歷史,它都能通過“看見”上下文提供更貼合實際的幫助。如果你還沒有嘗試過這一功能,不妨在下次使用 Roo Code 時輸入一個@
,體驗它帶來的高效與便捷。