指令用途
雖然 search_graph 可以精確定位 Class 與 Method 節點,但在某些除錯場景中,我們需要尋找的是更細節的程式碼文字內容。例如:
- 尋找特定的硬編碼字串(如
"CommandTimeout")。 - 尋找某個特定的註釋或異常拋出訊息(如
"PLC connection lost")。
這些細節在圖譜中並不作為獨立的節點存在。search_code 結合了高效的文字搜索引擎(如內建的 ripgrep 或文字檢索器),能對整個專案進行快速的全文正則檢索,並將結果與圖譜中的檔案節點進行綁定,實現「文字 + 語意」的雙重定位。
運作流程
- 參數輸入:接收
query(正則或文字查詢)、path(限縮目錄)。 - 全文檢索:在背景執行高速代碼文字比對,自動避開排除清單。
- 語意關聯:將匹配到的程式碼行,與圖譜中該行所屬的 Method 或 Class 進行語意對應。
- 輸出結果:回傳匹配的代碼片段、行號及所屬的 Qualified Name。
實戰對話範例
範例:搜尋拋出 ArgumentException 的具體位置
- You:
/opsx:explore "請幫我搜尋專案中所有拋出 ArgumentException 異常的程式碼行。" - AI:
好的,為了精確定位拋出此異常的位置,我將呼叫
search_code工具進行正則檢索。CM 呼叫:
search_code(query: "throw new ArgumentException")
CM 回傳:[ { "filePath": "/src/Core/Communication/PlcConnection.cs", "lineNumber": 82, "lineContent": "throw new ArgumentException(\"BaudRate is invalid\", nameof(baudRate));", "belongsTo": "ControlSystem.Core.Communication.PlcConnection.UpdateBaudRate" } ]分析:
檢索到一處匹配:- 位於
/src/Core/Communication/PlcConnection.cs的第 82 行。 - 該行程式碼屬於
UpdateBaudRate方法內部。
這能讓您在排查執行期報錯時,直接鎖定實體方法。接下來需要為您讀取該方法的完整原始碼嗎?
- 位於