Vai al contenuto

Per gli utenti di Windsurf

Windsurf modifica il file.
Maguyva vede il repo.

Windsurf è l'editor e Cascade è l'agente. In un monorepo, l'agente ha comunque bisogno di una mappa di quale file conta. Maguyva indicizza il tuo codebase e lo restituisce via MCP (semantico, AST, grafo e testo), così “dove avviene l'autenticazione” restituisce il flusso di auth reale, non sette stub di test.

Piano Free: 3 repository, Fino a 50K righe di repository indicizzate, senza carta.

Windsurf modifica quello che indichi. Maguyva dice a Cascade quale file indicare.

Cosa fa ogni livello

Quattro pezzi. Ognuno ha un compito.

// editor

Windsurf

Dove tu e Cascade lavorate davvero.

// contesto manuale

@ mentions + .windsurfrules

Il contesto manuale funziona, finché il repo non diventa grande.

// codebase

Maguyva

Fatti automatici sul codebase via MCP.

// chi paga

Workspace, non postazioni

Gli agenti non pagano postazioni. Vedi i prezzi

Windsurf è l'editor. Usalo.

L'IDE non è il problema. Cascade, il completamento a tab, le modifiche multi-file e .windsurfrules sono eccellenti, e li usi già per:

  • Suggerimenti inline e modifiche di Cascade nel file aperto.
  • Modifiche multi-file quando il cambiamento è locale.
  • .windsurfrules per le convenzioni del repo e le regole di stile.
  • Menzioni con @ per portare un file specifico nel contesto.

Continua a farlo. Niente di tutto ciò scompare.

Ma in un vero monorepo (TypeScript con dipendenze di workspace, servizi Python, pacchetti misti) il contesto dell'agente si rompe nel momento in cui il file rilevante non è già sul radar di Cascade.

Soluzioni manuali che hai già provato, e dove si rompono

Quattro soluzioni manuali abbinate alla loro modalità di fallimento. Sinistra = cosa fai oggi. Destra = dove si rompe.

// the fix

// menziona i file

Menzioni con @ i tre file che pensi contino. Cascade modifica in modo pulito al loro interno.

// where it breaks

// menzionare è indovinare

Funziona quando sai già quali file sono coinvolti. Lo scopo degli strumenti di contesto è proprio far emergere i file che non sapevi di dover menzionare.

// the fix

// incolla gli snippet

Incolli 200 righe da un altro pacchetto in Cascade per dargli contesto sufficiente.

// where it breaks

// il codice incollato invecchia

Lo snippet che hai incollato alle 9 del mattino non riflette il rebase che il tuo collega ha fatto alle 11. Cascade sta modificando contro una versione fantasma del pacchetto.

// the fix

// scrivi un documento di contesto

Scrivi un file .windsurfrules o un markdown di architettura. Oggi è corretto.

// where it breaks

// i documenti invecchiano più in fretta del codice

Tutto ciò che scrivi a mano invecchia. Il codice è la fonte di verità. Un documento che spiega il livello delle code è corretto per una settimana, poi è sbagliato per sempre.

// the fix

// mantieni i file di regole

Aggiungi .windsurfrules per nomenclatura, lint e comandi di build. Ottimo per il comportamento.

// where it breaks

// regole ≠ indice

.windsurfrules è il posto giusto per “esegui sempre pnpm tsc -b prima dei commit.” Non è un indice consultabile di ogni simbolo, file e punto di chiamata nel tuo monorepo.

Maguyva è il livello sottostante

Non è un sostituto di Windsurf. È il livello di contesto del repo che si aggancia al supporto MCP di Cascade.

  • Semantico + AST + grafo + testo cerca per significato, struttura, dipendenza o testo letterale. Ogni risultato restituisce un percorso di file e un numero di riga.
  • Tra pacchetti per impostazione predefinita punti di chiamata e importatori in tutti i pacchetti del monorepo, non solo in quello che Cascade ha aperto.
  • Consapevole del branch Maguyva vede la versione del codice che Cascade sta modificando.
  • Complementare, non competitivo .windsurfrules continua a fare il suo lavoro. Le menzioni con @ continuano a fare il loro. Maguyva colma il vuoto che loro non coprono.

Cascade modifica il file che indichi.

Maguyva dice all'agente quale file indicare.

Tre flussi di lavoro per monorepo

Tra pacchetti, tra linguaggi. Fondato sul grafo di chiamate reale, non sul grep di Cascade.

// workflow 01

Trova il flusso di autenticazione tra i pacchetti, senza menzionare nulla

cascade> dove avviene l'autenticazione in questo 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 punti di ingresso in 4 pacchetti, ordinati per densità di punti di chiamata.
[exit 0]

Non hai menzionato nessun file. Non hai incollato nessuno snippet. Cascade ha i quattro file che contano, nell'ordine corretto, e può fare una modifica fondata.

// workflow 02

Trova l'implementazione reale, non lo stub di test

cascade> come gestisce normalizePhoneNumber il formato E.164?

semantic::query("normalize phone E.164")
  packages/shared/util/phone.ts:88     normalizePhoneNumber()  ← impl reale
  packages/api/test/phone.spec.ts:14   jest.mock(...)          ← stub
[exit 0]

I nomi mentono. I mock oscurano il codice reale. Maguyva classifica l'implementazione reale sopra il mock di test, in ogni pacchetto.

// workflow 03

Controlla il raggio d'impatto prima di refactorizzare

cascade> cosa chiama QueueDispatcher.publish in tutto il monorepo?

graph::callers(QueueDispatcher.publish)
  3 in packages/billing/*
  1 in packages/audit/*
  1 in packages/notifications/*
  1 in services/python-worker/*  ← tra linguaggi via stub gRPC
[exit 0]

Tra pacchetti, e tra linguaggi quando hai un repo poliglotta, i punti di chiamata emergono inline. Il diff è fondato su importatori reali, non sul grep di Cascade.

Configurazione con Windsurf

Tre passaggi. Piano Free: 3 repository, Fino a 50K righe di repository indicizzate, senza carta.

  1. // step 01

    Indicizza un repo su maguyva.ai

    Scegli il monorepo dove hai sentito di più il problema del contesto.

  2. // step 02

    Aggiungi Maguyva come server MCP in Windsurf

    // ~/.codeium/windsurf/mcp_config.json
    {
      "mcpServers": {
        "maguyva": {
          "serverUrl": "https://maguyva.tools/mcp",
          "headers": {
            "Authorization": "Bearer <your-key>"
          }
        }
      }
    }
  3. // step 03

    Fai una domanda di cui conosci già la risposta

    Non iniziare con tutta la tua azienda. Inizia con un repo e una domanda verificabile, come “cosa chiama formatInvoice tra i pacchetti?”