learn-se · Урок 2 · ~15 минут

Leading words: одно слово вместо абзаца

Ровно то, что ты почувствовал на «вертикальном срезе» — два слова, в которые упаковано много смысла. Теперь разберём, почему это работает и как этим пользоваться нарочно.

Механизм

Leading word (нем. Leitwort) — компактный концепт, который уже живёт в pretraining модели и которым агент думает, пока выполняет задачу. Он якорит целую область поведения в минимуме токенов — не потому что ты его определил, а потому что рекрутирует приоры, которые модель уже держит (глоссарий).

Сравни две постановки одной задачи из setlog — офлайн-очередь записи подходов:

Абзац «Сделай так, чтобы если запрос на сохранение подхода отправился, но ответ не пришёл, и клиент повторил его — на сервере не создалось два одинаковых подхода, и повторная отправка того же не ломала данные»
Одно слово «Сохранение подхода должно быть idempotent»

Второе не короче случайно. Слово idempotent тянет за собой всю область: повтор = тот же результат, что один раз; дедупликация; безопасный ретрай. Модель знает это слово из тысяч текстов — ты не объясняешь, ты вызываешь.

Это и есть ответ на твой вопрос про «вертикальный срез»: сильные слова индустрии — сжатые контейнеры смысла. Учить словарь = учить рычаги, каждый из которых заменяет абзац.

Слово работает дважды

РаботаГдеЧто даёт тебе
Executionв теле промптаагент тянется к одному и тому же поведению каждый раз, когда слово появляется — предсказуемость
Invocationв описании / общем языкекогда один термин живёт в твоих промптах, доках и коде — агент связывает их и срабатывает надёжнее

Второе — не про AI, а про людей тоже. В DDD это зовётся ubiquitous language: один строгий термин на всю команду и продукт (Fowler). Для тебя, соло с агентом, оба конца языка — твои: если ты называешь фичу «инвайт-ссылка» и в промпте, и в UI, и в задачах — агент собирает их в один концепт.

Суждение: когда работает, когда вредит

Работает — когда слово реально живёт в pretraining: устоявшийся термин индустрии (idempotent, debounce, race condition, optimistic update, source of truth). Проверка: встречается ли оно в тысячах чужих текстов, не только в твоей голове.
Вредит #1 — придуманное слово. Свой неологизм не рекрутирует приоров: ты платишь токенами за определение то, что готовое слово даёт бесплатно. Сначала ищи существующее слово, потом изобретай.
Вредит #2 — no-op. Слово слишком слабое, чтобы побить дефолт («будь тщательным», когда агент и так тщателен) — это no-op: платишь токенами, ничего не меняя. Лечится более сильным словом (relentless), не другой техникой.
Цена — точность. Слово тянет смысл, который ты не полностью контролируешь. Употребишь чуть неверно — вызовешь чужие приоры. Скажешь «кешируй», имея в виду «дедупни» — получишь TTL и инвалидацию, которых не просил. Сильное слово требует, чтобы ты знал его точное значение.

Твой стартовый словарь рычагов

Каждое слово ниже заменяет абзац. Полные определения — в глоссарии.

Вместо абзаца «…»Скажи
повтор запроса не должен создавать дубликат / списывать дваждыidempotent
подожди паузу в потоке событий, потом сделай разdebounce (а «не чаще раза в N» — throttle)
покажи результат сразу, откати если сервер отклонилoptimistic update
два процесса меняют одно, итог зависит от того, кто успел первымrace condition
у этого факта должно быть одно авторитетное место храненияsingle source of truth
основной сценарий без ошибок и странных условийhappy path (из урока 1)

Проверь себя

1. Почему leading word сжимает ТЗ, а не просто сокращает его?

Дело не в длине. Idempotent тянет за собой целую область поведения, которую модель уже знает — ты вызываешь смысл, а не пишешь его. Придуманное короткое слово так не работает.

2. Ты придумал свой термин «мягкое сохранение» и вставил в промпт. Что не так?

Придуманное слово пусто для модели: приоров под ним нет. Сначала ищи существующий термин (optimistic update? draft? autosave?), изобретай только если его правда нет.

3. В промпте есть строка «пиши качественный код». Агент и так пишет прилично. Это —

«Качественный» не бьёт дефолт — агент и так старается. Это no-op. Если нужно поведение — бери слово, которое реально сдвигает: «idempotent», «покрой edge cases», конкретный критерий.

Упражнение

Часть A — сожми. Возьми свой промпт из урока 1 (индикатор «печатает…»). Логика «подсказка исчезает через 3 секунды тишины» — это описание одного известного механизма. Каким одним словом ты заменишь этот абзац? А «показать сразу, откатить если не дошло»?

Показать ответ (сначала свой!)
Ответ

«Исчезает через 3 сек тишины» → debounce (скрытие индикатора дебаунсится на 3 сек от последнего keystroke).
«Показать сразу, откатить если сервер отклонил» → optimistic update.
Заметь: ты всё ещё задаёшь поведение (урок 1), но теперь одним словом вместо абзаца.

Часть B — поймай ловушку. Найди в строке проблему: «Сделай загрузку данных реактивной и эффективной, чтобы всё было оптимально».

Показать разбор
Разбор

Три no-op подряд. «Эффективно», «оптимально» — агент и так к этому стремится, они не бьют дефолт и не задают проверяемого поведения. «Реактивной» опаснее: это настоящее слово с точным смыслом (реактивные потоки, автоперерисовка при смене данных) — если ты имел в виду просто «быстро обновлялось», ты вызвал чужие приоры и можешь получить не то. Замени на конкретику: «данные обновляются в UI без перезагрузки страницы» + при нужде реальный термин (optimistic update, realtime-подписка).

Пришли ответы на A и B — разберу строго, как в уроке 1.

Что читать

Первоисточник концепции — скилл writing-great-skills у тебя на машине (~/.claude/skills/writing-great-skills/), разделы «Leading words» и глоссарные статьи Leading Word, No-Op, Legwork. Человеческий аналог — Fowler — Ubiquitous Language: почему один строгий термин на команду важнее, чем кажется.

Непонятно — спрашивай меня в сессии: «дай ещё пять leading words для моего стека», «это слово реальный термин или мой неологизм?» — нормальные вопросы, я твой преподаватель.
Источники: writing-great-skills (SKILL.md, GLOSSARY.md — локально) · Fowler — Ubiquitous Language