Справочник по движку

Как работает движок

Всё на этой странице построено на собственных данных движка (RULES, DIMENSIONS, SEVERITY_PENALTY, STAGE_LABELS), поэтому она не может разойтись с кодом.

Конвейер

  1. Разбор промпта parse
  2. Определение намерения intent
  3. Анализ структуры structure
  4. Извлечение требований requirements
  5. Поиск неоднозначностей ambiguity
  6. Поиск недостающего контекста missing_context
  7. Качество инструкций instruction_quality
  8. Анализ ограничений constraints
  9. Анализ формата вывода output_format
  10. Анализ токенов tokens
  11. Поиск избыточности redundancy
  12. Анализ безопасности и инъекций security
  13. Стратегия оптимизации strategy
  14. Преобразование промпта transform
  15. Проверка validation
  16. Оценка качества evaluation
  17. Сравнение токенов и стоимости comparison

Этапы 1–12 выполняются при каждом анализе. Этапы 13–17 выполняются при оптимизации. Ошибкой может завершиться только разбор, и только для пустого промпта. Проблемы безопасности сообщаются, но никогда не прерывают конвейер.

Каталог правил

Каждое правило ведёт на справочную страницу с примером срабатывания, объяснением движка и исправленной версией.

КодИзмерениеСрабатывает, когда
missing_objectiveПолнотаНет слова-задачи, повелительного предложения или вопроса.
too_shortКонкретностьМенее 5 значимых слов.
vague_languageЯсность«что-то», «всякое», «и т. д.», «и так далее».
unquantified_sizeКонкретность«короткий», «несколько», «подробный» без числа.
unclear_referenceПолнота«это» или «вышеуказанное», когда нечего приложить в качестве объекта ссылки.
missing_languageКонкретностьЗапрошен код без указания языка или фреймворка.
hedged_instructionЯсность«постарайся», «если возможно», «может быть».
long_sentenceЯсностьПредложение в прозе длиннее 40 слов.
negative_only_constraintsЯсность3 и более запрета и ни одного положительного требования.
contradictory_instructionsСогласованностьКонфликтующие форматы, длины, лимиты слов, инструменты или языки.
near_duplicate_instructionСогласованностьДва предложения с совпадением слов ≥ 80%.
missing_output_formatОписание выводаФормат вывода не назван.
missing_length_guidanceОписание выводаЗадача на создание контента или резюме без лимита длины.
wall_of_textСтруктураБолее 120 слов без разделов, списков и разрывов.
duplicate_instructionЭффективностьПредложение, повторённое дословно.
filler_phrasesЭффективностьВежливые обороты и усилители, не меняющие задачи.
prompt_injection_signatureБезопасностьВзвешенная сигнатура инъекции/джейлбрейка (критично при риске ≥ 60).
sensitive_dataБезопасностьУчётные данные (критично) или персональные данные (предупреждение).
undelimited_variableБезопасность{{var}} или ${var} вне тегов, блоков кода и тройных кавычек.
destructive_operationБезопасностьrm -rf /, DROP TABLE, удалить всё, curl | sh.

Версия сигнатур инъекций: 2026.11.1. Совпадение сигнатуры сообщает о риске, а не о доказательстве: оно может пропустить новые атаки и может пометить текст, который цитирует атаку ради обсуждения.

Оценка

  • Штраф за каждое замечание: критическое 30, предупреждение 10, заметка 3.
  • Общая оценка = 100 − сумма всех штрафов, в пределах 0–100, с верхней границей 50 при наличии критического замечания.
  • Каждое измерение = 100 − штрафы замечаний в этом измерении. Измерение «Структура» применяется только к промптам длиннее 120 слов.
  • Градации: от 85 — сильный, 70–84 — хороший, 50–69 — требует доработки, ниже 50 — слабый.

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

Преобразования и режимы

РежимПреобразования
conservativeНормализует пробельные символы; удаляет полностью повторяющиеся предложения.
balanced+ удаляет вводные слова и вежливые обороты (please, basically, I would like you to в начале предложения, приветствия); in order to → to.
structured+ раскладывает предложения по разделам Task, Context, Requirements, Output format и Input; оборачивает переменные шаблона в теги.

Блоки кода, встроенный код, цитируемый текст, URL, блоки с XML-тегами и переменные шаблона защищены: они маскируются перед любым преобразованием и восстанавливаются байт в байт. Ни одно преобразование не добавляет содержимого, кроме заголовков разделов и разделителей переменных, и оба случая сообщаются как изменения.

Проверка кандидатов

Каждый режим даёт одного кандидата. Кандидат допускается, только если:

  • сохранён каждый защищённый фрагмент;
  • сохранено каждое исходное предложение (после той же нормализации, что и в преобразованиях);
  • сохранено каждое извлечённое требование;
  • не появилось новых предупреждений или критических замечаний;
  • в режимах conservative и balanced токенов не больше, чем в оригинале.

Затем движок выбирает по цели: tokens (меньше всего), quality (высшая оценка) или balanced (высшая оценка в пределах 115% токенов оригинала). Оригинал всегда входит в число кандидатов и побеждает, когда ничего лучше нет.

Реструктуризация

restructurePrompt превращает небрежно написанный запрос в структурированный инженерный промпт. Это не то же самое, что оптимизация: оптимизация удаляет слова и доказывает, что ничего не потеряно; реструктуризация переупорядочивает и для программных задач добавляет план тестирования.

  1. Очистка. Те же удаление вводных слов и дубликатов, что и в режиме balanced.
  2. Разбиение. Длинные предложения, написанные «на одном дыхании», разбиваются на отдельные пункты по союзам, которые вводят новую инструкцию (fix X and make Y work and don't break Z). Сочетания глагола и списки существительных остаются нетронутыми.
  3. Классификация. Каждый пункт попадает в Role, Objective, Context, Requirements, Constraints или Expected output. Код, цитаты, URL и переменные никогда не редактируются.
  4. Каркас. Только для программных задач добавляется фиксированное руководство по обнаруженному намерению (отладка, новый код, рефакторинг, тесты, ревью, конфигурация, объяснение) и теме (аутентификация, API, база данных, интерфейс, производительность, платежи): граничные случаи, тесты, критерии приёмки и формат вывода по умолчанию.

Каждая строка результата помечается как prompt (ваша), engine (добавленное руководство) или codebase (информация о проекте из расширения для VS Code), чтобы интерфейс мог точно показать, что добавлено. Разделы без содержимого опускаются: ясный запрос в одно предложение возвращается как есть, а промпт, не относящийся к коду, не получает плана тестирования. Руководство, которое вы уже дали, не дублируется, а ваш собственный формат вывода заменяет формат по умолчанию. Передайте scaffold: false, чтобы только упорядочить текст, ничего не добавляя.

Это руководство — фиксированная таблица в исходном коде движка, а не вывод модели, поэтому один и тот же запрос всегда даёт один и тот же промпт. Заголовки разделов и строки руководства — на английском.

Токены и стоимость

Модели OpenAI считаются с o200k_base (cl100k_base для GPT-4/3.5) и помечаются как точные. Другие провайдеры используют o200k_base как приближение и помечаются как приблизительные. Пока токенизатор не загружен, счёт возвращается к «символы ÷ 4» и помечается как эвристический. Стоимость берётся из таблицы справочных цен с датой проверки каждой цены. См. каталог моделей.