Skip to main content

Использование локального CLI с Copilot SDK

Используйте GitHub Copilot SDK с CLI, уже вошедшим в систему — самая простая конфигурация, без кода аутентификации или инфраструктуры.

Кто может использовать эту функцию?

GitHub Copilot SDK Доступна со всеми Copilot тарифными планами.

Примечание.

          Второй пилот SDK в настоящее время находится в Technical Preview. Функциональность и доступность могут меняться.

Подключение GitHub Copilot SDK к локально зарегистрированному CLI — самый быстрый способ начать.

          **Лучше всего для:** Личные проекты, прототипирование, локальное развитие и изучение SDK.

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

При установке Второй пилот CLI и входе ваши учетные данные хранятся в системном ключе. SDK автоматически запускает CLI как дочерний процесс и использует эти сохранённые учетные данные. Ключевые характеристики:

  • CLI создаётся автоматически SDK — настройка не требуется.
  • Аутентификация использует учетные данные авторизованного пользователя из системного ключевого круга.
  • Связь происходит через stdio (stdin/stdout) — сетевые порты не открываются.
  • Сессии локальны для вашего компьютера.

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

В стандартной конфигурации вообще не требуется никаких опций.

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()

Вперед

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);

SDK отвечает за всё: запуск CLI, аутентификацию и управление сессией.

Как это работает внутри компании?

Для получения дополнительной информации о порядке взаимодействия между компонентами см. диаграмму последовательностей в github/copilot-sdkрепозитории.

Параметры конфигурации

Хотя настройки по умолчанию работают в большинстве случаев, вы можете настроить локальную конфигурацию:

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",
});

Использование переменных среды

Вместо связки ключей можно аутентифицироваться через переменные среды. Это полезно для CI или если вы не хотите интерактивного входа.

# 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

Замените YOUR-GITHUB-TOKEN на валидный GitHubpersonal access token или OAuth токен. SDK автоматически принимает их — изменения кода не требуются.

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

С локальным CLI сессии по умолчанию эфемерны. Чтобы создать вособновляемые сессии, укажите идентификатор сессии:

// 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");

Состояние сессии хранится локально по ~/.copilot/session-state/SESSION-ID/адресу , где SESSION-ID находится указанный вами идентификатор сессии.

Ограничения

ОграничениеСведения
          **Одиночный пользователь** | Удостоверения привязаны к тому, кто вошёл в CLI. |

| Только местные | CLI работает на том же компьютере, что и ваше приложение. | | Нет мультиарендатора | Не может обслуживать нескольких пользователей из одного экземпляра CLI. | | Требуется вход в систему CLI | Пользователь должен сначала запустить copilot и пройти аутентификацию. |

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