Почему агенты ИИ забывают о вашем коде?
Наблюдая за работой агента искусственного интеллекта в репозитории, я заметил одну закономерность: он повторял одни и те же ошибки снова и снова. Он заново вводил исправленные ранее баги, игнорировал принятые соглашения об именовании и не учитывал архитектурные ограничения, возникшие при миграции полгода назад.
Проблема заключалась вовсе не в том, что модель была "плохой". Причина оказалась гораздо проще: агент просто не имел памяти. Каждый новый сеанс начинался с чистого листа, как если бы каждый день приходил новый сотрудник команды. Это быстро становится дорогостоящим процессом.
Что такое контекст и почему его важно сохранять?
Большинство команд уже имеют различные формы документации:
- Комментарии в коде
- Архитектурные решения (ADRs)
- Страницы в Notion
- Обсуждения в Slack
- Дискуссии по pull request'ам
- Неявное знание одного старшего инженера
Однако проблема заключается в том, что эти материалы сами по себе не превращаются автоматически в постоянный, повторно используемый контекст для агентов ИИ. Даже если вы вставляете документацию прямо в подсказку, агенту все равно нужно понять:
- Что имеет значение?
- Что изменилось?
- Какие конфликты существуют между элементами кода?
- Какие шаблоны предпочтительны?
- Какие исправления ошибок никогда больше нельзя повторять?
Именно здесь абстрактные синтаксические деревья (AST) оказались неожиданно полезными.
Почему AST лучше сырого исходного кода?
Сырые файлы исходного кода содержат много шума – они смешивают важные детали реализации с менее значимыми аспектами. Абстрактные синтаксические деревья дают более полезную информацию: структуру вашего проекта. Из AST можно извлечь такие вещи, как:
- Экспортированные API-интерфейсы
- Зависимости модулей
- Устаревшие паттерны
- Повторяющиеся структуры реализации
- Использование фреймворков
- Границы модулей
Если объединить это с языковой моделью, такой как Gemini, то можно синтезировать низкоуровневые факты в высокоуровневое знание, например:
- Все платежные потоки проходят через этот сервис
- Этот хук заменяет устаревший помощник аутентификации
- Эти два модуля конфликтуют при совместном использовании
- Эта миграция устранила ошибку часового пояса; избегайте повторного введения локального парсинга
Таким образом, вместо того чтобы давать агенту 2000 файлов и желать ему удачи, вы предоставляете структурированный артефакт, который значительно облегчает процесс обучения.