Провёл эксперимент: можно ли воспроизвести проект, если дать AI только спецификации без исходного кода?
Условия
- Исходный проект: archlint - инструмент анализа архитектуры Go-проектов
- Вход: 10 спецификаций (Markdown + PlantUML), суммарно 73 KB.
- Claude Code получил пустую директорию и спеки
- Исполнитель: Claude Code, стартовал в пустой директории и реализовывал проект “с нуля”.
Спеки покрывали всё базовое: инициализацию модуля, Makefile, модель данных, Go-analyzer, CLI на Cobra, команды collect/trace, tracer-библиотеку, tracelint и интеграционные тесты.
Время выполнения
~20 минут от пустой директории до работающего проекта.
Результат
По итоговой оценке репозитория-клона:
- Структурная идентичность: 100%
- Успешность клонирования: 85.5%
- Семантическая эквивалентность: ~75%
- Мутаций: 23 (3 критические, 8 средние, 12 минорные)
Интересная деталь: клон получился короче оригинала - 1 845 строк Go против 2 159 (−14.5%) при том же количестве .go файлов (13).
Мутации, которые реально важны
Три “критические” мутации - как раз те места, где спецификация оставляет пространство для трактовки (то есть для творчества, которое вы не заказывали):
- Построение sequence-диаграмм: изменён алгоритм формирования вызовов в диаграмме (логика по стеку вызовов и условиям записи).
- Tracerlint: клон считает допустимым deprecated-вызов
Exit(), тогда как оригинал - нет. - GoAnalyzer: добавлены поля
baseDirиmodulePath- AI “улучшил” модель, потому что в спеках явно не зафиксирована граница ответственности анализатора (что хранить внутри, что вычислять снаружи).
Вывод
- Spec-driven development работает как механизм воспроизведения “функционального ядра”. 73 KB спецификаций хватило, чтобы быстро восстановить структуру и основной функционал.
- Критические отклонения возникают там, где спецификация описывает “что должно быть”, но не фиксирует “как это проверять”. Для таких мест нужны:
- точные правила (инварианты),
- примеры вход/выход,
- golden-tests (сравнение результата побайтно/по структуре),
- запрет на “расширение модели” без явного пункта в спеках.
Если кратко: AI может клонировать проект по спекам быстро. Но если в спеках оставлена щель - он туда обязательно протиснет “инженерную оптимизацию”. Иногда полезно. В критических местах обычно нет.
Репозиторий клона: mshogin/archlint-reproduction