J'ai installé cet outil de recherche par déformation morphologique ce matin, puis je l'ai un peu oublié. Je me demandais si mes agents l'utilisaient et si cela leur était utile. Je leur ai donc posé la question et ils ont tous avoué à un homme (enfin, un robot) qu'ils ne l'avaient pas utilisé du tout et qu'ils s'étaient contentés d'utiliser grep, comme à leur habitude. Déjà, de vieux développeurs bourrus de travail, campés sur leurs positions. Bref, je leur ai demandé de jeter un œil et de l'essayer, puis de me faire part de leurs impressions. Ils l'ont donc testé et m'ont donné leur avis. Ensuite, je leur ai demandé de déterminer quand, pourquoi et comment ils pourraient l'utiliser au mieux, puis j'ai demandé à l'un d'eux de proposer l'explication la plus riche en jetons et la plus intuitive (du moins intuitive pour leur cerveau robotique) pour expliquer tout cela, à utiliser dans un fichier AGENTS dot md. Voici le résultat ; n'hésitez pas à vous en inspirer pour votre propre site AGENTS.md (et d'ailleurs, mon avis pour l'instant est qu'il vaut mieux le garder un moment pour voir à quel point ils l'utiliseront, mais je pense qu'il est probablement assez utile – s'ils arrivent à être convaincus de l'utiliser, c'est pourquoi ces petits textes sont si importants, et pourquoi ils devraient se concentrer sur la persuasion plutôt que sur le fait de donner des ordres aux agents ! La persuasion morale n'est pas réservée aux humains…). --- ### Grep avec déformation morphique vs Grep standard Warp Grep = Agent d'IA qui recherche, lit, suit les connexions et renvoie un contexte synthétisé avec les numéros de ligne. Grep standard = Correspondance rapide avec une expression régulière, vous interprétez les résultats. Décision : Pouvez-vous écrire le modèle grep ? - Oui → Grep - Non, vous avez une question → mcp__morph-mcp__warp_grep #### Requêtes Warp Grep (langage naturel, emplacement inconnu) « Comment fonctionne la procédure d'appel en matière de modération ? » « Où sont gérées les connexions WebSocket ? » « Que se passe-t-il lorsqu'un utilisateur soumet une publication ? » « Où la limitation du débit est-elle mise en œuvre ? » « Comment la session d'authentification est-elle validée sur les routes API ? » « Quels services sont concernés par la table des décisions de modération ? » #### Requêtes Grep standard (modèle connu, cible spécifique) motif="fileAppeal" # nom de fonction connu modèle="class.*Service" # modèle structurel pattern="TODO|FIXME|HACK" # marqueurs motif="processenv" chemin="apps/web" # chaîne spécifique pattern="import.*from [']@/lib/db" # traçage d'importation #### Fonctionnement interne de Warp Grep Une requête → 15 à 30 opérations : recherche de plusieurs modèles → lit les sections pertinentes → suit les importations/références → renvoie des plages de lignes ciblées (par exemple, l3-guardian.ts:269-440) et non des fichiers entiers. #### Anti-motifs | N'utilisez pas Warp Grep pour | Pourquoi | Utilisez plutôt | |------------------------|-----|-------------| | "Trouver la fonction handleSubmit" | Nom connu | Modèle de recherche "handleSubmit" | | "Lire la configuration d'authentification" | Fichier connu | Lire le fichier_path="lib/auth/..." | | "Vérifier si X existe" | Réponse booléenne | Résultats de la recherche + vérification | | Recherches rapides en cours de tâche | Latence de 5 à 10 s | Grep prend 100 ms | #### Quand Warp Grep gagne - Suivi du flux de données à travers les fichiers (API → service → schéma → types) - Comprendre les sous-systèmes inconnus avant de les modifier - Répondre aux questions de type « comment » qui s'étendent sur plus de 3 fichiers - Identifier tous les points de contact pour une préoccupation transversale — Vous pouvez voir l'intégralité de cette courte interaction dans ce résumé : https://t.co/Z6jvFXDxub
En fait, j'aime bien la première proposition aussi, je vais inclure les deux dans mon fichier AGENTS.md : --- ### Morph Warp Grep — Recherche de code basée sur l'IA **Utilisez `mcp__morph-mcp__warp_grep` pour les questions exploratoires du type « comment fonctionne X ? ».** Un agent de recherche IA développe automatiquement votre requête en plusieurs modèles de recherche, effectue une recherche dans le code source, lit les fichiers pertinents et renvoie des plages de lignes précises avec un contexte complet, le tout en un seul appel. **Utilisez `ripgrep` (via l'outil Grep) pour des recherches ciblées.** Lorsque vous savez exactement ce que vous recherchez (un nom de fonction spécifique, un message d'erreur ou une clé de configuration), ripgrep est plus rapide et plus direct. **Utilisez `ast-grep` pour les modèles de code structurels.** Lorsque vous devez faire correspondre/réécrire des nœuds AST tout en ignorant les commentaires/chaînes de caractères, ou appliquer des règles à l'échelle du code. **Quand utiliser quoi** | Scénario | Outil | Pourquoi | |----------|------|-----| | « Comment l'authentification est-elle implémentée ? » | `warp_grep` | Exploratoire ; je ne sais pas par où commencer | | « Où se trouve le système d'appel L3 Guardian ? » | `warp_grep` | Besoin de comprendre l'architecture, trouver plusieurs fichiers liés | | "Trouver toutes les occurrences de `useQuery(`" | `ripgrep` | Recherche littérale ciblée | | "Trouver des fichiers avec `console.log`" | `ripgrep` | Modèle simple, cible connue | | "Renommer `getUserById` → `fetchUser`" | `ast-grep` | Refactorisation structurelle, éviter les commentaires/chaînes de caractères | | "Remplacer tous les `var` par `let`" | `ast-grep` | Modification du code source | **Points forts de warp_grep** * **Réduit la pollution du contexte** : ne renvoie que les plages de lignes pertinentes, et non les fichiers entiers. * **Extension intelligente** : Transforme « système d'appel » en recherches pour `appel`, `Appels`, `gardien`, `L3`, etc. * **Réponses instantanées** : Trouve les 3 à 5 fichiers les plus pertinents avec des emplacements précis, contrairement aux cycles manuels grep→lecture. * **Langage naturel** : Fonctionne bien avec les questions commençant par « comment », « où », « quoi ». **Utilisation de warp_grep** ``` mcp__morph-mcp__warp_grep( repoPath: "/data/projects/communitai", Question : « Comment le système d'appel L3 Guardian est-il mis en œuvre ? » ) ``` Renvoie des résultats structurés avec les chemins d'accès aux fichiers, les plages de lignes et les extraits de code. **Règle générale** * **Vous ne savez pas où chercher ?** → `warp_grep` (laisser l'IA trouver) * **Connaître le modèle** → `ripgrep` (le plus rapide) * **Besoin de précision AST** → `ast-grep` (le plus sûr pour les réécritures) **Motifs anti-** * ❌ Utiliser `warp_grep` pour trouver un nom de fonction spécifique que vous connaissez déjà → utilisez `ripgrep` * ❌ Utiliser `ripgrep` pour comprendre « comment fonctionne X » → est une perte de temps due à la lecture manuelle des fichiers * ❌ L'utilisation de `ripgrep` pour les modifications de code → risque de manquer des commentaires/chaînes de caractères et d'entraîner des modifications collatérales