Skip to main content

Настройка по умолчанию (в комплекте CLI)

SDK Node.js, Python и .NET включают Copilot CLI как зависимость — ваше приложение поставляется с всем, что нужно, без дополнительной установки или настройки.

Лучше всего для: Большинство приложений — настольные приложения, отдельные инструменты, утилиты CLI, прототипы и многое другое.

Принцип работы

При установке SDK бинарный файл Copilot CLI включается автоматически. SDK запускает его как дочерний процесс и общается через stdio. Нечего дополнительно настраивать.

Диаграмма: блок-схема, показывающая описанный процесс.

Ключевые характеристики:

  • Бинарный файл CLI входит в комплект SDK — отдельная установка не требуется
  • SDK управляет версией CLI для обеспечения совместимости
  • Пользователи аутентифицируются через ваше приложение (или используют env vars / BYOK)
  • Сессии управляются каждому пользователю на их машине

Быстрый старт

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
from copilot.session import 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("Hello!")
print(response.data.content)

await client.stop()
Go

Примечание.

Go SDK не включает в комплект CLI. Вам нужно установить CLI отдельно или Connection настроить его на ссылку на существующий бинарный файл. Дополнительные сведения см. в разделе Local CLI setup .

package main

import (
    "context"
    "fmt"
    "log"
    copilot "github.com/github/copilot-sdk/go"
)

func main() {
    ctx := context.Background()

    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!"})
    if d, ok := response.Data.(*copilot.AssistantMessageData); ok {
        fmt.Println(d.Content)
    }
}
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!"})
if d, ok := response.Data.(*copilot.AssistantMessageData); ok {
    fmt.Println(d.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);
Java

Примечание.

Java SDK не объединяет и не встраивает Copilot CLI. Вам нужно установить CLI отдельно и настроить его путь через Connection или COPILOT_CLI_PATH переменную среды.

import com.github.copilot.sdk.CopilotClient;
import com.github.copilot.sdk.events.*;
import com.github.copilot.sdk.json.*;

var client = new CopilotClient(new CopilotClientOptions()
    // Point to the CLI binary installed on the system
    .setCliPath("/path/to/vendor/copilot")
);
client.start().get();

var session = client.createSession(new SessionConfig()
    .setModel("gpt-4.1")
    .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)
).get();

var response = session.sendAndWait(new MessageOptions()
    .setPrompt("Hello!")).get();
System.out.println(response.getData().content());

client.stop().get();

Стратегии аутентификации

Вам нужно решить, как ваши пользователи будут аутентифицироваться. Вот распространённые закономерности:

Диаграмма: блок-схема, показывающая описанный процесс.

Вариант А: авторизованные учетные данные пользователя (самое простое)

Пользователь входит в CLI один раз, и ваше приложение использует эти учетные данные. Лишний код не требуется — это поведение по умолчанию.

const client = new CopilotClient();
// Default: uses signed-in user credentials

Вариант B: токен через переменную среды

Отправьте в приложение инструкции по установке токена или программно:

const client = new CopilotClient({
    env: {
        COPILOT_GITHUB_TOKEN: getUserToken(),  // Your app provides the token
    },
});

Вариант C: BYOK (авторизация на GitHub не требуется)

Если вы сами управляете ключами провайдера моделей, пользователям вообще не нужны аккаунты GitHub:

const client = new CopilotClient();

const session = await client.createSession({
    model: "gpt-4.1",
    provider: {
        type: "openai",
        baseUrl: "https://api.openai.com/v1",
        apiKey: process.env.OPENAI_API_KEY,
    },
});

См. BYOK (bring your own key) для полной информации.

Управление сеансами

Приложения обычно хотят иметь именованные сессии, чтобы пользователи могли возобновлять разговоры:

const client = new CopilotClient();

// Create a session tied to the user's project
const sessionId = `project-${projectName}`;
const session = await client.createSession({
    sessionId,
    model: "gpt-4.1",
});

// User closes app...
// Later, resume where they left off
const resumed = await client.resumeSession(sessionId);

Состояние сессии сохраняется при ~/.copilot/session-state/{sessionId}/.

Когда двигаться дальше

НеобходимостьСледующее руководство
Пользователи входят через аккаунты GitHub
Настройка GitHub OAuth
Запускайте на сервере, а не на пользовательских машинах
Настройка серверных сервисов
Используйте свои собственные модели
BYOK (bring your own key)

Дальнейшие действия