3,583 papers
arXiv:2603.17399 74 18 мар. 2026 г. FREE

Spec-Driven Development: почему надо улучшать задание, а не выходные данные

КЛЮЧЕВАЯ СУТЬ
Когда правишь ответ ИИ вручную — правила остаются у тебя в голове. Задание было размытым, модель заполнила пробелы случайно, ты поправил. Завтра похожая задача — и снова лотерея: правила нигде не записаны. Spec-Driven Development позволяет получать один и тот же качественный результат каждый раз: пишешь точную спецификацию (до 1500 слов), при ошибках правишь её — а не выход. Тест качества: дай спецификацию двум разным ИИ — если результаты похожи, все требования однозначны. Результат ИИ — расходный материал. Спецификация — то, что передаёшь коллеге вместо «смотри как я делаю».
Адаптировать под запрос

TL;DR

Spec-Driven Development — подход, при котором ты сначала пишешь точную спецификацию для ИИ, а потом итерируешь на ней, а не на результате. Исследование демонстрирует это через "самовоспроизведение" кодового агента: агент, реализованный по спецификации, сам воспроизводит себя по той же спецификации. Главный вывод — стабильный артефакт не код и не текст, который выдал ИИ, а задание, по которому он его выдал.

Большинство пользователей ИИ работают так: дали запрос → получили результат → начали его редактировать. Получилось плохо — переспросили или поправили вручную. В итоге хранят "правленый текст", но не понимают, почему он именно так устроен. При следующем похожем запросе снова лотерея. Проблема в том, что они итерируют на выходе — самом нестабильном месте в цепочке.

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


🔬

Схема метода

(Все шаги в одном рабочем процессе, но в разных запросах)

ШАГ 1: Написать спецификацию
        → документ до 1500 слов
        → описывает ЧТО нужно, не КАК делать

ШАГ 2: Отдать ИИ → первый результат

ШАГ 3: Результат не устраивает?
        → найди дырку в спецификации
        → добавь/уточни требование
        → НЕ правь результат вручную

ШАГ 4: Регенерировать по обновлённой спецификации

ШАГ 5: Повторять до тех пор, пока спецификация не покрывает
        все ситуации → хранить спецификацию, не результат

🚀

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

Задача: Ты — руководитель отдела продаж в B2B-компании. Менеджеры каждый раз пишут коммерческие предложения по-разному: кто в каком стиле, кто что включает. Ты хочешь, чтобы ChatGPT/Claude всегда выдавал предложения одного формата — и обучить этому можно было любого новичка за пять минут.

Промпт (написание спецификации):

Напиши спецификацию для ИИ-ассистента, который 
составляет коммерческие предложения.

Спецификация должна быть короткой — до 1000 слов.
Описывай только ЧТО делает ассистент, не КАК технически.

Покрой следующее:
— Интерфейс: что получает на входе (данные о клиенте, 
  задача, бюджет, дедлайн), что выдаёт на выходе
— Обязательные разделы КП: что должно быть всегда
— Тон и стиль: деловой, без канцелярита
— Ограничения: что НЕЛЬЗЯ включать (лишние обещания, 
  сроки без согласования)
— Условия успеха: по каким критериям КП считается 
  правильным

После того как выдашь спецификацию, задай мне 3 вопроса 
о том, что в ней могло быть неточным.

Результат:

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


🧠

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

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

Спецификация переносит правила из головы в текст. Модель хорошо следует явным, конкретным инструкциям. Чем точнее описано ЧТО делать и ЧТО не делать — тем меньше пространства для случайных вариаций. Это не магия, это просто сужение поля допустимых ответов.

Итерация на задании — это накопление знаний. Каждая правка спецификации — это зафиксированное понимание крайнего случая. Через 10 итераций у тебя не "отредактированный текст", а документ, который закрывает все ситуации, с которыми ты сталкивался. Его можно дать коллеге, другому ИИ, использовать в другом проекте.

Рычаги управления: - Длина спецификации → короче 1500 слов — обязательно, иначе самому не прочитать за один раз - Уровень абстракции → если в спецификации упоминаешь конкретный сервис или инструмент — скорее всего, слишком детально; описывай входы, выходы, условия - Тест на воспроизводимость → дай спецификацию второму ИИ (другой чат, другая модель) и проверь: результат сошёлся? Если нет — в спецификации была неоднозначность


📋

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

Напиши спецификацию для ИИ-ассистента, 
который выполняет задачу: {задача}.

Требования к спецификации:
— До {лимит_слов} слов
— Описывай только ЧТО, не КАК
— Покрой: входные данные, выходные данные, 
  обязательные элементы, запрещённые элементы, 
  критерии правильного результата

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

После напиши 3 вопроса: что в спецификации 
могло быть неоднозначным или неполным?

Что подставлять: - {задача} — что делает ассистент: "пишет посты для Telegram", "составляет брифы для дизайнеров", "отвечает на вопросы клиентов по тарифам" - {лимит_слов} — 500–1500 слов, зависит от сложности задачи


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

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

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

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


⚠️

Ограничения

⚠️ Сложность задачи: Подход хорошо работает для структурированных, повторяющихся задач. Для творческих или субъективных ("напиши что-то интересное") — спецификацию написать сложнее, потому что критерии успеха размытые.

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

⚠️ Масштаб: Исследование протестировано на 926-словной спецификации. Работает ли при 10 000 и 100 000 словах — открытый вопрос. Практическое правило авторов: не больше 1 500 слов, или 15 минут чтения.

⚠️ Верификация: Ты получаешь воспроизводимый результат — но только если спецификация правильная. Ошибка в спецификации размножается в каждую следующую генерацию. Аудитировать надо задание, не результат.


🔗

Ресурсы

  • Статья: Monperrus, M. "Bootstrapping Coding Agents: The Specification Is the Program." Preprint, 2026.
  • Репозиторий: github.com/ASSERT-KTH/meta-circular
  • Связанный проект: StrongDM Attractor — github.com/strongdm/attractor
  • Связанная практика: Spec-Driven Development (Richard Piskala, arXiv, 2026)
  • Автор: Martin Monperrus, профессор KTH Royal Institute of Technology, Стокгольм

📋 Дайджест исследования

Ключевая суть

Когда правишь ответ ИИ вручную — правила остаются у тебя в голове. Задание было размытым, модель заполнила пробелы случайно, ты поправил. Завтра похожая задача — и снова лотерея: правила нигде не записаны. Spec-Driven Development позволяет получать один и тот же качественный результат каждый раз: пишешь точную спецификацию (до 1500 слов), при ошибках правишь её — а не выход. Тест качества: дай спецификацию двум разным ИИ — если результаты похожи, все требования однозначны. Результат ИИ — расходный материал. Спецификация — то, что передаёшь коллеге вместо «смотри как я делаю».

Принцип работы

Стандартный путь: получил — поправил — сохранил текст. Проблема: отредактированный текст нельзя воспроизвести. При следующем запросе у ИИ нет доступа к твоим правкам — только к заданию. Правки осели в документе, а не в спецификации. Итерировать надо на задании — там живут правила, а не в выходном тексте. Каждая правка спецификации — это зафиксированный крайний случай. Через десять итераций у тебя не «правленый документ», а документ, который закрывает все ситуации с которыми ты уже сталкивался. Его можно дать другому человеку, другой модели, вернуться через полгода — результат будет тот же.

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

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

Когда применять

Структурированные повторяющиеся задачи: написание коммерческих предложений, постов, брифов для дизайнеров, шаблонов ответов клиентам — особенно когда несколько человек делают одно и то же по-разному и нужен единый стандарт. Не подходит: творческие и субъективные задачи. Если критерии успеха размытые («напиши что-то интересное») — написать рабочую спецификацию практически невозможно. И осторожно: ошибка в спецификации размножится в каждый следующий результат. Аудитировать надо задание, не выход.

Мини-рецепт

1. Напиши спецификацию: до 1500 слов, только ЧТО делает ИИ — без упоминания конкретных инструментов и сервисов. Покрой четыре вещи: что получает на входе, что выдаёт, что обязательно, что запрещено. Добавь критерии: по каким признакам результат правильный.

2. Попроси ИИ найти дыры: после написания спецификации добавь Задай 3 вопроса о местах, которые могут быть неоднозначными или неполными. Ответь. Уточни спецификацию.

3. Тест на реальном запросе: запусти настоящую задачу. Результат не устраивает — ищи дырку в спецификации, не правь выход вручную. Нашёл — добавь требование, регенерируй.

4. Проверь воспроизводимость: дай ту же спецификацию второму ИИ (другой чат или другая модель). Результаты похожи? Спецификация работает. Расходятся — снова ищи неоднозначность.

5. Храни спецификацию, не результат: это твой актив. Результат ИИ — расходный материал, который можно воспроизвести в любой момент.

Примеры

[ПЛОХО] : Напиши коммерческое предложение для клиента из логистики → правишь результат вручную, добавляешь детали, сохраняешь текст. Через неделю — другой клиент, снова с нуля. Правила по-прежнему у тебя в голове.
[ХОРОШО] : Сначала — Напиши спецификацию для ИИ-ассистента, который составляет коммерческие предложения. До 800 слов. Опиши: входные данные (данные о клиенте, задача, бюджет, дедлайн), обязательные разделы КП, тон и стиль, что запрещено включать, критерии правильного результата. После — задай 3 вопроса о неоднозначных местах. Отвечаешь на вопросы, уточняешь спецификацию, тестируешь на реальном запросе три-четыре раза. Итог — документ, который любой менеджер вставляет в чат и получает правильное КП без ручных правок.
Источник: Bootstrapping Coding Agents: The Specification Is the Program
ArXiv ID: 2603.17399 | Сгенерировано: 2026-03-19 04:27

Проблемы LLM

ПроблемаСутьКак обойти
Неточный запрос непредсказуемый результатКогда запрос размытый, модель заполняет пробелы сама. Берёт паттерны из обучения. Каждый раз делает это чуть по-другому. Ты правишь результат вручную — но правила остаются у тебя в голове, не в тексте запроса. При следующем похожем запросе снова лотереяПеренеси правила из головы в текст. Опиши требования явно: что должно быть, чего быть не должно, по каким критериям результат считается правильным. Чем меньше пространства для интерпретации — тем меньше случайных вариаций

Методы

МетодСуть
Спецификация до задачи — воспроизводимый результатСначала пиши задание. Потом генерируй результат. Результат не устраивает — ищи дырку в задании, не правь результат вручную. Закрой дырку, сгенерируй снова. Структура задания: входные данные, выходные данные, обязательные элементы, запрещённые элементы, критерии правильного результата. Только ЧТО делать — без названий инструментов и технических деталей. Лимит: до 1500 слов. Шаблон запроса: Напиши спецификацию для ИИ-ассистента, который {задача}. До {N} слов. Только ЧТО, не КАК. Покрой: входные данные, выходные данные, обязательные элементы, запрещённые элементы, критерии правильного результата. После — 3 вопроса: что в спецификации неоднозначно или неполно? Последний пункт — самооценка задания — критичен: модель сама указывает на дыры до того, как ты их обнаружишь на выходе. Когда применять: повторяющиеся структурированные задачи — КП, брифы, шаблоны ответов, посты. Когда не работает: творческие задачи, где критерии успеха размыты

Тезисы

ТезисКомментарий
Отредактированный результат нельзя воспроизвести — задание можноКогда ты правишь выход вручную, правила остаются у тебя в голове. Ни одна модель их не видит. При следующем запросе она снова работает с дырявым заданием — и снова выдаёт что-то другое. Задание устроено наоборот: каждая правка в нём фиксирует крайний случай. Через 10 итераций у тебя документ, который закрывает все ситуации. Его можно дать другому человеку, другой модели, использовать через месяц. Применяй: храни задание, не результат. Результат — расходный материал. Задание — актив
📖 Простыми словами

Bootstrapping CodingAgents: The Specification Is the Program

arXiv: 2603.17399

Суть Spec-Driven Development в том, что код — это больше не конечный продукт, а побочный эффект. Мы привыкли, что программист пишет инструкции для машины, но в мире LLM это тупиковый путь. Модели лажают, галлюцинируют и забывают контекст. Исследование доказывает: чтобы получить стабильный результат, нужно фокусироваться не на правке кривых строчек кода, а на эталонной спецификации. Если агент может собрать сам себя, просто прочитав инструкцию, значит, ты создал идеальный чертеж, который работает всегда, независимо от настроения нейронки.

Это как если бы ты собирал шкаф из Икеи. Обычно люди выкидывают инструкцию, пытаются вкрутить шуруп не туда, матерятся и в итоге получают кривую тумбочку. Подход Specification Is the Program — это когда ты тратишь всё время на то, чтобы сделать инструкцию настолько идеальной, что даже пятилетний ребенок соберет по ней адронный коллайдер. Код — это просто сборка, а настоящая программа — это те самые правила, по которым она строится. Если результат тебя не устроил, ты не перекрашиваешь шкаф, ты переписываешь один пункт в инструкции и заставляешь ИИ пересобрать всё с нуля.

В работе это выглядит как жесткий алгоритм: ты скармливаешь модели структурированные требования, она выдает результат, ты находишь косяк и правишь не результат, а исходную спецификацию. Например, если ты строишь систему для B2B-продаж, ты прописываешь каждый чих: структуру оффера, тон общения, обязательные блоки. Если менеджер-новичок или ChatGPT выдали фигню — значит, в твоем «чертеже» дыра. Ты латаешь дыру в тексте задания, и вуаля — стабильный артефакт готов. Теперь любой агент, прочитав этот текст, выдаст ровно то, что ты задумал, без самодеятельности.

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

Короче: хватит работать «редактором» за нейросетью, это путь в никуда. Твоя задача — стать архитектором спецификаций. Главный вывод исследования в том, что спецификация и есть программа. Если ты не можешь описать процесс так, чтобы ИИ воспроизвел сам себя по этой бумажке, значит, ты не контролируешь процесс. Инвестируй время в текст задания, а не в исправление ошибок в коде — только так можно получить масштабируемый результат, который не развалится при следующем обновлении модели.

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

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

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