Главная/Документация/Лейблы/Авто-правила для лейблов
Лейблы

Авто-правила для лейблов

Настройка автоматического применения лейблов к сессиям с помощью regex-правил. Правила сканируют сообщения пользователя и извлекают значения для лейблов без ручного вмешательства.

Авто-правила автоматически сканируют сообщения пользователя и применяют лейблы с извлечёнными значениями. Настройте regex-паттерны на любом лейбле для автоматического тегирования — без ручной работы.

Например, вставьте URL задачи Linear, и сессия автоматически получит лейбл с ключом задачи. Упомяните денежную сумму — появится лейбл бюджета.

Конфигурация

Добавьте autoRules к любому лейблу в вашем labels/config.json:

terminaljson
{
  "id": "linear-issue",
  "name": "Linear Issue",
  "color": "purple",
  "valueType": "string",
  "autoRules": [
    {
      "pattern": "linear\\.app/[\\w-]+/issue/([A-Z]+-\\d+)",
      "valueTemplate": "$1",
      "description": "Matches Linear issue URLs"
    },
    {
      "pattern": "\\b([A-Z]{2,5}-\\d+)\\b",
      "valueTemplate": "$1",
      "description": "Matches bare issue keys like CRA-123"
    }
  ]
}

Свойства правил

Свойство Тип Обязательно Описание
pattern string Да Regex с группами захвата. Использует синтаксис JavaScript regex.
flags string Нет Флаги regex (по умолчанию: gi — глобальный, без учёта регистра). Флаг g всегда применяется.
valueTemplate string Нет Шаблон с использованием $1, $2 для подстановки групп захвата. Если не указан, используется первая группа захвата.
description string Нет Человекочитаемое описание того, что это правило соответствует.

Regex-паттерны

Правила используют JavaScript регулярные выражения с группами захвата:

terminaljson
{
  "pattern": "github\\.com/([\\w-]+/[\\w-]+)/pull/(\\d+)",
  "valueTemplate": "$1#$2",
  "description": "Matches GitHub PR URLs → repo#number"
}
  • Группы захвата: $1, $2 и т.д. заменяются соответствующими группами в valueTemplate
  • Глобальное соответствие: Флаг g всегда применяется, поэтому все вхождения в сообщении находятся
  • Несколько совпадений: "CRA-1 and CRA-2" создаёт два записи лейбла на одном и том же лейбле

Поведение оценки

Когда правила оцениваются?

Правила выполняются при отправке сообщения пользователя (как новых сообщений, так и отложенных). Сканируются только сообщения пользователя — вывод ассистента и результаты инструментов не сканируются.

Удаление блоков кода

Содержимое внутри блоков кода (```) и встроенного кода (`) удаляется перед оценкой. Это предотвращает ложные совпадения на примерах кода.

Дедупликация

Одна и та же комбинация лейбл+значение не будет добавлена дважды в сессию. Если linear-issue::CRA-123 уже существует, повторное упоминание CRA-123 не выполняет никаких действий.

Ограничение совпадений

Максимум 10 совпадений на сообщение, чтобы предотвратить взрыв лейблов от вставленных данных (например, файл лога с сотнями ключей задач).

Несколько правил на один лейбл

Все правила на лейбле оцениваются. Все совпадения по всем правилам собираются и применяются.

Обработка ошибок

Недопустимые regex-паттерны пропускаются во время выполнения и регистрируются как предупреждения. Паттерны также проверяются при сохранении конфигурации.

Нормализация значений

Извлечённые значения нормализуются в зависимости от valueType лейбла:

valueType Сырой захват Нормализованное значение
string CRA-123 CRA-123 (прямой проход)
number $45,000 45000 (удаление символа и запятых)
number 1.5M 1500000 (расширение суффикса)
number 50k 50000 (расширение суффикса)
date 2026-01-30 2026-01-30 (прямой проход)

Полный пример

Workspace, который автоматически тегирует задачи Linear, дедлайны, контакты и бюджеты:

terminaljson
{
  "version": 1,
  "labels": [
    {
      "id": "linear-issue",
      "name": "Linear Issue",
      "color": "purple",
      "valueType": "string",
      "autoRules": [
        {
          "pattern": "linear\\.app/[\\w-]+/issue/([A-Z]+-\\d+)",
          "valueTemplate": "$1",
          "description": "Linear URLs"
        },
        {
          "pattern": "\\b([A-Z]{2,5}-\\d+)\\b",
          "valueTemplate": "$1",
          "description": "Bare issue keys"
        }
      ]
    },
    {
      "id": "deadline",
      "name": "Deadline",
      "color": "orange",
      "valueType": "date",
      "autoRules": [
        {
          "pattern": "(\\d{4}-\\d{2}-\\d{2})",
          "valueTemplate": "$1",
          "description": "ISO dates (YYYY-MM-DD)"
        }
      ]
    },
    {
      "id": "contact",
      "name": "Contact",
      "color": "blue",
      "valueType": "string",
      "autoRules": [
        {
          "pattern": "([\\w.+-]+@[\\w.-]+\\.[a-zA-Z]{2,})",
          "valueTemplate": "$1",
          "description": "Email addresses"
        }
      ]
    },
    {
      "id": "budget",
      "name": "Budget",
      "color": "green",
      "valueType": "number",
      "autoRules": [
        {
          "pattern": "\\$([\\d,.]+[kKmMbB]?)",
          "valueTemplate": "$1",
          "description": "Dollar amounts"
        }
      ]
    }
  ]
}

С этой конфигурацией:

  • Вставка https://linear.app/team/issue/CRA-456 добавляет linear-issue::CRA-456
  • Ввод deadline is 2026-03-15 добавляет deadline::2026-03-15
  • Упоминание reach out to alice@example.com добавляет contact::alice@example.com
  • Написание budget is $50k добавляет budget::50000

Валидация

Всегда проверяйте конфигурацию после создания или редактирования авто-правил. Недопустимые regex-паттерны (включая уязвимые для ReDoS) отклоняются при сохранении.
terminalbash
config_validate({ target: "labels" })

Нужен такой агент в вашей компании?

Устанавливаем под ключ: настройка на компьютерах сотрудников, единый аккаунт, интеграция с 1С и внутренними системами, обучение команды. Подробнее о внедрении →