// editori
Windsurf
Missä sinä ja Cascade oikeasti työskentelette.
Windsurf-käyttäjille
Windsurf on editori ja Cascade 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 korttia.
Windsurf muokkaa sitä, mihin osoitat. Maguyva kertoo Cascadelle, mihin tiedostoon osoittaa.Neljä palaa. Jokaisella on tehtävänsä.
// editori
Missä sinä ja Cascade oikeasti työskentelette.
// manuaalinen konteksti
Manuaalinen konteksti toimii, kunnes repo kasvaa isoksi.
// koodikanta
Automaattiset koodikannan faktat MCP:n yli.
// kuka maksaa
Agentit eivät maksa käyttäjäpaikoista. Katso hinnoittelu
IDE ei ole ongelma. Cascade, tab-täydennys, monitiedostomuokkaukset ja .windsurfrules ovat erinomaisia, ja käytät niitä jo:
.windsurfrules reposopimuksiin ja tyylikaiteisiin.@-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ä Cascaden 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. Cascade 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 Cascadelle antaaksesi sille tarpeeksi kontekstia.
// where it breaks
Klo 9 liittämäsi pätkä ei heijasta rebasea, jonka tiimikaverisi teki klo 11. Cascade muokkaa pakettia, joka on jo haamuversio.
// the fix
Kirjoitat .windsurfrules-tiedoston tai arkkitehtuurimarkdownin. Se pitää paikkansa tänään.
// where it breaks
Kaikki käsin kirjoitettu ajautuu pois ajan tasalta. Koodi on totuuden lähde. Jonoa kuvaava dokumentti on oikein viikon, sitten väärin loputtomiin.
// the fix
Lisäät .windsurfrules-tiedoston nimeämiselle, lintaukselle ja build-komennoille. Loistavaa käytöksen ohjaamiseen.
// where it breaks
.windsurfrules on oikea paikka lauseelle “aja aina pnpm tsc -b ennen committeja.” Se ei ole kysyttävä indeksi jokaisesta symbolista, tiedostosta ja kutsupaikasta monorepossasi.
Ei Windsurf-editorin korvaaja. Repokontekstin kerros, joka nojaa Cascaden MCP-tukeen.
.windsurfrules jatkaa tehtäväänsä. @-maininnat jatkavat omaansa. Maguyva täyttää aukon, jota ne eivät täytä.Cascade muokkaa tiedostoa, johon osoitat.
Maguyva kertoo agentille, mihin tiedostoon osoittaa.
Pakettien ja kielten rajat ylittäen. Ankkuroitu oikeaan kutsugraafiin, ei Cascaden grepiin.
// workflow 01
cascade> where does authentication happen in this 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 entry points across 4 packages, ranked by call-site density. [exit 0]
Et maininnut tiedostoa. Et liittänyt koodinpätkää. Cascadella on ne neljä tiedostoa, jotka ovat oleellisia, oikeassa järjestyksessä, ja se voi tehdä ankkuroidun muokkauksen.
// workflow 02
cascade> how does normalizePhoneNumber handle E.164? semantic::query("normalize phone E.164") packages/shared/util/phone.ts:88 normalizePhoneNumber() ← real impl 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
cascade> what calls QueueDispatcher.publish across the monorepo? graph::callers(QueueDispatcher.publish) 3 in packages/billing/* 1 in packages/audit/* 1 in packages/notifications/* 1 in services/python-worker/* ← cross-language via gRPC stub [exit 0]
Pakettien ja kielten rajat ylittäen, kun repo on monikielinen, kutsupaikat tulevat esiin suoraan. Diffi on ankkuroitu oikeisiin tuojiin, ei Cascaden grepiin.
Kolme vaihetta. Free-taso: 3 repositoriota, Enintään 50 000 indeksoitua repo-riviä, ei korttia.
// step 01
Valitse monorepo, jossa olet tuntenut eniten kontekstikipua.
// step 02
// ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"maguyva": {
"serverUrl": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer <your-key>"
}
}
}
}// step 03
Älä aloita koko yrityksestäsi. Aloita yhdestä reposta ja yhdestä todennettavasta kysymyksestä, kuten “mikä kutsuu formatInvoice-funktiota pakettien yli?”