¡Hola developer 👋🏻! 📚 Este repositorio contiene las demos con las que estoy aprendiendo GitHub Copilot SDK. Aquí encontrarás ejemplos prácticos desde lo más básico hasta casos avanzados con chatbots interactivos, agents personalizados, MCP servers y streaming en tiempo real. ¡Acompáñame en este viaje de aprendizaje!
| Sección | Descripción |
|---|---|
| 🎬 Demos Disponibles | Las 4 demos principales del proyecto |
| ✨ Características | Funcionalidades comunes del SDK |
| 🛠️ Tecnologías | Stack tecnológico utilizado |
| 📋 Requisitos Previos | Lo que necesitas para empezar |
| 🚀 Instalación | Pasos para configurar el proyecto |
| 💻 Uso | Cómo ejecutar cada demo |
| 📁 Estructura del Proyecto | Organización de archivos |
| 💡 Conceptos Clave | Ideas importantes para entender el SDK |
| 🌐 Sígueme | Conecta conmigo en redes |
Ejemplo simple para entender los fundamentos del SDK:
- ✅ Crear una sesión de Copilot
- ✅ Enviar un prompt y esperar respuesta
- ✅ Retomar sesiones usando Session ID
- ✅ Manejo correcto de limpieza de recursos
Comandos:
npm startIdeal para: Principiantes que quieren aprender lo básico del SDK.
Demo avanzada con interactividad completa:
- 🛠️ Custom Tools - Define tus propias herramientas (get_utc_date, get_youtube_feed)
- 📡 MCP Servers - Integra múltiples servidores MCP:
filesystem- Acceso a archivos localesgithub- Interactúa con la API de GitHub
- 💬 Chat Loop - Loop interactivo manteniendo contexto
- ⚡ Streaming - Respuestas en tiempo real
- 🔄 Event Listeners - Maneja eventos de sesión
Comandos:
npm run agentsCaracterísticas:
- Preguntas sobre videos de YouTube
- Sugerencias para mejorar código
- Acceso a información de GitHub
- Mantiene el contexto entre preguntas
Ideal para: Usuarios avanzados que quieren crear chatbots con capacidades extendidas.
Recibe respuestas token a token en tiempo real:
- ⚡ Streaming en Tiempo Real - Respuestas token por token
- 🎧 Event Listeners - Escucha eventos de la sesión
- 💬 Interfaz Interactiva - Chat en terminal con UI mejorada
- 🎨 Output Formateado - Markdown en terminal
Comandos:
npm run streamingIdeal para: Entender cómo funcionan las respuestas en streaming y mejorar la UX de aplicaciones.
Conexión a un servidor Copilot CLI remoto:
- 🌐 Conexión vía HTTP a servidor remoto
- 📤 Streaming en tiempo real
- ✨ Chat interactivo con eventos en vivo
- 🏗️ Arquitectura cliente-servidor
Comandos:
npm run external-server
Requisitos:
- Servidor Copilot CLI corriendo en
copilot-cli-server:4321 - Para desarrollo local en VS Code: Usar Dev Container
- Para Docker: Ajustar URL a
localhostsi es local
Ideal para: Entornos de producción donde quieres separar cliente y servidor.
- 🚀 CLI Interactiva - Chat en tiempo real con GitHub Copilot desde tu terminal
- 🎨 Interfaz Bonita - Output con colores, emojis y spinners animados
- 📚 Bien Comentada - Código con comentarios en español y emojis explicativos
- 🔄 Loop Interactivo - Mantiene sesiones activas para múltiples preguntas
- 📊 Información de Conexión - Muestra estado y detalles de la sesión
- 🛠️ Extensible - Crea tus propias tools y agents
- Node.js 25+ - Runtime de JavaScript
- TypeScript - Tipado estático
- @github/copilot-sdk - SDK oficial de GitHub Copilot
- chalk - Colores y estilos en terminal
- marked - Parser de Markdown
- ora - Spinners animados
- Docker - Containerización (opcional)
- Node.js versión 25 o superior
- npm o yarn
- GitHub Copilot - Necesario tener licencia activa
- GitHub Token - Con permisos para usar Copilot (obtén uno aquí: https://github.com/settings/tokens)
- Docker (opcional, para ejecutar el servidor de Copilot CLI)
git clone https://github.com/0GiS0/github-copilot-sdk-demos.git
cd github-copilot-sdk-demosnpm installcp .env.example .envEdita .env y añade tu GH_TOKEN (token de GitHub con permisos de Copilot):
GH_TOKEN=your_github_token_herenpm start # Demo básica
npm run agents # Demo con agents y tools
npm run streaming # Demo de streaming
npm run external-server # Cliente remotonpm startEspera a que se complете la solicitud y verás la respuesta en la terminal.
npm run agentsEscribe tus preguntas y presiona Enter. El chatbot puede:
- Obtener la fecha actual
- Acceder a información de GitHub
- Acceder a archivos del sistema
Escribe /debug para ver el payload completo de respuestas.
npm run streamingVerás las respuestas generarse token a token en la terminal.
npm run external-serverRequiere tener un servidor Copilot CLI corriendo en copilot-cli-server:4321.
github-copilot-sdk-demos/
├── 0.basic.ts # 📚 Demo básica - Fundamentos del SDK
├── 1.agents.ts # 🤖 Demo avanzada - Chat con tools y MCP servers
├── 2.streaming.ts # ⚡ Demo streaming - Respuestas token a token
├── 3.server.ts # 🌐 Demo remota - Cliente que se conecta a servidor
├── config.example.ts # ⚙️ Configuración de ejemplo
├── package.json # 📦 Dependencias del proyecto
├── tsconfig.json # ⚙️ Configuración de TypeScript
├── Dockerfile # 🐳 Para ejecutar en Docker
├── .env.example # 🔑 Variables de entorno de ejemplo
├── .devcontainer/ # 📦 Configuración para Dev Container
├── .gitignore # 🚫 Archivos ignorados por git
└── README.md # 📖 Este archivo
Cada sesión tiene un ID único que permite retomar la conversación más adelante:
const sessionId = session.sessionId;
// Guardar para usar después
const resumedSession = await client.resumeSession(sessionId);Define funciones que Copilot puede llamar:
const myTool = defineTool("tool_name", {
description: "Descripción de qué hace",
parameters: {
/* ... */
},
handler: async (params) => {
/* implementación */
},
});Integra servidores externos para ampliar capacidades:
filesystem- Acceso a archivosgithub- Operaciones en GitHub- Puedes crear los tuyos propios
Las respuestas llegan token por token, no todas de una vez:
streaming: true; // Habilitado por defecto en demos de streamingEscucha eventos de la sesión:
assistant.message_delta- Nuevo chunk de respuestasession.idle- Sesión terminó de procesarsession.error- Error durante el procesamiento
send()- No bloquea, maneja con event listeners (usado en 3.server.ts)sendAndWait()- Bloquea hasta obtener respuesta (usado en 0.basic.ts y 1.agents.ts)
Si te ha gustado este proyecto y quieres ver más contenido como este, no olvides suscribirte a mi canal de YouTube y seguirme en mis redes sociales:
Happy coding! 🚀