Instalé esta herramienta de búsqueda de morph warp esta mañana y casi me olvidé de ella. Me preguntaba si mis agentes la habían estado usando y si les estaba ayudando de alguna manera. Así que les pregunté y todos admitieron ante un hombre (o un robot) que no lo habían usado para nada y que, en cambio, se habían limitado a usar grep, como es su costumbre. Ya eran como desarrolladores veteranos y empedernidos, aferrados a sus costumbres. En fin, les pedí que lo probaran y me contaran qué les pareció. Lo probaron y me dieron su opinión. Luego les pedí que averiguaran cuándo, por qué y cómo podrían usarlo mejor, y luego le pedí a uno de ellos que presentara la explicación más intuitiva y con mayor densidad de tokens (al menos intuitiva para su cerebro robótico) para explicar todo eso, para usarla en un archivo AGENTS dot md. Esto es lo que se les ocurrió; siéntanse libres de robarlo para sus propios AGENTS dot md (y por cierto, mi veredicto por ahora es que vale la pena conservarlo por un tiempo para ver cuánto terminan usándolo, pero creo que probablemente sea bastante útil, si realmente pueden ser convencidos de usarlo, que es por eso que estas pequeñas propagandas son tan críticas, y por qué deberían enfocarse en convencer en lugar de ordenar a los agentes. La persuasión moral no es solo para humanos…): --- ### Morph Warp Grep vs. Grep estándar Warp Grep = Agente de IA que busca, lee, sigue conexiones y devuelve un contexto sintetizado con números de línea. Grep estándar = coincidencia rápida de expresiones regulares, usted interpreta los resultados. Decisión: ¿Puedes escribir el patrón grep? - Sí → Grep - No, tienes una pregunta → mcp__morph-mcp__warp_grep #### Consultas Warp Grep (lenguaje natural, ubicación desconocida) ¿Cómo funciona el flujo de apelaciones de moderación? "¿Dónde se gestionan las conexiones websocket?" "¿Qué sucede cuando un usuario envía una publicación?" "¿Dónde se implementa la limitación de velocidad?" "¿Cómo se valida la sesión de autenticación en las rutas API?" "¿Qué servicios tocan la mesa de decisiones de moderación?" #### Consultas Grep estándar (patrón conocido, objetivo específico) patrón="fileAppeal" # nombre de función conocido patrón="clase.*Servicio" # patrón estructural patrón="TODO|FIXME|HACK" # marcadores patrón="processenv" ruta="apps/web" # cadena específica patrón="import.*from [']@/lib/db" # seguimiento de importación #### Qué hace Warp Grep internamente Una consulta → 15-30 operaciones: busca múltiples patrones → lee secciones relevantes → sigue importaciones/referencias → devuelve rangos de líneas enfocados (por ejemplo, l3-guardian.ts:269-440), no archivos completos. #### Antipatrones | No utilice Warp Grep para | Por qué | Úselo en su lugar | |------------------------|-----|-------------| | "Buscar función handleSubmit" | Nombre conocido | Grep pattern="handleSubmit" | | "Leer la configuración de autenticación" | Archivo conocido | Leer file_path="lib/auth/..." | | "Comprobar si X existe" | Respuesta booleana | Grep + comprobar resultados | | Búsquedas rápidas a mitad de tarea | Latencia de 5 a 10 s | Grep es de 100 ms | #### Cuando Warp Grep gana - Seguimiento del flujo de datos a través de archivos (API → servicio → esquema → tipos) - Comprender subsistemas desconocidos antes de modificarlos - Responder preguntas de "cómo" que abarcan más de 3 archivos - Encontrar todos los puntos de contacto para una preocupación transversal — Puedes ver la interacción corta completa en este gist: https://t.co/Z6jvFXDxub
En realidad, también me gusta el primero que se me ocurrió, voy a incluir ambos en mi AGENTS dot md: --- ### Morph Warp Grep: búsqueda de código impulsada por IA **Utilice `mcp__morph-mcp__warp_grep` para preguntas exploratorias del tipo "¿cómo funciona X?".** Un agente de búsqueda de IA expande automáticamente su consulta en múltiples patrones de búsqueda, busca en el código base, lee archivos relevantes y devuelve rangos de líneas precisos con contexto completo, todo en una sola llamada. **Utilice `ripgrep` (a través de la herramienta Grep) para búsquedas específicas.** Cuando sabe exactamente lo que está buscando (un nombre de función específico, un mensaje de error o una clave de configuración), ripgrep es más rápido y más directo. **Utilice `ast-grep` para patrones de código estructural.** Cuando necesite hacer coincidir/reescribir nodos AST ignorando comentarios/cadenas, o aplicar reglas para toda la base de código. **Cuándo usar qué** | Escenario | Herramienta | Por qué | |----------|------|-----| | "¿Cómo se implementa la autenticación?" | `warp_grep` | Exploratorio; no sé por dónde empezar | | "¿Dónde está el sistema de apelaciones de L3 Guardian?" | `warp_grep` | Necesito comprender la arquitectura y encontrar varios archivos relacionados | | "Buscar todos los usos de `useQuery(`" | `ripgrep` | Búsqueda literal dirigida | | "Buscar archivos con `console.log`" | `ripgrep` | Patrón simple, objetivo conocido | | "Cambiar nombre `getUserById` → `fetchUser`" | `ast-grep` | Refactorización estructural, evitar comentarios/cadenas | | "Reemplazar todos los `var` con `let`" | `ast-grep` | Codemod en toda la base de código | **Fortalezas de warp_grep** * **Reduce la contaminación del contexto**: devuelve solo rangos de líneas relevantes, no archivos completos. * **Expansión inteligente**: Convierte el "sistema de apelaciones" en búsquedas de `apelación`, `Apelaciones`, `tutor`, `L3`, etc. * **Respuestas únicas**: encuentra los 3 a 5 archivos más relevantes con ubicaciones precisas frente a los ciclos manuales de grep→lectura. * **Lenguaje natural**: Funciona bien con preguntas de "cómo", "dónde", "qué". **Uso de warp_grep** ``` mcp__morph-mcp__warp_grep( repoPath: "/data/projects/communitai", Consulta: "¿Cómo se implementa el sistema de apelaciones de L3 Guardian?" ) ``` Devuelve resultados estructurados con rutas de archivos, rangos de líneas y fragmentos de código extraídos. **Regla general** * **No sé dónde buscar** → `warp_grep` (deja que la IA lo encuentre) * **Conoce el patrón** → `ripgrep` (más rápido) * **Necesita precisión AST** → `ast-grep` (más seguro para reescrituras) **Antipatrones** * ❌ Usar `warp_grep` para encontrar un nombre de función específico que ya conoce → usar `ripgrep` * ❌ Usar `ripgrep` para entender "cómo funciona X" → desperdicia tiempo con lecturas manuales de archivos * ❌ Usar `ripgrep` para mods de código → pierde comentarios/cadenas, corre el riesgo de realizar ediciones colaterales