Справочник по движку
Как работает движок
Всё на этой странице построено на собственных данных движка (RULES, DIMENSIONS, SEVERITY_PENALTY, STAGE_LABELS), поэтому она не может разойтись с кодом.
Конвейер
- Разбор промпта
parse - Определение намерения
intent - Анализ структуры
structure - Извлечение требований
requirements - Поиск неоднозначностей
ambiguity - Поиск недостающего контекста
missing_context - Качество инструкций
instruction_quality - Анализ ограничений
constraints - Анализ формата вывода
output_format - Анализ токенов
tokens - Поиск избыточности
redundancy - Анализ безопасности и инъекций
security - Стратегия оптимизации
strategy - Преобразование промпта
transform - Проверка
validation - Оценка качества
evaluation - Сравнение токенов и стоимости
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 превращает небрежно написанный запрос в структурированный инженерный промпт. Это не то же самое, что оптимизация: оптимизация удаляет слова и доказывает, что ничего не потеряно; реструктуризация переупорядочивает и для программных задач добавляет план тестирования.
- Очистка. Те же удаление вводных слов и дубликатов, что и в режиме balanced.
- Разбиение. Длинные предложения, написанные «на одном дыхании», разбиваются на отдельные пункты по союзам, которые вводят новую инструкцию (fix X and make Y work and don't break Z). Сочетания глагола и списки существительных остаются нетронутыми.
- Классификация. Каждый пункт попадает в Role, Objective, Context, Requirements, Constraints или Expected output. Код, цитаты, URL и переменные никогда не редактируются.
- Каркас. Только для программных задач добавляется фиксированное руководство по обнаруженному намерению (отладка, новый код, рефакторинг, тесты, ревью, конфигурация, объяснение) и теме (аутентификация, API, база данных, интерфейс, производительность, платежи): граничные случаи, тесты, критерии приёмки и формат вывода по умолчанию.
Каждая строка результата помечается как prompt (ваша), engine (добавленное руководство) или codebase (информация о проекте из расширения для VS Code), чтобы интерфейс мог точно показать, что добавлено. Разделы без содержимого опускаются: ясный запрос в одно предложение возвращается как есть, а промпт, не относящийся к коду, не получает плана тестирования. Руководство, которое вы уже дали, не дублируется, а ваш собственный формат вывода заменяет формат по умолчанию. Передайте scaffold: false, чтобы только упорядочить текст, ничего не добавляя.
Это руководство — фиксированная таблица в исходном коде движка, а не вывод модели, поэтому один и тот же запрос всегда даёт один и тот же промпт. Заголовки разделов и строки руководства — на английском.
Токены и стоимость
Модели OpenAI считаются с o200k_base (cl100k_base для GPT-4/3.5) и помечаются как точные. Другие провайдеры используют o200k_base как приближение и помечаются как приблизительные. Пока токенизатор не загружен, счёт возвращается к «символы ÷ 4» и помечается как эвристический. Стоимость берётся из таблицы справочных цен с датой проверки каждой цены. См. каталог моделей.