GitHub рассказал, как оптимизирует работу GitHub Copilot за счет уменьшения лишних токенов на уровне инфраструктуры агентов, не ухудшая качество подсказок. Команда делает упор не на длину отдельных ответов, а на общую эффективность выполнения задачи — от запроса разработчика до финального результата.
Изменения оценивали поэтапно: сначала на офлайн-бенчмарках для агентных сценариев программирования, затем в онлайновых экспериментах на реальных пользователях. Улучшения затрагивают GitHub Copilot CLI, а также другие продукты Copilot, использующие общий агентный «каркас».
Селективное сжатие вывода вместо грубой обрезки
Многие интеграции для снижения расходов укорачивают вывод инструментов перед тем, как его прочитает агент. GitHub протестировал утилиту RTK (Rust Token Killer), которая обрезает вывод shell-команд, на своих бенчмарках agentic coding. Выяснилось, что короткий ответ инструмента нередко приводил к росту общего числа токенов: модели приходилось повторно открывать исходный вывод или заново запускать команды, чтобы восстановить потерянный контекст.
Анализ запусков показал, что логи установки, сборки, тестов и линтеров часто содержат шум, а вывод, похожий на исходный код, и результаты произвольных команд чаще несут важную информацию для агента. На этой основе команда построила селективный компрессор вывода, частично опираясь на подходы RTK.
Ранние версии компрессора оказались слишком агрессивными: возникали повторы действий и рост стоимости задач. Например, фильтр для git diff пришлось убрать после того, как агенты начали регулярно восстанавливать полный вывод. В итоговой версии компрессор стал более консервативным, потому что именно такой режим показал лучшие результаты в тестах.
При сжатии вывода агент может напрямую запросить полный оригинал через специальный путь восстановления. Этот механизм служит и защитой, и сигналом для оценки: GitHub отслеживал, как часто агент открывает сохраненный вывод, перезапускает команды, повторяет исследование и добавляет новые шаги. В офлайн-задачах заметного падения успешности не выявлено, а обращения к полным логам были крайне редкими. В онлайновом эксперименте средняя стоимость немного снизилась без ощутимых регрессий по качественным метрикам.
Удаление лишней разметки во view-инструменте
Еще одна оптимизация коснулась инструмента view, который агенты используют для чтения содержимого файлов. Ранее он нумеровал каждую строку файла, хотя текущие инструменты редактирования кода используют сопоставление по окружению, а не по номерам строк. В результате ненужные префиксы строк расходовали токены при каждом чтении файла.
GitHub убрал нумерацию строк в этом сценарии. Номера по-прежнему используются в diff и коротких фрагментах, где они помогают навигации, но не добавляются к каждому чтению файла. В офлайн-бенчмарках это дало около 5% снижения стоимости инференса модели без ухудшения успешности задач и без роста числа неудачных правок.
Онлайновый эксперимент с пользователями Copilot CLI показал, что средняя ежедневная стоимость инференса на одного пользователя уменьшилась примерно на 3%, при этом показатели качества и удовлетворенности не изменились. Для разработчиков это означает, что больше места в контекстном окне теперь занимает полезный код, а не форматирование, которое агент все равно не использовал.
Оптимизация промптов с помощью мета-подсказок
Промпты описывают поведение агентов и отправляются модели при каждом шаге. Сокращать их имеет смысл только при сохранении нужного поведения. В GitHub Copilot за запуск параллельной работы отвечает task-инструмент, который использует сложный набор инструкций: описания инструментов, схемы, определения агентов, системные указания и вспомогательные подсказки.
Команда запустила цикл мета-подсказок, в котором сам Copilot поэтапно сокращал и улучшал этот промпт. Кандидаты проходили целевые поведенческие тесты. В результате удалось уменьшить размер промпта task-инструмента примерно вдвое.
Первая онлайновая проверка выявила проблему, не замеченную в офлайне: осторожное руководство по параллелизму было переписано в жесткую политику, из-за чего независимые пользовательские агенты стали запускаться последовательно. Эксперимент остановили, а перед следующей итерацией добавили специальный тест, проверяющий это поведение.
В финальной версии явные списки разрешенных и запрещенных действий заменили одной короткой фразой: «Независимые агенты могут работать параллельно; учитывай побочные эффекты». Эта формулировка короче и менее жесткая, передает выбор модели и при этом проходит все поведенческие тесты.
Итоговый промпт сократил примерно на 1300 токенов task-инструмента на ход, что дало около 1,8% уменьшения общего числа токенов в промптах за сессию и 2,9% снижения нормализованной стоимости за активный час без заметного падения качества по измеряемым метрикам. В GitHub подчеркивают: поведение промпта требует тестов, иначе сокращение текста может незаметно убрать важные свойства агента.
Умные уведомления о завершении задач
Агенты часто запускают долгие фоновые операции, например выполнение длительной shell-команды параллельно с работой подагента. Уведомления позволяют не «зависать» в ожидании завершения и продолжать другие шаги.
Раньше при завершении фоновой задачи система пробуждала модель и сообщала, что команда или подагент закончили работу, но не передавала сам результат. Агенту приходилось тратить еще один шаг и модельный вызов, чтобы запросить уже полученный Copilot вывод. Если сразу завершалось несколько задач, цепочка лишних ходов повторялась.
Теперь GitHub объединяет подходящие уведомления о завершении и передает готовые результаты прямо в формате tool-result. Агент получает данные сразу и может продолжать выполнение задачи без дополнительного запроса. Явные запросы к еще работающим задачам остаются без изменений.
Раньше для каждой завершившейся задачи требовались два вызова модели: один для запроса результата, другой для его обработки. Теперь «каркас» объединяет завершения и передает их разом, поэтому достаточно одного вызова для обработки нескольких результатов. Это также уменьшает количество шагов, в которых приходится нести полную историю сессии.
По данным GitHub, такой механизм доставки результатов без дополнительного сжатия или фильтрации уменьшил средний расход токенов, измеряемый в AI Credits, примерно на 2,3%.
Разные сценарии — разный эффект оптимизаций
Команда отмечает, что экономия токенов в одном сценарии Copilot может приводить к росту затрат в другом. Так, более строгие инструкции к файловым инструментам, вдохновленные успешными экспериментами в Copilot Code Review, в онлайновом тесте Copilot CLI увеличили стоимость, из-за чего этот вариант не выпустили.
В то же время удаление префиксов с номерами строк и селективное сжатие вывода снизили среднее число токенов промпта на один код-ревью примерно на 5% в независимых оценках большого набора задач с продакшен-моделью, без заметного ухудшения метрик качества рецензий.
Отдельно от этих оптимизаций GitHub раньше перевел Copilot Code Review на общие файловые инструменты и отточенные инструкции, что дало около 20% снижения стоимости ревью. Вывод команды: каждое изменение нужно измерять именно в том рабочем процессе, где оно применяется.
Главный вывод: меньше лишней работы для модели
GitHub подчеркивает, что ни одно из описанных изменений не улучшает интеллект модели. Все они устраняют работу, которую ей не следовало выполнять: лишнее форматирование, повторное чтение логов, дополнительные шаги для запроса уже имеющихся результатов и избыточные инструкции в промптах. Эти оптимизации распространяются на различные интерфейсы GitHub Copilot, использующие общий агентный каркас, включая Copilot CLI.
Материал подготовлен на основе инженерного блога GitHub.






















