// edytor
Devin Desktop
Gdzie Ty i Devin Local naprawdę pracujecie.
Dla użytkowników Devin Desktop
Devin Desktop (IDE Windsurf) to edytor, a Devin Local to agent. W monorepo agent nadal potrzebuje mapy tego, który plik ma znaczenie. Maguyva indeksuje Twój kod i udostępnia go z powrotem przez MCP (semantyczne, AST, grafowe i tekstowe), więc pytanie „gdzie odbywa się uwierzytelnianie” zwraca rzeczywisty przepływ uwierzytelniania, a nie siedem atrap testowych.
Plan Free: 3 repozytoria, Do 50 tys. zindeksowanych linii repo, bez karty kredytowej.
Devin Desktop edytuje to, na co wskażesz. Maguyva mówi Devin Local, na jaki plik wskazać. Cztery elementy. Każdy ma swoje zadanie.
// edytor
Gdzie Ty i Devin Local naprawdę pracujecie.
// ręczny kontekst
Ręczny kontekst wygrywa, dopóki repo nie jest duże.
// baza kodu
Automatycznie pozyskiwane fakty o kodzie przez MCP.
// kto płaci
Bez osobnych opłat za każdego agenta. Zobacz cennik
IDE nie jest problemem. Devin Local, autouzupełnianie, edycje wielu plików i .devin/rules/ są świetne i już z nich korzystasz do:
.devin/rules/ dla konwencji repo i reguł stylu.@, by wciągnąć konkretny plik do kontekstu.Rób tak dalej. Nic z tego nie znika.
Ale w prawdziwym monorepo (TypeScript z zależnościami workspace, usługi w języku Python, mieszane pakiety) kontekst agenta pęka w momencie, gdy istotny plik nie jest jeszcze na radarze Devin Local.
Cztery ręczne obejścia zestawione z ich trybem awarii. Lewo = co robisz dzisiaj. Prawo = gdzie to zawodzi.
// the fix
Wzmiankujesz @ trzy pliki, które Twoim zdaniem mają znaczenie. Devin Local edytuje w nich bez zarzutu.
// where it breaks
Działa, gdy już wiesz, które pliki są zaangażowane. Cały sens narzędzi kontekstowych polega na wydobyciu plików, o których nie wiedziałeś, że trzeba o nich wspomnieć.
// the fix
Wklejasz 200 linii z innego pakietu do Devin Local, żeby dać mu wystarczający kontekst.
// where it breaks
Fragment wklejony o 9 rano nie odzwierciedla rebase'a, który Twój kolega z zespołu wprowadził o 11. Devin Local edytuje na podstawie fantomowej wersji pakietu.
// the fix
Piszesz plik .devin/rules/ lub markdown z architekturą. Dziś jest aktualny.
// where it breaks
Wszystko, co napiszesz ręcznie, z czasem odbiega od stanu faktycznego. Kod jest źródłem prawdy. Dokument opisujący warstwę kolejki jest poprawny przez tydzień, a potem błędny na zawsze.
// the fix
Dodajesz .devin/rules/ dla nazewnictwa, lintowania i komend budowania. Świetne dla zachowania.
// where it breaks
.devin/rules/ to dobre miejsce na “zawsze uruchamiaj pnpm tsc -b przed commitem.” To nie jest przeszukiwalny indeks każdego symbolu, pliku i miejsca wywołania w Twoim monorepo.
To nie zamiennik Devin Desktop. Warstwa kontekstu repo, która opiera się na obsłudze MCP w Devin Local.
.devin/rules/ nadal robi swoje. Wzmianki @ nadal robią swoje. Maguyva wypełnia lukę, której one nie wypełniają. Devin Local edytuje plik, na który wskażesz.
Maguyva mówi agentowi, na jaki plik wskazać.
Między pakietami, między językami. Ugruntowane na rzeczywistym grafie wywołań, a nie na grep Devin Local.
// workflow 01
devin> gdzie w tym monorepo odbywa się uwierzytelnianie? graph::query("authentication flow") packages/web/src/auth/session.ts:42 middleware packages/api/src/auth/jwt.ts:88 weryfikacja tokenu packages/shared/src/auth/types.ts:12 AuthContext packages/admin/src/auth/admin-only.ts:31 bramka rbac → 4 punkty wejścia w 4 pakietach, uszeregowane wg gęstości wywołań. [exit 0]
Nie wspomniałeś o pliku. Nie wkleiłeś fragmentu. Devin Local ma cztery istotne pliki, we właściwej kolejności, i może wykonać ugruntowaną edycję.
// workflow 02
devin> jak normalizePhoneNumber obsługuje E.164? semantic::query("normalize phone E.164") packages/shared/util/phone.ts:88 normalizePhoneNumber() ← prawdziwa impl. packages/api/test/phone.spec.ts:14 jest.mock(...) ← atrapa [exit 0]
Nazwy kłamią. Atrapy przesłaniają prawdziwy kod. Maguyva stawia prawdziwą implementację wyżej niż atrapę testową, we wszystkich pakietach.
// workflow 03
devin> co wywołuje QueueDispatcher.publish w całym monorepo? graph::callers(QueueDispatcher.publish) 3 w packages/billing/* 1 w packages/audit/* 1 w packages/notifications/* 1 w services/python-worker/* ← między językami przez stub gRPC [exit 0]
Między pakietami, a przy poliglotycznym repo — także między językami, miejsca wywołań pojawiają się od razu. Diff opiera się na rzeczywistych elementach importujących ten kod, a nie na wynikach grepa w Devin Local.
Trzy kroki. Plan Free: 3 repozytoria, Do 50 tys. zindeksowanych linii repo, bez karty kredytowej.
// step 01
Wybierz monorepo, w którym najbardziej doskwierał Ci brak kontekstu.
// step 02
~/.config/devin/mcp_config.json
{
"mcpServers": {
"maguyva": {
"url": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer ${env:MAGUYVA_API_KEY}"
}
}
}
} // step 03
Nie zaczynaj od całej firmy. Zacznij od jednego repo i jednego sprawdzalnego pytania, np. „co wywołuje formatInvoice w różnych pakietach?”