Rules
Правило — это Markdown-файл, который попадает в модель либо в начале сессии, либо в момент, когда работа затрагивает файл, к которому оно применяется. Правила хранятся в .qwen/rules/, а поле paths: делает возможным второй вариант: указания по вашим React-компонентам не обязаны находиться в промпте, пока вы редактируете Makefile.
Это дешёвый аналог контекстного файла (QWEN.md), который подкладывается в каждый запрос каждой сессии — см. Resident Context Cost.
Где хранятся правила
| Расположение | Загружается |
|---|---|
~/.qwen/rules/ (или $QWEN_HOME/rules/) | всегда |
<project>/.qwen/rules/ | когда рабочее пространство доверенное |
rules/ активного расширения | всегда, только условные правила — см. ниже |
Каждый .md-файл в этих каталогах обнаруживается, включая подкаталоги, в детерминированном порядке.
Базовые и условные правила
---
description: How we write React components
paths:
- 'src/**/*.tsx'
- 'src/**/*.jsx'
---
Components are function components. Co-locate the test beside the component.
Never reach for a global store for state one screen owns.- С
paths:— условное правило. Оно не попадает в промпт, пока вызов инструмента не прочитает или не изменит файл, подходящий под один из его глобов, после чего вставляется один раз на оставшуюся сессию. - Без
paths:— базовое правило. Оно является частью системного промпта с первого запроса, точно как контекстный файл, и стоит одинаково на каждом ходу.
Оба поля необязательны, и правило без фронтматтера вообще считается базовым.
Важные детали:
- Глобы сопоставляются с путём относительно корня проекта, с прямыми слешами на любой платформе, и они совпадают с dot-файлами.
- Символические ссылки разыменовываются, поэтому правило срабатывает независимо от того, использовал ли вызов инструмента ссылку или реальный путь.
- Условное правило вставляется один раз за сессию — второй совпавший файл не дублирует его.
- HTML-комментарии вырезаются из тела правила перед отправкой.
Правила из расширений
Расширение может поставлять каталог rules/, и его правила обязаны быть условными: правило без paths: пропускается с предупреждением при запуске, в котором оно названо. Это ограничение и есть весь смысл. Контекстный файл расширения (contextFileName) прицепляется в каждый запрос каждой сессии, где расширение активно, без фильтрации по релевантности — в одной измеренной сессии контекстные файлы девяти расширений составили 9 989 токенов, 65% всего всегда-включённого контекста этой сессии. Базовое правило расширения создало бы ровно то же самое, только ещё одним механизмом.
Правила расширения помечаются его владельцем в промпте — charts:rules/charting.md, а не путь, вылезающий из проекта, — поэтому транскрипт показывает, чьё правило сработало.
Они не фильтруются по доверию к рабочему пространству, в отличие от проектных правил: установка расширения — это уже явное действие, и то же расширение может поставлять MCP-серверы, команды, навыки и контекстный файл без фильтрации. Требование доверия для единственного механизма, который уже и дешевле контекстного файла, просто оттолкнёт авторов к дорогому варианту.
Если вы пишете расширение, вот миграция, которую нужно сделать:
| Содержание | Поместить в |
|---|---|
| Всегда истиные факты — идентичность расширения, его словарь, одно жёсткое ограничение | контекстный файл |
| ”При работе над X делайте Y” | правило с гейтом paths: или навык |
| Процедура, которую модель запускает по запросу | навык |
Правила, навыки и контекстные файлы
| В промпте с самого начала | Загружается по demand | |
|---|---|---|
Контекстный файл (QWEN.md) | всегда, полностью | — |
| Базовое правило | всегда, полностью | — |
Условное правило (paths:) | ничего | при касании совпавшего файла |
| Навык | только имя + описание | тело, когда модель его вызывает |
Навык — правильное место для процедуры, которую модель выбирает выполнить; условное правило — правильное место для ограничения, которое применяется к области кодовой базы, независимо от того, вспомнила ли модель о нём. Навыки тоже можно фильтровать по paths:, что убирает даже их запись из промпта, пока они не становятся релевантными.
См. также
- Resident Context Cost — как измерить стоимость вашего префикса и другие рычаги.
- Skills
- Memory