← Back to Blog

Контракт: новая единица информации для ИИ. Изменит ли это то, как ИИ думает и пишет? Мы уже знаем, потому что у нас есть результаты

Граф контрактов AITM: сотни связанных узлов вокруг центрального контракта

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

Но по мере роста кодовой базы наступает трезвое отрезвление.

Примерно на 100 000 строк кода обычный ИИ начинает заметно выдыхаться. Он пытается угадывать, ищет по репозиторию вслепую и галлюцинирует несуществующие функции. Примерно на 300 000 строк самостоятельное суждение модели практически рушится: контекстного окна не хватает, классический grep по всему проекту сжигает тысячи токенов, а разработка превращается в бесконечный круг исправлений сломанного кода.

Именно здесь бразды правления берут на себя системные контракты.

Что такое контракт в AITM?

Контракт - это не обычный комментарий в коде и не строка в забытом README.md, которая перестаёт быть правдой через два спринта.

Это машинно запрашиваемое поведение системы.

Он точно описывает, что должна делать конкретная часть приложения, и ссылается на точные исходные файлы, тесты и элементы интерфейса. Вместо того чтобы блуждать и перечитывать десятки файлов, агент задаёт системе прямой вопрос: "Где и как реализовано это поведение?" и мгновенно получает точный ответ.

Каждый контракт в AITM опирается на три ключевых столпа:

  • behavior: Однострочная суть того, что делает код. Самое важное поле из всех. Агент сопоставляет это правило с реальной реализацией в файле. Если возникает противоречие, система сразу понимает, что это либо баг, либо устаревший контракт.
  • confidence: Метрика достоверности информации. Показывает, насколько надёжно описание по сравнению с остальными данными в системе (например, проверено ли поведение реальными тестами).
  • variables: Связь с общим языком коммуникации системы (например, BL.PIPELINE). Работает как мост между бизнес-логикой на фронтенде и бэкенде, так что контракты можно мгновенно фильтровать по конкретной части интерфейса или слоя данных.

Реальный пример из продакшена

В AITM контракт структурирован и мгновенно доступен через GraphQL API:

contractsForFile(path: "src/pipeline/MergeQueueService.ts", projectId: "ctm-dashboard") {
  id          # "GM-057"
  module      # "Git/Merge"
  behavior    # "Перезапуск после self-merge ручной: после мержа dev-watch продолжает отдавать код до мержа, пока пользователь не нажмёт Restart в меню или Settings.selfMergeRestartMode не равен 'auto'."
  confidence  # "tested"
}

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

Экономим токены и вычислительное время: Claude Sonnet на низком или среднем effort

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

В AITM наши агенты работают на Claude Sonnet с настройкой effort (thinking) от низкого до среднего. Когда у модели есть точный контракт, ей не нужны минуты "размышлений", спекуляции об архитектуре всего репозитория и сжигание огромного бюджета reasoning на тривиальный поиск.

Благодаря контракту модель получает в руки готовую карту:

  • Она точно знает, в какой файл идти.
  • Она знает ожидаемое поведение (behavior).
  • Она знает, насколько можно доверять информации (confidence).

Даже при меньшем effort Claude Sonnet выдаёт полностью детерминированную и чистую работу, потому что ему не нужно полагаться на собственную "догадку": он строго следует заданной спецификации.

Результат на 500K строк кода

Настоящая сила этого подхода проявляется не в первые дни проекта, а тогда, когда кодовая база вырастает до масштабов enterprise.

В нашей собственной системе с более чем 500 000 строк кода сегодня надёжно работает около 3 500 контрактов:

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