Copilot Spaces, Agentic Memory und Repository-Indexing
Einer der kritischsten Faktoren, der die Qualität der Antworten eines KI-Assistenten bestimmt es ist das Kontext. Je besser ein Sprachmodell Ihr Projekt versteht, Je besser Ihre Konventionen und Ziele sind, desto besser sind die daraus resultierenden Vorschläge. Bis vor kurzem erforderte die Bereitstellung von Kontext für Copilot manuelle Anstrengungen: das Öffnen von Dateien relevant sein, detaillierte Aufforderungen verfassen, Informationen wiederholen, die bereits in den Sitzungen bereitgestellt wurden Präzedenzfälle.
Mit der Einführung von Copilot-Räume, Agentisches Gedächtnis e die Verbesserungen an Repository-Indizierung, GitHub hat dies behoben Problem auf strukturelle Weise. Diese drei Tools arbeiten synergetisch zusammen, um sicherzustellen dass Copilot immer den richtigen Kontext zur richtigen Zeit hat, was die Kosten drastisch reduziert die Notwendigkeit, Informationen zu wiederholen und die Konsistenz der Antworten im Laufe der Zeit zu verbessern.
In diesem vierzehnten Artikel der Serie werden wir jeden einzelnen Punkt im Detail untersuchen Diese Tools: wie sie funktionieren, wie man sie konfiguriert und wie man sie am besten nutzt um die Produktivität bei der täglichen Arbeit zu maximieren.
Übersicht der vollständigen Serie
| # | Artikel | Schwerpunkt |
|---|---|---|
| 1 | Grundlagen und Mindset | Setup und Denkweise |
| 2 | Ideenfindung und Anforderungen | Von der Idee zum MVP |
| 3 | Backend-Architektur | API und Datenbank |
| 4 | Frontend-Struktur | UI und Komponenten |
| 5 | Prompt Engineering | Prompts und MCP-Agenten |
| 6 | Testing und Qualität | Unit, Integration, E2E |
| 7 | Dokumentation | README, API Docs, ADR |
| 8 | Deploy und DevOps | Docker, CI/CD |
| 9 | Evolution | Skalierbarkeit und Wartung |
| 10 | Coding Agent | Autonomer Entwicklungsagent |
| 11 | Code Review | Automatische KI-Review |
| 12 | Copilot Edits | Multi-File-Editing |
| 13 | GitHub Spark | Apps aus natürlicher Sprache |
| 14 | Aktuell → Spaces und Memory | Organisierter Kontext und Memory |
| 15 | KI-Modelle | Modellauswahl-Leitfaden |
| 16 | Personalisierung | Benutzerdefinierte Anweisungen e knowledge |
| 17 | Enterprise | Copilot für Organisationen |
| 18 | Extensions | Copilot mit Tools erweitern |
| 19 | Sicherheit | Sicherheit e compliance AI |
Copilot Spaces: Kontext für zielgerichtete Gespräche organisieren
Copilot-Räume Es handelt sich um eine Funktion, mit der Sie etwas erstellen können organisierte Kontextsammlungen für Gespräche mit Copilot. Ein Space ist im Wesentlichen ein Container, in den Sie verschiedene Arten einschließen können Informationen, die für eine bestimmte Aufgabe, ein bestimmtes Projekt oder einen bestimmten Arbeitsbereich relevant sind. Stattdessen Da Sie Copilot jedes Mal erklären müssen, woran Sie gerade arbeiten, erstellen Sie einen Space einmal und verwenden Sie es für alle Konversationen im Zusammenhang mit diesem Kontext wieder.
Was Sie in einen Raum einbinden können
Die Stärke von Spaces liegt in der Flexibilität der unterstützten Inhaltstypen. Sie sind nicht nur auf den Code beschränkt – Sie können alle nützlichen Informationen hinzufügen Geben Sie Copilot den notwendigen Kontext.
Unterstützte Inhaltstypen
| Tipo | Beschreibung | Anwendungsbeispiel |
|---|---|---|
| Repository | Interi repository GitHub o cartelle specifiche | Fügen Sie das Haupt-Repo des Projekts hinzu |
| Codedatei | Einzelne Dateien oder Codeauswahlen | Das Datenmodell, die Haupt-APIs, die Konfigurationsdateien |
| Pull Request | PRs werden mit Unterschieden und Kommentaren geöffnet oder geschlossen | Aktuelle PR, um die neuesten Änderungen zu verstehen |
| Issue | GitHub-Problem mit Diskussionen | Bug aperti, feature request, decisioni architetturali |
| Testo libero | Note, istruzioni, context in formato testo | Teamkonventionen, Geschäftsregeln, Anforderungen |
| Immagini | Screenshot, diagrammi, wireframe | Referenzentwürfe, Architekturdiagramme |
| File caricati | Dokumente, PDFs, Konfigurationsdateien | Technische Spezifikationen, Anforderungsdokumente |
Smart Loading: Contesto Intelligente
Ein grundlegender Aspekt von Spaces ist der Mechanismus Intelligentes Laden. Wenn Sie ein Repository in einen Space einbinden, Copilot Es wird nicht der gesamte Inhalt geladen des Repositorys im Rahmen des Gesprächs. Dies wäre für uns unmöglich großes Repository und selbst für kleine ineffizient.
Stattdessen funktioniert Smart Loading ähnlich wie eine semantische Suchmaschine: wenn Sie eine Frage stellen, Copilot dynamisch suchen und abrufen allein die Dateien und Codeabschnitte, die für Ihre spezifische Anfrage relevant sind. Dieser Ansatz bietet das Beste aus beiden Welten: Sie haben Zugriff auf das gesamte Repository als Quelle Kontext, aber nur die relevanten Teile belegen das Kontextfenster des Modells.
So funktioniert Smart Loading
- Indizierung: Wenn Sie dem Space ein Repository hinzufügen, wird es für die semantische Suche indiziert
- Anfragen: Wenn Sie eine Frage stellen, analysiert Copilot die Absicht und identifiziert relevante Themen
- Abruf: Die relevanten Dateien und Abschnitte werden aus dem Index abgerufen
- Rang: Die Ergebnisse sind nach Relevanz sortiert
- Kontextmontage: Nur die relevantesten Fragmente werden in die Modellaufforderung einbezogen
- Antwort: Das Modell generiert die Antwort mit präzisem und relevantem Kontext
Räume erstellen und verwalten
Das Erstellen eines Spaces erfolgt über die GitHub-Weboberfläche oder direkt aus der IDE. Der Vorgang ist einfach und intuitiv.
Einen Raum für ein Projekt schaffen
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."
Anwendungsfälle für Räume
Leerzeichen sind besonders nützlich in Szenarien, in denen der Kontext komplex und verteilt ist über mehrere Repositories hinweg oder wo verschiedene Personen im Team an unterschiedlichen Aspekten arbeiten des gleichen Projekts.
Scenari d'Uso Comuni
| Scenario | Space Consigliato | Einzuschließende Inhalte |
|---|---|---|
| Multi-Repo-Projekt | Ein Space pro Projekt | Tutti i repo, schema condiviso, docs architetturali |
| Onboarding nuovo membro | „Onboarding [Projekt]“ | README, guide setup, ADR, convenzioni, FAQ |
| Bug investigation | "Debug [Feature]" | File coinvolti, issue, log, stack trace |
| Feature development | "Feature [Nome]" | Spezifikationen, Wireframes, zu bearbeitende Dateien, vorhandene Tests |
| Cross-team collaboration | "Integration [Team A + B]" | API-Verträge, gemeinsames Schema, Vereinbarungsdokumente |
| Migration project | "Migration [Legacy → New]" | Legacy-Code, neues Ziel, Mapping, Migrationsplan |
| Code review preparation | "Review [PR #xxx]" | PR, test, documentazione correlata, standard del team |
Best Practices für Räume
Zu tun
- Erstellen Sie kontextspezifische Spaces (keinen generischen Space für alles)
- Beziehen Sie immer Projektkonventionen ein (.copilot-instructions.md-Datei)
- Aktualisieren Sie den Space, während sich das Projekt weiterentwickelt
- Fügen Sie Freitext für Informationen hinzu, die nicht im Code vorhanden sind
- Teilen Sie Spaces mit Teammitgliedern
- Fügen Sie sowohl Code als auch zugehörige Dokumentation hinzu
- Verwenden Sie unterschiedliche Bereiche für verschiedene Phasen (Entwicklung, Debug, Überprüfung).
Zu vermeiden
- Schließen Sie nicht zu viele irrelevante Repositories ein (Rauschen im Kontext)
- Erstellen Sie keinen einzigen Raum für die gesamte Arbeit
- Vergessen Sie nicht, den Space nach wesentlichen Änderungen zu aktualisieren
- Schließen Sie keine großen Binärdateien oder Assets ein
- Vernachlässigen Sie nicht den Freitext: Er ist oft der wertvollste Kontext
- Teilen Sie keine Spaces mit vertraulichen Inhalten, ohne die Berechtigungen zu überprüfen
- Überladen Sie einen Space nicht mit Dutzenden irrelevanter Themen
Agentischer Speicher: Persistenter Speicher für Copilot
La Agentisches Gedächtnis Es ist eine der revolutionärsten Funktionen eingeführt in Copilot, derzeit verfügbar in Früher Zugriff für Nutzer der Pläne Profi e Pro+. Das ist ein Persistentes Speichersystem, das es Copilot ermöglicht Informationen merken bei früheren Interaktionen gelernt, wodurch die Notwendigkeit entfällt Wiederholen Sie die gleichen Erklärungen in jeder neuen Chat-Sitzung.
Wie Gedächtnis funktioniert
Agentic Memory durchläuft einen Prozess von automatischer Abzug. Bei Gesprächen mit Copilot identifiziert das System Informationen, die dies könnten in Zukunft nützlich sein und speichert sie als „Erinnerungen“. Diese Memoiren sind keine exakten Kopien von Gesprächen, aber strukturierte Zusammenfassungen der wichtigsten Informationen aus der Interaktion abgeleitet.
Lebenszyklus einer Erinnerung
- Abzug: Während eines Gesprächs identifiziert Copilot potenziell nützliche Informationen
- Schaffung: Die Informationen werden synthetisiert und als strukturiertes Gedächtnis gespeichert
- Verein: Der Speicher ist mit dem spezifischen Repository verknüpft, in dem er erstellt wurde
- Verwendung: Bei nachfolgenden Gesprächen im selben Repository wird der Speicher als Kontext verwendet
- Validierung: Jedes Mal, wenn der Speicher erfolgreich genutzt wird, verlängert sich seine Lebensdauer
- Ablauf: Nicht genutzte Speicher verfallen automatisch nach 28 Tagen
Arten von Erinnerungen
Das System speichert nicht alles wahllos. Erinnerungen werden kategorisiert und nach Relevanz gefiltert, wobei der Schwerpunkt auf Informationen mit hohem Wert liegt der Wiederverwendung.
Kategorien von Memoiren
| Kategorie | Esempi | Valore |
|---|---|---|
| Projektstruktur | Ordnerorganisation, Architektur, Hauptmodule | Vermeiden Sie es, die Organisation des Codes erneut erklären zu müssen |
| Codierungskonventionen | Benennungsstil, verwendete Muster, Flusenregeln | Generieren Sie Code, der den Teamstandards entspricht |
| Pattern ricorrenti | Wie Sie neue Endpunkte erstellen, wie Sie Tests schreiben, wie Sie mit Fehlern umgehen | Spielt genehmigte Muster ab, ohne dass Anweisungen erforderlich sind |
| Decisioni tecniche | Da eine bestimmte Bibliothek verwendet wird, sind architektonische Kompromisse erforderlich | Schlägt Lösungen vor, die auf die Entscheidungen des Teams abgestimmt sind |
| Domäneninformationen | Geschäftsregeln, spezifische Terminologie, regulatorische Einschränkungen | Versteht die Domäne ohne wiederholte Erklärungen |
| Preferenze personali | Kommentarstil, Detaillierungsgrad, Antwortformat | Personalisieren Sie Ihre Antworten basierend auf Ihren Vorlieben |
Persistenza e Scadenza
Erinnerungen haben einen klar definierten Lebenszyklus, der darauf ausgelegt ist, den Nutzen auszugleichen und Relevanz im Laufe der Zeit.
Persistenzregeln
| Regola | Detail |
|---|---|
| Durata iniziale | 28 Tage ab der Erstellung |
| Rinnovo | Bei jeder Verwendung wird der 28-Tage-Timer zurückgesetzt |
| Scadenza | Automatisches Löschen nach 28 Tagen Inaktivität |
| Scope | Repository-spezifische (nicht globale) Speicher |
| Compattazione | Bei 95 % des Token-Limits werden die am wenigsten relevanten Speicher komprimiert |
| Privacy | Speicher werden nicht zwischen Benutzern oder Repositorys geteilt |
| Cancellazione | Der Benutzer kann jeden Speicher manuell löschen |
| Visibilità' | Der Benutzer kann alle aktiven Erinnerungen anzeigen |
Scope Repository-Specific
Ein grundlegender Aspekt des Agentic Memory besteht darin, dass Erinnerungen vorhanden sind Repository-spezifisch. Die Informationen, die während der Arbeit an der gewonnen wurden Repository A werden nicht verwendet, wenn Sie an Repository B arbeiten. Dieses Design stellt sicher, dass der Kontext immer relevant ist und verhindert eine Kontamination dazwischen verschiedene Projekte.
Diese Designwahl hat wichtige Auswirkungen: Konventionen für Projekt A Sie wirken sich nicht auf Vorschläge für Projekt B aus, selbst wenn Sie dasselbe Konto verwenden Copilot. Jedes Repository hat sein unabhängiges „Gehirn“, das wächst und sich selbst bereichert nur mit Interaktionen, die für dieses Repository spezifisch sind.
Auswirkungen des Umfangs auf Repositories
- Monorepo: In einem Monorepo werden alle Erinnerungen zwischen den Modulen geteilt (achten Sie auf unterschiedliche Konventionen zwischen den Modulen).
- Gabel: Forks sind separate Repositorys, daher werden keine Erinnerungen übertragen
- Umbenennen: Repository umbenennen bewahrt Erinnerungen (interne ID bleibt gleich)
- Multi-Repo: Sie müssen für jedes Repository separate Speicher erstellen, auch wenn diese Teil desselben Projekts sind
- Überweisungen: Durch die Übertragung eines Repositorys an eine andere Organisation bleiben Erinnerungen erhalten
Auto-Compattazione
Wenn das Speichervolumen erreicht ist 95 % des maximalen Token-Limits zugeordnet ist, aktiviert das System einen Prozess Selbstverdichtung. Die Erinnerungen Sie werden nach Häufigkeit der Nutzung, Aktualität und Relevanz bewertet. Erinnerungen weniger Verwendete Inhalte werden verdichtet oder entfernt, um Platz für neue Informationen zu schaffen.
Dieser Mechanismus stellt sicher, dass das Copilot-„Gehirn“ für jedes Repository erhalten bleibt Konzentrieren Sie sich auf die nützlichsten Informationen, ohne dass sich Informationsmüll ansammelt könnte die Qualität der Antworten beeinträchtigen. Es ist ein automatischer Prozess, der das nicht tut erfordert einen Benutzereingriff, obwohl es möglich ist, die Speicher manuell zu verwalten ggf.
Praktische Vorteile des Agentenspeichers
Vor und nach dem Agentengedächtnis
| Scenario | Ohne Erinnerung | Mit Erinnerung |
|---|---|---|
| Neue Chat-Sitzung | Sie müssen die Projektstruktur und -konventionen neu erklären | Copilot weiß bereits, wie das Projekt organisiert ist |
| Creazione nuovo endpoint | Sie müssen Muster, Middleware und Validierung angeben | Copilot reproduziert das Muster vorhandener Endpunkte |
| Risoluzione bug | Sie müssen die Funktionsweise des betreffenden Systems beschreiben | Copilot kennt die Architektur und schlägt vor, wo man suchen muss |
| Code review | Sie müssen die Teamregeln erklären | Copilot setzt Teamkonventionen automatisch durch |
| Refactoring | Sie müssen die Zielarchitektur definieren | Copilot kennt Ihre architektonischen Vorlieben |
| Testing | Devi specificare framework, stile, coverage target | Copilot generiert Tests, die mit vorhandenen Tests konsistent sind |
| Dokumentation | Devi indicare formato, stile, convenzioni | Copilot erstellt Dokumente, die auf den Rest des Projekts abgestimmt sind |
Manuelle Speicherverwaltung
Obwohl das System auf Automatik ausgelegt ist, stehen den Benutzern alle Möglichkeiten zur Verfügung Kontrolle über die gespeicherten Erinnerungen. Du kannst:
- Sicht: Greifen Sie auf die vollständige Liste der Speicher für jedes Repository zu
- Modificare: Correggere memorie imprecise o aggiungere dettagli
- Eliminare: Rimuovere memorie obsolete o errate
- Erstellung erzwingen: Sie können Copilot explizit bitten, sich etwas zu merken
// 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 Repository-Indizierung Es ist der Motor, der das Verständnis fördert tiefer Code von Copilot. Wenn ein Repository indiziert wird, Copilot erstellt eine semantische Darstellung des Codes, die dies ermöglicht Verstehen Sie nicht nur die Struktur der Dateien, sondern auch die logische Beziehungen zwischen Komponenten, die Süchte zwischen Modulen und dem Datenfluss durch das System.
Indicizzazione Automatica
Die Indizierung erfolgt automatisch das erste Mal ein Benutzer Starten Sie eine Copilot-Chat-Konversation in einem Repository. Keines ist notwendig Konfiguration oder manuelle Aktion. Sobald die Indizierung abgeschlossen ist, alle Copilot-Benutzer, die auf dieses Repository zugreifen, profitieren vom gemeinsamen Index.
Indizierungsdetails
| Aspetto | Detail |
|---|---|
| Trigger | Automatisch beim ersten Copilot-Gespräch im Repository |
| Velocita' | Unter 60 Sekunden für die meisten Repositorys |
| Aggiornamento | Inkrementell bei jedem Push (nur geänderte Dateien) |
| Condivisione | Der Index wird von allen Copilot-Benutzern des Repositorys gemeinsam genutzt |
| Privacy | Der Index wird nicht zum Trainieren von KI-Modellen verwendet |
| Dimensione | Unterstützt Repositorys mit bis zu Millionen Codezeilen |
| Linguaggi | Alle von GitHub unterstützten Sprachen |
| Branch | Die Indizierung deckt den Standardzweig (Main/Master) ab. |
Was ist indiziert?
Die Indizierung geht weit über einen einfachen Textsuchindex hinaus. Das System schafft Verständnis Semantik ein Code, der Folgendes enthält:
Indizierungsebenen
| Livello | Was analysiert | Beneficio |
|---|---|---|
| Dateistruktur | Ordnerorganisation, Namenskonvention, Projektmuster | Copilot weiß, wo nach den einzelnen Asset-Typen gesucht werden muss |
| Definizioni | Classi, interfacce, funzioni, tipi, costanti | Präzise Vorschläge für Methodentypen und Signaturen |
| Relazioni | Import/export, ereditarieta', composizione, dipendenze | Versteht die Auswirkungen von Änderungen auf andere Dateien |
| Pattern | Wiederkehrende Architekturmuster, Codierungskonventionen | Generieren Sie Code, der mit vorhandenen Mustern übereinstimmt |
| Logica | Datenfluss, Fehlerbehandlung, Transformationen | Schlägt Implementierungen vor, die sich in die vorhandene Logik integrieren lassen |
| Dokumentation | Commenti, JSDoc, README, markdown | Verwenden Sie die Dokumentation, um die Absicht des Codes zu verstehen |
| Test | Test case, assertion, mock, fixture | Generieren Sie Tests im Einklang mit der Teststrategie des Projekts |
| Konfiguration | Config file, environment, build settings | Versteht die Umgebung und Abhängigkeiten des Projekts |
Indexierungsgeschwindigkeit
Eine der bedeutendsten Neuerungen ist die Reduzierung der Zeit Indizierung weniger als 60 Sekunden. In früheren Versionen Indizierung Bei großen Repositorys kann es Minuten oder sogar Stunden dauern. Heute, vielen Dank zu Optimierungen im Einbettungsalgorithmus und der Indexierungsinfrastruktur, Die semantische Suche ist fast sofort verfügbar.
Nach der ersten Indizierung erfolgen Aktualisierungen inkrementell: Wenn Sie neue Commits übertragen, werden nur die geänderten Dateien neu indiziert Der Index wird immer aktualisiert, ohne dass eine vollständige Neuindizierung erforderlich ist.
Auswirkungen auf die Qualität der Antworten
Die Repository-Indizierung hat einen direkten und messbaren Einfluss auf die Qualität von Copilot antwortet. Ohne Indizierung kann Copilot nur Dateien sehen derzeit im Editor geöffnet. Mit der Indizierung hat er Zugriff auf das Ganze Codebasis.
Beispiel für Wirkung
| Domanda | Ohne Indizierung | Mit Indexierung |
|---|---|---|
| „Wie geht das Projekt mit der Authentifizierung um?“ | Allgemeine Antwort basierend auf Best Practices | Spezifische Antwort, die JWT-Middleware, Authentifizierungsdienst und Wachen beschreibt |
| „Neuen Zahlungsendpunkt erstellen“ | Allgemeiner Endpunkt ohne Kontext | Endpunkt, der Projektmustern folgt, mit konsistenter Middleware, Validierung und Fehlern |
| „Warum schlägt Test X fehl?“ | Analisi limitata al file del test | Analyse einschließlich des zu testenden Dienstes, Abhängigkeiten und notwendiger Mocks |
| „Welche Dateien muss ich bearbeiten, um ein Feld zum Benutzermodell hinzuzufügen?“ | Nur die Vorlagendatei | Modello, migration, DTO, validazione, serializer, test, docs |
Enterprise Controls
Für Organisationen bietet Repository Indexing granulare Kontrollen für Verwalten Sie, welche Inhalte indiziert und welche ausgeschlossen werden. Das ist besonders Wichtig für Repositorys, die sensiblen Code oder proprietäre Informationen enthalten.
# 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 zwischen Räumen, Speicher und Indizierung
Die wahre Kraft dieser drei Tools kommt erst dann zum Vorschein, wenn sie zusammenarbeiten. Jeder deckt einen anderen Aspekt des Kontextproblems ab und zusammen stellen sie Copilot bereit ein vollständiges und nachhaltiges Verständnis des Projekts.
Wie die drei Systeme zusammenarbeiten
| Strumento | Art des Kontexts | Persistenza | Scope |
|---|---|---|---|
| Repository Indexing | Struttura e relazioni del codice | Permanente (aggiornamento incrementale) | Intero repository |
| Copilot Spaces | Vom Benutzer kuratierter Kontext aus mehreren Quellen | Persistent (vom Benutzer verwaltet) | Multi-repository |
| Agentic Memory | Aus Interaktionen abgeleitetes Wissen | 28 giorni (rinnovabile) | Repository specifico |
Wenn Sie Copilot eine Frage stellen, gilt Folgendes:
- Repository-Indizierung stellt relevante Dateien und Codestrukturen wieder her
- Räume Fügt zusätzlichen Kontext hinzu (Problem, PR, Dokumentation, Notizen)
- Agentisches Gedächtnis wendet die in früheren Sitzungen gelernten Konventionen und Vorlieben an
- Alle diese Kontexte werden kombiniert und an das Modell gesendet, um die Antwort zu generieren
Esempi Pratici
Sehen wir uns an, wie diese Tools in täglichen Arbeitsszenarien eingesetzt werden.
Beispiel 1: Einrichtungsbereich für Multi-Repo-Projekt
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)
Beispiel 2: Verwendung des Speichers für Konventionen
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
Beispiel 3: Repository-Indizierung für die Code-Exploration
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]
Erweiterte Konfiguration
Um diese Tools optimal nutzen zu können, ist es wichtig, sie richtig zu konfigurieren basierend auf den Bedürfnissen des Projekts und des Teams.
File .copilot-instructions.md
Die Datei .copilot-instructions.md im Stammverzeichnis des Repositorys kommt
automatisch in den Kontext jedes Copilot-Gesprächs einbezogen. Es ist der beste Weg
angewiesen, Copilot dauerhafte Anweisungen für ein bestimmtes Repository bereitzustellen.
# 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
Um die Qualität der Indizierung und Suchleistung zu verbessern Befolgen Sie zur Semantik die folgenden Richtlinien:
Verbessern Sie die Qualität
- Sorgen Sie für eine klare und konsistente Ordnerstruktur
- Verwenden Sie JSDoc/TSDoc, um Funktionen und Klassen zu dokumentieren
- Schreiben Sie aussagekräftige Kommentare für komplexe Logik
- Halten Sie die READMEs für jedes Modul auf dem neuesten Stand
- Verwenden Sie benutzerfreundliche Namen für Dateien, Klassen und Funktionen
- Dokumentieren Sie Beziehungen zwischen Modulen in README-Dateien
Lärm reduzieren
- Mit .copilotignore generierte Dateien ausschließen
- Schließen Sie unnötige Abhängigkeiten von Anbietern aus
- Große Datendateien (CSV, Dumps) ausschließen
- Schließen Sie Legacy-Code aus, der nicht mehr verwendet wird
- Sperrdateien ausschließen (package-lock.json ist nützlich, Yarn.lock weniger)
- Escludi asset binari (immagini, font, video)
Vergleich mit alternativen Ansätzen
Um Räume, Erinnerung und Indizierung zu kontextualisieren, ist es sinnvoll, sie mit Ansätzen zu vergleichen Alternativen, um der KI Kontext bereitzustellen.
Confronto Approcci al Contesto
| Approccio | Pro | Contro | Wann sollte man es verwenden? |
|---|---|---|---|
| Im Editor geöffnete Dateien | Semplice, immediato | Contesto limitato ai file aperti | Modifiche locali a pochi file |
| #file mentions in chat | Controllo preciso | Manuell, erfordert Kenntnisse über Dateien | Fragen zu bestimmten Dateien |
| Repository Indexing | Automatisch, vollständig | Nur Repository-Code | Immer (standardmäßig aktiviert) |
| Copilot Spaces | Multi-repo, multi-formato | Erfordert eine Ersteinrichtung | Progetti complessi, multi-repo |
| Agentic Memory | Automatico, persistente | Begrenzt auf 28 Tage für Repo | Convenzioni ricorrenti, pattern |
| .copilot-instructions.md | Persistente, condiviso col team | Nur Text, nicht dynamisch | Projektregeln und Konventionen |
| Prompt manuale dettagliato | Massimo controllo | Nicht anhaltend, repetitiv | Task specifici e complessi |
Limitazioni e Considerazioni
Trotz der offensichtlichen Vorteile ist es wichtig, die aktuellen Einschränkungen zu kennen dieser Tools, um sie mit realistischen Erwartungen zu nutzen.
Limitazioni Attuali
| Strumento | Limitazione | Impatto | Mitigazione |
|---|---|---|---|
| Spaces | Unterstützt keine automatische Inhaltsaktualisierung | Risiko eines veralteten Kontexts | Regelmäßige Überprüfung des Weltraums |
| Spaces | Begrenzen Sie die Anzahl der Repositorys pro Space | Sehr verteilte Projekte passen möglicherweise nicht in einen einzigen Bereich | Erstellen Sie kleinere thematische Räume |
| Memory | 28-tägiges Ablaufdatum für ungenutzte Speicher | Wissen geht verloren, wenn es nicht wiederverwendet wird | Verwenden Sie .copilot-instructions.md für dauerhafte Informationen |
| Memory | Scope limitato a singolo repository | Es wird kein Wissen zwischen Repositories desselben Projekts übertragen | Verwenden Sie Leerzeichen für den Repository-übergreifenden Kontext |
| Memory | Nur für Pro- und Pro+-Pläne verfügbar | Nicht verfügbar für Free- und Basic-Business-Tarife | Alternativ können Sie auch Anleitungsdateien verwenden |
| Indexing | Nur indizierter Standardzweig | Zweigfunktionen profitieren nicht von der Indizierung | Häufige Zusammenführungen in den Hauptzweig |
| Indexing | Von .gitignore ausgeschlossene Dateien werden nicht indiziert | Lokale Konfigurationen nicht im Kontext | Fügen Sie Beispieldateien in das Repository ein |
| Tutti | Sie hängen von der Qualität des Codes und der Dokumentation ab | Repository mal documentati beneficiano meno | Investire in documentazione e commenti |
Datenschutz und Sicherheit
Ein wichtiger Aspekt, den es insbesondere für Unternehmensteams zu berücksichtigen gilt, sind Bedenken den Datenschutz und die Sicherheit der von diesen Tools verwendeten Daten.
Datenschutzgarantien
- Keine Ausbildung: Speicherplatz-, Speicher- und Indexierungsdaten werden nicht zum Trainieren von KI-Modellen verwendet
- Isolierung: Speicher werden pro Benutzer und pro Repository isoliert
- Verschlüsselung: Daten werden während der Übertragung und im Ruhezustand verschlüsselt
- Benutzerkontrolle: Der Benutzer kann jederzeit alle Erinnerungen und Daten löschen
- Inhaltsausschluss: Ihre Organisation kann Dateien und Repositorys von der Indizierung ausschließen
- Einhaltung: Die Datenverarbeitung erfolgt gemäß den GitHub-Nutzungsbedingungen
- Datenspeicherort: Bei Enterprise-Plänen können Daten auf bestimmte Regionen lokalisiert werden
Fazit
Copilot Spaces, Agentic Memory und Repository-Indexing stellen einen qualitativen Sprung dar in der Art und Weise, wie wir der Entwicklung von KI-Tools einen Kontext bieten. Anstatt zu wiederholen Wenn wir bei jeder Sitzung die gleichen Informationen haben, können wir eine erstellen Ökosystem von persistentem Kontext das mit der Zeit wächst und sich bereichert.
Die Kombination dieser drei Tools deckt alle Aspekte des Kontexts ab: die Code (Repository-Indexierung), li externe Informationen (Leerzeichen) und die implizites Wissen (Erinnerung). Gemeinsam verwandeln sie sich Copilot von einem generischen Assistenten zu einem Partner, der kennt Ihr Projekt, Ihre Konventionen und Vorlieben.
Praktischer Rat ist: Beginnen Sie mit der Repository-Indizierung (automatisch) und fügen Sie a hinzu
Dateien .copilot-instructions.md mit den Konventionen des Projekts und erstellen Sie dann
Räume für die komplexesten Zusammenhänge. Das Gedächtnis baut sich mit der Zeit auf natürliche Weise auf
durch Ihre täglichen Interaktionen.
Serienfortschritt
| # | Artikel | Status |
|---|---|---|
| 1 | Grundlagen und Mindset | Abgeschlossen |
| 2 | Ideenfindung und Anforderungen | Abgeschlossen |
| 3 | Backend-Architektur | Abgeschlossen |
| 4 | Frontend-Struktur | Abgeschlossen |
| 5 | Prompt Engineering | Abgeschlossen |
| 6 | Testing und Qualität | Abgeschlossen |
| 7 | Dokumentation | Abgeschlossen |
| 8 | Deploy und DevOps | Abgeschlossen |
| 9 | Evolution und Wartung | Abgeschlossen |
| 10 | Coding Agent | Abgeschlossen |
| 11 | Code Review | Abgeschlossen |
| 12 | Copilot Edits | Abgeschlossen |
| 13 | GitHub Spark | Abgeschlossen |
| 14 | Spaces und Memory | Sei qui |
| 15 | KI-Modelle in Copilot | Prossimo |
| 16 | Personalisierung | Prossimo |
| 17 | Enterprise | Prossimo |
| 18 | Extensions | Prossimo |
| 19 | Sicherheit e Compliance | Prossimo |







