# Devin Desktop modifica il file. Maguyva vede il repo.

Canonical source: https://maguyva.ai/it/for-windsurf

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Devin Desktop (l'IDE Windsurf) è l'editor e Devin Local è l'agente. In un monorepo, l'agente ha comunque bisogno di una mappa per capire quali file contano. 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.

> Devin Desktop modifica quello che indichi. Maguyva dice a Devin Local quale file indicare.

## Cosa fa ogni livello

Quattro pezzi. Ognuno ha un compito.

### Devin Desktop

Dove tu e Devin Local lavorate davvero.

### @ mentions + .devin/rules/

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

### Maguyva

Informazioni sul codebase ricavate automaticamente e disponibili via MCP.

### Workspace, non utenti

Gli agenti non comportano costi per utente. [Vedi i prezzi](https://maguyva.ai/it/pricing)

## Devin Desktop è l'editor. Usalo.

L'IDE non è il problema. Devin Local, il completamento con il tasto Tab, le modifiche multi-file e `.devin/rules/` sono eccellenti, e li usi già per:

- Suggerimenti inline e modifiche di Devin Local nel file aperto.
- Modifiche multi-file quando il cambiamento è locale.
- `.devin/rules/` 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 Devin Local.

## Soluzioni manuali che hai già provato e dove non bastano più

Quattro soluzioni manuali, ciascuna con il proprio limite. A sinistra = cosa fai oggi. A destra = dove non funziona più.

### // menziona i file

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

### // 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.

### // incolla gli snippet

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

### // 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. Devin Local sta apportando modifiche sulla base di una versione fantasma del pacchetto.

### // scrivi un documento di contesto

Scrivi un file `.devin/rules/` o un markdown di architettura. Oggi è corretto.

### // 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.

### // mantieni i file di regole

Aggiungi `.devin/rules/` per nomenclatura, lint e comandi di build. Ottimo per il comportamento.

### // regole ≠ indice

`.devin/rules/` è 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 Devin Desktop. È il livello di contesto del repo che si aggancia al supporto MCP di Devin Local.

- **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 moduli che effettuano gli import in tutti i pacchetti del monorepo, non solo in quello che Devin Local ha aperto.
- **Tiene conto del branch**: Maguyva vede la versione del codice che Devin Local sta modificando.
- **Complementare, non competitivo**: `.devin/rules/` continua a fare il suo lavoro. Le menzioni con `@` continuano a fare il loro. Maguyva colma il vuoto che loro non coprono.

> Devin Local modifica il file che indichi.
> Maguyva dice all'agente *quale file indicare.*

## Tre flussi di lavoro per monorepo

Tra pacchetti, tra linguaggi. Basati sul grafo di chiamate reale, non sul grep di Devin Local.

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

```text
devin> 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. Devin Local ha i quattro file che contano, nell'ordine corretto, e può apportare una modifica basata sul codice reale.

### 02. Trova l'implementazione reale, non lo stub di test

```text
devin> 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.

### 03. Controlla il raggio d'impatto prima di refactorizzare

```text
devin> 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 si basa sui moduli che effettuano davvero gli import, non sul grep di Devin Local.

## Configurazione con Devin Desktop

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

### 01. Indicizza un repo su maguyva.ai

Scegli il monorepo in cui la mancanza di contesto ti ha creato più problemi.

### 02. Aggiungi Maguyva come server MCP in Devin Desktop

`~/.config/devin/mcp_config.json`

```json
{
  "mcpServers": {
    "maguyva": {
      "url": "https://maguyva.tools/mcp",
      "headers": {
        "Authorization": "Bearer ${env:MAGUYVA_API_KEY}"
      }
    }
  }
}
```

### 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?”

## Indicizza un repo che già conosci.

Prova una domanda di cui puoi verificare la risposta.
