# Devin Desktop muokkaa tiedostoa. Maguyva näkee repon.

Canonical source: https://maguyva.ai/fi/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 (Windsurf-IDE) on editori ja Devin Local on agentti. Monorepossa agentti tarvitsee silti kartan siitä, mikä tiedosto on tärkeä. Maguyva indeksoi koodikantasi ja tarjoaa sen takaisin MCP:n yli (semanttinen, AST, graafi ja teksti), joten “missä autentikointi tapahtuu” palauttaa oikean autentikointivuon, ei seitsemää testitynkää.

> Devin Desktop muokkaa sitä, mihin osoitat. Maguyva kertoo Devin Local -agentille, mihin tiedostoon osoittaa.

## Mitä kukin kerros tekee

Neljä palaa. Jokaisella on tehtävänsä.

### Devin Desktop

Missä sinä ja Devin Local oikeasti työskentelette.

### @-maininnat + .devin/rules/

Manuaalinen konteksti toimii, kunnes repo kasvaa isoksi.

### Maguyva

Automaattiset koodikannan faktat MCP:n yli.

### Työtiloja, ei käyttäjäpaikkoja

Agenteista ei veloiteta käyttäjäpaikkamaksuja. [Katso hinnoittelu](https://maguyva.ai/fi/pricing)

## Devin Desktop on editori. Käytä sitä.

IDE ei ole ongelma. Devin Local, tab-täydennys, monitiedostomuokkaukset ja `.devin/rules/` ovat erinomaisia, ja käytät niitä jo:

- Rivinsisäiset ehdotukset ja Devin Local -muokkaukset avoimessa tiedostossa.
- Monitiedostomuokkaukset, kun muutos on paikallinen.
- `.devin/rules/` repon käytäntöihin ja tyylisääntöihin.
- `@`-maininnat tietyn tiedoston tuomiseksi kontekstiin.

Jatka sitä. Mikään niistä ei katoa minnekään.

Mutta oikeassa monorepossa (TypeScript työtilariippuvuuksineen, Python-palvelut, sekapaketit) agentin konteksti hajoaa heti, kun oleellinen tiedosto ei ole vielä Devin Local -agentin tutkassa.

## Manuaaliset korjaukset, joita olet jo kokeillut, ja missä ne hajoavat

Neljä manuaalista korjausta yhdistettynä niiden vikaantumistapaan. Vasen = mitä teet tänään. Oikea = missä se hajoaa.

### // mainitse tiedostot

Mainitset `@`-merkillä kolme tiedostoa, joiden luulet olevan oleellisia. Devin Local muokkaa niiden sisällä siististi.

### // mainitseminen on arvaus

Se toimii, kun jo tiedät, mitkä tiedostot ovat mukana. Kontekstityökalujen koko pointti on tuoda esiin tiedostot, joita et osannut mainita.

### // liitä koodinpätkät

Liität 200 riviä toisesta paketista Devin Local -agentille antaaksesi sille tarpeeksi kontekstia.

### // liitetty koodi vanhenee

Klo 9 liittämäsi pätkä ei heijasta rebasea, jonka tiimikaverisi teki klo 11. Devin Local muokkaa pakettia, joka on jo haamuversio.

### // kirjoita kontekstidokumentti

Kirjoitat `.devin/rules/`-tiedoston tai arkkitehtuurimarkdownin. Se pitää paikkansa tänään.

### // dokumentit vanhenevat koodia nopeammin

Kaikki käsin kirjoitettu vanhenee vähitellen. Koodi on totuuden lähde. Jonoa kuvaava dokumentti on oikein viikon, sitten väärin loputtomiin.

### // pidä sääntötiedostot

Lisäät `.devin/rules/`-tiedoston nimeämiselle, lintaukselle ja build-komennoille. Loistavaa käytöksen ohjaamiseen.

### // säännöt ≠ indeksi

`.devin/rules/` on oikea paikka lauseelle “aja aina pnpm tsc -b ennen committeja.” Se ei ole kysyttävä indeksi jokaisesta symbolista, tiedostosta ja kutsupaikasta monorepossasi.

## Maguyva on kerros alla

Ei Devin Desktop -editorin korvaaja. Repokontekstin kerros, joka nojaa Devin Local -agentin MCP-tukeen.

- **Semanttinen + AST + graafi + teksti**: haku merkityksen, rakenteen, riippuvuuden tai kirjaimellisen tekstin perusteella. Jokainen osuma palauttaa tiedostopolun ja rivinumeron.
- **Pakettirajat ylittävä oletuksena**: kutsupaikat ja tuojat jokaisessa monorepon paketissa, ei vain siinä, joka on Devin Local -agentilla avoinna.
- **Haaratietoinen**: Maguyva näkee sen koodiversion, jota Devin Local muokkaa.
- **Täydentävä, ei kilpaileva**: `.devin/rules/` jatkaa tehtäväänsä. `@`-maininnat jatkavat omaansa. Maguyva täyttää aukon, jota ne eivät täytä.

> Devin Local muokkaa tiedostoa, johon osoitat.
> Maguyva kertoo agentille, *mihin tiedostoon osoittaa.*

## Kolme monorepo-työnkulkua

Pakettien ja kielten rajat ylittäen. Ankkuroitu oikeaan kutsugraafiin, ei Devin Local -agentin grepiin.

### 01. Löydä autentikointivuo pakettien yli, mainitsematta mitään

```text
devin> missä autentikointi tapahtuu tässä monorepossa?

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 aloituskohtaa 4 paketissa, järjestettynä kutsupaikkojen tiheyden mukaan.
[exit 0]
```

Et maininnut tiedostoa. Et liittänyt koodinpätkää. Devin Local -agentilla on ne neljä tiedostoa, jotka ovat oleellisia, oikeassa järjestyksessä, ja se voi tehdä ankkuroidun muokkauksen.

### 02. Löydä oikea toteutus, ei testitynkää

```text
devin> miten normalizePhoneNumber käsittelee E.164-muodon?

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

Nimet valehtelevat. Mockit peittävät oikean koodin. Maguyva järjestää oikean toteutuksen testimockin yläpuolelle, jokaisessa paketissa.

### 03. Tarkista vaikutusalue ennen refaktorointia

```text
devin> mikä kutsuu QueueDispatcher.publish-metodia koko monorepossa?

graph::callers(QueueDispatcher.publish)
  3 in packages/billing/*
  1 in packages/audit/*
  1 in packages/notifications/*
  1 in services/python-worker/*  ← kielten välillä gRPC-tyngän kautta
[exit 0]
```

Pakettien ja kielten rajat ylittäen, kun repo on monikielinen, kutsupaikat tulevat esiin suoraan. Diffi on ankkuroitu oikeisiin tuojiin, ei Devin Local -agentin grepiin.

## Asennus Devin Desktop -editorilla

Kolme vaihetta. Free-taso: 3 repositoriota, Enintään 50 000 indeksoitua repo-riviä, ei luottokorttia.

### 01. Indeksoi repo osoitteessa maguyva.ai

Valitse monorepo, jossa puutteellinen konteksti on aiheuttanut eniten ongelmia.

### 02. Lisää Maguyva MCP-palvelimeksi kohteessa Devin Desktop

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

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

### 03. Kysy yksi kysymys, jonka vastauksen jo tiedät

Älä aloita koko yrityksestäsi. Aloita yhdestä reposta ja yhdestä todennettavasta kysymyksestä, kuten “mikä kutsuu `formatInvoice`-funktiota pakettien yli?”

## Indeksoi yksi repo, jonka jo tunnet.

Testaa yksi kysymys, jonka vastauksen voit tarkistaa.
