Как кодинг-агенты используют инструменты, память и контекст репозитория, чтобы писать код лучше

Как кодинг-агенты используют инструменты, память и контекст репозитория, чтобы писать код лучше

В этой статье разбирается архитектура кодинг-агентов — систем, которые делают LLM эффективнее при написании кода. Основное внимание уделено тому, как инструменты, управление контекстом и память превращают обычную модель в мощного помощника разработчика.

Прогресс в LLM-системах сегодня связан не столько с улучшением самих моделей, сколько с тем, как они используются. Системы вроде Claude Code или Codex CLI ощущаются значительно мощнее, чем те же модели в веб-чате, — и причина в агентной обвязке, или харнессе, которая управляет контекстом, инструментами и памятью.

LLM, reasoning-модели и агенты: в чём разница

LLM — это базовая модель, предсказывающая следующий токен. Reasoning-модель — это LLM, обученная тратить больше вычислений на промежуточные рассуждения, самопроверку и перебор вариантов.

Агент — это цикл вокруг модели, который решает, какие действия предпринять: какие инструменты вызвать, что проверить, когда остановиться. Агент многократно вызывает модель в рамках среды, используя обратную связь.

Ключевые понятия:

  • LLM: сырая модель
  • Reasoning-модель: LLM, оптимизированная для цепочек рассуждений
  • Агент: цикл, использующий модель, инструменты и память
  • Агентный харнесс: программный каркас, управляющий контекстом, инструментами, промптами и состоянием
  • Кодинг-харнесс: частный случай агентного харнесса, специализированный на разработке ПО

Хороший харнесс позволяет выжать максимум из модели. Кодинг — это не просто предсказание токенов, а навигация по репозиторию, запуск тестов, чтение определений, применение диффов. Именно харнесс берёт на себя эту умственную нагрузку.

Шесть ключевых компонентов кодинг-харнесса

1. Живой контекст репозитория

Кодинг-агент должен знать, в каком репозитории он работает, на какой ветке, есть ли README, AGENTS.md и другие инструкции. Это помогает понять, как правильно действовать.

Например, фраза «исправь тесты» становится выполнимой, если агент знает, какая команда их запускает. Контекст Git — ветка, статус, коммиты — тоже важен: он показывает, над чем идёт работа.

Агент заранее собирает «стабильные факты» о рабочем пространстве, чтобы не начинать каждый раз с нуля.

2. Структура промпта и кэширование стабильного префикса

При каждом обращении к модели не нужно заново собирать весь промпт. Многое в нём остаётся неизменным: инструкции, описания инструментов, сводка репозитория.

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

Такой подход повышает эффективность и снижает задержки.

3. Доступ к инструментам и их использование

Разница между чатом и агентом — в способности выполнять действия. Модель не просто предлагает команду, а реально её выполняет и получает результат.

Харнесс предоставляет фиксированный набор инструментов: чтение файлов, поиск, выполнение shell-команд, запись файлов. Аргументы передаются в строгом формате.

Перед выполнением проверяется:

- Известен ли инструмент?
- Корректны ли аргументы?
- Нужно ли подтверждение?
- Находится ли путь внутри рабочего пространства?

Только после проверки команда выполняется. Это повышает безопасность и надёжность.

4. Борьба с раздуванием контекста

Кодинг-агенты особенно подвержены раздуванию контекста: из-за многократного чтения файлов, вывода инструментов, логов и истории.

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

Основные стратегии:

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

Недавние события сохраняются подробнее, старые — сжимаются сильнее. Качество агента часто зависит не от модели, а от качества управления контекстом.

5. Структурированная память сессии

Кодинг-агент разделяет память на два уровня:

  • Полный транскрипт: полная история всех действий — запросы, выводы инструментов, ответы модели. Хранится как JSON и позволяет возобновить сессию.
  • Рабочая память: сжатое, обновляемое резюме — текущая задача, ключевые файлы, важные заметки.

Рабочая память помогает поддерживать непрерывность, а компактный транскрипт — быстро восстанавливать контекст для следующего шага.

6. Делегирование и ограниченные субагенты

Агент может делегировать подзадачи субагентам: например, поиск определения символа или анализ падающего теста.

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

Цель — избежать дублирования, конфликтов и бесконечных вложенностей. Claude Code и Codex уже используют такую архитектуру.

OpenClaw и другие системы

OpenClaw — платформа для агентов общего назначения, которая тоже умеет писать код, но не является специализированным кодинг-харнессом.

У неё есть схожие элементы: промпты в рабочем пространстве, сжатие транскриптов, субагенты. Но фокус — на долгоживущих агентах в чатах и каналах, а не на терминальном кодинге.

Кодинг-харнесс превращает LLM в эффективного помощника разработчика. Разница между обычным чатом и агентом — не в модели, а в архитектуре вокруг неё. Именно инструменты, память и контекст делают систему по-настоящему мощной.

Читать оригинал