{"meta":{"title":"Локальная настройка CLI","intro":"Используйте конкретный бинарный файл CLI вместо автоматического управления CLI в SDK. Это расширенный вариант — вы указываете путь CLI явно и отвечаете за совместимость версий с SDK.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos","title":"Инструкции"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk","title":"Второй пилот SDK"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup","title":"Настройте Copilot SDK"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup/local-cli","title":"Местная CLI"}],"documentType":"article"},"body":"# Локальная настройка CLI\n\nИспользуйте конкретный бинарный файл CLI вместо автоматического управления CLI в SDK. Это расширенный вариант — вы указываете путь CLI явно и отвечаете за совместимость версий с SDK.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n**Используйте, когда:** Необходимо закрепить определенную версию ИНТЕРФЕЙСА командной строки или работать с пакетом SDK Go (который не включает интерфейс командной строки автоматически).\n\n## Принцип работы\n\nПо умолчанию SDK Node.js, Python и .NET содержат собственную зависимость CLI (см. [Настройка по умолчанию (в комплекте CLI)](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup/bundled-cli)). Если вам нужно это переопределить — например, чтобы использовать установленный системой CLI — вы можете воспользоваться этой `Connection` опцией.\n\n![Диаграмма: блок-схема, показывающая описанный процесс.](/assets/images/help/copilot/copilot-sdk/setup-local-cli-diagram-0.png)\n\n**Ключевые характеристики:**\n\n* Вы явно указываете бинарный путь CLI\n* Вы отвечаете за совместимость версии CLI с SDK\n* Аутентификация использует учетные данные авторизованного пользователя из системного ключа (или env vars)\n* Связь происходит через stdio\n\n## Конфигурация\n\n### Использование локального бинарного файла CLI\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    cliPath: \"/usr/local/bin/copilot\",\n});\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_events import AssistantMessageData\nfrom copilot.session import PermissionHandler\n\nclient = CopilotClient({\n    \"cli_path\": \"/usr/local/bin/copilot\",\n})\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!\")\nif response:\n    match response.data:\n        case AssistantMessageData() as data:\n            print(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> Пакет SDK Go не отправляет интерфейс командной строки автоматически. Установите `copilot` в, задайте `PATH` переменную среды, встраивайте интерфейс командной строки с `COPILOT_CLI_PATH` или указывайте [](https://github.com/github/copilot-sdk/tree/main/go/README.md#distributing-your-application-with-an-embedded-github-copilot-cli) на установленный двоичный `StdioConnection.Path`файл.\n\n```golang\nclient := copilot.NewClient(&copilot.ClientOptions{\n    Connection: copilot.StdioConnection{Path: \"/usr/local/bin/copilot\"},\n})\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 response != nil {\n    if d, ok := response.Data.(*copilot.AssistantMessageData); ok {\n        fmt.Println(d.Content)\n    }\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\nvar client = new CopilotClient(new CopilotClientOptions\n{\n    Connection = RuntimeConnection.ForStdio(path: \"/usr/local/bin/copilot\"),\n});\n\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>\n\n## Дополнительные параметры\n\n```typescript\nconst client = new CopilotClient({\n    cliPath: \"/usr/local/bin/copilot\",\n\n    // Set log level for debugging\n    logLevel: \"debug\",\n\n    // Pass extra CLI arguments\n    cliArgs: [\"--log-dir=/tmp/copilot-logs\"],\n\n    // Set working directory\n    cwd: \"/path/to/project\",\n});\n```\n\n## Использование переменных среды\n\nВместо связки ключей можно аутентифицироваться через переменные среды. Это полезно для CI или когда вы не хотите интерактивного входа.\n\n```bash\n# Set one of these (in priority order):\nexport COPILOT_GITHUB_TOKEN=\"gho_xxxx\"   # Recommended\nexport GH_TOKEN=\"gho_xxxx\"               # GitHub CLI compatible\nexport GITHUB_TOKEN=\"gho_xxxx\"           # GitHub Actions compatible\n```\n\nSDK автоматически их принимает — изменения кода не требуются.\n\n## Управление сессиями\n\nСессии по умолчанию эфемерны. Чтобы создать возобновляемые сессии, укажите свой собственный идентификатор сессии:\n\n```typescript\n// Create a named session\nconst session = await client.createSession({\n    sessionId: \"my-project-analysis\",\n    model: \"gpt-5.4\",\n});\n\n// Later, resume it\nconst resumed = await client.resumeSession(\"my-project-analysis\");\n```\n\nСостояние сессии хранится локально в `~/.copilot/session-state/{sessionId}/`.\n\n## Ограничения\n\n| Limitation                 | Сведения                                                           |\n| -------------------------- | ------------------------------------------------------------------ |\n| **Совместимость версий**   | Вы должны убедиться, что ваша версия CLI совместима с SDK          |\n| **Одиночный пользователь** | Учетные данные привязаны к тому, кто вошёл в CLI                   |\n| **Только местные**         | CLI работает на том же компьютере, что и ваше приложение           |\n| **Нет мультиарендатора**   | Нельзя обслуживать нескольких пользователей из одного инстанса CLI |\n\n## Дальнейшие действия\n\n* **[Настройка по умолчанию (в комплекте CLI)](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup/bundled-cli)**: Используйте встроенный CLI SDK (рекомендуется для большинства случаев)\n* **[Создайте своё первое приложение на базе Copilot](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/getting-started)**: Создайте полноценное интерактивное приложение\n* **[АВТОТИТРЫ](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/authenticate)**: Все методы аутентификации подробно"}