🧠La Scienza del Contesto: Precisione e Grounding
::: info Il segreto per eliminare le allucinazioni di Copilot risiede nella gestione del Context Window. Più il modello “conosce” la tua codebase, gli standard aziendali e le dipendenze del progetto, più il codice generato sarà production-ready. :::
1. Variabili di Contesto (@ e #)
Copilot in VS Code utilizza degli “agenti” e dei “marker” per filtrare le informazioni da inviare all’LLM. Saperli usare trasforma una domanda vaga in una query ingegneristica.
| Comando | Nome | Scopo Tecnico |
|---|---|---|
| @workspace | Workspace Agent | Scansiona l’intero progetto, analizza la struttura delle cartelle e le relazioni tra i file. |
| #file | File Reference | Invia il contenuto integrale di uno o più file specifici per un’analisi comparativa. |
| #codebase | Code Index | Utilizza l’indice semantico locale per trovare snippet simili in tutto il repository. |
| @terminal | Terminal Agent | Analizza l’output del terminale, utile per il debugging di errori di compilazione o runtime. |
2. Custom Instructions: .github/copilot-instructions.md
Questa è la funzionalità più potente per un architetto. Permette di definire un “vangelo” di regole che Copilot seguirà in ogni interazione all’interno del repository.
Setup del file
Crea il file nel tuo progetto: .github/copilot-instructions.md
Esempio di Configurazione (Engineering Standard):
# Engineering Standards for this Repository
## General Principles
- Always use **Type Hinting** for Python functions.
- Follow **C++20 standards**, avoiding manual memory management (prefer Smart Pointers).
- Use **Google Style Docstrings** for all public APIs.
## Architecture
- We follow a **Hexagonal Architecture**: keep business logic isolated from infrastructure.
- Use **FastAPI** for routing and **Pydantic v2** for data validation.
## Formatting & Naming
- Use `snake_case` for variables and `PascalCase` for classes.
- Constants must be `UPPER_SNAKE_CASE`.
## Error Handling
- Never use bare `except:`. Always specify the exception type and use the internal `Logger` module.
📉 Architettura del Prompt (Mermaid)
Ecco come VS Code assembla la richiesta prima di inviarla a Claude o GPT:
3. Gestione del “Working Set” in Edits
Quando usi Copilot Edits (Ctrl+Shift+I), la gestione del contesto diventa manuale ed esplicita.
- Selettività : Non aggiungere file inutili al Working Set. Se stai modificando il database, aggiungi solo lo schema e il repository layer. Troppo contesto crea “rumore” e può portare l’IA a suggerire modifiche ridondanti.
- Cross-File Dependencies: Se modifichi un’interfaccia in C++, aggiungi al contesto sia l’header (
.hpp) che l’implementazione (.cpp) e almeno un file client che la utilizza per verificare la consistenza.
💡 Note dell’Architetto (Critical Thinking)
- Indexing Lag: Ricorda che quando aggiungi molti file nuovi, l’indice di
@workspacepotrebbe richiedere alcuni secondi per aggiornarsi. Se Copilot non “vede” un file appena creato, usa#fileper forzarlo. - Privacy & Data: Le istruzioni personalizzate sono salvate nel repository. Questo è ottimo per il team working, poiché ogni collaboratore che apre il progetto avrà un Copilot già istruito sugli standard comuni.
- Docstring Validation: Usa Copilot per validare che il codice segua le tue stesse istruzioni.
- Prompt:
"@workspace Verifica se le docstrings in questo modulo sono conformi alle regole in .github/copilot-instructions.md"
- Prompt:
Tags: #Copilot #ContextManagement #SoftwareArchitecture #PromptEngineering #VSCode*