Skip to main content
Select language: current language is Russian
Поиск или запрос Copilot
Открыть меню

Совместимость SDK и CLI

Сравните, какие Copilot функции CLI доступны, Второй пилот SDKопределите функции только для CLI и найдите программные обходные пути.

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

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

Примечание.

          Второй пилот SDK в настоящее время находится в public preview. Функциональность и доступность могут меняться.
          GitHub Copilot SDK Общается с GitHub Copilot CLI JSON-RPC протоколом. Функции должны быть явно раскрыты через этот протокол, чтобы быть доступными в SDK. Многие интерактивные функции CLI специфичны для терминала и недоступны программно.

Сравнение функций

Доступно в формате SDK

ФункцияМетод SDKПримечания
          **Управление сеансами** |

| | | Создание сеанса | createSession() | Полная поддержка конфигурации | | Сессия резюме | resumeSession() | С бесконечными сессионными рабочими пространствами | | Завершить сеанс. | disconnect() | Выпуск ресурсов в памяти | | Сессия уничтожения | destroy() | Вместо нее следует использовать disconnect(). | | Удаление сеанса | deleteSession() | Извлечение из хранения | | Перечисление сеансов | listSessions() | Все сохранённые сессии | | Получите последнюю сессию | getLastSessionId() | Краткое резюме | | Сессия на переднем плане | getForegroundSessionId() | Многосессионная координация | | Задайте сессию на переднем плане | setForegroundSessionId() | Многосессионная координация | | Сообщения | | | | Отправить сообщение | send() | С приложениями | | Отправь и жди | sendAndWait() | Блоки до завершения | | Рулевое управление (режим мгновенности) | send({ mode: "immediate" }) | Ввод в середине поворота без прекращения | | Очередь (режим очереди) | send({ mode: "enqueue" }) | Буфер для последовательной обработки (по умолчанию) | | Вложенные файлы | send({ attachments: [{ type: "file", path }] }) | Изображения автоматически кодируются и изменяются в размере | | Вложения в каталог | send({ attachments: [{ type: "directory", path }] }) | Прикрепить контекст каталога | | Узнать историю | getMessages() | Все сессионные мероприятия | | Отмена | abort() | Отменить запрос на борт | | Инструменты | | | | Регистрируйте пользовательские инструменты | registerTools() | Полная поддержка JSON Schema | | Контроль прав на инструмент | onPreToolUse Крюк | Разрешить/отрицать/просить | | Модификация результатов инструмента | onPostToolUse Крюк | Результаты преобразования | | Доступные/исключённые инструменты | availableTools, excludedTools config | Инструменты фильтрации | | Модели | | | | Перечисление моделей | listModels() | С возможностями, биллингом, политикой | | Модель множества (на момент создания) | model Конфигурация в сессии | За сессию | | Модель Switch (в середине сессии) | session.setModel() | Также через session.rpc.model.switchTo() | | Получите актуальную модель | session.rpc.model.getCurrent() | Активная модель запроса | | Усилия в рассуждениях | reasoningEffort конфигурация | Для поддерживаемых моделей | | Режим агента | | | | Включите текущий режим | session.rpc.mode.get() | Возвращает текущий режим | | Режим постановки | session.rpc.mode.set() | Переключение между режимами | | Управление планами | | | | Читать план | session.rpc.plan.read() | Получайте plan.md контент и путь | | План обновления | session.rpc.plan.update() | Пишите plan.md контент | | Удаление плана | session.rpc.plan.delete() | Удалите plan.md | | Файлы рабочей области | | | | Список файлов рабочего пространства | session.rpc.workspace.listFiles() | Файлы в рабочем пространстве сессии | | Читать файл рабочего пространства | session.rpc.workspace.readFile() | Чтение содержимого файла | | Создать файл рабочего пространства | session.rpc.workspace.createFile() | Создать файл в рабочем пространстве | | Аутентификация | | | | Получить статус аутентификации | getAuthStatus() | Проверьте состояние входа | | Используйте токен | параметр githubToken | Программная аутентификация | | Связь | | | | Пинг | client.ping() | Проверка состояния с таймметкой сервера | | Получить статус сервера | client.getStatus() | Версия протокола и информация о сервере | | Серверы MCP | | | | Локальные/stdio серверы | mcpServers конфигурация | Процессы появления | | Удалённый HTTP/SSE | mcpServers конфигурация | Подключение к службам | | Обработчики | | | | До использования инструментов | onPreToolUse | Разрешение, изменение args | | Использование после использования инструмента | onPostToolUse | Изменить результаты | | Запрос пользователя | onUserPromptSubmitted | Подсказки изменения | | Начало/окончание сессии | onSessionStart, onSessionEnd | Жизненный цикл с источником/причиной | | Обработка ошибок | onErrorOccurred | Индивидуальное обращение | | События | | | | Все сессионные мероприятия | on(), once() | 40+ типов мероприятий | | Стриминг | streaming: true | События Delta | | Конфигурация сессии | | | | Пользовательские агенты | customAgents конфигурация | Определить специализированные агенты | | Системное сообщение | systemMessage конфигурация | Дополнение или замена | | Настраиваемый поставщик | provider конфигурация | Поддержка BYOK | | Бесконечные сессии | infiniteSessions конфигурация | Автоматическое сжатие | | Обработчик разрешений | onPermissionRequest | Одобрить/отклонить запросы | | Обработчик пользовательского ввода | onUserInputRequest | Занимайся ask_user | | Навыки | skillDirectories конфигурация | Настраиваемые навыки | | Навыки инвалидов | disabledSkills конфигурация | Отключите специфические навыки | | Каталог конфигураций | configDir конфигурация | Отменить местоположение конфигурации по умолчанию | | имя клиента; | clientName конфигурация | Идентифицировать приложение в User-Agent | | Рабочий каталог | workingDirectory конфигурация | Set session cwd | | экспериментальный | | | | Управление агентами | session.rpc.agent.* | Списать, выбирать, снимать выбор, получить текущего агента | | Режим флота | session.rpc.fleet.start() | Параллельное выполнение субагентов | | Ручное уплотнение | session.rpc.compaction.compact() | Уплотнение по требованию триггера |

Недоступно в SDK (только для CLI)

ФункцияКоманда/опция CLIПричина
          **Экспорт сессий** |

| | | Экспорт в файл | --share, /share | Не по протоколу | | Экспорт в суть | --share-gist, /share gist | Не по протоколу | | Интерактивный интерфейс | | | | Команды слэш | /help, , /clear``/exitи т. д. | Только для терминального интерфейса (TUI) | | Диалог с выбором агента | /agent | Интерактивный интерфейс | | Диалог в режиме дифференциала | /diff | Интерактивный интерфейс | | Диалог обратной связи | /feedback | Интерактивный интерфейс | | Выбор тем | /theme | Интерфейс терминала | | Модель выбора | /model | Интерактивный интерфейс (используйте SDK setModel() ) | | Копировать в буфер обмена | /copy | Терминально-специфическая | | Управление контекстом | /context | Интерактивный интерфейс | | Исследования и история | | | | Глубокое исследование | /research | Рабочий процесс TUI с веб-поиском | | Инструменты истории сессий | /chronicle | Стендап, советы, улучшение, переиндексация | | Возможности терминала | | | | Цветовой выход | --no-color | Терминально-специфическая | | Режим экранного читателя | --screen-reader | Доступность | | Рендеринг с богатыми дифференциальными элементами | --plain-diff | Терминальный рендеринг | | Стартап-баннер | --banner | Визуальный элемент | | Стримерный режим | /streamer-mode | Режим отбора TUI | | Альтернативный буфер экрана | --alt-screen, --no-alt-screen | Терминальный рендеринг | | Поддержка мыши | --mouse, --no-mouse | Терминальный вход | | Ярлыки пути/разрешения | | | | Разрешить все пути | --allow-all-paths | Используйте обработчик прав | | Разрешить все URL | --allow-all-urls | Используйте обработчик прав | | Разрешить все права | --yolo, , --allow-all``/allow-all | Используйте обработчик прав | | Разрешения гранулированных инструментов | --allow-tool, --deny-tool | Используйте onPreToolUse крючок | | Контроль доступа к URL | --allow-url, --deny-url | Используйте обработчик прав | | Инструменты, разрешённые для сброса, | /reset-allowed-tools | Командование TUI | | Управление каталогами | | | | Добавить каталог | /add-dir, --add-dir | Настройка в сессии | | Каталоги списков | /list-dirs | Командование TUI | | Каталог изменений | /cwd | Командование TUI | | Управление плагинами/MCP | | | | Команды плагинов | /plugin | Интерактивное управление | | Управление сервером MCP | /mcp | Интерактивный интерфейс | | Управление учетными записями | | | | Поток входа | /login, copilot auth login | Поток устройств OAuth | | Выход | /logout, copilot auth logout | Прямой CLI | | Сведения о пользователе | /user | Командование TUI | | Сессионная деятельность | | | | Ясный разговор | /clear | Только для TUI | | Вид плана | /plan | Только для TUI (используйте SDK session.rpc.plan.* ) | | Управление сеансами | /session, , /resume``/rename | Рабочий процесс TUI | | Режим флота (интерактивный) | /fleet | Только для TUI (используйте SDK session.rpc.fleet.start() ) | | Управление навыками | | | | Управление навыками | /skills | Интерактивный интерфейс | | Управление задачами | | | | Просмотр фоновых задач | /tasks | Командование TUI | | Использование и статистика | | | | Использование токенов | /usage | Подписывайтесь на события использования | | Проверка кода | | | | Проверить изменения | /review | Командование TUI | | Делегирование | | | | Делегат в PR | /delegate | Рабочий процесс TUI | | Настройка терминала | | | | Интеграция оболочки | /terminal-setup | Специфичная для раковины | | Развитие | | | | Экспериментальный переключатель | /experimental, --experimental | Флаг во время выполнения | | Управление пользовательскими инструкциями | --no-custom-instructions | Флаг CLI | | Сеанс диагностики | /diagnose | Командование TUI | | Просмотр/управление инструкциями | /instructions | Командование TUI | | Сбор отладочных журналов | /collect-debug-logs | Средство диагностики | | Reindex workspace | /reindex | Командование TUI | | Интеграция с IDE | /ide | Рабочий процесс, специфичный для IDE, | | Неинтерактивный режим | | | | Режим подсказки | -p, --prompt | Одноразовая казнь | | Интерактивный запрос | -i, --interactive | Автоматическое выполнение, затем интерактивное | | Бесшумный выход | -s, --silent | Удобно для сценария | | Продолжить сессию | --continue | Резюме — последнее | | Выбор агента | --agent <agent> | Флаг CLI |

Обходные пути

Экспорт сессий

Эта --share опция недоступна через SDK. Чтобы решить эту проблему, сделайте следующее:

  •         **Собирайте события вручную:** Подпишитесь на события сессий и создайте собственный экспорт:
    
    TypeScript
    const events: SessionEvent[] = [];
    session.on((event) => events.push(event));
    // ... after conversation ...
    const messages = await session.getMessages();
    // Format as markdown yourself
    
  •         **Используйте CLI напрямую** для одноразового экспорта.
    

Контроль разрешений

SDK использует модель отказов по умолчанию. Все запросы на разрешения (запись файлов, команды shell, получение URL и другие) отклоняются, если только ваше приложение не предоставляет обработчик onPermissionRequest .

Вместо --allow-all-paths или --yolo, используйте обработчик разрешений:

TypeScript
const session = await client.createSession({
  onPermissionRequest: approveAll,
});

Отслеживание использования токенов

Вместо /usage, подписывайтесь на события использования:

TypeScript
session.on("assistant.usage", (event) => {
  console.log("Tokens used:", {
    input: event.data.inputTokens,
    output: event.data.outputTokens,
  });
});

Уплотнение контекста

Вместо /compactэтого настройте автоматическое уплотнение или активируйте её вручную:

TypeScript
// Automatic compaction via config
const session = await client.createSession({
  infiniteSessions: {
    enabled: true,
    backgroundCompactionThreshold: 0.80,  // Start background compaction at 80% context utilization
    bufferExhaustionThreshold: 0.95,      // Block and compact at 95% context utilization
  },
});

// Manual compaction (experimental)
const result = await session.rpc.compaction.compact();
console.log(`Removed ${result.tokensRemoved} tokens, ${result.messagesRemoved} messages`);

Примечание.

Пороги — это коэффициенты использования контекста (0,0-1,0), а не абсолютное количество токенов.

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

Программно читайте и пишите планы сессий:

TypeScript
// Read the current plan
const plan = await session.rpc.plan.read();
if (plan.exists) {
  console.log(plan.content);
}

// Update the plan
await session.rpc.plan.update({ content: "# My Plan\n- Step 1\n- Step 2" });

// Delete the plan
await session.rpc.plan.delete();

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

Введите сообщение в текущий ход LLM без прерывания:

TypeScript
// Steer the agent mid-turn
await session.send({ prompt: "Focus on error handling first", mode: "immediate" });

// Default: enqueue for next turn
await session.send({ prompt: "Next, add tests" });

Ограничения протокола

SDK может получать доступ только к функциям, открытым через протокол JSON-RPC CLI. Если вам нужна функция CLI, которая недоступна:

  •         **Проверьте альтернативы:** Многие функции имеют аналоги SDK (см. [выше раздел обходных путей](#workarounds) ).
    
  •         **Используйте CLI напрямую:** Для единичных операций используйте CLI.
    
  •         **Запросить функцию:** Откройте проблему в [репозитории github/copilot-sdk](https://github.com/github/copilot-sdk/issues) , чтобы запросить поддержку протокола.
    

Совместимость версий

Диапазон протокола SDKВерсия протокола CLIСовместимость
v2-v3версия 3Полная поддержка
v2-v3версия 2Поддерживается автоматическими адаптерами v2

SDK согласует версии протокола с CLI при запуске. SDK поддерживает версии протокола 2–3. При подключении к серверу CLI v2 SDK автоматически адаптируется tool.call и permission.request сообщает к модели событий v3 — без изменений кода.

Вы можете проверить версии во время выполнения:

TypeScript
const status = await client.getStatus();
console.log("Protocol version:", status.protocolVersion);
Morty Proxy This is a proxified and sanitized view of the page, visit original site.