Copilot Spaces, Agentic Memory e Repository Indexing
Uno de los factores más críticos que determina la calidad de las respuestas de un asistente de IA. es el contexto. Cuanto más comprenda un modelo de lenguaje su proyecto, Cuanto más se ajuste a sus convenciones y objetivos, mejores serán las sugerencias que produzca. Hasta hace poco, proporcionar contexto a Copilot requería esfuerzos manuales: abrir archivos relevante, escribir indicaciones detalladas, repetir la información ya proporcionada en las sesiones precedentes.
Con la introducción de Espacios copiloto, Memoria agente mi las mejoras a Indexación de repositorios, GitHub ha solucionado este problema problema de manera estructural. Estas tres herramientas trabajan en sinergia para garantizar que Copilot siempre tenga el contexto correcto en el momento correcto, reduciendo drásticamente la necesidad de repetir la información y mejorar la coherencia de las respuestas a lo largo del tiempo.
En este decimocuarto artículo de la serie, exploraremos cada uno de ellos en detalle. estas herramientas: cómo funcionan, cómo configurarlas y cómo utilizarlas mejor para maximizar la productividad en el trabajo diario.
Vista General de la Serie Completa
| # | Artículo | Enfoque |
|---|---|---|
| 1 | Foundation e Mindset | Setup e mentalita' |
| 2 | Concepto y requisitos | De idea a MVP |
| 3 | Arquitectura de back-end | API e database |
| 4 | Estructura frontal | UI e componenti |
| 5 | Prompt Engineering | Prompt e Agenti MCP |
| 6 | Testing e qualità' | Unit, integration, E2E |
| 7 | Documentación | README, API docs, ADR |
| 8 | Deploy e DevOps | Docker, CI/CD |
| 9 | Evoluzione | Scalabilità' e manutenzione |
| 10 | Coding Agent | Agente de desarrollo autónomo |
| 11 | Code Review | Review automatica AI |
| 12 | Copilot Edits | Editing multi-file |
| 13 | GitHub Spark | Aplicación de lenguaje natural |
| 14 | Sei qui → Spaces e Memory | Contesto organizzato e memoria |
| 15 | Modelli AI | Guía para elegir el modelo. |
| 16 | Personalizzazione | Custom instructions e knowledge |
| 17 | Enterprise | Copiloto para organizaciones |
| 18 | Extensions | Amplíe Copilot con herramientas |
| 19 | Sicurezza | Sicurezza e compliance AI |
Espacios copiloto: organización del contexto para conversaciones con propósito
Espacios copiloto Es una característica que te permite crear colecciones organizadas de contexto para conversaciones con Copilot. Un Espacio es esencialmente un contenedor donde puedes incluir diferentes tipos de información relevante para una tarea, proyecto o área de trabajo en particular. en lugar de tener que explicarle a Copilot cada vez en qué estás trabajando, creas un Espacio una vez y reutilizarlo para todas las conversaciones relacionadas con ese contexto.
Qué puedes incluir en un espacio
La fortaleza de Spaces radica en la flexibilidad de los tipos de contenido admitidos. No está limitado sólo al código: puede incluir cualquier información que sea útil para Dale a Copilot el contexto necesario.
Tipos de contenido admitidos
| Tipo | Descripción | Ejemplo de uso |
|---|---|---|
| Repository | Interi repository GitHub o cartelle specifiche | Incluir el repositorio principal del proyecto. |
| archivo de código | Archivos individuales o selecciones de código | El modelo de datos, las API principales, los archivos de configuración. |
| Pull Request | PR abiertos o cerrados con diferencias y comentarios | Relaciones públicas recientes para comprender los últimos cambios |
| Issue | Problema de GitHub con discusiones | Bug aperti, feature request, decisioni architetturali |
| Testo libero | Note, istruzioni, context in formato testo | Convenciones de equipo, reglas comerciales, requisitos. |
| Immagini | Screenshot, diagrammi, wireframe | Diseños de referencia, diagramas arquitectónicos. |
| File caricati | Documentos, PDF, archivos de configuración. | Especificaciones técnicas, documentos de requisitos. |
Smart Loading: Contesto Intelligente
Un aspecto fundamental de Spaces es el mecanismo Carga inteligente. Cuando incluyes un repositorio en un Espacio, Copilot no carga todo el contenido del repositorio en el contexto de la conversación. Esto sería imposible para repositorio grande e ineficiente incluso para los más pequeños.
En cambio, Smart Loading funciona de manera similar a un motor de búsqueda semántica: cuando haces una pregunta, copiloto buscar y recuperar dinámicamente solo los archivos y secciones de código relevantes para su solicitud específica. Este enfoque ofrece lo mejor de ambos mundos: tiene acceso a todo el repositorio como fuente de contexto, pero sólo las partes relevantes ocupan la ventana de contexto del modelo.
Cómo funciona la carga inteligente
- Indexación: Cuando agrega un repositorio al Espacio, se indexa para búsqueda semántica.
- Consultas: Cuando haces una pregunta, Copilot analiza la intención e identifica temas relevantes.
- Recuperación: Los archivos y secciones relevantes se recuperan del índice.
- Categoría: Los resultados están ordenados por relevancia.
- Asamblea de contexto: Solo los fragmentos más relevantes se incluyen en el mensaje del modelo.
- Respuesta: El modelo genera la respuesta con un contexto preciso y relevante.
Crear y administrar espacios
La creación de un espacio se realiza a través de la interfaz web de GitHub o directamente desde el IDE. El proceso es sencillo e intuitivo.
Creando un espacio para un proyecto
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."
Casos de uso para espacios
Espacios es particularmente útil en escenarios donde el contexto es complejo, distribuido en múltiples repositorios o donde diferentes personas del equipo trabajan en diferentes aspectos del mismo proyecto.
Scenari d'Uso Comuni
| Scenario | Space Consigliato | Contenidos a incluir |
|---|---|---|
| Proyecto de repositorios múltiples | Un espacio por proyecto | Tutti i repo, schema condiviso, docs architetturali |
| Onboarding nuovo membro | "Incorporación [Proyecto]" | README, guide setup, ADR, convenzioni, FAQ |
| Bug investigation | "Debug [Feature]" | File coinvolti, issue, log, stack trace |
| Feature development | "Feature [Nome]" | Especificaciones, estructuras alámbricas, archivos para editar, pruebas existentes |
| Cross-team collaboration | "Integration [Team A + B]" | Contratos API, esquema compartido, documentos de acuerdo |
| Migration project | "Migration [Legacy → New]" | Código heredado, nuevo destino, mapeo, plan de migración |
| Code review preparation | "Review [PR #xxx]" | PR, test, documentazione correlata, standard del team |
Mejores prácticas para espacios
Hacer
- Cree espacios específicos del contexto (no un espacio genérico para todo)
- Incluya siempre las convenciones del proyecto (archivo .copilot-instructions.md)
- Actualizar el Espacio a medida que evoluciona el proyecto
- Agregue texto libre para información que no está presente en el código.
- Compartir espacios con miembros del equipo
- Incluir código y documentación relacionada.
- Utilice diferentes espacios para diferentes fases (desarrollo, depuración, revisión)
Para ser evitado
- No incluya demasiados repositorios irrelevantes (ruido en contexto)
- No crees un único Espacio para todo el trabajo
- No olvides actualizar el Espacio después de cambios significativos.
- No incluya archivos binarios o activos de gran tamaño
- No descuides el texto libre: suele ser el contexto más valioso
- No compartas espacios con contenido sensible sin verificar los permisos
- No sobrecargues un espacio con decenas de cuestiones irrelevantes
Memoria agente: memoria persistente para copiloto
La Memoria agente Es una de las características más revolucionarias. introducido en Copilot, actualmente disponible en Acceso temprano para usuarios de los planes Ventaja e Pro+. Este es un sistema de memoria persistente que permite a Copilot recordar información aprendido durante interacciones anteriores, eliminando la necesidad de repite las mismas explicaciones en cada nueva sesión de chat.
Cómo funciona la memoria
La Memoria Agentica funciona a través de un proceso de deducción automática. Durante las conversaciones con Copilot, el sistema identifica información que podría ser útiles en el futuro y guardarlos como "recuerdos". Estas memorias no son copias exactas. de conversaciones, pero resúmenes estructurados de información clave deducido de la interacción.
Ciclo de vida de un recuerdo
- Deducción: Durante una conversación, Copilot identifica información potencialmente útil
- Creación: La información se sintetiza y guarda como una memoria estructurada.
- Asociación: La memoria está asociada al repositorio específico en el que fue creada.
- Uso: En conversaciones posteriores en el mismo repositorio, la memoria se utiliza como contexto.
- Validación: Cada vez que la memoria se utiliza con éxito, se prolonga su vida útil.
- Vencimiento: Las memorias no utilizadas caducan automáticamente después de 28 días
Tipos de recuerdos
El sistema no almacena todo indiscriminadamente. Los recuerdos se clasifican. y filtrado por relevancia, centrándose en la información que tiene un alto valor de reutilización.
Categorías de Memorias
| Categoría | Esempi | Valore |
|---|---|---|
| Estructura del proyecto | Organización de carpetas, arquitectura, módulos principales. | Evite tener que volver a explicar cómo está organizado el código |
| Convenciones de codificación | Estilo de denominación, patrones utilizados, reglas de linting. | Generar código consistente con los estándares del equipo. |
| Pattern ricorrenti | Cómo crea nuevos puntos finales, cómo escribe pruebas, cómo maneja los errores | Reproduce patrones aprobados sin necesidad de instrucciones |
| Decisioni tecniche | debido a que se utiliza una biblioteca específica, las compensaciones arquitectónicas | Sugiere soluciones alineadas con las elecciones del equipo. |
| Información de dominio | Reglas comerciales, terminología específica, restricciones regulatorias. | Entiende el dominio sin repetidas explicaciones. |
| Preferenze personali | Estilo de comentario, nivel de detalle, formato de respuesta. | Personaliza tus respuestas según tus preferencias |
Persistenza e Scadenza
Las memorias tienen un ciclo de vida bien definido, diseñado para equilibrar la utilidad. y relevancia a lo largo del tiempo.
Reglas de persistencia
| Regola | Detalle |
|---|---|
| Durata iniziale | 28 días desde la creación |
| Rinnovo | Cada uso reinicia el temporizador de 28 días. |
| Scadenza | Eliminación automática después de 28 días de inactividad |
| Scope | Memorias específicas del repositorio (no globales) |
| Compattazione | Al 95% del límite del token, se compactan los recuerdos menos relevantes |
| Privacy | Los recuerdos no se comparten entre usuarios ni repositorios. |
| Cancellazione | El usuario puede borrar manualmente cualquier memoria. |
| Visibilità' | El usuario puede ver todas las memorias activas. |
Scope Repository-Specific
Un aspecto fundamental de la Memoria Agentica es que los recuerdos son específico del repositorio. La información aprendida mientras trabajaba en el El repositorio A no se utiliza cuando se trabaja en el repositorio B. Este diseño garantiza que el contexto sea siempre relevante y evita la contaminación entre diferentes proyectos.
Esta elección de diseño tiene implicaciones importantes: Convenciones del Proyecto A No afectarán las sugerencias para el proyecto B, incluso si usas la misma cuenta. Copiloto. Cada repositorio tiene su "cerebro" independiente, que crece y se enriquece solo con interacciones específicas de ese repositorio.
Implicaciones del alcance para los repositorios
- Monorepo: En un monorepo, todas las memorias se comparten entre módulos (preste atención a las diferentes convenciones entre módulos)
- Tenedor: Las bifurcaciones son repositorios separados, por lo que los recuerdos no se transfieren
- Rebautizar: Cambiar el nombre del repositorio conserva los recuerdos (la identificación interna sigue siendo la misma)
- Repositorio múltiple: Tienes que construir memorias separadas para cada repositorio, incluso si son parte del mismo proyecto.
- Transferencias: Transferir un repositorio a otra organización preserva los recuerdos
Auto-Compattazione
Cuando el volumen de la memoria alcanza 95% del límite máximo de tokens asignados, el sistema activa un proceso autocompactación. los recuerdos se evalúan en función de la frecuencia de uso, la actualidad y la relevancia. Los recuerdos no lo son tanto Los contenidos utilizados se condensan o eliminan para dejar espacio a nueva información.
Este mecanismo garantiza que el "cerebro" del copiloto de cada repositorio permanezca centrado en la información más útil, sin acumular restos de información que podría degradar la calidad de las respuestas. Es un proceso automático que no requiere la intervención del usuario, aunque es posible gestionar las memorias manualmente si es necesario.
Ventajas prácticas de la memoria agente
Antes y después de la memoria agente
| Scenario | Sin memoria | Con memoria |
|---|---|---|
| Nueva sesión de chat | Necesita volver a explicar la estructura y las convenciones del proyecto. | Copilot ya sabe cómo está organizado el proyecto |
| Creazione nuovo endpoint | Tienes que especificar patrón, middleware, validación. | Copilot reproduce el patrón de los puntos finales existentes |
| Risoluzione bug | Debe describir cómo funciona el sistema involucrado. | Copilot conoce la arquitectura y sugiere dónde buscar. |
| Code review | Tienes que explicar las reglas del equipo. | Copilot aplica automáticamente las convenciones del equipo |
| Refactoring | Necesitas definir la arquitectura de destino. | Copilot conoce sus preferencias arquitectónicas |
| Testing | Devi specificare framework, stile, coverage target | Copilot genera pruebas consistentes con las existentes |
| Documentación | Devi indicare formato, stile, convenzioni | Copilot produce documentos alineados con el resto del proyecto. |
Gestión de memoria manual
Aunque el sistema está diseñado para ser automático, los usuarios tienen total control sobre los recuerdos almacenados. Puede:
- Vista: Accede al listado completo de memorias de cada repositorio
- Modificare: Correggere memorie imprecise o aggiungere dettagli
- Eliminare: Rimuovere memorie obsolete o errate
- Forzar la creación: Puedes pedirle explícitamente a Copilot que recuerde algo.
// 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 Indexación de repositorios es el motor que alimenta la comprensión código profundo por Copilot. Cuando un repositorio está indexado, Copilot crea una representación semántica del código que le permite entender no sólo la estructura de los archivos, sino también la relaciones lógicas entre componentes, el adicciones entre los módulos y el flujo de datos a través del sistema.
Indicizzazione Automatica
La indexación ocurre automáticamente la primera vez que un usuario iniciar una conversación de Copilot Chat en un repositorio. Ninguno es necesario configuración o acción manual. Una vez completada la indexación, todos Los usuarios de Copilot que acceden a ese repositorio se benefician del índice compartido.
Detalles de indexación
| Aspetto | Detalle |
|---|---|
| Trigger | Automático en la primera conversación de Copilot en el repositorio. |
| Velocita' | Menos de 60 segundos para la mayoría de los repositorios |
| Aggiornamento | Incremental con cada inserción (solo archivos modificados) |
| Condivisione | El índice se comparte entre todos los usuarios de Copilot del repositorio. |
| Privacy | El índice no se utiliza para entrenar modelos de IA. |
| Dimensione | Admite repositorios de hasta millones de líneas de código |
| Linguaggi | Todos los idiomas soportados por GitHub |
| Branch | La indexación cubre la rama predeterminada (principal/maestra) |
Qué está indexado
La indexación va mucho más allá de un simple índice de búsqueda de texto. el sistema crea una comprensión semántica algún código que incluye:
Niveles de indexación
| Livello | Que analiza | Beneficio |
|---|---|---|
| Estructura de archivos | Organización de carpetas, convención de nomenclatura, patrón de proyecto. | Copilot entiende dónde buscar cada tipo de activo |
| Definizioni | Classi, interfacce, funzioni, tipi, costanti | Sugerencias precisas para tipos de métodos y firmas. |
| Relazioni | Import/export, ereditarieta', composizione, dipendenze | Entiende el impacto de los cambios en otros archivos. |
| Pattern | Patrones arquitectónicos recurrentes, convenciones de codificación. | Generar código consistente con patrones existentes. |
| Logica | Flujo de datos, manejo de errores, transformaciones. | Sugiere implementaciones que se integran con la lógica existente. |
| Documentación | Commenti, JSDoc, README, markdown | Utilice la documentación para comprender la intención del código. |
| Test | Test case, assertion, mock, fixture | Generar pruebas consistentes con la estrategia de pruebas del proyecto. |
| Configuración | Config file, environment, build settings | Entiende el entorno y las dependencias del proyecto. |
Velocidad de indexación
Una de las innovaciones más significativas es la reducción de tiempo indexación en menos de 60 segundos. En versiones anteriores, la indexación Los repositorios grandes podrían tardar minutos o incluso horas. hoy gracias a optimizaciones en el algoritmo de incorporación y la infraestructura de indexación, La búsqueda semántica está disponible casi al instante.
Después de la indexación inicial, las actualizaciones son incremental: cuando envías nuevas confirmaciones, solo se vuelven a indexar los archivos modificados, manteniendo el índice siempre se actualiza sin necesidad de una reindexación completa.
Impacto en la calidad de las Respuestas
La indexación de repositorios tiene un impacto directo y mensurable en la calidad de Responde el copiloto. Sin indexación, Copilot solo puede ver archivos actualmente abierto en el editor. Con la indexación, tiene acceso a todo el base de código.
Ejemplo de impacto
| Pregunta | Sin indexación | Con indexación |
|---|---|---|
| "¿Cómo maneja el proyecto la autenticación?" | Respuesta genérica basada en las mejores prácticas | Respuesta específica que describe el middleware, el servicio de autenticación y los guardias de JWT |
| "Crear un nuevo punto final de pagos" | Punto final genérico sin contexto | Punto final que sigue los patrones del proyecto, con middleware, validación y errores consistentes |
| "¿Por qué falla la prueba X?" | Analisi limitata al file del test | Análisis que incluye el servicio bajo prueba, dependencias y simulacros necesarios. |
| "¿Qué archivos necesito editar para agregar un campo al modelo de Usuario?" | Solo el archivo de plantilla | Modello, migration, DTO, validazione, serializer, test, docs |
Enterprise Controls
Para las organizaciones, Repository Indexing ofrece controles granulares para gestionar qué contenidos se indexan y cuáles se excluyen. Esto es particularmente importante para repositorios que contienen código confidencial o información de propiedad exclusiva.
# 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
Sinergia entre espacios, memoria e indexación
El verdadero poder de estas tres herramientas surge cuando trabajan juntas. cada uno cubre un aspecto diferente del problema de contexto y juntos proporcionan Copilot una comprensión completa y persistente del proyecto.
Cómo colaboran los tres sistemas
| Strumento | Tipo de contexto | Persistenza | Scope |
|---|---|---|---|
| Repository Indexing | Struttura e relazioni del codice | Permanente (aggiornamento incrementale) | Intero repository |
| Copilot Spaces | Contexto de múltiples fuentes seleccionado por el usuario | Persistente (administrado por el usuario) | Multi-repository |
| Agentic Memory | Conocimiento inferido de interacciones. | 28 giorni (rinnovabile) | Repository specifico |
Básicamente, cuando le haces una pregunta a Copilot:
- Indexación de repositorios recupera archivos relevantes y estructuras de código
- Espacios agrega contexto adicional (problema, relaciones públicas, documentación, notas)
- Memoria agente Aplica las convenciones y preferencias aprendidas en sesiones anteriores.
- Todos estos contextos se combinan y se envían al modelo para generar la respuesta.
Esempi Pratici
Vemos cómo estas herramientas se aplican en escenarios laborales cotidianos.
Ejemplo 1: espacio de configuración para un proyecto de repositorios múltiples
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)
Ejemplo 2: uso de la memoria para convenciones
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
Ejemplo 3: indexación de repositorios para exploración de código
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]
Configuración avanzada
Para aprovechar al máximo estas herramientas es importante configurarlas correctamente en función de las necesidades del proyecto y del equipo.
File .copilot-instructions.md
el archivo .copilot-instructions.md en la raíz del repositorio viene
incluido automáticamente en el contexto de cada conversación de Copilot. es la mejor manera
dirigido a proporcionar instrucciones persistentes a Copilot para un repositorio específico.
# 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
Para mejorar la calidad de la indexación y el rendimiento de la búsqueda. semántica, siga estas pautas:
mejorar la calidad
- Mantener una estructura de carpetas clara y consistente
- Utilice JSDoc/TSDoc para documentar funciones y clases
- Escriba comentarios significativos para lógica compleja
- Mantenga los archivos README actualizados para cada módulo
- Utilice nombres descriptivos para archivos, clases y funciones.
- Relaciones de documentos entre módulos en archivos README
Reducir el ruido
- Excluir archivos generados con .copilotignore
- Excluir dependencias de proveedores innecesarias
- Excluir archivos de datos grandes (CSV, volcados)
- Excluir el código heredado que ya no se utiliza
- Excluir archivos de bloqueo (package-lock.json es útil, Yarn.lock no tanto)
- Escludi asset binari (immagini, font, video)
Comparación con enfoques alternativos
Para contextualizar Espacios, Memoria e Indexación es útil compararlos con enfoques alternativas para proporcionar contexto a la IA.
Confronto Approcci al Contesto
| Approccio | Ventajas | Desventajas | Cuándo Usarlo |
|---|---|---|---|
| Archivos abiertos en el editor. | Semplice, immediato | Contesto limitato ai file aperti | Modifiche locali a pochi file |
| #file mentions in chat | Controllo preciso | Manual, requiere conocimiento de archivos. | Preguntas sobre archivos específicos |
| Repository Indexing | Automático, completo | Sólo código de repositorio | Siempre (activado de forma predeterminada) |
| Copilot Spaces | Multi-repo, multi-formato | Requiere configuración inicial | Progetti complessi, multi-repo |
| Agentic Memory | Automatico, persistente | Limitado a 28 días, para repo | Convenzioni ricorrenti, pattern |
| .copilot-instructions.md | Persistente, condiviso col team | Solo texto, no dinámico | Reglas y convenciones del proyecto. |
| Prompt manuale dettagliato | Massimo controllo | No persistente, repetitivo. | Task specifici e complessi |
Limitazioni e Considerazioni
A pesar de las ventajas obvias, es importante conocer las limitaciones actuales. de estas herramientas para utilizarlas con expectativas realistas.
Limitazioni Attuali
| Strumento | Limitazione | Impacto | Mitigazione |
|---|---|---|---|
| Spaces | No admite la actualización automática de contenido. | Riesgo de contexto obsoleto | Revisión periódica espacial |
| Spaces | Límite en la cantidad de repositorios por Espacio | Es posible que proyectos muy distribuidos no quepan en un solo Espacio | Crea espacios temáticos más pequeños |
| Memory | Caducidad de 28 días para memorias no utilizadas | El conocimiento se pierde si no se reutiliza | Utilice .copilot-instructions.md para obtener información permanente |
| Memory | Scope limitato a singolo repository | No transfiere conocimiento entre repositorios del mismo proyecto | Utilice espacios para contexto entre repositorios |
| Memory | Solo disponible en planes Pro y Pro+ | No accesible para los planes Business Gratuito y Básico | Utilice archivos de instrucciones como alternativa |
| Indexing | Solo rama predeterminada indexada | Las funciones de las sucursales no se benefician de la indexación | Fusiones frecuentes con la rama principal. |
| Indexing | Archivos excluidos de .gitignore no indexados | Configuraciones locales no en contexto. | Incluir archivos de muestra en el repositorio |
| Tutti | Dependen de la calidad del código y la documentación. | Repository mal documentati beneficiano meno | Investire in documentazione e commenti |
Privacidad y seguridad de datos
Un aspecto importante a considerar, especialmente para los equipos empresariales, son las preocupaciones la privacidad y seguridad de los datos utilizados por estas herramientas.
Garantías de privacidad
- Sin formación: Los datos de espacios, memoria e indexación no se utilizan para entrenar modelos de IA
- Aislamiento: Las memorias están aisladas por usuario y por repositorio.
- Cifrado: Los datos se cifran en tránsito y en reposo.
- Control de usuario: El usuario puede borrar todos los recuerdos y datos en cualquier momento.
- Exclusión de contenido: Su organización puede excluir archivos y repositorios de la indexación
- Cumplimiento: Los datos se procesan de acuerdo con los términos de servicio de GitHub.
- Residencia de datos: Para los planes Enterprise, los datos se pueden localizar en regiones específicas
Conclusión
Los espacios copiloto, la memoria agente y la indexación de repositorios suponen un salto cualitativo en cómo proporcionamos contexto para el desarrollo de herramientas de IA. en lugar de repetir la misma información en cada sesión, podemos construir una ecosistema de contexto persistente que crece y se enriquece con el tiempo.
La combinación de estas tres herramientas cubre todos los aspectos del contexto: la código (Indexación de repositorios), le información externa (Espacios) y el conocimiento implícito (Memoria). Juntos se transforman Copiloto de asistente genérico a compañero que conoce tu proyecto, sus convenciones y preferencias.
Un consejo práctico es: comenzar con la indexación de repositorios (automática), agregar un
archivos .copilot-instructions.md con las convenciones del proyecto, y luego crear
Espacios para los contextos más complejos. La memoria se desarrollará naturalmente con el tiempo.
a través de sus interacciones diarias.
Progreso de la serie
| # | Artículo | Estado |
|---|---|---|
| 1 | Foundation e Mindset | Completado |
| 2 | Concepto y requisitos | Completado |
| 3 | Arquitectura de back-end | Completado |
| 4 | Estructura frontal | Completado |
| 5 | Prompt Engineering | Completado |
| 6 | Testing e qualità' | Completado |
| 7 | Documentación | Completado |
| 8 | Deploy e DevOps | Completado |
| 9 | Evoluzione e Manutenzione | Completado |
| 10 | Coding Agent | Completado |
| 11 | Code Review | Completado |
| 12 | Copilot Edits | Completado |
| 13 | GitHub Spark | Completado |
| 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 |







