Aller au contenu principal

Dépannage et optimisation de Context Sync dans Cursor

Guide Context Sync de Cursor

Context Sync est le mécanisme que Cursor utilise pour indexer votre base de code et fournir un contexte pertinent à l'assistant IA. Lorsqu'il fonctionne correctement, il permet des suggestions de code précises, des références de fichiers exactes et des réponses intelligentes conscientes du projet. Lorsqu'il tombe en panne, vous pouvez rencontrer des suggestions périmées, des références de fichiers manquantes ou la redoutable erreur « Context Sync is not running ». Ce guide vous accompagne à travers le diagnostic, la réparation et l'optimisation.

Comprendre Context Sync​

Context Sync fonctionne en arrière-plan, analysant continuellement vos fichiers de projet et construisant un index consultable. Cet index permet à l'IA de comprendre la structure de votre projet, de trouver les fichiers pertinents et de fournir des réponses contextuellement précises.

Comment fonctionne l'indexation​

Le processus d'indexation suit ces étapes :

  1. Découverte : Cursor analyse l'espace de travail pour tous les fichiers, en respectant .gitignore et les règles d'exclusion personnalisées
  2. Analyse : Chaque fichier est analysé pour extraire les symboles, les importations et les métadonnées structurelles
  3. Intégration : Les morceaux de code sont convertis en intégrations vectorielles pour la recherche sémantique
  4. Stockage : L'index est stocké localement et optionnellement synchronisé avec le cloud
  5. Mises à jour : Les modifications de fichiers déclenchent des mises à jour d'index incrémentielles
astuce

La première indexation d'une grande base de code peut prendre plusieurs minutes. Pendant ce temps, vous pouvez remarquer une utilisation CPU plus élevée et des réponses IA plus lentes. C'est normal et se résoudra une fois l'index initial terminé.

Gestion de la fenêtre de contexte​

La fenêtre de contexte détermine la quantité d'informations que l'IA peut traiter à la fois. Cursor gère cela automatiquement, mais comprendre les limites vous aide à optimiser votre flux de travail :

PlanFenêtre de contexteFichiers indexés max
Free25 000 jetons500 fichiers
Pro200 000 jetons5 000 fichiers
Business200 000 jetons25 000 fichiers
EnterprisePersonnaliséPersonnalisé

Diagnostic des problèmes Context Sync​

Vérification du statut de synchronisation​

La première étape du dépannage consiste à vérifier le statut actuel de Context Sync. Cursor propose plusieurs façons de le faire :

Méthode 1 : Barre de statut

Regardez le coin inférieur droit de la fenêtre Cursor. Une icône rotative indique une synchronisation active, tandis qu'une coche signifie que la synchronisation est à jour. Si vous voyez une icône d'erreur, survolez-la pour plus de détails.

Méthode 2 : Palette de commandes

# Ouvrir la palette de commandes (Ctrl+Shift+P / Cmd+Shift+P)
# Taper : Cursor: Show Context Sync Status

Cela ouvre un panneau détaillé affichant :

  • État de synchronisation actuel (running, paused, error)
  • Nombre de fichiers indexés
  • Horodatage de la dernière synchronisation
  • Messages d'erreur éventuels
  • Taille de l'index sur le disque

Méthode 3 : Panneau de sortie

# View > Output
# Sélectionner « Cursor Indexing » dans le menu déroulant

Le panneau de sortie affiche les journaux d'indexation en temps réel, y compris la progression fichier par fichier et les messages d'erreur.

attention

Si le statut Context Sync affiche « not running » sans erreurs visibles, cela peut indiquer une défaillance silencieuse. Vérifiez le panneau de sortie pour les messages d'erreur qui n'ont peut-être pas remonté à l'interface. Cherchez les lignes contenant « ERROR » ou « FATAL ».

Messages d'erreur courants​

Voici les erreurs Context Sync les plus fréquemment rencontrées et leur signification :

« Context Sync is not running »

C'est une erreur générique qui peut avoir plusieurs causes. Le processus de synchronisation s'est arrêté et doit être redémarré. Voir la section de réparation ci-dessous pour des instructions étape par étape.

« Index corruption detected »

Le fichier d'index local est corrompu, généralement suite à un arrêt inattendu ou une erreur de disque. La solution consiste à supprimer l'index et à le reconstruire de zéro.

« File watcher limit reached »

La limite de surveillance de fichiers du système d'exploitation a été dépassée. C'est courant sur les systèmes Linux avec de grands espaces de travail. La solution consiste à augmenter la limite inotify du système.

« Embedding service unavailable »

Le service d'intégration cloud est temporairement indisponible. C'est généralement transitoire et se résout de lui-même en quelques minutes.

« Rate limit exceeded for indexing »

Vous avez atteint la limite de taux d'indexation. Cela se produit lorsque trop de fichiers sont modifiés sur une courte période. Attendez quelques minutes et la synchronisation reprendra automatiquement.

Réparation de Context Sync​

Correctif rapide : Redémarrer Context Sync​

Le correctif le plus simple pour la plupart des problèmes Context Sync consiste à redémarrer le processus de synchronisation :

# Palette de commandes (Ctrl+Shift+P / Cmd+Shift+P)
# Taper : Cursor: Restart Context Sync

Alternativement, vous pouvez utiliser les paramètres pour forcer un redémarrage :

// Dans settings.json
{
"cursor.contextSync.forceRestart": true
}

Après avoir enregistré ce paramètre, Cursor redémarrera le processus de synchronisation au prochain rechargement de fenêtre.

Réindexation complète​

Lorsqu'un redémarrage rapide ne résout pas le problème, une réindexation complète est nécessaire. Cela supprime l'index existant et le reconstruit de zéro.

# Étape 1 : Vider le cache d'index
# Palette de commandes : Cursor: Clear Index Cache

# Étape 2 : Déclencher une réindexation complète
# Palette de commandes : Cursor: Reindex Workspace
attention

Une réindexation complète sur une grande base de code peut prendre 10 à 30 minutes. Pendant ce temps, les fonctionnalités IA auront un contexte limité ou inexistant. Planifiez la réindexation pendant une pause ou lorsque vous n'avez pas besoin immédiatement de l'assistance IA.

Réparation manuelle de l'index​

Si les commandes intégrées ne fonctionnent pas, vous pouvez effacer manuellement les fichiers d'index :

Sur Windows :

# Fermer Cursor d'abord
# Effacer le répertoire d'index
Remove-Item -Recurse -Force "$env:APPDATA\Cursor\index"
Remove-Item -Recurse -Force "$env:APPDATA\Cursor\codebase-index"

# Effacer le cache
Remove-Item -Recurse -Force "$env:APPDATA\Cursor\cache"

# Redémarrer Cursor et le laisser reconstruire l'index

Sur macOS :

# Fermer Cursor d'abord
rm -rf ~/Library/Application\ Support/Cursor/index
rm -rf ~/Library/Application\ Support/Cursor/codebase-index
rm -rf ~/Library/Application\ Support/Cursor/cache

# Redémarrer Cursor

Sur Linux :

# Fermer Cursor d'abord
rm -rf ~/.config/Cursor/index
rm -rf ~/.config/Cursor/codebase-index
rm -rf ~/.config/Cursor/cache

# Redémarrer Cursor
astuce

Avant de supprimer l'index, vérifiez sa taille. Si le répertoire d'index est anormalement grand (plusieurs Go pour un petit projet), la corruption est probable. Notez la taille avant la suppression pour comparaison après reconstruction.

Configuration de l'indexation​

Optimisation de la portée de l'index​

Contrôler quels fichiers sont indexés est le moyen le plus efficace d'améliorer les performances de Context Sync. Par défaut, Cursor respecte .gitignore, mais vous pouvez ajouter des exclusions personnalisées.

// Dans settings.json
{
"cursor.contextSync.exclude": [
"**/node_modules/**",
"**/dist/**",
"**/build/**",
"**/.next/**",
"**/coverage/**",
"**/*.min.js",
"**/*.map",
"**/vendor/**",
"**/.cache/**",
"**/*.lock",
"**/package-lock.json",
"**/yarn.lock",
"**/*.png",
"**/*.jpg",
"**/*.gif",
"**/*.svg"
],
"cursor.contextSync.include": [
"**/*.ts",
"**/*.tsx",
"**/*.js",
"**/*.jsx",
"**/*.py",
"**/*.go",
"**/*.rs",
"**/README.md",
"**/*.json"
]
}
attention

Inclure des fichiers binaires (images, binaires compilés, fichiers de verrouillage) dans l'index gaspille de l'espace et dégrade la qualité de recherche. Excluez toujours les fichiers binaires et générés de l'indexation. L'IA ne peut pas traiter significativement le contenu binaire, et ces fichiers ajoutent du bruit à l'index.

Définition des limites d'index​

Pour les très grandes bases de code, vous pouvez limiter le nombre maximum de fichiers et la taille maximale de fichier qui seront indexés :

{
"cursor.contextSync.maxFiles": 10000,
"cursor.contextSync.maxFileSize": 1048576,
"cursor.contextSync.maxLinesPerFile": 5000
}

Ces limites empêchent l'index de croître de manière incontrôlée et garantissent que les fichiers les plus importants sont prioritaires.

Configuration du surveilleur de fichiers​

Sur les systèmes Linux, la limite par défaut du surveilleur inotify est souvent trop basse pour les grands projets. Augmentez-la pour éviter les erreurs « file watcher limit reached » :

# Vérifier la limite actuelle
cat /proc/sys/fs/inotify/max_user_watches

# Augmenter temporairement la limite
sudo sysctl fs.inotify.max_user_watches=524288

# Augmenter permanent la limite
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Sur Windows, le paramètre équivalent est la valeur de registre MaxExtendedTdiHandleCount, mais il nécessite rarement un ajustement.

Réglage des performances​

Mesurer les performances de l'index​

Avant d'optimiser, établissez une mesure de référence de vos performances d'index actuelles :

# Palette de commandes : Cursor: Show Index Statistics

Cela affiche :

Index Statistics
================
Total files: 3,247
Indexed files: 2,891 (89%)
Excluded files: 356
Index size: 142 MB
Last full index: 2026-09-14 14:30:22
Index duration: 4m 32s
Incremental updates today: 127
Average update time: 1.2s
Embedding cache hit rate: 87%
astuce

Un taux de réussite de cache d'intégration élevé (supérieur à 80 %) signifie que la plupart des modifications de fichiers ne nécessitent pas de nouvelles intégrations. Si le taux est bas, cela peut indiquer que les fichiers sont modifiés trop fréquemment ou que le cache est trop petit.

Optimisation pour les grands monorepos​

Les grands monorepos présentent des défis uniques pour Context Sync. Voici des stratégies pour les gérer :

Stratégie 1 : Indexation spécifique au projet

Au lieu d'indexer tout le monorepo, indexez uniquement le projet sur lequel vous travaillez actuellement :

{
"cursor.contextSync.workspaceRoot": "packages/web-app",
"cursor.contextSync.exclude": [
"packages/**",
"!packages/web-app/**"
]
}

Cela indique à Cursor d'exclure tous les packages sauf celui sur lequel vous travaillez activement.

Stratégie 2 : Indexation basée sur les symboles

Activez l'indexation basée sur les symboles, qui se concentre sur les définitions de fonctions et de classes plutôt que sur le contenu complet des fichiers :

{
"cursor.contextSync.indexingMode": "symbols",
"cursor.contextSync.symbolTypes": [
"function",
"class",
"interface",
"type",
"method",
"variable"
]
}

Stratégie 3 : Indexation basée sur les priorités

Attribuez des niveaux de priorité à différents répertoires afin que le code critique soit indexé en premier :

{
"cursor.contextSync.priority": {
"src/core/**": "high",
"src/api/**": "high",
"src/components/**": "medium",
"src/utils/**": "medium",
"src/tests/**": "low",
"docs/**": "low"
}
}
attention

L'indexation basée sur les priorités n'exclut pas les fichiers à faible priorité, elle les indexe simplement en dernier. Pendant la phase d'indexation initiale, les fichiers à haute priorité deviennent disponibles en premier, ce qui peut être utile si vous devez commencer à travailler avant que l'index complet soit terminé.

Optimisation des mises à jour incrémentielles​

Les mises à jour incrémentielles sont déclenchées lorsque les fichiers changent. Vous pouvez contrôler l'agressivité de ces mises à jour :

{
"cursor.contextSync.incremental": {
"enabled": true,
"debounceMs": 2000,
"batchSize": 10,
"maxConcurrentUpdates": 3
}
}
  • debounceMs : Attendre cette durée après la dernière modification de fichier avant de mettre à jour l'index. Des valeurs plus élevées réduisent la fréquence des mises à jour mais regroupent davantage de modifications.
  • batchSize : Nombre de fichiers à traiter dans chaque lot de mise à jour.
  • maxConcurrentUpdates : Nombre maximum de workers de mise à jour parallèles.

Optimisation de la synchronisation cloud​

Si vous avez activé la synchronisation cloud, cela peut affecter les performances sur les connexions plus lentes :

{
"cursor.contextSync.cloud": {
"enabled": true,
"syncInterval": 300000,
"compressBeforeSync": true,
"maxSyncSize": 50000000
}
}
astuce

Si vous travaillez souvent hors ligne, augmentez l'intervalle de synchronisation pour éviter les tentatives de connexion inutiles. L'index local reste entièrement fonctionnel sans synchronisation cloud, il ne sera simplement pas partagé entre les appareils.

Dépannage avancé​

Diagnostic d'index périmé​

Si l'IA fait référence à du code obsolète ou manque des modifications récentes, l'index peut être périmé :

# Palette de commandes : Cursor: Validate Index Integrity

Cette commande vérifie :

  • Les fichiers dans l'index qui n'existent plus sur le disque
  • Les fichiers sur le disque qui ne sont pas dans l'index
  • Les fichiers dont le hachage de contenu ne correspond pas à la version indexée
  • Les entrées d'index orphelines
# Exemple de sortie
Index Integrity Report
======================
Total discrepancies: 14
Missing from index: 3 files
Stale entries: 8 files
Orphaned entries: 3 files

Recommended action: Run "Cursor: Reindex Workspace" to fix all discrepancies.

Débogage des problèmes de surveilleur de fichiers​

Si les modifications de fichiers ne sont pas captées par Context Sync, le surveilleur de fichiers peut ne pas fonctionner correctement :

# Palette de commandes : Cursor: Test File Watcher

Cette commande crée un fichier de test temporaire et surveille si le surveilleur le détecte :

File Watcher Test
=================
Creating test file: .cursor-test-watcher-12345.txt
Waiting for watcher response...
Watcher detected change: YES (after 0.3s)
File watcher is functioning correctly.

If you are experiencing sync issues, the problem may be with
specific directories. Check your exclude patterns.

Vérification de la santé du service d'intégration​

// Dans settings.json, activer les diagnostics d'intégration
{
"cursor.contextSync.debugEmbeddings": true
}

Avec cela activé, le panneau de sortie affichera des informations d'intégration détaillées :

[DEBUG] Embedding request: file=src/auth/login.ts, chunks=3, tokens=1842
[DEBUG] Embedding response: success, cache=hit, duration=12ms
[DEBUG] Embedding request: file=src/auth/register.ts, chunks=4, tokens=2103
[DEBUG] Embedding response: success, cache=miss, duration=894ms
[DEBUG] Embedding batch complete: 7 files, 24 chunks, 6 cache hits
attention

Si toutes les demandes d'intégration affichent cache=miss et de longues durées, le cache d'intégration peut être corrompu ou trop petit. Essayez d'augmenter la taille du cache dans les paramètres ou de vider entièrement le cache.

Analyse des journaux​

Pour les problèmes persistants, collectez un journal de diagnostic et analysez-le :

# Palette de commandes : Cursor: Generate Diagnostic Report

Cela crée un rapport complet qui inclut :

  • La configuration de Context Sync
  • Les statistiques d'index
  • Le journal d'erreurs récentes
  • Le statut du surveilleur de fichiers
  • La santé du service d'intégration
  • Les informations système

Le rapport est enregistré à :

# Windows
%USERPROFILE%\Desktop\cursor-diagnostic-report.txt

# macOS / Linux
~/Desktop/cursor-diagnostic-report.txt

Meilleures pratiques pour Context Sync​

Maintenance régulière​

  • Hebdomadairement : Exécuter « Validate Index Integrity » pour détecter les divergences tôt
  • Mensuellement : Examiner et mettre à jour les modèles d'exclusion selon les changements de projet
  • Après les refactorings majeurs : Déclencher une réindexation complète pour capturer les changements structurels
  • Après les mises à jour de dépendances : Vider le cache pour éviter les intégrations périmées

Organisation de l'espace de travail​

// Paramètres recommandés pour la plupart des projets
{
"cursor.contextSync.exclude": [
"**/node_modules/**",
"**/dist/**",
"**/build/**",
"**/.git/**",
"**/*.log",
"**/*.min.*",
"**/coverage/**"
],
"cursor.contextSync.maxFileSize": 1048576,
"cursor.contextSync.incremental": {
"enabled": true,
"debounceMs": 2000
}
}
astuce

Si vous travaillez sur plusieurs projets dans le même espace de travail, utilisez des fichiers d'espace de travail multi-racines pour séparer les contextes d'index. Chaque dossier racine obtient son propre index, ce qui améliore la pertinence et réduit la taille de l'index.

Gestion des grands fichiers générés​

Les fichiers générés comme les définitions de types, la sortie compilée et les clients API auto-générés peuvent enfler l'index. Utilisez un fichier .cursorignore séparé pour un contrôle fin :

# .cursorignore
# Exclure tous les fichiers de types générés
src/types/generated/**
# Exclure les grands fichiers de schéma
schema/**/*.json
# Exclure les fixtures de test
test/fixtures/**
# Exclure les fichiers de migration (rarement nécessaires pour le contexte IA)
migrations/**
attention

Si vous excluez les fichiers de migration, assurez-vous de les inclure lorsque vous travaillez sur des tâches liées aux bases de données. Vous pouvez temporairement supprimer l'exclusion ou utiliser la commande Cursor: Index File pour indexer des fichiers spécifiques à la demande.

Conclusion​

Context Sync est l'épine dorsale de l'assistance de code intelligente de Cursor. En comprenant comment fonctionne l'indexation, en sachant comment diagnostiquer et réparer les problèmes courants, et en appliquant les stratégies d'optimisation de ce guide, vous pouvez vous assurer que votre assistant IA dispose toujours d'un contexte précis et à jour sur votre base de code.

Les points clés à retenir sont : gardez vos modèles d'exclusion à jour, effectuez des vérifications d'intégrité régulières, et n'hésitez pas à faire une réindexation complète lorsque les choses semblent mal tourner. Un index sain signifie des réponses IA plus rapides et plus précises, ce qui se traduit directement par une productivité de développeur améliorée.