~/VibeHandbook

Глава 01 · 03

Цикл: намерение → генерация → ревью → доработка

Всё в этой книге сводится к одному циклу. Усвойте его.

  1. Намерение. Сформулируйте, что вы хотите, и значимые ограничения — входные данные, выходные, граничные случаи, стек, стиль. Расплывчатое намерение даёт расплывчатый код.
  2. Генерация. Дайте модели написать реализацию. Не водите её за руку по синтаксису; описывайте поведение.
  3. Ревью. Прочитайте то, что вернулось. Оно действительно делает то, что нужно? Обрабатывает ли оно пустой список, null, сбой сетевого вызова? Это простейшая рабочая версия?
  4. Доработка. Укажите, что не так, дайте конкретную поправку и перегенерируйте. Повторяйте, пока не дотянет до вашей планки.

Большинство новичков пропускают шаг 3. Они генерируют, оно запускается, они идут дальше. А потом оно ломается в проде на случае, который они никогда не описали. Шаг ревью — это место, где происходит инженерия.

Вот как выглядит хороший первый промпт в этом цикле:

Write a TypeScript function `parseDuration(input: string): number`
that converts strings like "1h30m", "45s", "2d" into total seconds.

Requirements:
- Support units: d (days), h (hours), m (minutes), s (seconds).
- Multiple units can combine: "1h30m" = 5400.
- Reject invalid input (empty, unknown units, negative) by throwing
  an Error with a clear message.
- No external libraries. Include 5 unit tests covering the edge cases.

Show the function and tests only.

Обратите внимание на структуру: точная сигнатура, явные правила, названные граничные случаи, заявленные ограничения и запрос на тесты. Вы не надеетесь, что модель угадает правильно, — вы убираете неоднозначность, которая порождает плохие догадки.

Шаг доработки — такой же навык, как и первый промпт. Расплывчатая обратная связь даёт расплывчатые правки. Сравните эти две поправки:

Плохо:  "this is wrong, fix it"

Хорошо: "parseDuration('1h30m') returns 90 instead of 5400 — you're
        summing the numbers but ignoring the unit multipliers. Multiply
        each value by its unit's seconds (d=86400, h=3600, m=60, s=1)
        before summing. Also add a test for the combined case '2d3h'."

Хороший вариант называет симптом, причину и исправление. Вы ревьюите так же, как ревьюили бы pull request коллеги, — и чем точнее вы указываете, тем меньше витков тратите. Каждый цикл должен сходиться. Если вы ловите себя на хождении по кругу — это сигнал, что ваше намерение было недоспецифицировано; перестаньте перегенерировать и вместо этого перепишите спецификацию.

Хотите офлайн-версию?

Получите PDF + EPUB + скачиваемую библиотеку промптов + обновления версий.

$ Получить PDF — $39