Skip to main content
Skip to content

Запуск среды выполнения Copilot в процессе

Размещение в процессе загружает собственную среду выполнения Copilot в процесс приложения, а не запускает отдельный процесс Copilot CLI. Используйте его для удаления управления дочерними процессами при сохранении одинаковых сеансов пакета SDK Copilot, событий, инструментов, перехватчиков и JSON-RPC поведения.

Предупреждение

Размещение в процессе является экспериментальным в каждом пакете SDK. Тестирование поведения запуска, запуска, модели и завершения работы в каждой развернутой операционной системе и архитектуре.

Когда следует использовать внутрипроцессное размещение

Размещение в процессе хорошо подходит, когда:

  • Приложение должно выполняться без отдельного процесса выполнения.
  • Вы хотите, чтобы пакет SDK владел жизненным циклом среды выполнения.
  • Вы можете отправить собственную библиотеку для каждой платформы развертывания.
  • Допустимые параметры среды и рабочего каталога.

Используйте Настройка по умолчанию (в комплекте CLI) , если изоляция процесса и наиболее установленный путь развертывания являются более важными. Используйте Настройка серверных сервисов , если несколько экземпляров приложений должны подключаться к общей среде выполнения через TCP.

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

Пакет SDK загружает собственную библиотеку среды выполнения Copilot и привязывает фиксированный ABI C. Все методы ПАКЕТА SDK продолжают использовать существующий Content-LengthJSON-RPC протокол JSON-RPC через подключение в памяти.

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

Среда выполнения:

  • Выполняется в процессе приложения без Node.js, дочернего процесса, TCP-порта или маркера подключения.
  • Поддерживает те же сеансы, потоковые события, средства, перехватчики, разрешения и запросы между клиентами, что и другие транспорты.
  • Может вызывать обратные вызовы пакета SDK из собственных рабочих потоков. Пакет SDK обрабатывает маршалирование потоков и время существования обратного вызова.
  • Сохраняет загруженную собственную библиотеку и его рабочий пул доступны в течение всего времени существования процесса приложения.

Требования к пакету SDK

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

SDKПараметр подключенияДополнительное требование
TypeScriptRuntimeConnection.forInProcess()Нет, если пакет включает совместимый пакет среды выполнения
PythonRuntimeConnection.for_inprocess()Предварительная загрузка при python -m copilot download-runtime --in-process недоступности загрузки среды выполнения во время запуска
Gocopilot.InProcessConnection{}Сборка с помощью -tags copilot_inprocess
.NETRuntimeConnection.ForInProcess()Разрешить диагностику экспериментального GHCP001 API
RustTransport::InProcess
bundled-in-process Включение функции Cargo
JavaRuntimeConnection.forInProcess()Добавление JNA, классификатора среды выполнения платформы и экспериментального использования API

Собственный пакет среды выполнения должен соответствовать операционной системе узла, архитектуре ЦП и библиотеке Linux, C. Неподдерживаемые узлы завершаются ошибкой во время разрешения среды выполнения или запуска вместо возврата к дочернему процессу.

Настройка подключения в процессе

Передайте параметр подключения для конкретного языка при создании клиента.

Языки кода navigation

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

const client = new CopilotClient({
  connection: RuntimeConnection.forInProcess(),
});

await client.start();

Вы также можете задать COPILOT_SDK_DEFAULT_CONNECTION=inprocess перед запуском приложения. Пакет SDK использует это значение только в том случае, если клиент не указывает явное подключение. Недопустимое значение приводит к сбою запуска.

Предпочитайте явную конфигурацию клиента в коде приложения. Используйте переменную среды, если конфигурация развертывания должна выбрать транспорт без изменения приложения.

Настройка среды выполнения

Пакет SDK преобразует поддерживаемые типизированные параметры клиента в собственные аргументы среды выполнения и значения среды с областью узла. В зависимости от пакета SDK эти параметры включают:

  • Маркер проверки подлинности и резервный вариант входа в систему.
  • Copilot базовый каталог.
  • Уровень журнала.
  • Время ожидания простоя сеанса.
  • Режим удаленного сеанса.

Среда выполнения в процессе получает моментальный снимок среды узла, а также поддерживаемые переопределения, управляемые пакетом SDK. Он не изменяет среду узла.

Задайте значения на уровне процесса перед созданием первого внутрипроцессного клиента. К ним относятся переменные среды, которые не представлены типизированными параметрами клиента и текущим рабочим каталогом приложения.

Разрешение библиотеки среды выполнения

Каждый пакет SDK сначала ищет совместимую или кэшированную библиотеку среды выполнения. Вы можете задать COPILOT_CLI_PATH указатель на совместимый пакет среды выполнения Copilot, если необходимо предоставить среду выполнения отдельно.

В процессе обычно загружается только один путь к библиотеке собственной среды выполнения и версия. Запуск другого клиента с той же загруженной библиотекой поддерживается, но попытка загрузить другую библиотеку среды выполнения завершается ошибкой.

Для рабочих развертываний:

  1. Создание и тестирование приложения для каждой целевой платформы.
  2. Убедитесь, что соответствующий собственный артефакт среды выполнения включен в развернутый пакет или доступен с помощью механизма загрузки среды выполнения пакета SDK.
  3. Запустите по крайней мере один сеанс и завершите поворот модели в тестовом режиме развертывания.
  4. Перед завершением работы приложения остановите клиентов.

Поведение жизненного цикла

Запуск внутрипроцессного клиента загружает собственную библиотеку, создает узел среды выполнения, открывает подключение в памяти и выполняет нормальное подтверждение версии протокола SDK.

Во время корректного завершения работы пакет SDK:

  1. Закрывает активные сеансы.
  2. Запрашивает обычное завершение работы среды выполнения через JSON-RPC.
  3. Закрывает JSON-RPC и собственные подключения.
  4. Освобождает узел среды выполнения.

Собственная библиотека может оставаться загруженной до завершения процесса приложения. Не зависят от выгрузки и замены библиотеки среды выполнения после первого использования.

Limitations

В процессе размещения имеются следующие текущие ограничения:

  • Экспериментальный API: требования к поведению и упаковке могут меняться между выпусками.
  • Состояние общего процесса: все клиенты совместно используют среду процесса узла, текущий рабочий каталог, собственную библиотеку и рабочий пул среды выполнения.
  • Варианты ограниченного процесса: параметры пакета SDK для произвольной среды, рабочего каталога, конфигурации телеметрии, пути исполняемого файла или аргументы CLI отклоняются, если это применимо. Настройте глобальные значения процесса в хост-процессе и используйте поддерживаемые типизированные параметры для параметров среды выполнения.
  • Нет рабочего каталога для каждого клиента: среда выполнения использует рабочий каталог процесса размещения.
  • Одна версия среды выполнения для каждого процесса: загрузка другого пути к собственной библиотеке или версии не поддерживается.
  • Степень зрелости платформы зависит от того, что некоторые сочетания пакетов SDK и платформы снижают уровень охвата модели или завершения работы. Проверьте точное сочетание развернутых данных.

Дополнительные материалы