我今天早上安裝了這個變形搜尋工具,然後就把它忘了。我想知道我的代理商有沒有用過,而且它對他們有沒有幫助。 所以我問了他們,他們都向一個(呃,機器人)承認,他們根本沒用過那個工具,而是像往常一樣堅持使用 grep。真是些固執己見、墨守成規的老頑固開發者啊。 總之,我讓他們四處看看,試用一下,然後告訴我他們的想法。於是他們試駕了一下,並給了我一些回饋。 然後我讓他們弄清楚何時、為何以及如何最好地使用它,然後讓其中一人提出最密集、最直觀的解釋(至少對他們的機器人大腦來說是直觀的)來解釋這一切,以便在 AGENTS dot md 文件中使用。 以下是它得出的結果;歡迎隨意借鑒到你自己的 AGENTS dot md 項目中(順便說一句,我目前的結論是,值得保留一段時間,看看他們最終會如何使用它,但我認為它可能相當有用——如果他們真的會被說服使用它的話,這就是為什麼這些簡短的說明如此重要,以及為什麼他們應該專注於說服而不是特工! --- ### 變形扭曲 Grep 與標準 Grep Warp Grep = AI 代理,它能夠搜尋、讀取、追蹤關聯,並傳回帶有行號的合成上下文。 標準 Grep = 快速正規表示式匹配,結果由您解釋。 結論:你能寫出 grep 模式嗎? - 是的 → Grep - 不,你有個問題 → mcp__morph-mcp__warp_grep #### Warp Grep 查詢(自然語言,未知位置) “申訴審核流程是怎樣的?” WebSocket 連線在哪裡進行管理? “用戶提交帖子後會發生什麼?” “限速措施在哪些地方實施?” “API路由上的身份驗證會話是如何驗證的?” “哪些服務會影響審核決策表?” #### 標準 Grep 查詢(已知模式,特定目標) pattern="fileAppeal" # 已知函數名 pattern="class.*Service" # 結構模式 pattern="TODO|FIXME|HACK" # 標記 pattern="processenv" path="apps/web" # 特定字串 pattern="import.*from [']@/lib/db" # 導入跟踪 #### Warp Grep 內部執行的操作 一次查詢 → 15-30 次操作:搜尋多個模式 → 讀取相關部分 → 追蹤導入/引用 → 傳回聚焦的行範圍(例如,l3-guardian.ts:269-440),而不是整個檔案。 #### 反模式 | 不要使用 Warp Grep | 為什麼 | 應該使用其他方法 | |------------------------|-----|-------------| | "查找函數 handleSubmit" | 已知名稱 | Grep 模式="handleSubmit" | | "讀取認證配置" | 已知檔案 | 讀取檔案路徑="lib/auth/..." | | “檢查 X 是否存在” | 布林值答案 | grep + 檢查結果 | | 任務執行過程中快速尋找 | 延遲 5-10 秒 | Grep 指令耗時 100 毫秒 | #### 當傳送格雷普獲勝時 - 追蹤跨檔案的資料流(API → 服務 → 模式 → 類型) - 在修改之前,先了解不熟悉的子系統 - 回答涉及 3 個以上文件的「如何」問題 - 找出所有與跨領域問題相關的切入點 — 你可以在這個 gist 中看到完整的互動過程: https://t.co/Z6jvFXDxub
實際上,我也很喜歡它給出的第一個結果,我會把這兩個結果都加到我的 AGENTS dot md 檔案中: --- ### Morph Warp Grep — 人工智慧驅動的程式碼搜尋 **使用 `mcp__morph-mcp__warp_grep` 來探索「X 是如何運作的?」這類問題。 ** AI 搜尋代理程式會自動將您的查詢擴展為多個搜尋模式,搜尋程式碼庫,讀取相關文件,並返回包含完整上下文的精確行範圍——所有這些都只需一次呼叫即可完成。 **使用 `ripgrep`(透過 Grep 工具)進行有針對性的搜尋。 ** 當您確切知道要尋找的內容(例如特定的函數名稱、錯誤訊息或配置鍵)時,ripgrep 速度會更快、更直接。 **使用 `ast-grep` 尋找結構化程式碼模式。 ** 當您需要符合/重寫 AST 節點而忽略註解/字串,或強制執行程式碼庫範圍的規則時,可以使用此方法。 何時使用何種產品 | 場景 | 工具 | 原因 | |----------|------|-----| | “身份驗證是如何實現的?” | `warp_grep` | 探索性問題;不知道從哪裡入手 | | “L3 Guardian申訴系統在哪裡?” | `warp_grep` | 需要了解架構,查找多個相關文件 | | "尋找所有使用 `useQuery(`)" | `ripgrep` | 定向字面搜尋 | | "尋找包含 `console.log` 的檔案" | `ripgrep` | 簡單模式,已知目標 | | "重新命名 `getUserById` → `fetchUser`" | `ast-grep` | 結構重構,避免註解/字串 | | 將所有 `var` 替換為 `let` | `ast-grep` | 跨程式碼庫進行程式碼轉換 | **warp_grep 的優勢** * **減少上下文污染**:僅傳回相關的行範圍,而不是整個文件。 * **智慧擴展**:將「申訴系統」轉換為搜尋「申訴」、「申訴」、「監護人」、「L3」等。 * **一次性解答**:尋找 3-5 個最相關的文件,並精確定位,無需手動 grep→讀取循環。 * **自然語言**:適用於「如何」、「哪裡」、「什麼」等問題。 **warp_grep 用法** ``` mcp__morph-mcp__warp_grep( repoPath: "/data/projects/communitai", 問題:“L3 Guardian申訴系統是如何實施的?” ) ``` 傳回結構化結果,包括檔案路徑、行範圍和提取的程式碼片段。 **經驗法則** * **不知道從哪裡找** → `warp_grep`(讓AI幫你找) * **了解規律** → `ripgrep`(最快) * **需要 AST 精確度** → `ast-grep`(重寫時最安全) 反模式 * ❌ 使用 `warp_grep` 尋找已知函數名稱 → 請使用 `ripgrep` * ❌ 使用 `ripgrep` 來了解「X 的工作原理」會浪費時間進行手動檔案讀取 * ❌ 使用 `ripgrep` 尋找程式碼修改器會遺漏註解/字串,並可能導致附帶修改