D-промпт: задание-контракт, а не пожелание
«Сделай журнал событий, чтобы ничего не терялось». Агент сделал. Терялось.
Потому что «чтобы ничего не терялось» — пожелание. Его нельзя проверить. Задание в WitnessDone (мы называем его D-промпт) устроено как контракт из четырёх частей.
Что читать
Конкретный список документов и контрактов, а не «изучи репозиторий». Агент видит ровно то, что нужно, и не додумывает остальное.
Как делать и что произвести
Список файлов, которые должны появиться. Всё, что появится сверх него, будет видно в акте как расширение объёма.
Что нельзя нарушать
Инварианты задачи, сформулированные жёстко. Не «постарайся не ломать», а «запись в журнал происходит до рассылки события; при сбое событие не теряется».
Как доказать
Пронумерованные утверждения приёмки: A03.1, A03.2… Каждое — наблюдаемое: его можно проверить командой и увидеть результат. Одно утверждение — один тест.
Ограничение объёма
Слишком большая задача режется на части заранее. «Как-нибудь осилим» — главный источник незаконченных хвостов.
Почему задание нельзя поправить по ходу
Если условие меняется во время реализации, акт перестаёт соответствовать заданию. Поэтому правка — это новая версия задания, а не реплика в чате. Само задание тоже проходит гейт качества до реализации: плохое задание дешевле переписать до кода.
Цена бездействия
Без контракта агент сам решает, что такое «готово». И решает в свою пользу.
Следующий пост — инварианты и запрет ярлыков неполноты.
Читайте серию на arhellist.ru.
https://arhellist.ru/blog/d-prompt-zadanie-dlya-agenta-kak-kontrakt-a-ne-pozhelanie/