Спросить, запустить, прочитать, исправить
Вы узнаете
Как круг «спросить, запустить, прочитать, исправить» убирает по одной проблеме и почему круг без чтения результата прячет остальные.
В круге 4 шага. Попросите агента об одном изменении. Запустите программу. Прочитайте всё, что вернулось. Исправьте одну проблему и идите по кругу снова. Каждый круг убирает одну проблему, поэтому программа с 3 проблемами станет зелёной через 3 круга. Спека держит таблицу того, сколько проблем осталось после каждого круга: 3, 2, 1, 0. Короткий путь, который ломает круг, это круг, где сказано «готово», а результат не прочитан. В виджете можно выключить чтение и увидеть, как счётчик врёт. В спеке тот же короткий путь это одно изменённое число, и ровно один тест краснеет.
Попробуйте
Пройдите в виджете три круга, затем выключите чтение и пройдите один круг. В спеке замените 1 в таблице на 0 и назовите тест, который покраснел.
Run rounds of ask, run, read and fix on a program with three problems. Each round fixes one thing. Switch the reading off and the problems stay hidden.
specs/vibecoding/the_loop.t27
// SPDX-License-Identifier: Apache-2.0
; specs/vibecoding/the_loop.t27 -- vibecoding lesson: ask, run, read, fix
; One idea: a round is ask, run, read the result, fix ONE thing. Each round removes one problem,
; so a program with 3 problems is green after 3 rounds. ROUND_STATE[i] is how many problems are
; left after i rounds. Run it in the player, then change ROUND_STATE[2] from 1 to 0 (a round that
; says "done" without reading the result) and read which test goes red.
; ASCII only, English only.
; phi^2 + 1/phi^2 = 3 | TRINITY
module vibecoding_the_loop;
pub const STEPS_PER_ROUND : u8 = 4;
pub const START_PROBLEMS : u8 = 3;
pub const ROUND_STATE : [4]u8 = [3, 2, 1, 0];
test a_round_has_four_steps {
assert STEPS_PER_ROUND == 4;
}
test the_loop_starts_with_every_problem {
assert ROUND_STATE[0] == START_PROBLEMS;
}
test each_round_fixes_exactly_one_thing {
assert ROUND_STATE[0] == ROUND_STATE[1] + 1;
assert ROUND_STATE[1] == ROUND_STATE[2] + 1;
assert ROUND_STATE[2] == ROUND_STATE[3] + 1;
}
test green_comes_after_one_round_per_problem {
assert ROUND_STATE[START_PROBLEMS] == 0;
}
Все уроки
Модуль 1 · Что такое вайбкодинг
Вы описываете, агент пишет, вы запускаете и проверяете. Что такое программа, и пять мифов, проверенных тестом.
Модуль 2 · Ваш рабочий стол
Редактор с агентом рядом, десять команд терминала и чтение сообщения об ошибке.
Модуль 3 · Точки сохранения в git
Коммит это точка сохранения, ветка это безопасная проба, а ключ это пара, одна половина которой остаётся приватной.
Модуль 4 · Промптинг
Части промпта, пример вместо прилагательного и один маленький шаг за раз.
Модуль 5 · Рабочий цикл
Четыре фазы от идеи до выпуска, цикл из четырёх шагов и что делать, когда вы застряли.
Модуль 6 · Тест как судья
Тест говорит да или нет, подложенная ошибка показывает, что тест работает, а дифф читают до того, как принять.
Модуль 7 · Из чего состоит агент
Чем агент отвечает, что он умеет делать с инструментами и что хранит между сообщениями.
Модуль 8 · Начальный бот
Бот это цикл сообщений, бот строится из спеки, а секрет остаётся вне репозитория и промпта.
Модуль 9 · Ваш собственный проект
Спека для вашей идеи, одна величина, измеренная после запуска, и честный план на следующий месяц.