Слепые зоны в промптинге: полный гайд по Fable 5

от автора

Работа с Claude Fable 5 раз за разом напоминает мне старую истину: карта — не территория.

Карта — это представление предстоящей работы: мои промпты, скиллы и контекст, всё, что я передаю Claude. Территория — это то, где работа реально происходит: кодовая база, реальный мир, его настоящие ограничения.

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

Fable — первая модель, где я вижу, что качество работы упирается именно в мою способность прояснять её неизвестные.

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

Я обнаружил, что работа с Fable — это итеративный процесс поиска своих неизвестных: до реализации, во время неё и после.

Я сделал несколько примеров артефактов для поиска неизвестных, обязательно вернитесь к ним, чтобы выработать интуицию, когда их использовать.

Знать свои неизвестные

Какие у вас неизвестные? Когда я прихожу к Claude с задачей, я обычно раскладываю её на 4 категории:

  • Известное известное (Known Knowns): это, по сути, то, что есть в моём промпте. Что я говорю агенту о том, чего хочу?

  • Известное неизвестное (Known Unknowns): что я ещё не выяснил, но осознаю, что не выяснил?

  • Неизвестное известное (Unknown Knowns): что настолько очевидно, что я никогда бы это не записал, но узнал бы, увидев?

  • Неизвестное неизвестное (Unknown Unknowns): о чём я вообще не задумывался? Каких знаний я не осознаю? Знаю ли я, насколько хорошим может быть результат?

Лучшие агентные разработчики отличаются тем, что у них относительно мало неизвестных. Наблюдая, как промптят такие люди, как Борис или Джарред, я вижу: они детально знают, чего хотят. Они глубоко синхронизированы и с кодовой базой, и с поведением модели.

Но и они закладываются на неизвестные. Во многом сокращение и планирование своих неизвестных — это и есть навык агентного программирования. К счастью, этот навык можно развивать, работая с Claude.

Если статья понравится — приглашаю в канал AI for Devs. Каждый день публикую похожие материалы: модели, агенты, практические кейсы и новости из мира AI.

Помогите Claude помочь вам

Инструктировать Claude — это тонкая наука. Если вы слишком конкретны, Claude будет следовать вашим инструкциям, даже если правильнее было бы свернуть в сторону. Если вы слишком расплывчаты, Claude часто будет делать выбор и допущения, опираясь на общепринятые практики индустрии, которые могут не подходить именно вашей задаче.

Когда вы не учитываете свои неизвестные, вы проигрываете в обоих случаях. Вы не знаете заранее, где путь будет полон препятствий, а где чист, но при этом хотите, чтобы Claude вовремя свернул куда надо.

Claude может помочь вам находить свои неизвестные быстрее. Он прочёсывает кодовую базу и интернет за секунды и знает о среднестатистической теме гораздо больше, чем вы. Он также быстрее итерируется после неудачи.

Самая важная часть этого процесса — дать Claude контекст о вашей отправной точке. Например, расскажите, на каком этапе размышлений вы находитесь; раскройте свой опыт работы с задачей и кодовой базой; и позвольте ему работать с вами как партнёр по мышлению.

Я уже писал ранее об использовании HTML вместе с Claude — почти во всех случаях ниже HTML-артефакт оказывается лучшим способом визуализировать и представить неизвестное.

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

До реализации

Проход по слепым зонам (Blind Spot Pass)

Приступая к работе, одна из самых полезных вещей — понять свои слепые зоны. Например, если вы пишете фичу в незнакомой части кодовой базы или используете Claude для помощи с непривычной работой (скажем, полировкой дизайна) — у вас, скорее всего, много неизвестных неизвестных.

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

Для этого можно попросить Claude помочь найти ваши неизвестные неизвестные и объяснить их вам. Мне нравится использовать буквальные формулировки «blindspot pass» и «unknown unknowns». Контекст о том, кто вы и что знаете, обычно меняет весь набор вопросов, которые задаст Claude.

Примеры промптов:

  • «Я работаю над добавлением нового auth-провайдера, но совсем не знаком с модулями авторизации в этой кодовой базе. Сделай проход по слепым зонам, чтобы помочь мне найти релевантные неизвестные неизвестные и научить меня лучше тебя промптить.»

  • «Я не знаю, что такое цветокоррекция, но мне нужно откорректировать цвет в этом видео. Научи меня понимать мои неизвестные неизвестные о цветокоррекции, чтобы я мог лучше формулировать промпты.»

Брейнштормы и прототипы

Когда я работаю в области с большим количеством неизвестных известных (критериев, которые я умею определить, только увидев их) — я люблю просить Claude брейнштормить и прототипировать вместе со мной.

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

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

Визуальный дизайн для меня — то, что сложно сформулировать словами, но я знаю, чего хочу, когда вижу это. В таких случаях я прошу несколько разных дизайн-подходов к артефакту.

Я также начинаю почти каждую сессию кодинга с фазы исследования или брейншторма. Это помогает мне с самого начала задать намерение и очертить рамки проекта. Claude часто находит ценные подходы, которые я бы упустил, а иногда, наоборот, за деревьями не видит леса. Брейншторм не даёт мне задать слишком узкий или слишком широкий скоуп.

Примеры промптов:

  • «Мне нужен дашборд под эти данные, но у меня нет визуального вкуса, и я не знаю, что вообще возможно. Сделай HTML-страницу с 4 радикально разными направлениями дизайна, чтобы я мог на них отреагировать.»

  • «Прежде чем что-либо подключать, сделай один HTML-файл с макетом нового тулбара редактора на фейковых данных. Я хочу отреагировать на компоновку, прежде чем ты тронешь реальное приложение.»

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

Интервью

После достаточного брейншторма у меня, скорее всего, всё равно остаются неизвестные.

В этом случае я прошу Claude проинтервьюировать меня по поводу оставшихся неизвестных или неоднозначностей. Прося Claude взять у вас интервью, постарайтесь дать ему контекст о своей задаче, чтобы направить вопросы. Вот несколько примеров.

Пример промпта:

  • «Интервьюируй меня по одному вопросу за раз про всё неоднозначное, отдавай приоритет вопросам, ответ на которые изменил бы архитектуру.»

Референсы

Иногда вы не можете подробно описать желаемое. Например, вам может не хватать языка описания, или это настолько сложно, что заняло бы у вас довольно много времени.

В этом случае лучший ответ — референс. Можно приложить диаграммы, документацию или картинки, но самый точный референс — это исходный код.

Если у вас есть библиотека, реализующая что-то определённым образом, или компонент дизайна, который вам нравится, просто укажите Fable на папку и скажите, что искать, даже если это на другом языке программирования.

Именно так работает и Claude Design. Вам не обязательно давать файл (хотя это тоже можно). Вы можете указать на модуль на понравившемся сайте, и модель прочитает лежащий в основе код, а не просто скриншот. Это даёт куда более богатую детализацию по разметке, структуре и тому, как компонент реально устроен.

Пример промпта:

  • «Этот Rust-крейт в vendor/rate-limiter реализует именно то поведение backoff, которое мне нужно. Прочитай его и реализуй ту же семантику в нашем TypeScript API-клиенте.»

Планы реализации

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

Пример промпта:

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

Во время реализации

Заметки по реализации

Когда план меня устраивает, я открываю новую сессию и передаю в промпт все накопленные артефакты. Например, я могу передать файл со спецификацией и прототип и попросить агента реализовать это.

Но правда в том, что сколько бы вы ни планировали, неизвестные неизвестные всё равно подстерегают. Агент может обнаружить в процессе работы, что ему нужно пойти другим путём из-за edge case, найденного в коде.

Я прошу Claude Code вести временный файл implementation-notes.md (или .html), в котором фиксируются принятые решения, чтобы мы могли извлечь уроки для следующей попытки.

Пример промпта:

  • «Веди файл implementation-notes.md. Если наткнёшься на edge case, вынуждающий отклониться от плана, — выбирай консервативный вариант, запиши это в раздел “Отклонения” и продолжай работу.»

После реализации

Питчи и объяснения

Одна из важнейших частей публикации чего-либо — получить одобрение и поддержку. Сборка питч- и объясняющих артефактов в финальном документе помогает:

  • быстрее донести суть до ревьюеров, которые начинают с теми же неизвестными, что были у вас;

  • быстрее получить одобрение, когда эксперты хотят увидеть, что вы учли неизвестные и типичные точки провала, которые они бы сами предвидели.

Пример промпта:

  • «Упакуй прототип, спецификацию и заметки по реализации в единый документ, который я смогу закинуть в Slack, чтобы получить поддержку. Начни с демо-гифки.»

Квизы

После долгой рабочей сессии Claude может сделать гораздо больше, чем я осознаю. Чтение диффов кода даёт мне лишь поверхностное понимание произошедшего, ведь многое в поведении зависит от уже существующих путей в коде.

Просьба к Claude устроить мне квиз по итогам изменений — после того как он даст мне достаточно контекста — помогает понять, что произошло. Я мержу изменения только после того, как безупречно прохожу такой квиз.

Пример промпта:

  • «Я хочу убедиться, что понимаю всё, что произошло в этом изменении. Дай мне HTML-отчёт об изменениях для чтения — с контекстом, интуицией, тем, что было сделано, и так далее, — а внизу квиз по изменениям, который я обязан пройти.»

Как это сложилось вместе: запуск Fable

Ролик к запуску Fable был полностью смонтирован Claude Code. Это была новая для меня область, и я ни в коей мере не эксперт.

Поэтому я начал с того, что знал сам. Я знал, что Claude умеет монтировать видео и делать транскрипцию через код, но не был уверен, достаточно ли это точно. Тогда я попросил Claude объяснить мне, как работает транскрипция вроде Whisper и смогу ли я достаточно точно вырезать через ffmpeg такие вещи, как «эм» и длинные паузы.

Я хотел, чтобы Claude сделал интерфейс, синхронизированный по времени со словами, которые я произношу, но не был уверен, получится ли это, поэтому попросил Claude собрать прототип видео на Remotion и транскрипции, чтобы проверить, сработает ли идея.

Наконец, само видео выглядело немного приглушённым — я знал, что это результат цветокоррекции, но толком не знал, что такое цветокоррекция. Моя первая попытка была — попросить Claude сделать несколько вариантов на выбор, но я понял, что не знаю, как выглядит «хорошо» применительно к цветокоррекции. Поэтому вместо этого я попросил Claude научить меня цветокоррекции, чтобы найти свои неизвестные.

Более подробное объяснение этого случая можно посмотреть здесь.

Совмещение карты и территории

Чем лучше становятся модели, тем больше можно достичь при правильном подходе. Когда долгая, многошаговая задача выполнена не так, как надо, скорее всего, вам нужно было потратить больше времени на определение своих неизвестных или составить план реализации, который позволяет Claude импровизировать в местах неопределённости.

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

Так что начните свой следующий проект с просьбы к Claude помочь найти ваши неизвестные.

Русскоязычное сообщество про AI в разработке

Друзья! Эту статью подготовила команда ТГК «AI for Devs» — канала, где мы рассказываем про AI-агентов, плагины для IDE, делимся практическими кейсами и свежими новостями из мира ИИ. Подписывайтесь, чтобы быть в курсе и ничего не упустить!

ссылка на оригинал статьи https://habr.com/ru/articles/1055458/