Przejdź do głównej zawartości

Optymalizacja wydajności

Pracujesz nad monorepo z 400 000 linii kodu w 12 pakietach. Cursor potrzebuje 30 sekund, zanim zacznie sugerować uzupełnienia. Tryb Agent wstrzymuje się na 10 sekund, zanim zacznie przeglądać pliki. Wskaźnik indeksowania kręci się od godziny. Zaczynasz się zastanawiać, czy Cursor po prostu nie działa w dużych projektach.

Działa. Ale duże projekty wymagają dostrojenia. Domyślnie Cursor indeksuje wszystko, ładuje każde rozszerzenie i używa domyślnych limitów pamięci zaprojektowanych dla małych projektów. Kilka celowanych zmian robi różnicę między powolnym doświadczeniem a natychmiastowymi odpowiedziami.

  • Konfigurację .cursorignore eliminującą szum indeksowania
  • Ustawienia pamięci i wydajności dostrojone dla dużych baz kodu
  • Techniki audytu rozszerzeń do identyfikowania i wyłączania rozszerzeń pochłaniających zasoby
  • Strategie redukcji narzutu kontekstowego bez utraty jakości AI

Indeksowanie jest zwykle głównym wąskim gardłem wydajności. Wyszukiwanie semantyczne Cursora indeksuje każdy plik, który widzi. W projekcie z 50 000 plików (wliczając node_modules, wyniki budowania i wygenerowany kod) większość indeksu to szum.

Utwórz plik .cursorignore w katalogu głównym projektu. Działa jak .gitignore, ale kontroluje konkretnie to, co Cursor indeksuje i przeszukuje:

Dla projektów Python dodatkowo wyklucz:

.venv/
venv/
__pycache__/
*.pyc
.mypy_cache/
.pytest_cache/
htmlcov/
*.egg-info/

Sprawdź wskaźnik indeksowania w dolnym pasku statusu Cursora. Jeśli pokazuje dużą liczbę indeksowanych plików, twój .cursorignore nie jest wystarczająco agresywny. Po aktualizacji pliku ignorowania przeindeksuj, otwierając paletę poleceń (Cmd/Ctrl+Shift+P) i uruchamiając “Reindex Codebase.”

Rozszerzenia to drugi co do wielkości czynnik obniżający wydajność. Każde zainstalowane rozszerzenie VS Code działa wewnątrz Cursora i konkuruje o pamięć i CPU.

  1. Otwórz panel Rozszerzenia (Cmd/Ctrl+Shift+X)
  2. Posortuj według “Installed”
  3. Dla każdego rozszerzenia zadaj pytanie: “Czy używam tego co tydzień?”
  4. Wyłącz rozszerzenia, których aktywnie nie używasz
  5. Zwróć szczególną uwagę na rozszerzenia uruchamiające serwery językowe (Python, Java, C++)

Te kategorie rozszerzeń zazwyczaj zużywają znaczne zasoby:

  • Serwery językowe dla języków, których nie używasz — Jeśli pracujesz w projekcie TypeScript, wyłącz rozszerzenia Java, Python i C++
  • Rozszerzenia lintujące duplikujące wbudowane możliwości Cursora
  • Rozszerzenia wizualizacji git ze śledzeniem plików w czasie rzeczywistym
  • Rozszerzenia formatowania kodu uruchamiające się przy każdym zapisie

Użyj ustawień workspace Cursora, aby włączać rozszerzenia tylko tam, gdzie są potrzebne:

{
"extensions.autoUpdate": false,
"extensions.ignoreRecommendations": true
}

Możesz również wyłączyć konkretne rozszerzenia dla danego workspace za pomocą przełącznika workspace w panelu Rozszerzenia.

Dla dużych projektów Cursor może potrzebować więcej pamięci niż domyślna alokacja. Dodaj te ustawienia do settings.json:

{
"files.maxMemoryForLargeFilesMB": 4096,
"search.maxResults": 20000,
"editor.maxTokenizationLineLength": 20000
}

W dużych projektach obserwatorzy systemu plików zużywają znaczne zasoby:

{
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/coverage/**": true
}
}

Wyklucz te same katalogi z wbudowanego wyszukiwania VS Code:

{
"search.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/build": true,
"**/coverage": true,
"**/*.min.js": true,
"**/*.map": true
}
}

Jeśli uzupełnianie Tab wydaje się wolne, te ustawienia pomogą:

{
"editor.quickSuggestions": {
"other": true,
"comments": false,
"strings": true
},
"editor.suggestOnTriggerCharacters": true,
"editor.acceptSuggestionOnCommitCharacter": false
}

Jeśli używasz równoległych agentów z worktree, zoptymalizuj inicjalizację:

{
"setup-worktree": [
"pnpm install --frozen-lockfile",
"cp $ROOT_WORKTREE_PATH/.env .env"
]
}

Używaj pnpm lub bun zamiast npm install — są znacznie szybsze przy inicjalizacji worktree, ponieważ mogą wykorzystać globalny cache pakietów.

Skonfiguruj czyszczenie, aby zapobiec rozrostowi dysku:

{
"cursor.worktreeCleanupIntervalHours": 6,
"cursor.worktreeMaxCount": 10
}

Indeksowanie nadal wolne po zmianach w .cursorignore. Przeindeksuj jawnie przez paletę poleceń. Zmiany w pliku ignorowania mogą nie zadziałać do następnego pełnego przeindeksowania.

Uzupełnianie Tab całkowicie znika. Sprawdź, czy nie wyłączyłeś serwera języka TypeScript. Zweryfikuj również, czy twój projekt ma poprawny tsconfig.json — uzupełnianie Tab opiera się na serwisie języka TypeScript.

Odpowiedzi agenta są wolne, ale indeksowanie jest w porządku. Wąskim gardłem może być opóźnienie sieciowe do modelu AI, a nie lokalna wydajność. Spróbuj innego modelu (Claude Sonnet 4.5 jest szybszy niż Claude Opus 4.6) lub sprawdź swoje połączenie internetowe.

Worktree pochłaniają miejsce na dysku. Zmniejsz wartości cursor.worktreeMaxCount i cursor.worktreeCleanupIntervalHours w ustawieniach. Uruchom git worktree list, aby zobaczyć wszystkie aktywne worktree i git worktree prune, aby wyczyścić przestarzałe.