El Viaje de tu Pregunta
👤
User Prompt
@aleph escribe un borrador sobre tecnofeudalismo
Escribes algo en Copilot Chat. Parece simple, pero internamente desencadenas una cadena de 5 pasos que transforman tu pregunta en una respuesta inteligente.
Prompt
→
Registry
→
Agent
→
Instructions
→
LLM
→ Siguiente: PromptRegistry
El PromptRegistry es un singleton que detecta tu modelo LLM y selecciona el prompt adecuado.
🔍 Detección de Modelo
Tu modelo:
claude-sonnet-4-20250514
↓ matchesModel()
Prefijo detectado:
anthropic
↓
Prompt seleccionado:
AnthropicAgentPrompt
Prompt
→
Registry
→
Agent
→
Instructions
→
LLM
↓
Ver código fuente
📄 src/vs/workbench/contrib/chat/browser/promptRegistry.ts
// Singleton que gestiona prompts por modelo
class PromptRegistry {
private familyPrefixes = [
'anthropic', // Claude
'openai', // GPT-4, GPT-4o
'google', // Gemini
'xai' // Grok
];
matchesModel(modelFamily: string): IAgentPrompt {
// Tu modelo: claude-sonnet-4-20250514
return this.promptsWithMatcher.find(
p => modelFamily.startsWith(p.prefix)
);
}
}
💡
Cada familia de modelos tiene su propia implementación de IAgentPrompt, optimizada para sus capacidades específicas.
↑ Volver a vista general
Cada modelo implementa 5 métodos que definen cómo se construye el system message.
📋
SystemPrompt
~2000 tokens
🔔
Reminder
Solo OpenAI
🔧
ToolHints
MCP refs
🤖
Identity
Quién soy
🛡️
Safety
Políticas
Prompt
→
Registry
→
Agent
→
Instructions
→
LLM
↓
Comparar implementaciones por modelo
🟣
Claude
- ✅ DefaultAgentInstructions
- ❌ No Reminder
- ✅ Extended thinking
- ✅ Sonnet optimizations
🟢
GPT-4
- ✅ DefaultAgentInstructions
- ✅ KeepGoingReminder
- ✅ JSON mode nativo
- ✅ Function calling
🔵
Gemini
- ✅ DefaultAgentInstructions
- ❌ No Reminder
- ✅ Grounding
- ✅ Long context
📄 anthropicPrompts.tsx
class AnthropicAgentPrompt implements IAgentPrompt {
resolveSystemPrompt() {
return <DefaultAgentInstructions />;
}
// Claude NO usa reminder (contexto largo)
resolveReminderInstructions() {
return null;
}
}
↑ Volver a vista general
Instrucciones base compartidas por todos los modelos, estructuradas en Tags XML.
<InstructionMessage>
<Tag name='instructions'>
toolUseInstructions
notebookInstructions
outputFormatting
fileLinkification
💡
Tu copilot-instructions.md se inyecta aquí, sumándose a estas instrucciones base. ¡Es tu oportunidad de personalizar el comportamiento!
Prompt
→
Registry
→
Agent
→
Instructions
→
LLM
↓
Ver estructura de Tags completa
Todas las piezas se combinan en un único System Message que guía al LLM.
Base
DefaultAgentInstructions
~1500 tokens
+
Modelo
AnthropicRules
~200 tokens
↓
Usuario
copilot-instructions.md
~300 tokens
+
Contexto
*.instructions.md
variable
↓
System Message Final
~2000-4000 tokens
Prompt
→
Registry
→
Agent
→
Instructions
→
LLM
↓
Ver mensaje ensamblado (mock)
📦 Mock: Contenido del System Message
You are an expert AI programming assistant, working with a user in the VS Code editor...
When asked for your name, you must respond with "GitHub Copilot"...
// Instrucciones Globales — Aleph Scriptorium
**Aleph Scriptorium** es un sistema de agentes de IA para VS Code + GitHub Copilot Chat...
When using a tool, follow the JSON schema very carefully...
Use proper Markdown formatting. When referring to symbols wrap in backticks...
🎯
Las secciones resaltadas son TUS instrucciones del Scriptorium, inyectadas en el system message.
↓ Ver validación estructurada
Antes de enviar al LLM, TypedPromptEditor valida que el mensaje cumpla con el schema esperado.
📝
L0: Prompt NL
"@aleph escribe borrador"
↓ TypedPromptServer :3020
📋
L1: Schema JSON
{ action: "write", topic: "..." }
↓ validate_schema
✅
L2: Validado
AJV/Zod pass → enviar a LLM
↑ Volver a mensaje ensamblado
Todo listo. El mensaje se envía a la API del modelo seleccionado.
Prompt
→
Registry
→
Agent
→
Instructions
→
LLM
↓
Ver estructura de la API Request
model:
"claude-sonnet-4-20250514"
system:
[System Message ~2500 tokens]
messages:
[{ role: "user", content: "@aleph escribe..." }]
tools:
[read_file, replace_string, run_in_terminal, ...]
max_tokens:
16384
↑ Volver a vista general
Voy a redactar un borrador sobre tecnofeudalismo. Primero consultaré el ARCHIVO para verificar si hay material previo...
🔧
semantic_search
"tecnofeudalismo"
Encontré referencias en ARCHIVO/marco/economia-digital.md. Basándome en el marco teórico del Scriptorium, procedo a redactar...
✅
Lo que funcionó
- Reconoció el agente @aleph
- Consultó ARCHIVO primero
- Usó herramientas disponibles
🎯
Gracias a
- copilot-instructions.md
- Handoffs definidos
- Instrucciones contextuales
Prompt
→
Registry
→
Agent
→
Instructions
→
LLM
→
✓
↓
Ver Self-Reflection: cuando la respuesta genera feedback
Pero la respuesta no es el final. Los agentes del IDE no solo usan LLMs para ser ellos mismos (su identidad viene del system message), sino también para auto-psicoanalizarse.
🤖
Identidad
System Message
🔄
Reflexión
Copilot Logs
📸
Memoria
Snapshots
📊
Métricas
Health Score
💡
El problema: CopilotEngine olvida después de ~100 requests (FIFO).
La solución: Si no podemos cambiar cómo olvida, cambiamos cómo recordamos.
→
Ver Copilot Logs MCP Server
⭐
Ciudadano de primera categoría. Este servidor permite que los agentes se auto-psicoanalicen: observen su comportamiento, detecten antipatrones y mejoren.
📸
Snapshots
capture_snapshot
list_snapshots
get_snapshot
delete_snapshot
📊
Análisis
get_usage_metrics
analyze_session
configure_cache
get_request
📝
Exportar
export_conversation
generate_abstract
search_requests
list_requests
"copilot-logs-mcp-server": {
"type": "http",
"url": "http://localhost:3100"
}
→
Ver estructura de Snapshots
Los snapshots convierten conversaciones efímeras en conocimiento archivado. Estructura real del workspace:
📁 COPILOT_SNAPSHOTS/
📄 INDEX.md
📄 ABSTRACT.md (LLM-generated)
📁 {nombre-snapshot}/
requests.json
metadata.json
📸 Ejemplo de invocación
mcp_copilot-logs-_capture_snapshot({
name: "analisis-copilot-engine",
description: "Sesión de investigación",
linkedBacklog: "SCRIPT-1.31.0"
})
→
Ver Métricas de Salud
get_usage_metrics() devuelve el estado de salud de la sesión actual:
72
Health Score
✅ ≥70 Óptimo
28%
Cache Hit
⚠️ <30% Mejorar
4.2s
Avg Response
✅ <5s Rápido
🔴
Antipatrones
AP-01 Lecturas redundantes
AP-02 Diagnóstico por prueba y error
AP-03 Respuestas verbosas
AP-04 Exploración sin caché
✅
Buenas Prácticas
BP-01 Consultar @indice primero
BP-02 Índices DRY estables
BP-03 Bloqueo preventivo
BP-04 Snapshots frecuentes
→
Ver el Bucle Completo
"El sistema que documenta cómo piensa puede pensar mejor."
🗣️ Chat
→
📸 Snapshot
→
📁 ARCHIVO
→
🔍 Consultar
→
🔄 Mejor Chat
🐂
@ox
- Auditoría técnica
- Diagnóstico de gaps
analyze_session()
📇
@indice
- Navegación DRY
- Funcional.md / Tecnico.md
- Evitar lecturas redundantes
📋
@scrum
- Tracking de proceso
- Snapshots de cierre
- Backlog updates
⭐
Gobernanza Tripartita: Tres agentes coordinan la auto-reflexión.
Cada snapshot enriquece las futuras sesiones.
↑
Volver a Output
🧠 El Viaje de tu Pregunta
Has navegado el flujo completo de Copilot Chat: desde tu prompt hasta la respuesta inteligente.
0
Prompt
1
Registry
2
Agent
3
Instructions
4
Assembly
5
LLM
6
Output
🔄
Reflect
💡 Insights Clave
- Identidad vía LLM: Los agentes locales "son" a través del system message que les define
- Auto-psicoanálisis: Copilot Logs MCP permite que los agentes observen su propio comportamiento
- El contexto importa: Los
applyTo inyectan instrucciones según el archivo
- Memoria persistente: Snapshots convierten conversaciones efímeras en conocimiento archivado
- Navegación 3D: Usa ↑↓ para explorar detalles técnicos. El subcubo Self-Reflection está en Y=700