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

Лейблы

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

Лейблы — это аддитивные цветные теги, которые можно применять к сессиям. В отличие от статусов (которые эксклюзивны — один на сессию), лейблы поддерживают множественный выбор — сессия может иметь ноль или множество лейблов. Они поддерживают иерархическую организацию через вложенные деревья.

На сессиях лейблы хранятся как плоский массив строк. Булевы (присутствие только) лейблы — это просто ID, например "bug". Лейблы со значением используют разделитель ::, например "priority::3" или "due::2026-01-30". Парсер определяет тип значения из исходной строки при чтении.

Как работают лейблы

Лейблы позволяют категоризировать диалоги по проектам, темам, приоритетам или чему-либо ещё — упрощая фильтрацию и поиск связанных сессий позже.

ФункцияОписание
Множественный выборСессия может иметь множество лейблов одновременно
ИерархическийЛейблы могут быть вложены для формирования групп (до 5 уровней)
ЦветныеКаждый лейбл отображается как цветной круг
Со значениемЛейблы могут дополнительно нести значение (текст, число или дату)
Автоматически применяемыеRegex-правила могут применять лейблы автоматически из содержимого сообщений

Конфигурация на уровне workspace

Лейблы настраиваются для каждого workspace. Каждый workspace начинается с нулевого количества лейблов — вы создаёте те, которые вам нужны.

Конфигурация хранится по пути:

terminalbash
~/.craft-agent/workspaces/{workspace-id}/labels/config.json

Создание лейблов

Просто спросите своего агента. Самый простой способ создать лейблы — описать, что вам нужно:

  • "Создай лейбл Bug с красным цветом"
  • "Добавь лейблы проектов Alpha и Beta в группе Engineering"
  • "Настрой лейбл Priority со значениями чисел"

Агент обрабатывает конфигурацию автоматически.

Вы также можете создавать лейблы вручную, редактируя файл конфигурации.

Базовый пример

terminaljson
{
  "version": 1,
  "labels": [
    {
      "id": "bug",
      "name": "Bug",
      "color": "destructive"
    },
    {
      "id": "feature",
      "name": "Feature",
      "color": "accent"
    }
  ]
}

Иерархические лейблы

Лейблы формируют вложенное дерево. Родительские/дочерние отношения выражаются через массив children. Позиция в массиве определяет порядок отображения.

terminaljson
{
  "version": 1,
  "labels": [
    {
      "id": "eng",
      "name": "Engineering",
      "color": "info",
      "children": [
        {
          "id": "frontend",
          "name": "Frontend",
          "children": [
            { "id": "react", "name": "React", "color": { "light": "#3B82F6", "dark": "#60A5FA" } }
          ]
        },
        { "id": "backend", "name": "Backend" }
      ]
    },
    { "id": "bug", "name": "Bug", "color": "destructive" }
  ]
}

Это отображается как дерево в боковой панели:

terminalbash
Engineering
  |- Frontend
  |    \- React
  \- Backend
Bug

Правила иерархии

  • ID — это простые слаги (строчные буквы, цифры и дефисы)
  • ID должны быть глобально уникальны по всему дереву
  • Максимальная глубина вложенности: 5 уровней
  • Позиция в массиве = порядок отображения (поле order не нужно)
  • Фильтрация по родительскому включает все дочерние сессии

Свойства лейбла

Каждый объект лейбла поддерживает следующие свойства:

СвойствоТипОбязательноПо умолчаниюОписание
idstringДаУникальный слаг (строчные буквы, цифры и дефисы)
namestringДаОтображаемое имя
colorEntityColorНетcurrentColor с 40% непрозрачностьюЦвет круга лейбла (см. ниже)
valueType"string" | "number" | "date" | "link"Нет(нет — присутствие только)Подсказка типа значения. Опускайте для лейблов с присутствием только.
childrenLabel[]Нет[]Вложенные дочерние лейблы
autoRulesAutoRule[]Нет[]Regex-правила для автоматического применения (см. Авто-правила применения)

Цвета

Лейблы отображаются как цветные круги в интерфейсе. Вы можете использовать системные цвета или пользовательские значения HEX.

Системные цвета

Используйте семантические имена цветов для распространённых значений:

ЦветИспользуется для
"destructive"Баги, ошибки, критические проблемы
"accent"Функции, улучшения
"success"Завершено, проходит проверку
"info"Информационные, метаданные
"foreground/60"Нейтральные, разное

Системные цвета также поддерживают непрозрачность: "accent/80", "info/50" и т.д.

Пользовательские цвета

Для точного контроля используйте пары светлой/тёмной темы:

terminaljson
{
  "color": { "light": "#6366F1", "dark": "#818CF8" }
}

Поддерживаются форматы HEX, OKLCH, RGB и HSL.

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

Значения лейблов

Лейблы могут дополнительно нести значение с определённым типом. Это превращает лейблы в структурированные метаданные — например, лейбл "priority" со значением 3, или лейбл "due" с датой.

Формат хранения

Сессии хранят лейблы как массив строк. Булевы лейблы — это просто ID; лейблы со значением используют разделитель :::

terminaljson
{
  "labels": ["bug", "priority::3", "due::2026-01-30", "linear::CRA-456"]
}
  • Булевы лейблы: "bug" — присутствие только, без значения
  • Лейблы со значением: "priority::3" — ID + значение, разделённые ::
  • Разделение :: происходит только на первом вхождении (значения могут содержать ::)

Типы значений

Значения определяются из исходной строки при разборе:

ТипФорматПример
numberКонечное число"priority::3", "effort::0.5"
dateISO-дата (YYYY-MM-DD)"due::2026-01-30"
linkURL (открывается в браузере при клике; схема необязательна)"docs::https://example.com"
stringВсё остальное"team::platform"

Порядок определения: проверка ISO-даты → проверка числа → fallback на строку.

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

Поведение боковой панели

Лейблы отображаются в левой боковой панели как многоуровневая расширяемая секция. Клик по лейблу фильтрует список сессий, показывая только соответствующие сессии. Клик по родительскому лейблу включает сессии, помеченные любым дочерним лейблом.

Валидация

Всегда проверяйте конфигурацию после внесения изменений.

После редактирования файла конфигурации проверьте его, чтобы поймать ошибки:

terminalbash
config_validate({ target: "labels" })

Валидатор проверяет:

  • Корректный JSON и рекурсивную структуру схемы
  • Глобально уникальные ID по всему дереву
  • Корректный формат слага (строчные буквы с дефисами)
  • Максимальная глубина вложенности (5 уровней)

Ключевые различия от статусов

ЛейблыСтатусы
КардинальностьМножественный выбор (много на сессию)Эксклюзивный (один на сессию)
По умолчаниюНет — начинаются пустымиПоставляются с 5 значениями по умолчанию
ВизуальныйЦветные кругиИконки + цвета
ИерархияВложенное дерево (до 5 уровней)Плоский список
ЗначенияОпциональные типизированные значенияБез значений
ФильтрацияМноголейбловое пересечениеКатегорийная (открыто/закрыто)

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

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