// editor
Windsurf
Wo du und Cascade tatsächlich arbeiten.
Für Windsurf-Nutzer
Windsurf ist der Editor, Cascade der Agent. In einem Monorepo braucht der Agent trotzdem eine Karte, welche Datei relevant ist. Maguyva indexiert deine Codebase und liefert sie über MCP zurück (semantisch, AST, Graph und Text), damit „wo passiert Auth“ den echten Auth-Flow liefert, nicht sieben Test-Stubs.
Free-Stufe: 3 Repositories, Bis zu 50K indexierte Repo-Zeilen, keine Karte.
Windsurf bearbeitet, worauf du zeigst. Maguyva sagt Cascade, worauf es zeigen soll.Vier Bausteine. Jeder hat eine Aufgabe.
// editor
Wo du und Cascade tatsächlich arbeiten.
// manueller kontext
Manueller Kontext funktioniert, bis das Repo groß wird.
// codebase
Automatische Codebase-Fakten über MCP.
// wer zahlt
Agenten zahlen keine Seats. Preise ansehen
Die IDE ist nicht das Problem. Cascade, Tab-Vervollständigung, Multi-Datei-Edits und .windsurfrules sind exzellent, und du nutzt sie bereits für:
.windsurfrules für Repo-Konventionen und Style-Guardrails.@-Erwähnungen, um eine bestimmte Datei in den Kontext zu holen.Mach weiter so. Nichts davon verschwindet.
Aber in einem echten Monorepo (TypeScript mit Workspace-Deps, Python-Services, gemischte Packages) bricht der Agent-Kontext in dem Moment zusammen, in dem die relevante Datei noch nicht auf dem Radar von Cascade ist.
Vier manuelle Fixes, gepaart mit ihrem Fehlermodus. Links = was du heute tust. Rechts = wo es bricht.
// the fix
Du erwähnst mit @ die drei Dateien, die du für relevant hältst. Cascade editiert sauber innerhalb davon.
// where it breaks
Es funktioniert, wenn du schon weißt, welche Dateien betroffen sind. Der ganze Sinn von Kontext-Tools ist, die Dateien zu zeigen, die du nicht wusstest zu erwähnen.
// the fix
Du fügst 200 Zeilen aus einem anderen Package in Cascade ein, um ihm genug Kontext zu geben.
// where it breaks
Das Snippet, das du um 9 Uhr eingefügt hast, spiegelt nicht das Rebase wider, das dein Teamkollege um 11 Uhr gelandet hat. Cascade editiert gegen eine Phantom-Version des Packages.
// the fix
Du schreibst eine .windsurfrules-Datei oder ein Architektur-Markdown. Heute stimmt es noch.
// where it breaks
Alles, was du von Hand schreibst, veraltet. Der Code ist die Quelle der Wahrheit. Ein Doc, das die Queue-Schicht erklärt, stimmt eine Woche lang, dann für immer nicht mehr.
// the fix
Du fügst .windsurfrules für Namenskonventionen, Lint und Build-Befehle hinzu. Großartig für Verhalten.
// where it breaks
.windsurfrules ist der richtige Ort für „führe immer pnpm tsc -b vor Commits aus“. Es ist kein abfragbarer Index jedes Symbols, jeder Datei und jeder Aufrufstelle in deinem Monorepo.
Kein Windsurf-Ersatz. Die Repo-Kontext-Schicht, die an den MCP-Support von Cascade andockt.
.windsurfrules erledigt weiter seine Aufgabe. @-Erwähnungen erledigen weiter ihre. Maguyva füllt die Lücke, die sie nicht abdecken.Cascade bearbeitet die Datei, auf die du zeigst.
Maguyva sagt dem Agenten, worauf er zeigen soll.
Paket- und sprachübergreifend. Verankert im echten Call-Graph, nicht im Grep von Cascade.
// workflow 01
cascade> wo passiert Authentifizierung in diesem Monorepo? graph::query("authentication flow") packages/web/src/auth/session.ts:42 middleware packages/api/src/auth/jwt.ts:88 token verify packages/shared/src/auth/types.ts:12 AuthContext packages/admin/src/auth/admin-only.ts:31 rbac gate → 4 Einstiegspunkte über 4 Packages, sortiert nach Aufrufstellen-Dichte. [exit 0]
Du hast keine Datei erwähnt. Du hast kein Snippet eingefügt. Cascade hat die vier relevanten Dateien, in der richtigen Reihenfolge, und kann einen verankerten Edit machen.
// workflow 02
cascade> wie behandelt normalizePhoneNumber E.164? semantic::query("normalize phone E.164") packages/shared/util/phone.ts:88 normalizePhoneNumber() ← echte impl packages/api/test/phone.spec.ts:14 jest.mock(...) ← stub [exit 0]
Namen lügen. Mocks überschatten echten Code. Maguyva reiht die echte Implementierung über dem Test-Mock ein, über jedes Package hinweg.
// workflow 03
cascade> was ruft QueueDispatcher.publish im gesamten Monorepo auf? graph::callers(QueueDispatcher.publish) 3 in packages/billing/* 1 in packages/audit/* 1 in packages/notifications/* 1 in services/python-worker/* ← sprachübergreifend über gRPC-Stub [exit 0]
Paketübergreifend, und bei einem polyglotten Repo auch sprachübergreifend, tauchen Aufrufstellen inline auf. Der Diff ist an echten Importeuren verankert, nicht am Grep von Cascade.
Drei Schritte. Free-Stufe: 3 Repositories, Bis zu 50K indexierte Repo-Zeilen, keine Karte.
// step 01
Wähl das Monorepo, bei dem du den meisten Kontext-Schmerz gespürt hast.
// step 02
// ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"maguyva": {
"serverUrl": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer <your-key>"
}
}
}
}// step 03
Fang nicht mit deiner ganzen Firma an. Fang mit einem Repo und einer überprüfbaren Frage an, etwa „was ruft formatInvoice paketübergreifend auf?“