3,583 papers
arXiv:2610.31854 80 22 окт. 2026 г. FREE

SWE-Clar: уточнение требований до кода и проверка понимания отдельными вопросами

КЛЮЧЕВАЯ СУТЬ
Заказчик ответил на вопрос, но это не значит, что агент понял. Даже когда требование полностью раскрыто в диалоге, агент иногда пересказывает его неверно. Метод из SWE-Clar позволяет поймать такую ошибку до написания кода. Агент задаёт вопросы, потом пересказывает требования своими словами, а вы сверяете пересказ с тем, что имели в виду. Неверный пересказ требования — предвестник провала кода по нему. Без вопросов агент почти всегда проваливает проект с нуля. С вопросами результат растёт в разы.
Адаптировать под запрос
⚡

TL;DR

SWE-Clar — бенчмарк (набор тестовых задач) на 100 реальных заказах с Upwork, на которых проверяют, как кодинг-агент сначала выясняет требования у заказчика, а потом пишет проект с нуля без дальнейших подсказок. Схема такая: агент задаёт вопросы, контекст «замораживается», и дальше идут две изолированные ветки. В одной агент пишет код и проходит приёмочные тесты. В другой отвечает на контрольные вопросы по требованиям, и его ответы сверяют с эталоном. Так отдельно видно, что агент понял и что он сделал.

Главная находка: заказчик ответил на вопрос ≠ агент понял. Даже когда требование полностью раскрыто в диалоге, агент иногда неверно пересказывает его в итоге. Агент неправильно отвечает на вопрос по требованию — и код по этому требованию чаще всего не проходит тест. Без уточняющих вопросов агент почти всегда проваливает проект: он строит догадки вместо знаний. С вопросами результат вырастает в разы, но закрывает лишь половину-две трети разрыва до уровня «полное ТЗ заранее». Даже с полным ТЗ агент справляется не со всеми задачами.

Практический смысл: этап вопросов до кода нужен, но его недостаточно. Дайте агенту задать вопросы, пока вы доступны, и потребуйте пересказать требования своими словами, чтобы проверить понимание до старта. Чем полнее бриф, тем лучше результат.

🔬

Схема метода

ШАГ 1: Агент изучает материалы и задаёт вопросы заказчику → раунды «вопрос — проверенный ответ»
        (особенно: как запускается ПО, какие входы и выходы)
ШАГ 2: Заказчик отвечает, подтверждает или поправляет интерпретации агента → ответы
        проверяет супервизор (точность, полнота, не вышел ли за рамки вопроса)
ШАГ 3: Агент сам решает, что уточнение закончено → контекст «замораживается»
        (запрос + диалог + то, что агент увидел в рабочей папке)
ШАГ 4а: Ветка реализации: агент пишет код без доступа к заказчику → приёмочные тесты
ШАГ 4б: Ветка проверки понимания (отдельный запуск): агент отвечает на вопросы
        по требованиям → судья сверяет с эталоном (верно / частично / неверно)

Шаги 1–3 идут в одном диалоге. Ветки 4а и 4б — отдельные запуски от одного замороженного контекста. Вопросы проверки не должны подсказывать агенту, что писать в код.

🚀

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

Задача: Владелец магазина косметики на Wildberries заказывает у Claude Code скрипт, который из выгрузки отчётов продаж считает юнит-экономику по каждому артикулу. Заказ звучит так: «Нужно считать маржу по товарам, чтобы понимать, что убирать из ассортимента». Таких требований, которые заказчик не сказал, море: комиссия, логистика, возвраты, налоги, формат вывода.

Промпт:

Ты — фрилансер-разработчик. Заказчик — я, владелец магазина на Wildberries.
Моё исходное задание: «Нужен скрипт, который считает маржу по товарам из выгрузки
отчётов WB, чтобы я понимал, что убирать из ассортимента». Файлы с выгрузкой лежат в папке /data.

ФАЗА 1. УТОЧНЕНИЕ (код писать нельзя).
- Изучи файлы в /data.
- Задавай мне вопросы пачками по 3–5, пока не поймёшь, что нужно.
- Обязательно уточни: как я буду запускать скрипт, что подаю на вход, что хочу получить на выходе.
- Предлагай свою интерпретацию («Я понял так: ... Верно?»), а не только открытые вопросы.
- Спрашивай про исключения и краевые случаи: возвраты, отмены, товары без продаж.
- Когда будешь готов, напиши «УТОЧНЕНИЕ ЗАВЕРШЕНО» и перечисли 5–7 требований своими словами.

ФАЗА 2. РЕАЛИЗАЦИЯ — только после моего «ок». Дальше я недоступен, вопросов не будет.

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

🧠

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

Слабость: при неполном задании модель достраивает недостающее догадками и уверенно пишет код. Без вопросов она проваливает почти все задачи. Но и после ответов заказчика понимание не гарантировано: часть полностью раскрытых требований модель потом пересказывает неверно.

Сильная сторона: модель хорошо формулирует уточняющие вопросы и пересказывает требования своими словами. Пересказ можно сверить с тем, что вы имели в виду. Ошибка в пересказе предсказывает провал в коде по этому требованию.

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

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

📋

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

В статье нет полных промптов в доступном тексте (роли вынесены в Приложение F). Шаблон ниже собран по описанной в статье механике: обязательное уточнение критичных деталей, подтверждение интерпретаций, запрет кода до конца уточнения.

Ты — {роль_исполнителя}. Заказчик — {кто_заказчик}.
Исходное задание: «{начальный_запрос}». Материалы лежат в {папка_или_файлы}.

ФАЗА 1. УТОЧНЕНИЕ (код писать нельзя).
- Изучи материалы и пойми, чего в задании не хватает.
- Задавай вопросы пачками по {число} штук.
- Обязательно уточни: как запускается результат, что подаётся на вход,
  что должно получиться на выходе, как обрабатывать {критичные_исключения}.
- Предлагай свою интерпретацию («Я понял так: ... Верно?»).
- Когда считаешь, что хватает, напиши «УТОЧНЕНИЕ ЗАВЕРШЕНО» и перечисли
  требования своими словами.

ФАЗА 2. РЕАЛИЗАЦИЯ — только после моего «ок».
Заказчик недоступен, вопросов больше не будет. Сделай {результат} и проверь его сам.

Плейсхолдеры: - {роль_исполнителя} — разработчик, аналитик, автор. - {начальный_запрос} — ваш реальный, как есть, неполный запрос. - {критичные_исключения} — ваши известные «острые углы»: возвраты, отмены, пустые данные.

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

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

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

LLM спросит, что за задача, какие материалы есть, как будет запускаться результат и какие исключения вам известны. Это нужно, чтобы фаза уточнения сразу била в самые дорогие дыры, а не в общие места.

⚠️

Ограничения

⚠️ Это бенчмарк, не проверенный приём: авторы измеряли, как модели справляются, а не проверяли, улучшает ли именно «пересказ требований перед кодом» результат. Связь между правильным ответом и рабочим кодом показана как корреляция.

⚠️ Заказчик в эксперименте — модель: клиента, его проверяющего и судью играла одна и та же LLM. Живой человек отвечает хуже, противоречивее и дольше.

⚠️ Уточнение закрывает не весь разрыв: оно возвращает лишь часть потерянного результата. Полное ТЗ заранее по-прежнему заметно лучше. Вопросы не заменяют хороший бриф.

⚠️ Ответ и код — разные вещи: бывает, что требование названо верно, а код его не выполняет. И наоборот: ответ неполный, а код проходит тест. Пересказ — сигнал, не гарантия.

⚠️ Узкая зона: новые проекты с нуля, локальная разработка, заказчик доступен только в начале. Для правок в существующем коде и непрерывной работы с заказчиком выводы переносятся слабее.

🔍

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

Команда Upwork взяла 100 реальных заказов на разработку «с нуля» стоимостью от 4 000 долларов. По записям переписок клиентов и фрилансеров модель выделила требования, критичные для сдачи работы: сказанные прямо и выведенные из контекста. Из них собрали 512 контрольных вопросов с эталонными ответами и приёмочные тесты. Девять топовых моделей работали агентами-фрилансерами. Роли клиента, супервизора и судьи играла одна модель. Идея была в том, чтобы развести понимание и исполнение: после диалога контекст замораживали и запускали две изолированные ветки.

Самая показательная часть — сравнение трёх условий на двух слабых моделях. Без вопросов к заказчику агенты проходили 5–6% задач. С протоколом уточнения — 39–49%. С полным ТЗ заранее — 71–75%. Уточнение закрывает 51–62% разрыва, а оставшаяся часть — цена непрозвучавших деталей. Лучшая модель прошла 67% задач, худшая — 39%. Чем выше оценка за пересказ требований, тем выше результат кода: корреляция 0,89 по девяти моделям.

Дальше сравнили ответы и код по каждому требованию. Прохождение теста по требованию с верным ответом — 86–91%. С неверным — 34–68%, то есть заметно ниже. Но связь неполная: 6–8% требований с верным ответом всё равно проваливают код. Удивило другое: 3–6% требований, полностью раскрытых заказчиком, агент всё равно излагает неверно. Раскрыть информацию и понять её — не одно и то же.

💡

Адаптации и экстраполяции

🔧 Техника: добавить контрольный пересказ → ловить недопонимание до кода

В статье проверку понимания делают отдельным запуском. Практик может сделать то же в обычной работе. После «УТОЧНЕНИЕ ЗАВЕРШЕНО» попросите:

Ответь письменно на три вопроса, не глядя в код: 
1) Что делает программа в случае {краевой_случай_1}? 
2) Что делает, если {краевой_случай_2}? 
3) Как её запускают и что она возвращает? 
Укажи, где ты не уверен.

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

🔧 Техника: второй чат как «супервизор» → меньше ошибок в ваших ответах

В статье ответы клиента проверяет отдельный агент: точность, полнота, не вышел ли за рамки вопроса. Если вы отвечаете агенту на много вопросов, отправьте свои ответы в другой чат с просьбой найти противоречия и пропуски. Затем отправьте исправленное обратно.

🔗

Ресурсы

  • SWE-Clar: Can Coding Agents Clarify Incomplete Client Requirements and Deliver Greenfield Software? (Preprint, under review)
  • Код и данные: https://github.com/upwork/SWE-Clar
  • Авторы: Jialei Li, Dingxian Wang, Xiaoyan Zhao и др. — University of Science and Technology of China, National University of Singapore, Upwork Inc.
  • Родственные бенчмарки, упомянутые в работе: SWE-Lancer, ClarifyCodeBench, Ambig-SWE, SWE-Together, SWE-Interact, ICAE-Bench

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

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

Заказчик ответил на вопрос, но это не значит, что агент понял. Даже когда требование полностью раскрыто в диалоге, агент иногда пересказывает его неверно. Метод из SWE-Clar позволяет поймать такую ошибку до написания кода. Агент задаёт вопросы, потом пересказывает требования своими словами, а вы сверяете пересказ с тем, что имели в виду. Неверный пересказ требования — предвестник провала кода по нему. Без вопросов агент почти всегда проваливает проект с нуля. С вопросами результат растёт в разы.

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

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

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

При неполном задании модель не переспрашивает. Она достраивает недостающее догадками и уверенно пишет код. Вот почему без вопросов проваливается почти всё. Вопросы собирают недостающее, пока вы на связи. Но и после ответов понимание не гарантировано: часть полностью раскрытых требований модель потом пересказывает неверно. Ошибка в пересказе предсказывает провал кода по этому требованию, а пересказ стоит копейки по сравнению с реализацией. Ещё модель хорошо формулирует вопросы и умеет пересказывать. Пользуйтесь этим. Что ещё помогает: вопросы в форме «Я понял так: ... Верно?» вместо открытых, обязательные темы (запуск, вход, выход) и небольшие пачки вопросов, чтобы не запутаться. Честная оговорка: вопросы закрывают лишь половину-две трети разрыва до уровня «полное ТЗ заранее». Хороший бриф они не заменяют.

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

Разработка с нуля → небольшие проекты и скрипты по неполному заданию, особенно когда вы доступны только в начале, а потом агент работает один. Подходит и для текстов, отчётов и анализа, где «додумывание» дорого стоит (тут перенос выводов не проверяли). НЕ подходит для правок в существующем коде и непрерывной работы, где вы всё время рядом. Там выводы статьи переносятся слабее. Оговорки: это бенчмарк, а не проверенный приём. Заказчика в тестах играла модель, живой человек отвечает хуже и путаннее. Верный пересказ не гарантирует рабочий код.

Мини-рецепт

1. Запрети код на старте: прямо напиши, что фаза 1 — только вопросы, писать код нельзя.
2. Назови обязательные темы: как запускается результат, что подаётся на вход, что должно получиться на выход.
3. Потребуй гипотезы: пусть агент пишет «Я понял так: ... Верно?», а не бросает голые вопросы.
4. Режь пачки: 3–5 вопросов за раз. Больше раундов, но меньше каши.
5. Спроси про острые углы: возвраты, отмены, пустые данные, товары без продаж.
6. Забери пересказ: агент пишет «УТОЧНЕНИЕ ЗАВЕРШЕНО» и перечисляет 5–7 требований своими словами.
7. Сверь и поправь: найди, где он понял не так. Только потом дай «ок» на код.
8. Оставь себя недоступным: в фазе 2 вопросов нет, агент сам проверяет результат.

Примеры

[ПЛОХО] : Напиши скрипт, который считает маржу по товарам из выгрузки Wildberries
[ХОРОШО] : Ты — фрилансер-разработчик. Я — владелец магазина на Wildberries. Задание: «Скрипт считает маржу по товарам из выгрузки, чтобы я понимал, что убирать из ассортимента». Файлы лежат в /data. ФАЗА 1 (код писать нельзя): изучи файлы, задавай вопросы пачками по 3–5. Обязательно уточни: как я запускаю скрипт, что подаю на вход, что хочу на выходе. Предлагай интерпретации («Я понял так: ... Верно?»). Спрашивай про возвраты, отмены и товары без продаж. Когда будешь готов, напиши «УТОЧНЕНИЕ ЗАВЕРШЕНО» и перечисли 5–7 требований своими словами. ФАЗА 2: реализация только после моего «ок». Дальше я недоступен. Что получится: агент не полезет сразу в код. Он спросит, как считать комиссию и что делать с возвратами. Потом пришлёт пересказ, и вы увидите, где он понял неверно, например «возврат вычитается из выручки, а я хотел из прибыли».
Источник: SWE-Clar: Can Coding Agents Clarify Incomplete Client Requirements and Deliver Greenfield Software?
ArXiv ID: 2610.31854 | Сгенерировано: 2026-10-26 14:40

Проблемы LLM

ПроблемаСутьКак обойти
Модель получила полный ответ, но поняла его неверноМодель задаёт вопросы, ты отвечаешь ясно и полно. Потом она пересказывает требование иначе, чем ты имел в виду. Дальше работает по искажённой версии. Ошибку видно только в готовом результате, когда переделывать дорого. Проблема есть в коде, текстах, анализе — везде, где задание неполное и идёт диалогНе верь, что «ответил — значит, понято». До начала работы попроси модель пересказать требования своими словами. Сверь пересказ со своим замыслом. Поправь и только потом давай добро

Методы

МетодСуть
Пересказ требований как контрольная точка перед дорогой работойРаздели запрос на две фазы. Фаза 1: модель только задаёт вопросы, результат делать нельзя. Фаза 2: работа начинается после твоего «ок». Пример: ФАЗА 1. УТОЧНЕНИЕ (результат не делай). Задавай вопросы пачками по 3–5. Предлагай свою трактовку: «Я понял так: ... Верно?». Обязательно уточни: что на входе, что на выходе, как результатом будут пользоваться. Спрашивай про исключения и краевые случаи. Когда хватит — напиши «УТОЧНЕНИЕ ЗАВЕРШЕНО» и перечисли 5–7 требований своими словами. ФАЗА 2 — только после моего «ок». Дальше я недоступен. Почему работает: пересказ — дешёвая проверка до дорогой работы. Ошибка в пересказе обычно означает ошибку в результате. Трактовку («я понял так…») проще подтвердить или поправить, чем отвечать на открытый вопрос. Тема «вход, выход, использование» закрывает самые дорогие дыры. Маленькие пачки вопросов дают меньше путаницы. Когда применять: результат большой, задание неполное, потом ты будешь недоступен. Когда не нужно: короткая задача, которую дешевле переделать. Ограничение: верный пересказ не гарантирует верную работу. Это сигнал, а не гарантия. Вопросы не заменяют хорошее исходное задание
📖 Простыми словами

SWE-Clar: Can Coding Agents Clarify Incomplete Client Requirements and Deliver Greenfield Software?

arXiv: 2610.31854

Нейросети феноменально лажают на разработке с нуля, когда заказчик даёт мутное ТЗ. Механика LLM устроена так: вместо того чтобы остановиться и спросить, модель радостно достраивает пробелы галлюцинациями и с умным видом пишет тонну кода мимо цели. Авторы исследования SWE-Clar вскрыли главную проблему современных кодинг-агентов — они уверенно делают фигню, потому что путают собственные домыслы с реальными требованиями клиента.

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

Чтобы измерить этот цирк, создали бенчмарк SWE-Clar на базе 100 реальных заказов с Upwork. Схема предельно жесткая: агенту скармливают расплывчатое ТЗ, он задает уточняющие вопросы заказчику, а затем контекст намертво морозят и запускают две изолированные ветки. В первой проверяют greenfield-код приемочными тестами, во второй — тестируют понимание через контрольные вопросы по требованиям. Результат отрезвляет: даже когда модель вынудили задать правильные вопросы, она умудряется криво понять полученные ответы.

Тестировали на фрилансе, но грабли одни и те же везде. Заказываешь скрипт юнит-экономики для Wildberries, говоришь «посчитай маржу», а модель молча выкинет комиссии площадки, возвраты и налоги, выдав бесполезную цифру. Это касается любого бизнеса: пока нет жесткого протокола валидации ТЗ, доверять агентам вроде Claude Code разработку с нуля — чистая лотерея с отрицательным матожиданием.

Короче: автономные кодеры пока не тянут разработку с нуля, если проект сложнее типового скрипта. Хватит ждать от них телепатии: неполное ТЗ гарантирует провал. Либо ты сам маниакально разжёвываешь агенту каждую деталь, либо он напишет идеальный код для параллельной вселенной, оставив тебя с пустым кошельком и неработающим софтом.

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

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

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