Правила (Rules)
Что такое правило
Правило — это Markdown-файл с инструкциями, которые агент получает автоматически. Так не нужно повторять одни и те же требования в каждом чате: язык ответов, стиль кода, принятые в проекте библиотеки.
Типы правил:
- Глобальное — личное правило для всех проектов. Например, чтобы агент везде отвечал в одном формате. Лежит в
~/.veai/rules/. - Проектное — соглашения одного репозитория. Лежит в
<проект>/.veai/rules/; файл можно закоммитить, и правило получит вся команда.
Внутри каталога rules/ можно создавать подкаталоги: правилом считается каждый файл .md.
Попросите агента: «Создай правило: в этом проекте используем Kotlin 2.0 и data-классы вместо records». Он сам создаст файл с нужным frontmatter.
Где агент ищет правила
| Путь | ID правила | Формат |
|---|---|---|
~/.veai/rules/**/*.md | global:.veai/rules/team.md | frontmatter + Markdown |
<проект>/.veai/rules/**/*.md | project:.veai/rules/team.md | frontmatter + Markdown |
~/.claude/CLAUDE.md | user:.claude/CLAUDE.md | обычный Markdown |
<проект>/AGENTS.md | project:AGENTS.md | обычный Markdown |
<проект>/CLAUDE.md | project:CLAUDE.md | обычный Markdown |
<проект>/.claude/CLAUDE.md | project:.claude/CLAUDE.md | обычный Markdown |
<проект>/CLAUDE.local.md | project:CLAUDE.local.md | обычный Markdown |
Совместимость с другими инструментами
Если в проекте уже есть AGENTS.md или CLAUDE.md для других агентов, Veai CLI подхватит их без дополнительной настройки. Эти файлы читаются как есть, без frontmatter, и действуют на всю сессию.
Учтите ограничения:
AGENTS.mdиCLAUDE.mdв подкаталогах проекта не читаются — только в корне.- Родительские каталоги не просматриваются: корень проекта — каталог, из которого запущен
veai. - Новые правила создавайте в
.veai/rules/— там доступны все возможности формата.
Когда передавать правило агенту
Перед текстом правила можно добавить YAML-блок frontmatter. Оба поля необязательны.
| Поле | Значения | Назначение |
|---|---|---|
strictness | system, user-message, tool-call | в какой момент текст правила попадает к модели; по умолчанию system |
filePattern | glob, например **/*.kt, или список glob-шаблонов | правило передаётся после чтения файла, подходящего под любой из шаблонов |
Значения strictness:
system— правило входит в системный промпт. Подходит для стабильных инструкций: язык ответов, общий формат результата. Это значение по умолчанию, поэтому файл без frontmatter тоже работает какsystem.user-message— правило передаётся вместе с каждым вашим сообщением. Полезно в длинных диалогах, где инструкцию важно напоминать.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. Та же запись в глобальном файле не действует.
Чтобы удалить правило насовсем, удалите его файл.