Skip to main content

Uso de una CLI local con el SDK de Copilot

Use SDK de GitHub Copilot con la CLI que ya ha iniciado sesión en la máquina, la configuración más sencilla, sin código de autenticación ni infraestructura necesaria.

¿Quién puede utilizar esta característica?

SDK de GitHub Copilot está disponible con todos los Copilot planes.

Nota:

          SDK de Copilot actualmente está en Versión preliminar técnica. La funcionalidad y la disponibilidad están sujetas a cambios.

Conectar SDK de GitHub Copilot a tu CLI de inicio de sesión local es la manera más rápida de empezar a trabajar.

          **Lo mejor para:** Proyectos personales, creación de prototipos, desarrollo local y aprendizaje del SDK.

Cómo funciona

Cuando instalas CLI de Copilot e inicias sesión, tus credenciales se almacenan en el llavero del sistema. El SDK inicia automáticamente la CLI como un proceso secundario y usa esas credenciales almacenadas. Características clave:

  • El SDK genera automáticamente la CLI, sin necesidad de configuración.
  • La autenticación usa las credenciales del usuario que ha iniciado sesión desde la cadena de claves del sistema.
  • La comunicación se produce a través de stdio (stdin/stdout): no se abre ningún puerto de red.
  • Las sesiones son locales en la máquina.

Inicio rápido

La configuración predeterminada no requiere ninguna opción.

Node.js/TypeScript

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
const session = await client.createSession({ model: "gpt-4.1" });

const response = await session.sendAndWait({ prompt: "Hello!" });
console.log(response?.data.content);

await client.stop();

Python

from copilot import CopilotClient, PermissionHandler

client = CopilotClient()
await client.start()

session = await client.create_session(on_permission_request=PermissionHandler.approve_all, model="gpt-4.1")
response = await session.send_and_wait({"prompt": "Hello!"})
print(response.data.content)

await client.stop()

Go

client := copilot.NewClient(nil)
if err := client.Start(ctx); err != nil {
    log.Fatal(err)
}
defer client.Stop()

session, _ := client.CreateSession(ctx, &copilot.SessionConfig{Model: "gpt-4.1"})
response, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: "Hello!"})
fmt.Println(*response.Data.Content)

.NET

await using var client = new CopilotClient();
await using var session = await client.CreateSessionAsync(
    new SessionConfig { Model = "gpt-4.1" });

var response = await session.SendAndWaitAsync(
    new MessageOptions { Prompt = "Hello!" });
Console.WriteLine(response?.Data.Content);

El SDK controla todo: iniciar la CLI, autenticarse y administrar la sesión.

¿Cómo funciona esto internamente?

Para obtener más información sobre el orden de interacción entre los componentes, consulte el diagrama de secuencia en el github/copilot-sdkrepositorio.

Opciones de configuración

Aunque los valores predeterminados funcionan en la mayoría de los casos, puede personalizar la configuración local:

const client = new CopilotClient({
    // Override CLI location (default: bundled with @github/copilot)
    cliPath: "/usr/local/bin/copilot",

    // Set log level for debugging
    logLevel: "debug",

    // Pass extra CLI arguments
    cliArgs: ["--log-dir=/tmp/copilot-logs"],

    // Set working directory
    cwd: "/path/to/project",
});

Uso de variables de entorno

En lugar de la cadena de claves, puede autenticarse a través de variables de entorno. Esto es útil para CI o cuando no desea el inicio de sesión interactivo.

# Set one of these (in priority order):
export COPILOT_GITHUB_TOKEN="YOUR-GITHUB-TOKEN"   # Recommended
export GH_TOKEN="YOUR-GITHUB-TOKEN"               # GitHub CLI compatible
export GITHUB_TOKEN="YOUR-GITHUB-TOKEN"           # GitHub Actions compatible

Reemplace YOUR-GITHUB-TOKEN con un GitHubpersonal access token válido o token OAuth. El SDK los recoge automáticamente; no se necesitan cambios en el código.

Administración de sesiones

Con la CLI local, las sesiones son efímeras de forma predeterminada. Para crear sesiones reanudables, proporcione un identificador de sesión:

// Create a named session
const session = await client.createSession({
    sessionId: "my-project-analysis",
    model: "gpt-4.1",
});

// Resume it in a later run
const resumed = await client.resumeSession("my-project-analysis");

El estado de sesión se almacena localmente en ~/.copilot/session-state/SESSION-ID/, donde SESSION-ID es el identificador de sesión que proporcionó.

Limitaciones

LimitaciónDetalles
          **Usuario único** | Las credenciales están vinculadas a quien haya accedido a la CLI. |

| Solo local | La CLI se ejecuta en la misma máquina que la aplicación. | | Sin multiinquilino | No se pueden atender varios usuarios desde una instancia de la CLI. | | Requiere el inicio de sesión de la CLI | El usuario debe ejecutar copilot y autenticarse primero. |

Pasos siguientes