// editori
Cursor
Missä oikeasti koodaat.
Cursor-käyttäjille
Cursor on editori. 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.
Cursor muokkaa sitä, mihin osoitat. Maguyva kertoo agentille, mihin tiedostoon osoittaa. Neljä palaa. Jokaisella on tehtävänsä.
// editori
Missä oikeasti koodaat.
// 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. Cursor-editorin tab-täydennys, edit-with-AI, monitiedostomuokkaukset ja .cursor/rules ovat erinomaisia, ja käytät niitä jo:
.cursor/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ä tutkassasi.
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. Cursor muokkaa niiden sisällä siististi.
// where it breaks
Kiinnittäminen toimii, kun jo tiedät, mitkä tiedostot ovat mukana. Kontekstityökalujen koko pointti on tuoda esiin tiedostot, joita et osannut kiinnittää.
// the fix
Liität 200 riviä toisesta paketista chattiin antaaksesi agentille tarpeeksi kontekstia.
// where it breaks
Klo 9 liittämäsi pätkä ei heijasta rebasea, jonka tiimikaverisi teki klo 11. Agentti muokkaa pakettia, joka on jo haamuversio.
// the fix
Kirjoitat .cursor/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 .cursor/rules-tiedoston nimeämiselle, lintaukselle ja build-komennoille. Loistavaa käytöksen ohjaamiseen.
// where it breaks
.cursor/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 Cursor-editorin korvaaja. Repokontekstin kerros, joka nojaa Cursor-editorin MCP-tukeen.
.cursor/rules jatkaa tehtäväänsä. @-maininnat jatkavat omaansa. Maguyva täyttää aukon, jota ne eivät täytä. Cursor muokkaa tiedostoa, johon osoitat.
Maguyva kertoo agentille, mihin tiedostoon osoittaa.
Pakettien ja kielten rajat ylittäen. Ankkuroitu oikeaan kutsugraafiin, ei Cursor-editorin grepiin.
// workflow 01
cursor> 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 kiinnittänyt tiedostoa. Et liittänyt koodinpätkää. Agentilla on ne neljä tiedostoa, jotka ovat oleellisia, oikeassa järjestyksessä, ja se voi tehdä ankkuroidun muokkauksen.
// workflow 02
cursor> 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
cursor> 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]
Kutsupaikat näkyvät suoraan pakettien yli ja monikielisessä repossa myös kielten yli. Diffi perustuu todellisiin tuonteja tekeviin kohteisiin, ei Cursor-editorin 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
~/.cursor/mcp.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?”