{"meta":{"title":"Configuración predeterminada (CLI agrupada)","intro":"Los SDK de Node.js y .NET incluyen la CLI de Copilot como dependencia: la aplicación se distribuye con todo lo que necesita, sin necesidad de instalación ni configuración adicionales.","product":"GitHub Copilot","breadcrumbs":[{"href":"/es/copilot","title":"GitHub Copilot"},{"href":"/es/copilot/how-tos","title":"Procedimientos"},{"href":"/es/copilot/how-tos/copilot-sdk","title":"SDK de Copilot"},{"href":"/es/copilot/how-tos/copilot-sdk/setup","title":"Configuración del SDK de Copilot"},{"href":"/es/copilot/how-tos/copilot-sdk/setup/bundled-cli","title":"CLI agrupada"}],"documentType":"article"},"body":"# Configuración predeterminada (CLI agrupada)\n\nLos SDK de Node.js y .NET incluyen la CLI de Copilot como dependencia: la aplicación se distribuye con todo lo que necesita, sin necesidad de instalación ni configuración adicionales.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\nEl SDK de Python recomienda un paso de descarga único después de la instalación:\n\n```bash\npython -m copilot download-runtime\n```\n\nEsto descarga el tiempo de ejecución coincidente y lo almacena en caché localmente. Si omite este paso, el SDK intentará descargarlo automáticamente la primera vez que se utilice como alternativa.\n\n**Lo mejor para:** La mayoría de las aplicaciones: aplicaciones de escritorio, herramientas independientes, utilidades de la CLI, prototipos y mucho más.\n\n## Cómo funciona\n\nAl instalar el SDK, el entorno de ejecución de Copilot se incluye automáticamente (Node.js, .NET) o se descarga a través `python -m copilot download-runtime` de (Python). El SDK lo inicia como un proceso secundario y se comunica a través de stdio. No hay nada adicional para configurar.\n\n![Diagrama: Diagrama de flujo que muestra el proceso descrito.](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-0.png)\n\n**Características principales:**\n\n* El binario de la CLI se incluye con el SDK: no se necesita ninguna instalación independiente.\n* El SDK administra la versión de la CLI para garantizar la compatibilidad.\n* Los usuarios se autentican a través de la aplicación (o usan env vars/BYOK)\n* Las sesiones se administran por usuario en su máquina\n\n## Inicio rápido\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\n\nconst client = new CopilotClient();\n\nconst session = await client.createSession({ model: \"gpt-5.4\" });\nconst response = await session.sendAndWait({ prompt: \"Hello!\" });\nconsole.log(response?.data.content);\n\nawait client.stop();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nfrom copilot import CopilotClient\nfrom copilot.session import PermissionHandler\n\nclient = CopilotClient()\nawait client.start()\n\nsession = await client.create_session(on_permission_request=PermissionHandler.approve_all, model=\"gpt-5.4\")\nresponse = await session.send_and_wait(\"Hello!\")\nprint(response.data.content)\n\nawait client.stop()\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n> \\[!NOTE]\n> A diferencia de Node.js, Python y .NET, el SDK de Go no incluye una CLI como una dependencia automática. Sin una ruta explícita, `NewClient(nil)` usa una CLI integrada cuando está disponible y, en caso contrario, recurre a `copilot` en `PATH`. Para insertar una CLI, ejecute la [herramienta bundler](https://github.com/github/copilot-sdk/tree/main/go/README.md#distributing-your-application-with-an-embedded-github-copilot-cli) en tiempo de compilación. También puede configurar `COPILOT_CLI_PATH` o hacer que `Connection` apunte a un binario existente. Consulte [Configuración de la CLI local](/es/copilot/how-tos/copilot-sdk/setup/local-cli) para obtener más información.\n\n```golang\nclient := copilot.NewClient(nil)\nif err := client.Start(ctx); err != nil {\n    log.Fatal(err)\n}\ndefer client.Stop()\n\nsession, _ := client.CreateSession(ctx, &copilot.SessionConfig{Model: \"gpt-5.4\"})\nresponse, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: \"Hello!\"})\nif d, ok := response.Data.(*copilot.AssistantMessageData); ok {\n    fmt.Println(d.Content)\n}\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nawait using var client = new CopilotClient();\nawait using var session = await client.CreateSessionAsync(\n    new SessionConfig { Model = \"gpt-5.4\" });\n\nvar response = await session.SendAndWaitAsync(\n    new MessageOptions { Prompt = \"Hello!\" });\nConsole.WriteLine(response?.Data.Content);\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"java\" data-label=\"Java\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Java</div>\n\n> \\[!NOTE]\n> El SDK de Java no agrupa ni inserta la CLI de Copilot. Instale la CLI por separado y haga que `copilot` esté disponible en su `PATH` o establezca su ubicación con `setCliPath(...)` (o conéctese a un servidor CLI en ejecución con `setCliUrl(...)`).\n\n```java\nimport com.github.copilot.CopilotClient;\nimport com.github.copilot.rpc.*;\n\nvar client = new CopilotClient(new CopilotClientOptions()\n    // Point to the CLI binary installed on the system\n    .setCliPath(\"/path/to/vendor/copilot\")\n);\nclient.start().get();\n\nvar session = client.createSession(new SessionConfig()\n    .setModel(\"gpt-5.4\")\n    .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)\n).get();\n\nvar response = session.sendAndWait(new MessageOptions()\n    .setPrompt(\"Hello!\")).get();\nSystem.out.println(response.getData().content());\n\nclient.stop().get();\n```\n\n</div>\n\n</div>\n\n## Estrategias de autenticación\n\nDebe decidir cómo se autenticarán los usuarios. Estos son los patrones comunes:\n\n![Diagrama: Diagrama de flujo que muestra el proceso descrito.](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-1.png)\n\n### Opción A: credenciales de inicio de sesión del usuario (más sencilla)\n\nEl usuario inicia sesión en la CLI una vez y la aplicación usa esas credenciales. No se necesita código adicional: este es el comportamiento predeterminado.\n\n```typescript\nconst client = new CopilotClient();\n// Default: uses signed-in user credentials\n```\n\n### Opción B: testigo mediante una variable de entorno\n\nEnvíe la aplicación con instrucciones para establecer un token o establecerla mediante programación:\n\n```typescript\nconst client = new CopilotClient({\n    env: {\n        COPILOT_GITHUB_TOKEN: getUserToken(),  // Your app provides the token\n    },\n});\n```\n\n### Opción C: BYOK (sin autenticación GitHub necesaria)\n\nSi gestionas tus propias claves de proveedor de modelos, los usuarios no necesitan cuentas de GitHub en absoluto:\n\n```typescript\nconst client = new CopilotClient();\n\nconst session = await client.createSession({\n    model: \"gpt-5.4\",\n    provider: {\n        type: \"openai\",\n        baseUrl: \"https://api.openai.com/v1\",\n        apiKey: process.env.OPENAI_API_KEY,\n    },\n});\n```\n\nConsulte **[BYOK (traiga su propia clave)](/es/copilot/how-tos/copilot-sdk/auth/byok)** para obtener más información.\n\n## Administración de sesiones\n\nLas aplicaciones suelen querer sesiones con nombre para que los usuarios puedan reanudar conversaciones:\n\n```typescript\nconst client = new CopilotClient();\n\n// Create a session tied to the user's project\nconst sessionId = `project-${projectName}`;\nconst session = await client.createSession({\n    sessionId,\n    model: \"gpt-5.4\",\n});\n\n// User closes app...\n// Later, resume where they left off\nconst resumed = await client.resumeSession(sessionId);\n```\n\nEl estado de sesión persiste en `~/.copilot/session-state/{sessionId}/`.\n\n## Cuándo seguir adelante\n\n| Requisito                                                                                     | Guía siguiente |\n| --------------------------------------------------------------------------------------------- | -------------- |\n| Usuarios que inician sesión con cuentas de GitHub                                             |                |\n| [Configuración de OAuth de GitHub](/es/copilot/how-tos/copilot-sdk/setup/github-oauth)        |                |\n| Ejecución en un servidor en lugar de máquinas de usuario                                      |                |\n| [Configuración de servicios back-end](/es/copilot/how-tos/copilot-sdk/setup/backend-services) |                |\n| Usa tus propias claves del modelo                                                             |                |\n| [BYOK (traiga su propia clave)](/es/copilot/how-tos/copilot-sdk/auth/byok)                    |                |\n\n## Pasos siguientes\n\n* **[BYOK (traiga su propia clave)](/es/copilot/how-tos/copilot-sdk/auth/byok)**: Usa las claves de tu proveedor de modelos\n* **[Reanudación y persistencia de sesión](/es/copilot/how-tos/copilot-sdk/features/session-persistence)**: Administración avanzada de sesiones\n* **[Crea tu primera aplicación con tecnología Copilot](/es/copilot/how-tos/copilot-sdk/getting-started)**: Compilación de una aplicación completa"}