Indeks Twojego repozytorium powstaje u dostawcy albo na Twoim dysku. To rozstrzyga wybór asystenta
Asystent kodu nie czyta całego projektu - widzi to, co wybierze jego wyszukiwanie. Gdzie powstaje indeks w Copilocie, Cursorze i Devin Desktop
Indeks Twojego repozytorium powstaje w jednym z dwóch miejsc: na serwerach dostawcy albo na Twoim dysku. GitHub buduje go po swojej stronie, automatycznie przy rozmowie z kontekstem repozytorium, i przy dużym repozytorium zajmuje mu to do 60 sekund. Cursor odwrotnie: Instant Grep buduje i odpytuje indeks na Twojej maszynie, a producent nie wysyła po to ani ścieżek plików, ani kodu.
Tej pozycji nie ma na żadnym cenniku, choć rozstrzyga trzy rzeczy naraz: co opuszcza Twój komputer, co dostawca zatrzymuje u siebie i czy katalog z danymi klienta da się w ogóle schować przed modelem. Poniżej mechanika czterech popularnych narzędzi, wyłącznie na podstawie dokumentacji producentów, oraz lista sprawdzeń, które wykonasz na własnym repozytorium w kwadrans — zanim zapłacisz za pierwszy miesiąc. Stan dokumentacji: 16 października 2026.
Co trafia do modelu, gdy prosisz o zmianę w projekcie
Konsekwencję widać przy pierwszym większym zadaniu. Prosisz o zmianę nazwy jednego pola w całym projekcie, wraca poprawka w jednym pliku, a w trzech innych ta sama nazwa zostaje. Nie dlatego, że model jest słaby — do modelu nie poszło repozytorium, tylko kilka fragmentów, które narzędzie samo uznało za pasujące do pytania.
Żadne z tych narzędzi nie wysyła całego projektu przy każdym pytaniu. Każde ma etap wyszukiwania: najpierw znajduje kandydatów, potem wkłada do zapytania tyle, ile zmieści się w kontekście modelu. Różnice siedzą w tym, gdzie powstaje indeks tych kandydatów i co musi opuścić Twój komputer, żeby go zbudować.
GitHub robi to po swojej stronie. Dokumentacja Copilota mówi, że przy rozmowie z kontekstem repozytorium „repozytorium jest automatycznie indeksowane”, indeksowanie chodzi w tle, a potem indeks odświeża się w ciągu kilku sekund od rozpoczęcia nowej rozmowy. Ta sama strona podaje dwie rzeczy ważne przy zakupie: indeksowanego repozytorium GitHub nie użyje do trenowania modelu, a liczba indeksowanych repozytoriów nie jest limitowana. Jest też wyjątek, o którym łatwo się potknąć: semantyczne indeksowanie repozytoriów spoza GitHuba działa wyłącznie w Visual Studio Code, jest domyślnie wyłączone i w planach Business oraz Enterprise wymaga włączenia polityki przez właściciela organizacji.
Cursor przestawił to w przeciwną stronę. W dokumentacji wyszukiwania czytamy, że indeks powstaje lokalnie, że producent nie wysyła ścieżek plików ani kodu po to, by go zbudować, i że nie przechowuje embeddingów Twojego repozytorium dla potrzeb szukania. Zdanie, które w tej samej dokumentacji ratuje przed błędnym wnioskiem: gdy agent otworzy znaleziony plik, jego treść nadal może trafić do zapytania do modelu. Indeks został lokalnie — kod, który agent faktycznie czyta, nie.
Devin Desktop, czyli dawny Windsurf, rozdziela dwa tryby. Przy indeksowaniu zdalnym repozytorium jest kopiowane: producent pisze wprost „klonujemy repozytorium, żeby utworzyć indeks”, a po zakończeniu tworzenia embeddingów usuwamy cały kod i fragmenty kodu — pod warunkiem, że opcja Store Snippets pozostaje odznaczona. Zostają same embeddingi, z których według tej dokumentacji nie da się odtworzyć oryginalnego kodu.
JetBrains AI Assistant domyślnie liczy w chmurze JetBrains, a modele lokalne są opcją z ograniczeniami. Pomoc produktu mówi, że Ollama i LM Studio „uruchamiają modele na Twojej maszynie”, ale bez przypisania ich do funkcji modele lokalne są dostępne tylko w czacie AI. Dwa zdania obok: agenty nie mogą korzystać z modeli lokalnych, a przy modelach lokalnych asystent nie wywoła narzędzi z serwerów MCP. Uzupełnianie kodu w locie korzysta z modeli JetBrains niezależnie od tego, co przypiszesz w tej sekcji.
Indeks u dostawcy czy na Twoim dysku? Cztery różne odpowiedzi
| Narzędzie | Gdzie powstaje indeks | Co opuszcza komputer przy budowie indeksu | Co z tego zostaje u dostawcy |
|---|---|---|---|
| GitHub Copilot | Po stronie GitHuba, automatycznie przy rozmowie z kontekstem repozytorium | Repozytorium (dla projektów spoza GitHuba tylko w VS Code i po włączeniu polityki) | Indeks semantyczny, odświeżany przy nowych rozmowach; bez użycia do trenowania modelu |
| Cursor (Instant Grep) | Lokalnie, na Twojej maszynie | Nic — producent nie wysyła ścieżek ani kodu po to, by zbudować indeks | Brak indeksu i embeddingów do wyszukiwania; treść otwartych plików nadal idzie w zapytaniu do modelu |
| Devin Desktop, indeksowanie zdalne | Po stronie dostawcy | Klon repozytorium | Same embeddingi; kod i fragmenty usuwane po zbudowaniu indeksu, gdy Store Snippets jest odznaczone |
| JetBrains AI Assistant z modelem lokalnym | Model chodzi lokalnie przez Ollamę albo LM Studio | Zależy od funkcji: uzupełnianie w locie nadal korzysta z modeli JetBrains | Bez przypisania modeli: tryb lokalny działa tylko w czacie; agenty i MCP wymagają chmury |
Z tej tabeli wynika praktyczna kolejność pytań przy zakupie. Jeśli masz w umowie z klientem zapis o tym, że kod nie opuszcza Twojej infrastruktury, pierwszy wiersz wyklucza się sam. Jeśli pracujesz na monorepo i zależy Ci na trafności przy pytaniach obejmujących cały projekt, indeks semantyczny po stronie dostawcy zrobi dla Ciebie więcej niż lokalny grep. Oba zdania są prawdziwe jednocześnie i to jest cały kompromis.
Czy milion tokenów kontekstu załatwia sprawę
Kuszące założenie brzmi: skoro nowe modele mają wielkie okno kontekstu, wystarczy włożyć do niego cały projekt. Dokumentacja Copilota pokazuje, dlaczego to nie jest przełącznik bez konsekwencji. Przy wybranym modelu można wybrać domyślny rozmiar kontekstu albo rozszerzony, milionowy, ale rozszerzone okno działa wyłącznie w Visual Studio Code i w Copilot CLI. Ta sama strona dodaje konsekwencję rozliczeniową: większe okno kontekstu albo wyższy poziom rozumowania oznacza więcej zużytych tokenów, czyli więcej zużytych kredytów.
Drugi powód jest techniczny i niezależny od cennika. Nawet milion tokenów to nadal budżet, który ktoś musi zapełnić wybranymi plikami — wybór nadal robi etap wyszukiwania opisany wyżej. Większe okno zmienia to, ile znalezionych plików się zmieści, a nie to, czy właściwy plik zostanie znaleziony. Jeśli narzędzie nie widzi katalogu, bo go wykluczyłeś albo nie został zindeksowany, rozmiar okna nic nie poprawi.
Czego asystent nie zobaczy, bo wykluczył to .gitignore
To jest najczęstsza i najcichsza przyczyna złych odpowiedzi na własnym projekcie. Devin Desktop domyślnie pomija przy indeksowaniu ścieżki wypisane w .gitignore, pliki w node_modules i ścieżki ukryte, czyli zaczynające się od kropki. Dokumentacja dopowiada regułę: plik zignorowany nie jest indeksowany. Dodatkowo plik .devinignore w katalogu repozytorium wyłącza kolejne ścieżki tą samą składnią co .gitignore, a dopasowane ścieżki nie mogą być przez narzędzie podejrzane, edytowane ani utworzone. Starsze nazwy .windsurfignore i .codeiumignore nadal są czytane i respektowane, a klienci korporacyjni mogą położyć globalny .codeiumignore w katalogu ~/.codeium/, który obowiązuje w każdym miejscu pracy na tej maszynie.
Ta mechanika działa w dwie strony. Z jednej plik z sekretami, który trzymasz poza gitem, nie trafi do indeksu bez żadnej konfiguracji z Twojej strony. Z drugiej — jeśli wrzuciłeś do .gitignore katalog z wygenerowanymi typami, migracjami albo lokalną dokumentacją, asystent odpowiada, nie widząc właśnie tego, co opisuje Twój projekt najdokładniej. Zanim uznasz narzędzie za nietrafne, sprawdź, czy nie pytasz go o pliki, których sam kazałeś nie czytać. Ten sam zestaw plików poza gitem decyduje o tym, czy projekt wystartuje na obcym komputerze — kolejność ich odtwarzania rozpisuje tekst o projekcie, który nie buduje się na czystej maszynie.
Warto też wiedzieć, ile to kosztuje po stronie sprzętu: ta sama strona podaje zużycie pamięci na poziomie około 300 MB przy obszarze roboczym liczącym 5000 plików. Przy większych projektach to pozycja, którą widać na laptopie z 8 GB RAM obok przeglądarki i Dockera.
Czy w swoim planie wykluczysz katalog z podglądu modelu
Tu kryje się różnica, która przewraca wybór planu w pracy dla klientów. Mechanizm wykluczania treści w Copilocie to funkcja planów Copilot Business i Copilot Enterprise, a konfigurują go administratorzy repozytorium, właściciele organizacji albo właściciele przedsiębiorstwa. Dla pojedynczego konta w planie Pro to narzędzie po prostu nie istnieje — kontrolujesz zakres tylko tym, co otwierasz i co wykluczyłeś z gita.
Przy samym wykluczaniu dokumentacja wylicza cztery skutki: w objętych plikach nie ma podpowiedzi w locie, ich treść nie zasila podpowiedzi w innych plikach, nie zasila odpowiedzi Copilota i nie są one przeglądane przy przeglądzie kodu. Do tego cztery ograniczenia, które trzeba przeczytać przed obiecaniem czegokolwiek klientowi:
- wykluczanie treści nie działa w trybach Edit i Agent czatu Copilota — a to właśnie tam toczy się dziś większość pracy z asystentem;
- Copilot może skorzystać z informacji semantycznej z wykluczonego pliku, jeśli dostarczy ją pośrednio IDE: dokumentacja wymienia informacje o typach, podpowiedzi definicji po najechaniu kursorem i konfigurację budowania;
- wykluczenia nie obejmują linków symbolicznych ani repozytoriów na zdalnych systemach plików;
- na stronie GitHuba i w aplikacji mobilnej funkcja jest w publicznej wersji zapoznawczej i może się zmienić.
U Cursora odpowiednikiem tej decyzji jest tryb prywatności. Dokumentacja użycia danych mówi, że przy włączonym trybie dane klienta nie będą używane do trenowania przez Cursora, a dostawcy modeli działają na umowach o zerowej retencji, z wyjątkiem sytuacji, w której zapytanie wzbudzi detektory nadużyć — wtedy dane mogą zostać zatrzymane do zbadania. Przy wyłączonym trybie ta sama strona zapowiada, że producent może używać i przechowywać dane bazy kodu, zapytania, działania w edytorze i fragmenty kodu, by ulepszać swoje funkcje i trenować modele. Dwa zdania, które warto przeczytać osobno: treści plików są tymczasowo buforowane na serwerach producenta, choć nigdy trwale przechowywane, a przy własnym kluczu API zapytania nadal przechodzą przez zaplecze Cursora, bo tam składane jest ostateczne zapytanie. Własny klucz nie jest więc odpowiedzią na pytanie o to, przez czyje serwery idzie kod.
Ile kosztuje większy kontekst i co się dzieje po wyczerpaniu kredytów
Rozliczenie Copilota przeszło na kredyty AI i to zmienia sposób czytania cennika: płacisz nie za liczbę pytań, lecz za zużycie, na które wpływa wybrany model, poziom rozumowania i rozmiar okna kontekstu.
| Plan | Cena miesięcznie | Kredyty bazowe | Pula elastyczna | Razem kredytów |
|---|---|---|---|---|
| Copilot Free | 0 USD | Dokumentacja podaje „przydział kredytów AI”, bez liczby; limit podpowiedzi w locie to 2000 uzupełnień miesięcznie | ||
| Copilot Pro | 10 USD | 1000 | 500 | 1500 |
| Copilot Pro+ | 39 USD | 3900 | 3100 | 7000 |
| Copilot Max | 100 USD | 10 000 | 10 000 | 20 000 |
Liczby kredytów pochodzą ze strony planów indywidualnych, limit 2000 uzupełnień i ceny planów zespołowych — 19 USD za stanowisko w Business i 39 USD w Enterprise — ze strony planów Copilota. Dla planu Free dokumentacja nie podaje wielkości przydziału kredytów, więc jedyna uczciwa odpowiedź brzmi: sprawdź to na własnym koncie w widoku rozliczeń, bo tylko on pokazuje Twój stan. Ceny i limity w tej kategorii zmieniają się częściej niż raz na kwartał, a powyższe odczytano 16 października 2026.
Sześć sprawdzeń na własnym repozytorium przed zakupem
Darmowe okresy próbne są w tej kategorii regułą, więc nie ma powodu kupować na podstawie opisu funkcji. Ta lista zakłada, że umiesz przeczytać diff i cofnąć zmianę w gicie; jeśli to dopiero przed Tobą, sensowną kolejność nauki pracy z modelami przy zleceniach opisuje ścieżka wejścia we freelancing z AI w programie ULTRA. Kolejność sprawdzeń:
- Pytanie obejmujące cały projekt. Zapytaj, w ilu miejscach używana jest konkretna funkcja, i policz, ile z nich narzędzie wymieniło wobec wyniku zwykłego wyszukiwania w repozytorium. To mierzy etap wyszukiwania, a nie model.
- Plik, którego nie ma w indeksie. Zadaj pytanie o zawartość katalogu wykluczonego przez .gitignore. Odpowiedź wymyślona zamiast „nie widzę tego pliku” mówi Ci, czego spodziewać się przy każdej następnej odpowiedzi.
- Czas pierwszego indeksowania. Odpal narzędzie na największym repozytorium, jakie masz, i zmierz, ile mija do pierwszej sensownej odpowiedzi.
- Tryb, w którym naprawdę pracujesz. Jeśli liczysz na wykluczanie treści, sprawdź je dokładnie w tym trybie, w którym pracujesz — w trybach Edit i Agent nie obowiązuje.
- Zużycie przy jednym realnym zadaniu. Zrób jedno typowe zadanie i zobacz w widoku rozliczeń, ile kredytów zabrało, osobno na domyślnym i rozszerzonym kontekście. Pomnóż przez liczbę takich zadań w miesiącu — i to jest Twój rachunek, nie cena z cennika.
- Zapis w umowie z klientem. Zestaw tabelę z pierwszej sekcji z tym, co podpisałeś. Jeśli klient zabronił kopiowania repozytorium poza Twoją infrastrukturę, indeksowanie zdalne jest wykluczone niezależnie od tego, jak dobrze działa.
Co wybrać przy trzech typowych sytuacjach
Freelancer na jednym projekcie bez wrażliwych danych: zacznij od planu najtańszego i sprawdź limit uzupełnień oraz zużycie kredytów przy własnym zadaniu, zamiast od razu dopłacać za większe okno kontekstu. Przy jednym repozytorium różnica w trafności między indeksem lokalnym a zdalnym jest najmniejsza — bo kandydatów do wybrania jest po prostu mniej.
Trzyosobowy zespół na monorepo: tu indeks semantyczny po stronie dostawcy zarabia na siebie najszybciej, a decyzją do podjęcia jest plan, nie narzędzie. Wykluczanie treści zaczyna się dopiero od planu Business, więc jeśli macie w repozytorium katalogi, których model nie ma czytać, policzcie 19 USD za stanowisko, a nie 10.
Praca pod umową zakazującą wyniesienia kodu: zostają konfiguracje z indeksem na Twojej maszynie i modelami lokalnymi — ale z jawnym rachunkiem za ograniczenia, które producenci opisują wprost. Przy modelach lokalnych w JetBrains agenty i narzędzia MCP nie działają, a uzupełnianie w locie nadal idzie do chmury. Jeśli te dwie rzeczy są dla Ciebie rdzeniem pracy z asystentem, to nie jest wybór między narzędziami, tylko między wykonaniem umowy a trybem pracy — i lepiej wyjaśnić to klientowi przed podpisaniem, niż po pierwszym audycie.