Skip to main content

Правила (Rules)

Что такое правило​

Правило — это Markdown-файл с инструкциями, которые агент получает автоматически. Так не нужно повторять одни и те же требования в каждом чате: язык ответов, стиль кода, принятые в проекте библиотеки.

Типы правил:

  • Глобальное — личное правило для всех проектов. Например, чтобы агент везде отвечал в одном формате. Лежит в ~/.veai/rules/.
  • Проектное — соглашения одного репозитория. Лежит в <проект>/.veai/rules/; файл можно закоммитить, и правило получит вся команда.

Внутри каталога rules/ можно создавать подкаталоги: правилом считается каждый файл .md.

tip

Попросите агента: «Создай правило: в этом проекте используем Kotlin 2.0 и data-классы вместо records». Он сам создаст файл с нужным frontmatter.

Где агент ищет правила​

ПутьID правилаФормат
~/.veai/rules/**/*.mdglobal:.veai/rules/team.mdfrontmatter + Markdown
<проект>/.veai/rules/**/*.mdproject:.veai/rules/team.mdfrontmatter + Markdown
~/.claude/CLAUDE.mduser:.claude/CLAUDE.mdобычный Markdown
<проект>/AGENTS.mdproject:AGENTS.mdобычный Markdown
<проект>/CLAUDE.mdproject:CLAUDE.mdобычный Markdown
<проект>/.claude/CLAUDE.mdproject:.claude/CLAUDE.mdобычный Markdown
<проект>/CLAUDE.local.mdproject:CLAUDE.local.mdобычный Markdown

Совместимость с другими инструментами​

Если в проекте уже есть AGENTS.md или CLAUDE.md для других агентов, Veai CLI подхватит их без дополнительной настройки. Эти файлы читаются как есть, без frontmatter, и действуют на всю сессию.

Учтите ограничения:

  • AGENTS.md и CLAUDE.md в подкаталогах проекта не читаются — только в корне.
  • Родительские каталоги не просматриваются: корень проекта — каталог, из которого запущен veai.
  • Новые правила создавайте в .veai/rules/ — там доступны все возможности формата.

Когда передавать правило агенту​

Перед текстом правила можно добавить YAML-блок frontmatter. Оба поля необязательны.

ПолеЗначенияНазначение
strictnesssystem, user-message, tool-callв какой момент текст правила попадает к модели; по умолчанию system
filePatternglob, например **/*.kt, или список glob-шаблоновправило передаётся после чтения файла, подходящего под любой из шаблонов

Значения strictness:

  1. system — правило входит в системный промпт. Подходит для стабильных инструкций: язык ответов, общий формат результата. Это значение по умолчанию, поэтому файл без frontmatter тоже работает как system.
  2. user-message — правило передаётся вместе с каждым вашим сообщением. Полезно в длинных диалогах, где инструкцию важно напоминать.
  3. tool-call — правило передаётся после каждой порции результатов инструментов.

Чем чаще правило повторяется, тем больше расходуется токенов.

Если указан filePattern, правило передаётся после успешного чтения подходящего файла, не чаще раза за ход, а strictness игнорируется. Пути сравниваются с разделителем / и с учётом регистра: src/**/*.kt срабатывает только внутри проекта, **/*.kt — для любого пути.

Примеры​

Правило для каждого сообщения:

---
strictness: user-message
---
Отвечай на английском и пиши комментарии в коде на английском.

Правило для Kotlin-файлов:

---
filePattern: "**/*.kt"
---
Проект использует Kotlin 2.0. Предпочитай data-классы.

Правило для нескольких шаблонов:

---
filePattern: ["**/*.kt", "**/*.gradle.kts"]
---
Версии зависимостей бери из version catalog.

Правило без frontmatter действует на всю сессию:

Делай небольшие сфокусированные коммиты.

Если правило не применяется​

Правило с ошибкой молча пропускается. Это происходит, если:

  • YAML во frontmatter не разбирается или не является набором полей;
  • у strictness неизвестное значение и при этом нет filePattern;
  • filePattern — пустая строка, пустой список или список с пустыми строками.

Модель получает только текст правила, frontmatter не передаётся. Изменения в правилах действуют со следующего сообщения: текущий ход продолжается со старыми правилами.

Как правила попадают к модели​

Правило доставляется в одно из четырёх мест: в системный промпт, в сообщение пользователя, при вызове инструмента или при чтении файла по шаблону пути.

  • Правила системного промпта (system) собираются в начале каждого вашего хода и в течение хода не меняются. Если вы изменили такое правило, оно попадёт в промпт со следующего хода, и кэш промпта на этом ходу начнётся заново.
  • Остальные правила приходят, когда срабатывает их триггер: ваше сообщение, результат инструмента или чтение подходящего файла. Они добавляются в конец запроса к модели скрытым сообщением и в истории сессии не сохраняются, поэтому историю не раздувают.

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

После сжатия контекста правила системного промпта и список задач остаются на месте. Остальные правила придут снова, когда опять сработает их триггер.

Посмотреть список правил​

Команда /rules в терминале показывает все найденные правила и их состояние.

Отключить правило​

Отключайте правило, когда оно мешает задаче, но файл нужно сохранить. Добавьте ID правила в rules.disabledRules в settings.json:

{
"rules": {
"disabledRules": ["project:AGENTS.md", "global:.veai/rules/team.md"]
}
}

ID состоит из префикса (project:, global:, user:) и пути от корня его расположения — как в таблице выше. ID сравниваются точно: шаблоны и разный регистр не поддерживаются.

Правила проекта (ID начинается с project:) отключаются только в проектном <проект>/.veai/settings.json. Та же запись в глобальном файле не действует.

Чтобы удалить правило насовсем, удалите его файл.