Au sein des grandes organisations logicielles, le code source existe rarement de manière isolée dans un dépôt unique. Les microservices échangent des données via des interfaces RPC distribuées, les applications frontend dépendent de contrats d'API versionnés et les règles métier fondamentales reposent souvent sur des monolithes hérités (legacy) développés au fil des années. Lorsque les équipes de développement tentent de comprendre, de refactoriser ou de faire évoluer ces systèmes complexes avec des assistants IA traditionnels, elles se heurtent à une limite structurelle : la majorité des outils n'inspectent que le fichier ou le dossier localement ouvert dans l'éditeur. Ils n'ont aucune visibilité sur les bibliothèques partagées, les services avals et les choix d'implémentation historiques situés dans d'autres dépôts.
Sourcegraph Cody résout cette difficulté en découplant la recherche de contexte de l'espace de travail local du développeur. S'appuyant sur l'infrastructure d'intelligence logicielle de Sourcegraph, Cody est capable d'extraire du contexte sémantique à travers des centaines, voire des milliers de dépôts hébergés sur GitHub, GitLab, Bitbucket ou des serveurs Git internes.
Ce guide explique en détail comment les équipes d'ingénierie configurent Sourcegraph Cody avec un contexte multi-dépôts (Multi-Repository Context), l'architecture administrative nécessaire pour indexer et sécuriser le code de l'entreprise, et la manière dont les développeurs exploitent cette capacité pour décrypter le code hérité non documenté et effectuer des recherches globales.
1. Principes d'architecture : fonctionnement du contexte multi-dépôts
Contrairement aux outils d'IA qui se limitent à une indexation vectorielle locale sur le poste client, la recherche multi-dépôts de Cody repose sur une architecture centralisée :
┌─────────────────────────────────────────────────────────────┐
│ IDE du développeur │
│ (VS Code / JetBrains / Visual Studio / Cody Web) │
│ - Pastilles de contexte : fichier actif + dépôts épinglés │
│ - Mentions @ ciblées (@repo, @dir, @file, @symbol) │
└──────────────────────────────┬──────────────────────────────┘
│ HTTPS / Jeton d'accès
▼
┌─────────────────────────────────────────────────────────────┐
│ Instance Sourcegraph Enterprise │
│ (Cloud ou Auto-hébergée) │
│ │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ Moteur de recherche │ │ Code Graph │ │
│ │ (Index Zoekt Trigram) │ │ (Graphe sémantique) │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ Filtres de contexte │ │ Synchronisation droits │ │
│ │ (Exclusion de dépôts) │ │ (GitHub/GitLab RBAC) │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
└──────────────────────────────┬──────────────────────────────┘
│ Prompt + fragments de code précis
▼
┌─────────────────────────────────────────────────────────────┐
│ Fournisseur de LLM (Cody Gateway) │
│ (Claude 3.7 / 3.5 Sonnet, GPT-4o, etc.) │
└──────────────────────────────┘
- Indexation centralisée des dépôts : Sourcegraph indexe l'ensemble des gestionnaires de versions connectés grâce à Zoekt (un moteur de recherche textuelle par trigrammes à très haute vitesse) et aux indexeurs SCIP (Source Code Intelligence Protocol). Cette base génère un graphe de symboles mondial documentant les définitions, références d'appels et héritages d'interfaces.
- Recherche respectueuse des habilitations : Cody applique strictement les droits d'accès définis sur les forges logicielles. Lorsqu'un ingénieur pose une question, Cody n'extrait d'informations que depuis les dépôts auxquels l'utilisateur a légitimement le droit d'accéder, évitant toute fuite d'informations sensibles.
- Injection sélective du contexte : Plutôt que de saturer le prompt du modèle de langage avec des dépôts entiers — ce qui excéderait la fenêtre de contexte et dégraderait la précision du LLM —, Cody interroge l'API de recherche de Sourcegraph pour n'extraire que les déclarations de types, les contrats d'interface et les blocs de code directement pertinents.
Le contexte multi-dépôts est une fonctionnalité intégrée à l'offre Cody Enterprise (disponible via Sourcegraph Cloud ou en déploiement auto-hébergé). Les éditions Cody Free et Pro sont principalement conçues pour l'analyse d'un dépôt local unique.
2. Infrastructure et configuration administrative
La mise en œuvre commence sur l'instance Sourcegraph de l'entreprise. Les administrateurs doivent s'assurer que les forges logicielles sont synchronisées, que les index de graphe de code sont opérationnels et que Cody Enterprise est activé.
Étape 1 : Connexion des forges logicielles et synchronisation des dépôts
Dans la console d'administration, accédez à Site Admin > Code Hosts (/site-admin/external-services) et configurez les connecteurs vers vos plateformes de versions (par exemple GitHub Enterprise, GitLab Self-Managed ou Bitbucket Data Center).
Définissez les règles de synchronisation pour inclure tant les microservices récents que les monolithes historiques et les bibliothèques transverses :
{
"url": "https://github.com",
"token": "ghp_yourEnterpriseSyncToken",
"orgs": ["engineering-core", "legacy-platforms", "shared-libraries"]
}
Vérifiez que les tâches de clonage en arrière-plan et de synchronisation périodique s'exécutent sans erreur d'authentification.
Étape 2 : Configuration du Code Graph et de l'indexation automatique
Si la recherche textuelle avec Zoekt est opérationnelle dès le clonage, l'analyse fine des dépendances du code hérité nécessite une navigation sémantique précise (suivre les définitions et références à travers les dépôts) :
- Dans Site Admin > Code Navigation, activez l'indexation automatique (Auto-indexing).
- Pour les langages clés (Go, TypeScript/JavaScript, Java, Python, C++), configurez les pipelines CI/CD (GitHub Actions, GitLab CI) afin d'exécuter les indexeurs SCIP appropriés (
scip-typescript,scip-java,scip-python, etc.) et de téléverser les données vers l'instance. - Les données SCIP permettent à Cody d'identifier avec certitude les implémentations et appelants d'un symbole sans recourir à des conjectures approximatives.
Étape 3 : Activation de Cody dans la configuration du site
Accédez à Site Admin > Site Configuration (/site-admin/configuration) et ajoutez les paramètres suivants :
{
"cody.enabled": true,
"completions": {
"provider": "sourcegraph"
}
}
Configurez un modèle LLM performant sur les contextes larges (comme Anthropic Claude 3.5 Sonnet, Claude 3.7 Sonnet ou Azure OpenAI GPT-4o via Cody Gateway). Vérifiez que l'indicateur cody.restrictUsersFeatureFlag n'est pas activé s'il n'est pas requis.
Étape 4 : Configuration des filtres de contexte (Context Filters) pour les dépôts confidentiels
Certains dépôts contiennent des clés cryptographiques, des processus soumis aux normes bancaires PCI ou des secrets industriels qui ne doivent en aucun cas être transmis aux requêtes d'IA.
Les administrateurs peuvent recourir aux Context Filters (cody.contextFilters) pour exclure globalement ces dépôts :
{
"cody.contextFilters": {
"exclude": [
{ "repo": "github.com/company/pci-vault-service" },
{ "repo": "github.com/company/compliance-secrets-.*" }
]
}
}
3. Configuration du poste de développement (VS Code, JetBrains et Web)
Une fois l'infrastructure prête, les développeurs peuvent connecter leurs environnements locaux pour exploiter la base de code globale.
Étape 1 : Connexion de l'extension IDE
- Installez l'extension officielle Cody dans VS Code, la suite JetBrains (IntelliJ, PyCharm, GoLand, WebStorm) ou Visual Studio.
- Cliquez sur l'icône Cody dans la barre latérale et sélectionnez Sign In with Sourcegraph Enterprise.
- Saisissez l'URL de votre instance d'entreprise :
https://sourcegraph.internal.company.com - Authentifiez-vous via le système d'authentification unique (SSO) de l'entreprise ou renseignez un jeton d'accès généré dans vos préférences utilisateur Sourcegraph.
Étape 2 : Déclaration du codebase local (cody.codebase)
En temps normal, Cody détecte automatiquement l'origine distante Git de votre espace de travail et l'associe au dépôt correspondant sur l'instance.
Si votre répertoire local porte un nom différent ou s'inscrit dans une structure de sous-modules complexe, spécifiez explicitement l'identifiant dans les paramètres de votre projet (.vscode/settings.json) :
{
"cody.codebase": "github.com/organization/core-payment-service"
}
Étape 3 : Gestion du contexte multi-dépôts dans le chat
À l'ouverture d'une nouvelle session Cody Chat, des pastilles de contexte par défaut s'affichent au-dessus du champ de saisie :
- Le fichier actuellement ouvert
- Le dépôt du projet local
Pour étendre la recherche à d'autres dépôts de l'organisation :
- Barre de gestion de contexte (Context Chips) : Cliquez sur la barre de contexte pour rechercher et épingler jusqu'à 10 dépôts distants dans la conversation. Toutes les questions posées dans cette session interrogeront simultanément ces bases de code.
- Mentions ciblées avec
@:@repo/organization/legacy-billing-monolith: Intègre l'ensemble du dépôt de facturation hérité.@dir/organization/auth-service/pkg/middleware: Isole la recherche à un répertoire ou package particulier.@file/organization/proto-contracts/v2/payment.proto: Charge la définition d'un schéma d'API sans avoir à cloner le projet en local.@symbol: Fait référence à une classe, une interface ou une méthode indexée sur l'ensemble du patrimoine applicatif.
- Application Cody Web : Si un développeur souhaite étudier l'architecture sans ouvrir un environnement de développement local, il peut se connecter directement sur l'interface web de Sourcegraph, cliquer sur l'icône Cody et soumettre ses requêtes sur l'intégralité des dépôts indexés.
4. Guide pratique : Expliquer le code hérité à travers plusieurs dépôts
Les systèmes hérités posent des défis bien connus : absence des auteurs initiaux, documentation obsolète ou inexistante et logique distribuée entre microservices et scripts par lots. Voici comment les équipes s'appuient sur Cody pour surmonter ces obstacles :
Scénario A : Suivre une chaîne d'appels distribuée de bout en bout
Diagnostic d'une perte occasionnelle de notifications de commande entre un service moderne de paiement et un monolithe hérité de facturation :
Avec le service moderne checkout-service ouvert dans l'éditeur :
Question du développeur :
@checkout-service @legacy-billing-monolith @event-bus-contracts"Retrace comment l'événementOrderSubmittedEventémis par le service Checkout est reçu et traité par le monolithe de facturation hérité. Quelles tables SQL sont modifiées et dans quelles conditions de logique métier le débit du compte client est-il ignoré ?"
Fonctionnement interne de Cody :
- Analyse la structure du message décrite dans
@event-bus-contracts. - Repère dans
@legacy-billing-monolithles écouteurs de files d'attente (queue consumers) abonnés au sujet. - Remonte les classes transactionnelles et identifie les requêtes SQL et procédures stockées de mise à jour de solde.
- Met en lumière les règles d'exception cachées (par exemple une liste blanche d'anciens identifiants partenaires codée en dur) qui provoquent le contournement du prélèvement.
Scénario B : Décrypter des algorithmes métier complexes sans documentation
Compréhension d'une machine à états ou d'un calcul de remise sans aucun commentaire explicatif :
Question du développeur :
@core-monolith/src/main/resources/rules/pricing_engine_v1.rb@pricing-integration-tests"Explique la machine à états et les cas limites traités danscalculate_tiered_rebate. Recoupe cela avec les tests d'intégration historiques de@pricing-integration-testspour justifier l'application d'un ajustement négatif lorsque les seuils franchissent les clôtures trimestrielles."
Cody confronte le code de production aux assertions des jeux de tests historiques, traduisant des enchaînements de conditions complexes en une spécification fonctionnelle claire.
Scénario C : Évaluation d'impact lors de la dépréciation d'une API
Avant de décommissionner un ancien endpoint RPC interne :
Question du développeur :
@user-profile-service @notification-service @reporting-worker"Nous prévoyons de déprécierGetUserPreferencesV1dans@user-profile-service. Quels services avals parmi ceux épinglés appellent ce point de terminaison, quels champs exploitent-ils réellement et quelles modifications sont nécessaires pour basculer surGetUserPreferencesV2?"
Cody localise l'ensemble des appels clients, dresse la liste des champs effectivement utilisés et produit un exemple concret de refactorisation pour chaque service consommateur.
5. Recherche transversale et identification de standards dans l'organisation
La recherche classique exige de connaître des noms de symboles stricts ou des expressions régulières complexes. Cody associe la compréhension du langage naturel au moteur de recherche de Sourcegraph pour répondre aux interrogations d'ingénierie globale.
Découvrir les implémentations de référence et limiter la duplication
Lorsque l'organisation s'agrandit, différentes équipes ont tendance à réécrire leurs propres mécanismes de limitation de débit (rate limiting), de réessais HTTP ou de gestion de jetons :
Question du développeur : "Comment nos microservices en Go gèrent-ils la limitation de débit distribuée avec Redis ? Indique-moi la bibliothèque interne standard la plus utilisée ou l'implémentation de référence dans l'entreprise."
Cody explore les dépôts de l'entreprise, évalue les dépendances et recommande la bibliothèque transverse officielle (comme pkg/ratelimit) accompagnée d'un exemple d'usage canonique.
Audit des pratiques de sécurité et de conformité
Lors d'un audit de sécurité ou d'un chantier de modernisation :
Question du développeur :
@payment-service @auth-service @mobile-api-gateway"Comment est configurée la validation des jetons JWT dans ces dépôts ? Existe-t-il des services qui ignorent la vérification des signatures ou qui acceptent des algorithmes obsolètes sans rotation de clés (comme un RS256 non vérifié) ?"
Cody examine les intergiciels (middlewares) d'authentification et résume les incohérences de sécurité détectées entre les différents composants.
6. Bonnes pratiques, pièges courants et recommandations opérationnelles
Pour concilier pertinence des réponses et réactivité lors de l'utilisation du contexte multi-dépôts, il est recommandé d'adopter les principes suivants :
| Bonne pratique | Règle technique |
|---|---|
| Épingler entre 2 et 5 dépôts clés par session | Bien que Cody accepte jusqu'à 10 dépôts simultanés, multiplier les dépôts hors sujet introduit du bruit dans le contexte RAG et disperse l'attention du modèle. |
Cibler les contrats avec des mentions @file ou @dir | Pointer explicitement vers les fichiers de spécification (.proto, OpenAPI YAML, schémas GraphQL) garantit que les réponses se fondent sur les contrats officiels d'API. |
| Maintenir à jour l'indexation sémantique SCIP | La recherche textuelle trouve des correspondances brutes, mais seul le graphe SCIP assure une navigation exacte entre définitions et appels distants. Intégrez SCIP dans l'intégration continue. |
| Vérifier les pastilles de contexte avant de valider la question | Nettoyez la barre de contexte pour supprimer les fichiers temporaires locaux qui ne sont pas utiles à la question d'architecture. |
| Associer Cody et Sourcegraph Batch Changes | Utilisez Cody pour analyser le code hérité et concevoir le plan de migration, puis appliquez automatiquement les modifications sur des dizaines de dépôts grâce à Batch Changes. |
Conclusion
La configuration de Sourcegraph Cody avec un contexte multi-dépôts transforme les assistants de développement : d'un simple outil d'autocomplétion local, ils deviennent un véritable centre d'intelligence architecturale pour toute l'entreprise. En combinant synchronisation centralisée des dépôts, graphes de code sémantiques et gestion rigoureuse des habilitations, Cody permet aux équipes d'ingénierie de percer les mystères des systèmes hérités, de sécuriser leurs migrations et d'explorer le patrimoine logiciel de l'organisation avec une efficacité et une fiabilité inédites.