Skip to Content
Руководство для пользователейВозможностиПравила

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:, что убирает даже их запись из промпта, пока они не становятся релевантными.

См. также

Last updated on