Copilot Spaces, Agentic Memory e Repository Indexing
L'un des facteurs les plus critiques qui déterminent la qualité des réponses d'un assistant IA c'est le contexte. Plus un modèle de langage comprend votre projet, vos conventions et vos objectifs, meilleures sont les suggestions qu'il produit. Jusqu'à récemment, fournir du contexte à Copilot nécessitait des efforts manuels : ouvrir des fichiers pertinent, rédiger des invites détaillées, répéter les informations déjà fournies lors des sessions des précédents.
Avec l'introduction de Espaces copilotes, Mémoire agentique e les améliorations à Indexation du référentiel, GitHub a résolu ce problème problème de manière structurelle. Ces trois outils fonctionnent en synergie pour garantir que Copilot dispose toujours du bon contexte au bon moment, réduisant considérablement la nécessité de répéter les informations et d’améliorer la cohérence des réponses dans le temps.
Dans ce quatorzième article de la série, nous explorerons chacun en détail ces outils : comment ils fonctionnent, comment les configurer et comment les utiliser au mieux pour maximiser la productivité dans le travail quotidien.
Vue d'Ensemble de la Série Complète
| # | Article | Focus |
|---|---|---|
| 1 | Foundation e Mindset | Setup e mentalita' |
| 2 | Concept et exigences | De l'idée au MVP |
| 3 | Architecture back-end | API e database |
| 4 | Structure frontale | UI e componenti |
| 5 | Prompt Engineering | Prompt e Agenti MCP |
| 6 | Testing e qualità' | Unit, integration, E2E |
| 7 | Documentation | README, API docs, ADR |
| 8 | Deploy e DevOps | Docker, CI/CD |
| 9 | Evoluzione | Scalabilità' e manutenzione |
| 10 | Coding Agent | Agent de développement autonome |
| 11 | Code Review | Review automatica AI |
| 12 | Copilot Edits | Editing multi-file |
| 13 | GitHub Spark | Application en langage naturel |
| 14 | Sei qui → Spaces e Memory | Contesto organizzato e memoria |
| 15 | Modelli AI | Guide pour choisir le modèle |
| 16 | Personalizzazione | Custom instructions e knowledge |
| 17 | Enterprise | Copilote pour les organisations |
| 18 | Extensions | Étendre Copilot avec des outils |
| 19 | Sicurezza | Sicurezza e compliance AI |
Espaces copilotes : organiser le contexte pour des conversations ciblées
Espaces copilotes C'est une fonctionnalité qui vous permet de créer collections organisées de contexte pour les conversations avec Copilot. Un espace est essentiellement un conteneur dans lequel vous pouvez inclure différents types de informations pertinentes à une tâche, un projet ou un domaine de travail particulier. Au lieu de cela de devoir expliquer à Copilot à chaque fois sur quoi vous travaillez, vous créez un Espace une fois et réutilisez-le pour toutes les conversations liées à ce contexte.
Ce que vous pouvez inclure dans un espace
La force de Spaces réside dans la flexibilité des types de contenus pris en charge. Vous n'êtes pas limité au code : vous pouvez inclure toute information utile pour donner à Copilot le contexte nécessaire.
Types de contenu pris en charge
| Type | Description | Exemple d'utilisation |
|---|---|---|
| Repository | Interi repository GitHub o cartelle specifiche | Inclure le dépôt principal du projet |
| Fichier de codes | Fichiers uniques ou sélections de code | Le modèle de données, les principales API, les fichiers de configuration |
| Pull Request | PR ouverts ou fermés avec des différences et des commentaires | PR récent pour comprendre les derniers changements |
| Issue | Problème GitHub avec les discussions | Bug aperti, feature request, decisioni architetturali |
| Testo libero | Note, istruzioni, context in formato testo | Conventions d'équipe, règles commerciales, exigences |
| Immagini | Screenshot, diagrammi, wireframe | Conceptions de référence, schémas architecturaux |
| File caricati | Documents, PDF, fichiers de configuration | Spécifications techniques, documents d'exigences |
Smart Loading: Contesto Intelligente
Un aspect fondamental des espaces est le mécanisme Chargement intelligent. Lorsque vous incluez un référentiel dans un Espace, Copilot il ne charge pas tout le contenu du dépôt dans le cadre de la conversation. Cela serait impossible pour grand référentiel et inefficace même pour les petits.
Au lieu de cela, Smart Loading fonctionne de manière similaire à un moteur de recherche sémantique : quand tu poses une question, Copilot rechercher et récupérer dynamiquement seul les fichiers et les sections de code correspondant à votre demande spécifique. Cette approche offre le meilleur des deux mondes : vous avez accès à l'intégralité du référentiel comme source de contexte, mais seules les parties pertinentes occupent la fenêtre contextuelle du modèle.
Comment fonctionne le chargement intelligent
- Indexage: Lorsque vous ajoutez un référentiel à l'Espace, il est indexé pour la recherche sémantique
- Requêtes : Lorsque vous posez une question, Copilot analyse l'intention et identifie les sujets pertinents
- Récupération: Les fichiers et sections pertinents sont récupérés à partir de l'index
- Classement: Les résultats sont triés par pertinence
- Assemblage de contexte : Seuls les fragments les plus pertinents sont inclus dans l'invite du modèle
- Répondre: Le modèle génère la réponse avec un contexte précis et pertinent
Créer et gérer des espaces
La création d'un espace s'effectue via l'interface web GitHub ou directement de l'EDI. Le processus est simple et intuitif.
Créer un espace pour un projet
SPACE: "E-commerce Backend"
REPOSITORY INCLUSI:
- org/ecommerce-api (repository principale)
- org/shared-libs (librerie condivise)
- org/ecommerce-docs (documentazione)
FILE SPECIFICI:
- ecommerce-api/src/models/*.ts (tutti i modelli dati)
- ecommerce-api/prisma/schema.prisma (schema database)
- ecommerce-api/.copilot-instructions.md (convenzioni del progetto)
- ecommerce-api/docs/architecture.md (decisioni architetturali)
ISSUE INCLUSE:
- #234: "Migrare a Event-Driven Architecture" (in discussione)
- #267: "Performance degradation on product search" (bug critico)
TESTO LIBERO:
"Questo progetto usa NestJS con Prisma ORM. Il database e' PostgreSQL.
L'autenticazione e' basata su JWT con refresh token.
Le API seguono il pattern CQRS con event sourcing per gli ordini.
Usiamo il pattern Repository per l'accesso ai dati.
I test seguono la piramide: 70% unit, 20% integration, 10% E2E.
Il deploy avviene tramite GitHub Actions su AWS ECS."
Cas d'utilisation des espaces
Spaces est particulièrement utile dans les scénarios où le contexte est complexe, distribué sur plusieurs référentiels ou lorsque différentes personnes de l'équipe travaillent sur différents aspects du même projet.
Scenari d'Uso Comuni
| Scenario | Space Consigliato | Contenu à inclure |
|---|---|---|
| Projet multi-repo | Un espace par projet | Tutti i repo, schema condiviso, docs architetturali |
| Onboarding nuovo membro | "Intégration [Projet]" | README, guide setup, ADR, convenzioni, FAQ |
| Bug investigation | "Debug [Feature]" | File coinvolti, issue, log, stack trace |
| Feature development | "Feature [Nome]" | Spécifications, wireframes, fichiers à modifier, tests existants |
| Cross-team collaboration | "Integration [Team A + B]" | Contrats API, schéma partagé, documents d'accord |
| Migration project | "Migration [Legacy → New]" | Code hérité, nouvelle cible, mappage, plan de migration |
| Code review preparation | "Review [PR #xxx]" | PR, test, documentazione correlata, standard del team |
Meilleures pratiques pour les espaces
Faire
- Créez des espaces spécifiques au contexte (pas un espace générique pour tout)
- Incluez toujours les conventions du projet (fichier .copilot-instructions.md)
- Mettre à jour l'espace au fur et à mesure de l'évolution du projet
- Ajouter du texte libre pour les informations non présentes dans le code
- Partager des espaces avec les membres de l'équipe
- Inclure à la fois le code et la documentation associée
- Utiliser différents espaces pour différentes phases (développement, débogage, révision)
A éviter
- N'incluez pas trop de référentiels non pertinents (bruit dans le contexte)
- Ne créez pas un seul espace pour tout le travail
- N'oubliez pas de mettre à jour l'Espace après des changements importants
- N'incluez pas de fichiers binaires ou d'actifs volumineux
- Ne négligez pas le texte libre : c'est souvent le contexte le plus précieux
- Ne partagez pas d'espaces avec du contenu sensible sans vérifier les autorisations
- Ne surchargez pas un espace avec des dizaines de problèmes non pertinents
Mémoire agentique : mémoire persistante pour copilote
La Mémoire agentique C'est l'une des fonctionnalités les plus révolutionnaires introduit dans Copilot, actuellement disponible dans Accès anticipé pour utilisateurs des plans Avantages e Pro+. C'est un système de mémoire persistante qui permet à Copilot de mémoriser des informations appris lors d’interactions précédentes, éliminant le besoin de répétez les mêmes explications à chaque nouvelle session de chat.
Comment fonctionne la mémoire
La mémoire agentique fonctionne à travers un processus de déduction automatique. Lors des conversations avec Copilot, le système identifie les informations qui pourraient être utile à l'avenir et les enregistre comme "souvenirs". Ces mémoires ne sont pas des copies exactes de conversations, mais résumés structurés d'informations clés déduit de l’interaction.
Cycle de vie d'une mémoire
- Déduction: Lors d'une conversation, Copilot identifie les informations potentiellement utiles
- Création: Les informations sont synthétisées et enregistrées sous forme de mémoire structurée
- Association: La mémoire est associée au référentiel spécifique dans lequel elle a été créée
- Usage: Dans les conversations ultérieures dans le même référentiel, la mémoire est utilisée comme contexte
- Validation: Chaque fois que la mémoire est utilisée avec succès, sa durée de vie est prolongée
- Expiration: Les mémoires inutilisées expirent automatiquement après 28 jours
Types de souvenirs
Le système ne stocke pas tout sans discernement. Les souvenirs sont classés et filtré par pertinence, en se concentrant sur les informations qui ont une grande valeur de réutilisation.
Catégories de mémoires
| Catégorie | Esempi | Valore |
|---|---|---|
| Structure du projet | Organisation des dossiers, architecture, modules principaux | Évitez d'avoir à réexpliquer comment le code est organisé |
| Conventions de codage | Style de dénomination, motifs utilisés, règles de peluchage | Générer du code conforme aux normes de l'équipe |
| Pattern ricorrenti | Comment créer de nouveaux points de terminaison, comment rédiger des tests, comment gérer les erreurs | Lit les modèles approuvés sans nécessiter d'instructions |
| Decisioni tecniche | parce qu'une bibliothèque spécifique est utilisée, des compromis architecturaux | Propose des solutions alignées avec les choix de l'équipe |
| Informations sur le domaine | Règles métier, terminologie spécifique, contraintes réglementaires | Comprend le domaine sans explications répétées |
| Preferenze personali | Style de commentaire, niveau de détail, format de réponse | Personnalisez vos réponses en fonction de vos préférences |
Persistenza e Scadenza
Les souvenirs ont un cycle de vie bien défini, conçu pour équilibrer l'utilité et sa pertinence dans le temps.
Règles de persistance
| Regola | Détail |
|---|---|
| Durata iniziale | 28 jours à compter de la création |
| Rinnovo | Chaque utilisation réinitialise la minuterie de 28 jours |
| Scadenza | Suppression automatique après 28 jours d'inactivité |
| Scope | Mémoires spécifiques au référentiel (non globales) |
| Compattazione | A 95 % de la limite de jetons, les mémoires les moins pertinentes sont compactées |
| Privacy | Les mémoires ne sont pas partagées entre les utilisateurs ou les référentiels |
| Cancellazione | L'utilisateur peut supprimer manuellement n'importe quelle mémoire |
| Visibilità' | L'utilisateur peut visualiser toutes les mémoires actives |
Scope Repository-Specific
Un aspect fondamental de la mémoire agentique est que les souvenirs sont spécifique au référentiel. Les informations apprises en travaillant sur le le référentiel A ne sont pas utilisés lorsque vous travaillez sur le référentiel B. Cette conception veille à ce que le contexte soit toujours pertinent et évite la contamination entre différents projets.
Ce choix de conception a des implications importantes : Conventions du projet A ils n'affecteront pas les suggestions pour le projet B, même si vous utilisez le même compte Copilote. Chaque référentiel possède son « cerveau » indépendant, qui grandit et s'enrichit uniquement avec des interactions spécifiques à ce référentiel.
Implications de la portée pour les référentiels
- Monorepo : Dans un monorepo, toutes les mémoires sont partagées entre les modules (faites attention aux différentes conventions entre les modules)
- Fourchette: Les forks sont des référentiels distincts, donc les mémoires ne sont pas transférées
- Rebaptiser: Renommer le référentiel préserve les mémoires (l'ID interne reste le même)
- Multi-dépôt : Vous devez créer des mémoires distinctes pour chaque référentiel, même s'ils font partie du même projet
- Transferts : Transférer un référentiel vers une autre organisation préserve les souvenirs
Auto-Compattazione
Lorsque le volume de la mémoire atteint 95 % de la limite maximale de jetons alloué, le système active un processus auto-compactage. Les souvenirs ils sont évalués en fonction de la fréquence d’utilisation, de la récence et de la pertinence. Les souvenirs moins utilisées sont condensées ou supprimées pour laisser place à de nouvelles informations.
Ce mécanisme garantit que le « cerveau » Copilot de chaque référentiel reste concentré sur les informations les plus utiles, sans accumuler de débris d'informations qui pourrait dégrader la qualité des réponses. C'est un processus automatique qui ne fonctionne pas nécessite l'intervention de l'utilisateur, bien qu'il soit possible de gérer les mémoires manuellement si nécessaire.
Avantages pratiques de la mémoire agent
Avant et après la mémoire agent
| Scenario | Sans mémoire | Avec mémoire |
|---|---|---|
| Nouvelle session de chat | Vous devez réexpliquer la structure et les conventions du projet | Copilot sait déjà comment s'organise le projet |
| Creazione nuovo endpoint | Vous devez spécifier le modèle, le middleware, la validation | Copilot reproduit le modèle des points de terminaison existants |
| Risoluzione bug | Vous devez décrire le fonctionnement du système impliqué | Copilot connaît l'architecture et suggère où chercher |
| Code review | Vous devez expliquer les règles de l'équipe | Copilot applique automatiquement les conventions d'équipe |
| Refactoring | Vous devez définir l'architecture cible | Copilot connaît vos préférences architecturales |
| Testing | Devi specificare framework, stile, coverage target | Copilot génère des tests cohérents avec ceux existants |
| Documentation | Devi indicare formato, stile, convenzioni | Copilot produit des documents alignés avec le reste du projet |
Gestion manuelle de la mémoire
Bien que le système soit conçu pour être automatique, les utilisateurs disposent d'un accès complet contrôle sur les mémoires stockées. Tu peux:
- Voir: Accédez à la liste complète des mémoires pour chaque référentiel
- Modificare: Correggere memorie imprecise o aggiungere dettagli
- Eliminare: Rimuovere memorie obsolete o errate
- Forcer la création : Vous pouvez explicitement demander à Copilot de se souvenir de quelque chose
// Nella chat di Copilot, puoi dire:
"Ricorda che in questo progetto usiamo sempre
il pattern Result<T, E> per la gestione degli errori
invece di lanciare eccezioni. Ogni servizio deve
restituire Result<SuccessType, ErrorType>."
"Ricorda che le migrazioni del database vanno sempre
create con il comando: npx prisma migrate dev --name <nome-descrittivo>"
"Ricorda che il nostro naming convention per i branch e':
feature/JIRA-XXX-breve-descrizione
fix/JIRA-XXX-breve-descrizione
chore/JIRA-XXX-breve-descrizione"
"Ricorda che i test di integrazione devono usare
il database di test (TEST_DATABASE_URL) e non il
database di sviluppo."
Repository Indexing: Ricerca Semantica Istantanea
Il Indexation du référentiel c'est le moteur qui alimente la compréhension code profond par Copilot. Lorsqu'un référentiel est indexé, Copilot crée une représentation sémantique du code qui lui permet de comprendre non seulement la structure des fichiers, mais aussi le relations logiques entre les composants, le dépendances entre les modules et le flux de données à travers le système.
Indicizzazione Automatica
L'indexation se produit automatiquement la première fois qu'un utilisateur démarrer une conversation Copilot Chat dans un référentiel. Aucun n'est nécessaire configuration ou action manuelle. Une fois l'indexation terminée, tous Les utilisateurs Copilot accédant à ce référentiel bénéficient de l'index partagé.
Détails de l'indexation
| Aspetto | Détail |
|---|---|
| Trigger | Automatique dès la première conversation Copilot dans le référentiel |
| Velocita' | Moins de 60 secondes pour la plupart des référentiels |
| Aggiornamento | Incrémentiel à chaque poussée (fichiers modifiés uniquement) |
| Condivisione | L'index est partagé entre tous les utilisateurs Copilot du référentiel |
| Privacy | L'index n'est pas utilisé pour entraîner des modèles d'IA |
| Dimensione | Prend en charge des référentiels contenant jusqu'à des millions de lignes de code |
| Linguaggi | Toutes les langues prises en charge par GitHub |
| Branch | L'indexation couvre la branche par défaut (main/master) |
Qu'est-ce qui est indexé
L'indexation va bien au-delà d'un simple index de recherche de texte. Le système crée une compréhension sémantique un code qui comprend :
Niveaux d'indexation
| Livello | Quelles analyses | Beneficio |
|---|---|---|
| Structure du fichier | Organisation des dossiers, convention de dénomination, modèle de projet | Copilot comprend où chercher chaque type d'actif |
| Definizioni | Classi, interfacce, funzioni, tipi, costanti | Suggestions précises de types de méthodes et de signatures |
| Relazioni | Import/export, ereditarieta', composizione, dipendenze | Comprend l'impact des modifications sur d'autres fichiers |
| Pattern | Modèles architecturaux récurrents, conventions de codage | Générer du code cohérent avec les modèles existants |
| Logica | Flux de données, gestion des erreurs, transformations | Suggère des implémentations qui s'intègrent à la logique existante |
| Documentation | Commenti, JSDoc, README, markdown | Utiliser la documentation pour comprendre l'intention du code |
| Test | Test case, assertion, mock, fixture | Générer des tests cohérents avec la stratégie de tests du projet |
| Configuration | Config file, environment, build settings | Comprend l'environnement et les dépendances du projet |
Vitesse d'indexation
L'une des innovations les plus significatives est la réduction du temps indexation moins de 60 secondes. Dans les versions précédentes, l'indexation cela peut prendre des minutes, voire des heures pour les grands référentiels. Aujourd'hui, merci aux optimisations de l'algorithme d'intégration et de l'infrastructure d'indexation, la recherche sémantique est disponible presque instantanément.
Après l'indexation initiale, les mises à jour sont incrémentiel: lorsque vous poussez de nouveaux commits, seuls les fichiers modifiés sont réindexés, en gardant l'index est toujours mis à jour sans nécessiter une réindexation complète.
Impact sur la qualité des Réponses
L'indexation des référentiels a un impact direct et mesurable sur la qualité des Le copilote répond. Sans indexation, Copilot ne peut voir que les fichiers actuellement ouvert dans l'éditeur. Grâce à l'indexation, il a accès à l'intégralité base de code.
Exemple d'impact
| Question | Sans indexation | Avec indexation |
|---|---|---|
| « Comment le projet gère-t-il l'authentification ? » | Réponse générique basée sur les meilleures pratiques | Réponse spécifique décrivant le middleware JWT, le service d'authentification et les gardes |
| "Créer un nouveau point de terminaison de paiement" | Point de terminaison générique sans contexte | Point de terminaison qui suit les modèles de projet, avec un middleware, une validation et des erreurs cohérents |
| « Pourquoi le test X échoue-t-il ? | Analisi limitata al file del test | Analyse comprenant le service testé, les dépendances et les simulations nécessaires |
| « Quels fichiers dois-je modifier pour ajouter un champ au modèle utilisateur ? » | Juste le fichier modèle | Modello, migration, DTO, validazione, serializer, test, docs |
Enterprise Controls
Pour les organisations, Repository Indexing offre des contrôles granulaires pour gérer quels contenus sont indexés et lesquels sont exclus. C'est particulièrement important pour les référentiels contenant du code sensible ou des informations exclusives.
# File e cartelle da escludere dall'indicizzazione Copilot
# Simile a .gitignore ma specifico per Copilot
# Secrets e credenziali
.env
.env.*
**/secrets/
**/credentials/
**/*.pem
**/*.key
# Dati sensibili
**/fixtures/customers.json
**/seed/production-data.sql
# Codice proprietario
src/core/proprietary-algorithm/
src/core/patent-pending/
# File generati (rumore nell'indicizzazione)
dist/
build/
node_modules/
coverage/
*.min.js
*.bundle.js
# Vendor code
vendor/
third-party/
# File di grandi dimensioni (non utili per il contesto)
**/*.csv
**/*.sql.gz
**/*.dump
Synergie entre espaces, mémoire et indexation
Le véritable pouvoir de ces trois outils apparaît lorsqu’ils fonctionnent ensemble. Chacun couvre un aspect différent du problème de contexte et, ensemble, ils fournissent Copilot une compréhension complète et persistante du projet.
Comment les trois systèmes collaborent
| Strumento | Type de contexte | Persistenza | Scope |
|---|---|---|---|
| Repository Indexing | Struttura e relazioni del codice | Permanente (aggiornamento incrementale) | Intero repository |
| Copilot Spaces | Contexte multi-sources sélectionné par l'utilisateur | Persistant (géré par l'utilisateur) | Multi-repository |
| Agentic Memory | Connaissances déduites des interactions | 28 giorni (rinnovabile) | Repository specifico |
En gros, lorsque vous posez une question à Copilot :
- Indexation du référentiel récupère les fichiers et les structures de code pertinents
- Espaces ajoute un contexte supplémentaire (problème, relations publiques, documentation, notes)
- Mémoire agentique applique les conventions et les préférences apprises lors des sessions précédentes
- Tous ces contextes sont combinés et envoyés au modèle pour générer la réponse
Esempi Pratici
Voyons commente que ces outils s'appliquent dans des scénarios de travail quotidiens.
Exemple 1 : Espace de configuration pour un projet multi-repo
PROGETTO: E-commerce platform con 5 microservizi
REPOSITORY:
1. ecommerce-gateway (API Gateway - Node.js)
2. ecommerce-products (Catalogo prodotti - Python/FastAPI)
3. ecommerce-orders (Gestione ordini - Java/Spring Boot)
4. ecommerce-payments (Pagamenti - Go)
5. ecommerce-notifications (Notifiche - Node.js)
SPACE CONSIGLIATO: "E-commerce Platform"
CONTENUTI:
- Tutti i 5 repository
- File proto/ con le definizioni gRPC condivise
- File di OpenAPI di ogni servizio
- Documento di architettura (C4 model)
- ADR (Architecture Decision Records)
- Note sul team: "Il team payments e' esterno,
comunicazione via Slack #payments-integration"
RISULTATO:
Quando chiedi "Come funziona il flusso di checkout?",
Copilot può' tracciare il flusso attraverso tutti i servizi:
Gateway -> Products (verifica disponibilità')
-> Orders (crea ordine)
-> Payments (processa pagamento)
-> Notifications (invia conferma)
Exemple 2 : Utilisation de la mémoire pour les conventions
SESSIONE 1 (Giorno 1):
Developer: "Crea un nuovo servizio per la gestione delle fatture"
Copilot genera il servizio seguendo pattern generici.
Developer: "No, nel nostro progetto i servizi seguono sempre
questo pattern: InvoiceService extends BaseService<Invoice>
con i metodi findById, findAll, create, update, delete.
Usiamo anche il decorator @Injectable() e il pattern
Result<T, E> per gli errori."
Copilot genera la versione corretta.
>> MEMORIA CREATA: "I servizi seguono il pattern
BaseService<T> con decorator @Injectable() e Result<T,E>"
SESSIONE 2 (Giorno 5):
Developer: "Crea un servizio per gestire i clienti"
Copilot genera automaticamente:
- CustomerService extends BaseService<Customer>
- @Injectable() decorator
- Tutti i metodi CRUD con Result<T, E>
- Error handling coerente con InvoiceService
>> NESSUNA ISTRUZIONE AGGIUNTIVA NECESSARIA
Exemple 3 : indexation du référentiel pour l'exploration de code
CONTESTO: Nuovo sviluppatore sul progetto (50K righe di codice)
DOMANDE E RISPOSTE (con Repository Indexing):
D: "Come e' strutturato il progetto?"
R: Il progetto segue una Clean Architecture con 4 layer:
- src/domain/ (entita' e business rules)
- src/application/ (use cases)
- src/infrastructure/ (database, API esterne)
- src/presentation/ (controller, DTO, middleware)
[cita file e cartelle specifiche]
D: "Come funziona l'autenticazione?"
R: L'autenticazione usa JWT con refresh token:
- src/infrastructure/auth/jwt.strategy.ts (validazione)
- src/infrastructure/auth/auth.guard.ts (protezione route)
- src/application/auth/auth.service.ts (logica di login)
[mostra il flusso con riferimenti al codice reale]
D: "Dove devo mettere un nuovo endpoint per i report?"
R: Basandomi sulla struttura del progetto:
- Controller: src/presentation/controllers/report.controller.ts
- Service: src/application/services/report.service.ts
- Repository: src/infrastructure/repositories/report.repository.ts
- DTO: src/presentation/dto/report.dto.ts
- Test: test/unit/report.service.spec.ts
[segue esattamente il pattern degli altri endpoint]
Configuration avancée
Pour tirer le meilleur parti de ces outils, il est important de les configurer correctement en fonction des besoins du projet et de l'équipe.
File .copilot-instructions.md
Le dossier .copilot-instructions.md à la racine du référentiel vient
automatiquement inclus dans le contexte de chaque conversation Copilot. C'est la meilleure façon
chargé de fournir des instructions persistantes à Copilot pour un référentiel spécifique.
# Istruzioni per Copilot
## Stack Tecnologico
- Backend: NestJS 10 con TypeScript 5.3
- Database: PostgreSQL 16 con Prisma 5
- Cache: Redis 7
- Queue: BullMQ
- Testing: Jest + Supertest
- Linting: ESLint + Prettier
## Convenzioni di Coding
### Naming
- File: kebab-case (user.service.ts)
- Classi: PascalCase (UserService)
- Metodi: camelCase (findById)
- Costanti: UPPER_SNAKE_CASE (MAX_RETRY_COUNT)
- Interfacce: PascalCase con prefisso I (IUserRepository) -- NO, senza prefisso
### Pattern
- Servizi: estendono BaseService<T>
- Repository: implementano IRepository<T>
- Controller: usano @Controller() decorator con path plurale (/users, /orders)
- DTO: usano class-validator per validazione
- Errori: Result<T, AppError> pattern (mai throw eccezioni)
### Testing
- Unit test: file.spec.ts nella stessa cartella del sorgente
- Integration test: test/integration/ con database di test
- E2E test: test/e2e/ con supertest
- Coverage target: 80% per servizi, 60% per controller
### Git
- Branch: feature/PROJ-XXX-descrizione, fix/PROJ-XXX-descrizione
- Commit: conventional commits (feat:, fix:, chore:, docs:)
- PR: template in .github/PULL_REQUEST_TEMPLATE.md
## Regole di Business
- I prezzi sono sempre in centesimi (integer, mai float)
- Le date sono sempre in UTC
- Gli ID sono UUID v4
- Soft delete per tutte le entita' (campo deletedAt)
- Audit trail per ogni operazione CRUD (campo createdBy, updatedBy)
Ottimizzare l'Indicizzazione
Pour améliorer la qualité de l’indexation et les performances de recherche sémantique, suivez ces directives :
Améliorer la qualité
- Maintenir une structure de dossiers claire et cohérente
- Utilisez JSDoc/TSDoc pour documenter les fonctions et les classes
- Écrivez des commentaires significatifs pour une logique complexe
- Gardez les README à jour pour chaque module
- Utilisez des noms conviviaux pour les fichiers, les classes et les fonctions
- Documenter les relations entre les modules dans des fichiers README
Réduire le bruit
- Exclure les fichiers générés avec .copilotignore
- Exclure les dépendances inutiles du fournisseur
- Exclure les fichiers de données volumineux (CSV, dumps)
- Exclure le code existant qui n'est plus utilisé
- Exclure les fichiers de verrouillage (package-lock.json est utile, Yarn.lock l'est moins)
- Escludi asset binari (immagini, font, video)
Comparaison avec des approches alternatives
Pour contextualiser Espaces, Mémoire et Indexation, il est utile de les comparer avec les approches alternatives pour fournir un contexte à l’IA.
Confronto Approcci al Contesto
| Approccio | Avantages | Inconvénients | Quand l'Utiliser |
|---|---|---|---|
| Fichiers ouverts dans l'éditeur | Semplice, immediato | Contesto limitato ai file aperti | Modifiche locali a pochi file |
| #file mentions in chat | Controllo preciso | Manuel, nécessite une connaissance des fichiers | Questions sur des fichiers spécifiques |
| Repository Indexing | Automatique, complet | Code du référentiel uniquement | Toujours (activé par défaut) |
| Copilot Spaces | Multi-repo, multi-formato | Nécessite une configuration initiale | Progetti complessi, multi-repo |
| Agentic Memory | Automatico, persistente | Limité à 28 jours, pour les pensions | Convenzioni ricorrenti, pattern |
| .copilot-instructions.md | Persistente, condiviso col team | Texte uniquement, pas dynamique | Règles et conventions du projet |
| Prompt manuale dettagliato | Massimo controllo | Pas persistant, répétitif | Task specifici e complessi |
Limitazioni e Considerazioni
Malgré les avantages évidents, il est important de connaître les limites actuelles de ces outils pour les utiliser avec des attentes réalistes.
Limitazioni Attuali
| Strumento | Limitazione | Impact | Mitigazione |
|---|---|---|---|
| Spaces | Ne prend pas en charge la mise à jour automatique du contenu | Risque de contexte dépassé | Examen périodique spatial |
| Spaces | Limite du nombre de référentiels par Espace | Les projets très distribués peuvent ne pas tenir dans un seul espace | Créez des espaces thématiques plus petits |
| Memory | Expiration de 28 jours pour les souvenirs inutilisés | Connaissances perdues si elles ne sont pas réutilisées | Utilisez .copilot-instructions.md pour des informations permanentes |
| Memory | Scope limitato a singolo repository | Il ne transfère pas de connaissances entre les référentiels du même projet | Utiliser des espaces pour le contexte cross-repo |
| Memory | Uniquement disponible sur les forfaits Pro et Pro+ | Non accessible pour les forfaits Business Gratuit et Basic | Utiliser des fichiers d'instructions comme alternative |
| Indexing | Branche par défaut indexée uniquement | Les fonctionnalités de branche ne bénéficient pas de l’indexation | Fusions fréquentes dans la branche principale |
| Indexing | Fichiers exclus de .gitignore non indexés | Configurations locales hors contexte | Inclure des exemples de fichiers dans le référentiel |
| Tutti | Ils dépendent de la qualité du code et de la documentation | Repository mal documentati beneficiano meno | Investire in documentazione e commenti |
Confidentialité et sécurité des données
Un aspect important à considérer, notamment pour les équipes d'entreprise, concerne la confidentialité et la sécurité des données utilisées par ces outils.
Garanties de confidentialité
- Aucune formation : Les données d'espaces, de mémoire et d'indexation ne sont pas utilisées pour entraîner les modèles d'IA
- Isolation: Les mémoires sont isolées par utilisateur et par référentiel
- Cryptage : Les données sont chiffrées en transit et au repos
- Contrôle utilisateur : L'utilisateur peut supprimer toutes les mémoires et données à tout moment
- Exclusion de contenu : Votre organisation peut exclure des fichiers et des référentiels de l'indexation
- Conformité: Les données sont traitées conformément aux conditions de service de GitHub
- Résidence des données : Pour les forfaits Entreprise, les données peuvent être localisées dans des régions spécifiques
Conclusion
Les espaces copilotes, la mémoire agentique et l'indexation des référentiels représentent un saut qualitatif dans la façon dont nous fournissons du contexte aux outils d’IA de développement. Au lieu de répéter les mêmes informations à chaque séance, nous pouvons construire un écosystème de contexte persistant qui grandit et s’enrichit au fil du temps.
La combinaison de ces trois outils couvre tous les aspects du contexte : le code (Indexation du référentiel), le informations externes (Espaces) et le connaissance implicite (Mémoire). Ensemble, ils transforment Copilote d'assistant générique à partenaire qui connaît votre projet, vos conventions et préférences.
Le conseil pratique est le suivant : commencez par l'indexation du référentiel (automatique), ajoutez un
fichiers .copilot-instructions.md avec les conventions du projet, puis créer
Des espaces pour les contextes les plus complexes. La mémoire se développera naturellement avec le temps
à travers vos interactions quotidiennes.
Progression de la série
| # | Article | État |
|---|---|---|
| 1 | Foundation e Mindset | Terminé |
| 2 | Concept et exigences | Terminé |
| 3 | Architecture back-end | Terminé |
| 4 | Structure frontale | Terminé |
| 5 | Prompt Engineering | Terminé |
| 6 | Testing e qualità' | Terminé |
| 7 | Documentation | Terminé |
| 8 | Deploy e DevOps | Terminé |
| 9 | Evoluzione e Manutenzione | Terminé |
| 10 | Coding Agent | Terminé |
| 11 | Code Review | Terminé |
| 12 | Copilot Edits | Terminé |
| 13 | GitHub Spark | Terminé |
| 14 | Spaces e Memory | Sei qui |
| 15 | Modelli AI in Copilot | Prossimo |
| 16 | Personalizzazione | Prossimo |
| 17 | Enterprise | Prossimo |
| 18 | Extensions | Prossimo |
| 19 | Sicurezza e Compliance | Prossimo |







