// editori
Devin Desktop
Missä sinä ja Devin Local oikeasti työskentelette.
Devin Desktop -käyttäjille
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ää.
Free-taso: 3 repositoriota, Enintään 50 000 indeksoitua repo-riviä, ei luottokorttia.
Devin Desktop muokkaa sitä, mihin osoitat. Maguyva kertoo Devin Local -agentille, mihin tiedostoon osoittaa. Neljä palaa. Jokaisella on tehtävänsä.
// editori
Missä sinä ja Devin Local oikeasti työskentelette.
// manuaalinen konteksti
Manuaalinen konteksti toimii, kunnes repo kasvaa isoksi.
// koodikanta
Automaattiset koodikannan faktat MCP:n yli.
// kuka maksaa
Agenteista ei veloiteta käyttäjäpaikkamaksuja. Katso hinnoittelu
IDE ei ole ongelma. Devin Local, tab-täydennys, monitiedostomuokkaukset ja .devin/rules/ ovat erinomaisia, ja käytät niitä jo:
.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.
Neljä manuaalista korjausta yhdistettynä niiden vikaantumistapaan. Vasen = mitä teet tänään. Oikea = missä se hajoaa.
// the fix
Mainitset @-merkillä kolme tiedostoa, joiden luulet olevan oleellisia. Devin Local muokkaa niiden sisällä siististi.
// where it breaks
Se toimii, kun jo tiedät, mitkä tiedostot ovat mukana. Kontekstityökalujen koko pointti on tuoda esiin tiedostot, joita et osannut mainita.
// the fix
Liität 200 riviä toisesta paketista Devin Local -agentille antaaksesi sille tarpeeksi kontekstia.
// where it breaks
Klo 9 liittämäsi pätkä ei heijasta rebasea, jonka tiimikaverisi teki klo 11. Devin Local muokkaa pakettia, joka on jo haamuversio.
// the fix
Kirjoitat .devin/rules/-tiedoston tai arkkitehtuurimarkdownin. Se pitää paikkansa tänään.
// where it breaks
Kaikki käsin kirjoitettu vanhenee vähitellen. Koodi on totuuden lähde. Jonoa kuvaava dokumentti on oikein viikon, sitten väärin loputtomiin.
// the fix
Lisäät .devin/rules/-tiedoston nimeämiselle, lintaukselle ja build-komennoille. Loistavaa käytöksen ohjaamiseen.
// where it breaks
.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.
Ei Devin Desktop -editorin korvaaja. Repokontekstin kerros, joka nojaa Devin Local -agentin MCP-tukeen.
.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.
Pakettien ja kielten rajat ylittäen. Ankkuroitu oikeaan kutsugraafiin, ei Devin Local -agentin grepiin.
// workflow 01
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.
// workflow 02
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.
// workflow 03
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.
Kolme vaihetta. Free-taso: 3 repositoriota, Enintään 50 000 indeksoitua repo-riviä, ei luottokorttia.
// step 01
Valitse monorepo, jossa puutteellinen konteksti on aiheuttanut eniten ongelmia.
// step 02
~/.config/devin/mcp_config.json
{
"mcpServers": {
"maguyva": {
"url": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer ${env:MAGUYVA_API_KEY}"
}
}
}
} // step 03
Älä aloita koko yrityksestäsi. Aloita yhdestä reposta ja yhdestä todennettavasta kysymyksestä, kuten “mikä kutsuu formatInvoice-funktiota pakettien yli?”