Из чего состоит промпт
Вы узнаете
Какие четыре части есть у промпта и как отсутствующая часть видна как отсутствующий бит.
У рабочего промпта четыре части: цель, контекст, которого агент не видит, ограничения, которые он обязан соблюдать, и проверка, по которой ты поймёшь, что работа сделана. В prompt_parts.t27 каждая часть - один бит числа, поэтому промпт становится маской: расплывчатый промпт Сделай красивее - это маска 0, одна цель - маска 1, а полный промпт со всеми четырьмя частями - маска 15. Тесты читают биты прямо из констант. В уроке подкладывается одна ошибка: дай проверке тот же бит, что у ограничения, и четыре части больше не складываются в 15, поэтому тест падает.
Попробуйте
Открой виджет и найди один промпт, готовый к запуску; затем в спецификации замени CHECK с 8 на 4 и запусти тесты, чтобы увидеть, какой из них упадёт.
A prompt that works has a goal, context, limits and a check. Three prompts, from vague to full, and how many parts each carries. Vibecoding from zero, Prompting.
specs/vibecoding/prompt_parts.t27
// SPDX-License-Identifier: Apache-2.0
; Vibecoding, module Prompting, lesson 1: the parts of a prompt.
; A prompt that works names four parts: a goal, the context the agent cannot see, the limits
; it must keep, and the check that tells you it is done. Each part is one bit of a small number,
; so a prompt becomes a mask and "which parts are missing" becomes arithmetic.
module vibecoding_prompt_parts;
pub const GOAL : u8 = 1;
pub const CONTEXT : u8 = 2;
pub const LIMIT : u8 = 4;
pub const CHECK : u8 = 8;
pub const ALL_PARTS : u8 = 15;
; has_part asks one question: is this part present in the mask?
pub fn has_part(mask: u8, part: u8) -> bool {
return (mask / part) % 2 == 1;
}
; parts_in counts how many of the four parts a prompt carries.
pub fn parts_in(mask: u8) -> u8 {
var n : u8 = 0;
if (has_part(mask, GOAL)) { n = n + 1; }
if (has_part(mask, CONTEXT)) { n = n + 1; }
if (has_part(mask, LIMIT)) { n = n + 1; }
if (has_part(mask, CHECK)) { n = n + 1; }
return n;
}
; A prompt can be run when it says what to do and how to know it is done.
pub fn can_run(mask: u8) -> bool {
return has_part(mask, GOAL) and has_part(mask, CHECK);
}
; "Make it better" names nothing: mask 0. "Add a total line to the cart page" has a goal: mask 1.
; Add the cart file (context), "do not touch the price code" (limit) and "the test cart_total passes" (check): mask 15.
pub const VAGUE_PROMPT : u8 = 0;
pub const GOAL_ONLY : u8 = 1;
pub const FULL_PROMPT : u8 = 15;
; The tests read the same arithmetic straight from the constants: the site runner evaluates
; constants and expressions, so each assert spells out what has_part would answer.
test the_four_bits_do_not_overlap {
assert GOAL + CONTEXT + LIMIT + CHECK == ALL_PARTS;
assert CHECK == 8;
}
test a_vague_prompt_has_no_part {
assert 0 == (VAGUE_PROMPT / GOAL) % 2;
assert 0 == (VAGUE_PROMPT / CHECK) % 2;
}
test a_goal_alone_is_not_enough {
assert 1 == (GOAL_ONLY / GOAL) % 2;
assert 0 == (GOAL_ONLY / CHECK) % 2;
}
test a_full_prompt_has_all_four {
assert 1 == (FULL_PROMPT / GOAL) % 2;
assert 1 == (FULL_PROMPT / CONTEXT) % 2;
assert 1 == (FULL_PROMPT / LIMIT) % 2;
assert 1 == (FULL_PROMPT / CHECK) % 2;
assert FULL_PROMPT == ALL_PARTS;
}
Все уроки
Модуль 1 · Что такое вайбкодинг
Вы описываете, агент пишет, вы запускаете и проверяете. Что такое программа, и пять мифов, проверенных тестом.
Модуль 2 · Ваш рабочий стол
Редактор с агентом рядом, десять команд терминала и чтение сообщения об ошибке.
Модуль 3 · Точки сохранения в git
Коммит это точка сохранения, ветка это безопасная проба, а ключ это пара, одна половина которой остаётся приватной.
Модуль 4 · Промптинг
Части промпта, пример вместо прилагательного и один маленький шаг за раз.
Модуль 5 · Рабочий цикл
Четыре фазы от идеи до выпуска, цикл из четырёх шагов и что делать, когда вы застряли.
Модуль 6 · Тест как судья
Тест говорит да или нет, подложенная ошибка показывает, что тест работает, а дифф читают до того, как принять.
Модуль 7 · Из чего состоит агент
Чем агент отвечает, что он умеет делать с инструментами и что хранит между сообщениями.
Модуль 8 · Начальный бот
Бот это цикл сообщений, бот строится из спеки, а секрет остаётся вне репозитория и промпта.
Модуль 9 · Ваш собственный проект
Спека для вашей идеи, одна величина, измеренная после запуска, и честный план на следующий месяц.