3,583 papers
arXiv:2608.21747 74 22 авг. 2026 г. FREE

Architecture as Capability Equalizer: структурированные спецификации выравнивают слабые модели до уровня топовых

КЛЮЧЕВАЯ СУТЬ
Когда AI-агент пишет код по вашему описанию архитектуры, формат этого описания решает всё — но только если модель не топовая. Если вы дадите Claude Sonnet или GPT-5 обычный текст с описанием системы или формальную TypeScript-схему — результат почти одинаковый. Но дайте ту же задачу дешёвой модели (Haiku, Gemini Flash) — и разница огромная.
Адаптировать под запрос

TL;DR

Когда AI-агент пишет код по вашему описанию архитектуры, формат этого описания решает всё — но только если модель не топовая. Если вы дадите Claude Sonnet или GPT-5 обычный текст с описанием системы или формальную TypeScript-схему — результат почти одинаковый. Но дайте ту же задачу дешёвой модели (Haiku, Gemini Flash) — и разница огромная.

Слабая модель, получив описание архитектуры простым текстом, реализует треть от нужного функционала и никогда не проверяет свой код перед тем, как сказать «готово». Она путается в правилах («сервисы не должны звонить друг другу напрямую»), входит в бесконечный цикл исправления ошибок компиляции и тратит на это больше токенов, чем топовая модель — но получает результат хуже.

Решение — заменить текстовое описание архитектуры на код-подобный формат: TypeScript-интерфейсы с явными правилами или OpenAPI-спецификацию. Та же слабая модель, получив архитектуру в виде типизированных контрактов, реализует 100% нужного функционала вместо 33%. Формат спецификации работает как «протез» для слабой модели — компенсирует то, что она не может удержать в голове из расплывчатого текста.


🔬

Схема метода

ЕСЛИ модель топовая (Claude Sonnet, GPT-5-уровня):
  → формат архитектуры почти не важен, можно писать текстом

ЕСЛИ модель средняя/бюджетная (Haiku, GPT-5-mini, Gemini Flash/Pro):
  → замени текстовое описание на:
     - TypeScript-интерфейсы + явные правила (лучше всего для самой слабой модели)
     - OpenAPI-спецификацию (лучше всего для средних моделей)
     - Mermaid-диаграммы + ограничения + ADR (записи о причинах решений)
  → каждый формат кодирует ОДНО И ТО ЖЕ содержание, меняется только представление

🚀

Пример применения

Задача: Вы фаундер небольшого стартапа, делаете MVP через Cursor или Claude Code с бюджетной моделью (экономите на токенах), а не через дорогой Sonnet/GPT-5. Нужен backend с несколькими сервисами — пользователи, заказы, уведомления — которые должны общаться только через единую шину событий, а не напрямую.

Промпт (вместо обычного текстового описания):

Вот архитектура системы. Реализуй её строго по контрактам ниже.

interface IOrderService {
  create(input: CreateOrderInput): Order;
  updateStatus(orderId: string, status: OrderStatus): Order;
}

interface INotificationService {
  notify(event: OrderEvent): void;
}

ПРАВИЛА:
RULE 1: Файлы в services/*-service.ts НЕ МОГУТ импортировать 
друг друга напрямую — только через EventBus.
RULE 2: Каждый сервис владеет только своим хранилищем данных.
RULE 3: Статусы заказа меняются только вперёд: 
new → processing → shipped → delivered.

Структура файлов:
src/event-bus.ts
src/services/order-service.ts
src/services/notification-service.ts
src/router.ts

Результат: Модель получит чёткий «скелет» вместо расплывчатого описания. Она реже путает правила, реже уходит в циклы бесконечного исправления ошибок компиляции и с большей вероятностью реализует все нужные функции, а не половину. Итоговый код будет ближе к архитектуре, которую вы задумали, даже если модель бюджетная.


🧠

Почему это работает

Слабые модели плохо держат в голове расплывчатые словесные правила — они теряют детали при генерации кода, особенно когда правил много и они пересекаются друг с другом. Это как объяснить человеку архитектуру дома на словах вместо чертежа: он забудет, где несущая стена.

Зато LLM отлично работают с форматами, близкими к тому, что они сами генерируют — код, типы, интерфейсы. TypeScript-контракт — это почти готовый код, модели не нужно «переводить» текст в структуру, структура уже дана.

Метод превращает архитектурное описание в формат, который снижает нагрузку на «воображение» модели. Чем ближе формат к коду — тем меньше модель может ошибиться при интерпретации.

Рычаг управления: если работаете с топовой моделью — не тратьте время на формализацию архитектуры, обычный текст сработает так же. Если модель бюджетная — вложите время в структурированную спецификацию (TypeScript-интерфейсы или OpenAPI), это окупится кратным ростом качества.


📋

Шаблон промпта

Архитектура системы "{название_проекта}":

КОМПОНЕНТЫ:
{список сервисов/модулей с кратким описанием каждого}

КОНТРАКТЫ (TypeScript-интерфейсы):
interface I{Компонент}Service {
  {метод1}({входные_параметры}): {тип_результата};
  {метод2}({входные_параметры}): {тип_результата};
}

ПРАВИЛА (обязательные ограничения):
RULE 1: {правило про то, что нельзя делать напрямую}
RULE 2: {правило про владение данными}
RULE 3: {правило про порядок операций/статусов}

СТРУКТУРА ФАЙЛОВ:
{прописанная структура папок и файлов}

Реализуй систему строго по этим контрактам и правилам.

Что подставлять: название проекта, реальные названия сервисов/модулей вашей системы, методы которые они должны выполнять, и жёсткие правила (что нельзя делать, кто чем владеет).

🚀 Быстрый старт — вставь в чат:

Вот шаблон архитектурной спецификации для AI-агента, пишущего код. 
Адаптируй под мою задачу: {опиши свой проект}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

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


⚠️

Ограничения

⚠️ Не работает на топовых моделях: если вы используете Claude Sonnet или GPT-5-уровня, разница между текстом и структурированной спецификацией почти незаметна — не тратьте время на формализацию.

⚠️ Нужна дополнительная работа заранее: чтобы описать архитектуру через TypeScript-контракты, вам нужно самому продумать интерфейсы и правила — это требует больше усилий, чем написать пару абзацев текста.

⚠️ Структурированные форматы иногда увеличивают нестабильность: на некоторых моделях (например Gemini Pro) один формат может внезапно давать аномально низкий результат в конкретном прогоне — гарантии стабильности нет.

⚠️ Проверено на одной системе: эксперимент строился на одном тестовом проекте (Task Management API из 7 компонентов) — на более сложных или нетипичных системах эффект может отличаться.


🔍

Как исследовали

Исследователь взял одну тестовую систему — Task Management API из семи компонентов (роутер, сервисы пользователей, проектов, задач, комментариев, уведомлений и шина событий) — и описал её архитектуру пятью разными способами: обычным текстом, Mermaid-диаграммами с правилами, OpenAPI-спецификацией, C4/Structurizr DSL и TypeScript-контрактами с правилами в стиле ArchUnit. Каждое описание содержало одну и ту же информацию — менялся только формат.

Эти пять спецификаций дали шести моделям трёх вендоров (Claude Sonnet/Haiku, GPT-5/mini, Gemini Pro/Flash) в агентном режиме — модель сама писала файлы, компилировала, чинила ошибки и запускала демо. Всего получилось 90 прогонов. Качество оценивал отдельный судья-LLM по четырём критериям плюс автоматическая проверка нарушений архитектуры.

Главный неожиданный результат: у топовых моделей разброс качества между форматами был мизерным (0.17–0.92 балла), а у слабых моделей — огромным (до 2.42 балла), причём слабая модель на структурированном формате обходила саму себя же на текстовом в разы по числу реализованных функций. Дополнительно нашли, что средние модели иногда тратят больше токенов на худший результат, чем топовые — потому что застревают в циклах исправления ошибок, которые сильная модель просто не совершает.


📖 Простыми словами

Architecture as Capability Equalizer for CodingAgents

arXiv: 2608.21747

Дешёвые нейросети тупят не потому, что они глупые, а потому, что тонут в расплывчатом тексте. Топовые модели вроде Claude Sonnet или GPT-5 легко переварят любую словесную кашу, а вот бюджетные Haiku и Gemini Flash моментально теряют правила при генерации кода. Оказывается, формат описания архитектуры работает как великий уравнитель возможностей: дай слабой модели строгую схему вместо текста, и она закодит на уровне флагманов.

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

Что реально работает: замена обычного текста на формальные TypeScript-схемы и строгие контракты данных. Вместо рассуждений в духе "сервисы общаются только через шину" ты скармливаешь модели типизированные интерфейсы событий и явные границы модулей. Такая спецификация просто физически не оставляет бюджетной сетке места для галлюцинаций и держит контекст железной хваткой.

Тестировали на кодинг-агентах, но принцип универсален. Пилишь ли ты MVP стартапа через Cursor, гоняешь задачи в Claude Code или автоматизируешь пайплайны на копеечных моделях — подход не меняется. Незачем сжигать бюджет на дорогие токены, если можно просто перевести требования в машиночитаемый контракт.

Короче: хватит писать промпты «как человеку» и надеяться на чудо. Формализуй архитектуру кодом, а не словами, чтобы выжимать максимум из дешёвых сеток. Кто научится скармливать AI строгие спецификации, будет собирать сложные системы за копейки, пока остальные сливают бюджеты на оверпрайс-модели.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с