// éditeur
Windsurf
Là où vous et Cascade travaillez, pour de vrai.
Pour les utilisateurs de Windsurf
Windsurf est l'éditeur et Cascade est l'agent. Dans un monorepo, l'agent a quand même besoin d'une carte des fichiers qui comptent. Maguyva indexe votre dépôt et le restitue via MCP (sémantique, AST, graphe et texte), pour que « où se passe l'authentification » renvoie le vrai flux d'auth, pas sept stubs de test.
Palier Free : 3 dépôts, Jusqu'à 50 000 lignes de dépôt indexées, sans carte.
Windsurf modifie ce que vous désignez. Maguyva dit à Cascade quel fichier désigner.Quatre pièces. Chacune a un rôle.
// éditeur
Là où vous et Cascade travaillez, pour de vrai.
// contexte manuel
Le contexte manuel gagne, jusqu'à ce que le dépôt devienne gros.
// dépôt
Des faits sur le dépôt, automatiquement, via MCP.
// qui paie
Les agents ne paient pas de siège. Voir les tarifs
L'IDE n'est pas le problème. Cascade, la complétion par onglet, les modifications multi-fichiers et .windsurfrules sont excellents, et vous les utilisez déjà pour :
.windsurfrules pour les conventions du dépôt et les garde-fous de style.@ pour ramener un fichier précis dans le contexte.Continuez comme ça. Rien de tout cela ne disparaît.
Mais dans un vrai monorepo (TypeScript avec dépendances de workspace, services Python, paquets mélangés), le contexte de l'agent casse dès que le fichier pertinent n'est pas déjà sur le radar de Cascade.
Quatre rustines manuelles, chacune avec son mode d'échec. À gauche : ce que vous faites aujourd'hui. À droite : où ça casse.
// the fix
Vous mentionnez avec @ les trois fichiers qui vous semblent importants. Cascade y modifie proprement.
// where it breaks
Ça marche quand vous savez déjà quels fichiers sont concernés. Tout l'intérêt des outils de contexte est de faire remonter les fichiers que vous ne saviez pas devoir mentionner.
// the fix
Vous collez 200 lignes d'un autre paquet dans Cascade pour lui donner assez de contexte.
// where it breaks
L'extrait collé à 9h ne reflète pas le rebase que votre collègue a poussé à 11h. Cascade modifie contre une version fantôme du paquet.
// the fix
Vous écrivez un fichier .windsurfrules ou un markdown d'architecture. C'est juste, aujourd'hui.
// where it breaks
Tout ce que vous écrivez à la main dérive. Le code fait foi. Un doc expliquant la couche de queue est juste pendant une semaine, puis faux pour toujours.
// the fix
Vous ajoutez .windsurfrules pour le nommage, le lint et les commandes de build. Parfait pour le comportement.
// where it breaks
.windsurfrules est le bon endroit pour « toujours lancer pnpm tsc -b avant un commit ». Ce n'est pas un index interrogeable de chaque symbole, fichier et point d'appel de votre monorepo.
Pas un remplaçant de Windsurf. La couche de contexte-dépôt qui se branche sur le support MCP de Cascade.
.windsurfrules continue son travail. Les mentions @ continuent le leur. Maguyva comble ce qu'ils ne couvrent pas.Cascade modifie le fichier que vous désignez.
Maguyva dit à l'agent quel fichier désigner.
Multi-paquets, multi-langages. Ancré dans le vrai graphe d'appels, pas dans le grep de Cascade.
// workflow 01
cascade> où se passe l'authentification dans ce monorepo ? graph::query("authentication flow") packages/web/src/auth/session.ts:42 middleware packages/api/src/auth/jwt.ts:88 vérification du token packages/shared/src/auth/types.ts:12 AuthContext packages/admin/src/auth/admin-only.ts:31 porte RBAC → 4 points d'entrée dans 4 paquets, classés par densité de points d'appel. [exit 0]
Vous n'avez mentionné aucun fichier. Vous n'avez collé aucun extrait. Cascade a les quatre fichiers qui comptent, dans le bon ordre, et peut faire une modification ancrée dans le réel.
// workflow 02
cascade> comment normalizePhoneNumber gère-t-il le E.164 ? semantic::query("normalize phone E.164") packages/shared/util/phone.ts:88 normalizePhoneNumber() ← impl réelle packages/api/test/phone.spec.ts:14 jest.mock(...) ← stub [exit 0]
Les noms mentent. Les mocks masquent le vrai code. Maguyva classe l'implémentation réelle avant le mock de test, dans tous les paquets.
// workflow 03
cascade> qui appelle QueueDispatcher.publish dans le monorepo ? graph::callers(QueueDispatcher.publish) 3 dans packages/billing/* 1 dans packages/audit/* 1 dans packages/notifications/* 1 dans services/python-worker/* ← inter-langages via stub gRPC [exit 0]
Multi-paquets, et multi-langages sur un dépôt polyglotte, les points d'appel remontent directement. Le diff est ancré dans les vrais importeurs, pas dans le grep de Cascade.
Trois étapes. Palier Free : 3 dépôts, Jusqu'à 50 000 lignes de dépôt indexées, sans carte.
// step 01
Choisissez le monorepo où le manque de contexte vous a fait le plus mal.
// step 02
// ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"maguyva": {
"serverUrl": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer <your-key>"
}
}
}
}// step 03
Ne commencez pas par toute votre entreprise. Commencez par un dépôt et une question vérifiable, comme « qui appelle formatInvoice dans les paquets ? »