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

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

<!-- markdownlint-disable GHD046 GHD005 -->

<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->

Python SDK рекомендует сделать шаг для одноразовой загрузки после установки:

```bash
python -m copilot download-runtime
```

Это скачает соответствующее время выполнения и кэширует его локально. Если вы пропустите этот шаг, SDK попытается скачать его автоматически при первом использовании как запасной вариант.

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

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

Когда вы устанавливаете SDK, Copilot время выполнения включается автоматически (Node.js, .NET) или загружается через `python -m copilot download-runtime` (Python). SDK запускает его как дочерний процесс и общается через stdio. Нечего дополнительно настраивать.

![Диаграмма: блок-схема, показывающая описанный процесс.](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-0.png)

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

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

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

<div class="ghd-codetabs">
<div class="ghd-codetab" data-lang="typescript" data-label="TypeScript"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">TypeScript</div>

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

const client = new CopilotClient();

const session = await client.createSession({ model: "gpt-5.4" });
const response = await session.sendAndWait({ prompt: "Hello!" });
console.log(response?.data.content);

await client.stop();
```

</div>

<div class="ghd-codetab" data-lang="python" data-label="Python"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Python</div>

```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-5.4")
response = await session.send_and_wait("Hello!")
print(response.data.content)

await client.stop()
```

</div>

<div class="ghd-codetab" data-lang="go" data-label="Go"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Go</div>

> \[!NOTE]
> В отличие от Node.js, Python и .NET пакет SDK Go не включает ИНТЕРФЕЙС командной строки в качестве автоматической зависимости. Без явного пути `NewClient(nil)` использует внедренный интерфейс командной строки при наличии, а затем возвращается к `copilot``PATH`нему. Чтобы внедрить интерфейс командной строки, запустите [средство пакета](https://github.com/github/copilot-sdk/tree/main/go/README.md#distributing-your-application-with-an-embedded-github-copilot-cli) во время сборки. Вы также можете задать `COPILOT_CLI_PATH` или указать точку `Connection` в существующем двоичном файле. Дополнительные сведения см. в разделе [Локальная настройка CLI](/ru/copilot/how-tos/copilot-sdk/setup/local-cli) .

```golang
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-5.4"})
response, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: "Hello!"})
if d, ok := response.Data.(*copilot.AssistantMessageData); ok {
    fmt.Println(d.Content)
}
```

</div>

<div class="ghd-codetab" data-lang="dotnet" data-label=".NET"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">.NET</div>

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

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

</div>

<div class="ghd-codetab" data-lang="java" data-label="Java"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Java</div>

> \[!NOTE]
> Java SDK не объединяет и не встраивает Copilot CLI. Установите интерфейс командной строки отдельно и выберите `copilot``PATH` его расположение или установите его расположение с `setCliPath(...)` помощью (или подключитесь к работающему серверу CLI).`setCliUrl(...)`

```java
import com.github.copilot.CopilotClient;
import com.github.copilot.rpc.*;

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-5.4")
    .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)
).get();

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

client.stop().get();
```

</div>

</div>

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

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

![Диаграмма: блок-схема, показывающая описанный процесс.](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-1.png)

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

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

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

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

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

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

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

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

```typescript
const client = new CopilotClient();

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

См. **[БЁК (принеси свой ключ)](/ru/copilot/how-tos/copilot-sdk/auth/byok)** для полной информации.

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

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

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

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

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

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

| Необходимость                                                                          | Следующее руководство |
| -------------------------------------------------------------------------------------- | --------------------- |
| Пользователи входят через аккаунты GitHub                                              |                       |
| [Настройка GitHub OAuth](/ru/copilot/how-tos/copilot-sdk/setup/github-oauth)           |                       |
| Запускайте на сервере, а не на пользовательских машинах                                |                       |
| [Настройка серверных сервисов](/ru/copilot/how-tos/copilot-sdk/setup/backend-services) |                       |
| Используйте свои собственные модели                                                    |                       |
| [БЁК (принеси свой ключ)](/ru/copilot/how-tos/copilot-sdk/auth/byok)                   |                       |

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

* **[БЁК (принеси свой ключ)](/ru/copilot/how-tos/copilot-sdk/auth/byok)**: Используйте свои собственные ключи поставщика моделей
* **[Возобновление сессии и сохранение](/ru/copilot/how-tos/copilot-sdk/features/session-persistence)**: Продвинутое управление сессиями
* **[Создайте своё первое приложение на базе Copilot](/ru/copilot/how-tos/copilot-sdk/getting-started)**: Создайте полноценное приложение