AACWorkflow Docs

Метки и маршрутизация во время выполнения

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

Метки и маршрутизация во время выполнения позволяют вам контролировать назначение задач в процессе выполнения на основе возможностей и требований. Когда вы создаёте задачу, вы можете указать, какие метки (ОС, набор инструментов, поставщик, пользовательские теги) должна иметь среда выполнения. Планировщик затем назначит задачу только тем средам выполнения, набор меток которых совпадает с требуемыми.

Почему метки важны

Представьте, что у вас есть три среды выполнения:

  • Демон macOS — поставщик Claude, нет Docker
  • Демон Linux — поставщики Claude и Cursor, поддержка Docker, Node.js 20
  • Демон Windows — только поставщик Claude

Если вы создадите задачу, которая говорит: «этому агенту нужны Docker и Node 20», AACWorkflow должен предложить её только демону Linux. Без меток задача может быть случайно назначена демону macOS, что приведёт к сбою во время выполнения.

Метки предотвращают эти несоответствия.

Что такое метка?

Метка — это ключевое слово, описывающее возможность или свойство времени выполнения:

КатегорияПримеры
ОСmacos, linux, windows
Архитектураarm64, amd64 (x86-64)
Набор инструментовnode20, node22, python3.11, go, rust
Поставщикиclaude, codex, cursor
Контейнерыdocker, podman
Пользовательскиеci-runner, production, gpu-enabled

Метки регистронезависимы и используют kebab-case (строчные буквы с дефисами).

Автоматические метки из возможностей

Когда демон регистрируется, он автоматически объявляет метки на основе своих возможностей:

  • ОС и архитектура — macos, linux, windows, arm64, amd64
  • Поставщики ИИ — claude, codex, cursor (по одному для каждого установленного поставщика)
  • Транспорты MCP — mcp-stdio, mcp-sse, mcp-http

Это метки возможностей и они автоматически обновляются при перезагрузке демона или установке нового поставщика.

Подробнее см. Runtime capability registry.

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

Помимо автоматических меток возможностей, вы можете назначить пользовательские метки среде выполнения для описания свойств, которые AACWorkflow не определяет автоматически:

  1. Перейдите на Параметры → Среды выполнения
  2. Нажмите на среду выполнения
  3. Прокрутите до Пользовательские метки
  4. Добавьте метки, такие как node20, gpu-enabled, ci-runner, production
  5. Нажмите Сохранить

Используйте пользовательские метки для:

  • Версии набора инструментовnode20, python3.11, go1.21
  • Оборудованиеgpu-enabled, high-memory
  • Назначениеci-runner, local-dev, production
  • Расположениеus-west, eu-central

Требование меток для задачи

Когда вы создаёте задачу или назначаете агента проблеме, вы можете указать требуемые метки. Задача будет претендовать только на средах выполнения, набор меток которых является суперсетом требуемых меток.

Через пользовательский интерфейс

  1. Создайте или отредактируйте проблему/задачу
  2. В разделе Требования времени выполнения нажмите Добавить метку
  3. Выберите метки из списка (автодополнение, получено со всех сред выполнения)
  4. Пример: выберите docker и node20
  5. Сохраните проблему/задачу

Теперь задача будет запускаться только на средах выполнения, которые имеют оба docker И node20.

Наследование меток из проблем

Проблемы могут устанавливать требуемые метки по умолчанию, которые наследуют все их задачи:

  1. Откройте проблему
  2. Перейдите на Параметры проблемы → Требования времени выполнения
  3. Добавьте требуемые метки
  4. Любой агент, назначенный этой проблеме, будет иметь эти требования по умолчанию

Вы можете переопределить требования для отдельной задачи, если необходимо.

Алгоритм сопоставления меток

AACWorkflow использует сопоставление множеств:

  • Требуемые метки задачи: [docker, node20]
  • Метки среды выполнения: [macos, arm64, claude, docker, node20, custom-tag]
  • Совпадение? ДА — среда выполнения имеет все требуемые метки

Ещё один пример:

  • Требуемые метки задачи: [docker, gpu-enabled]
  • Метки среды выполнения: [linux, amd64, claude, docker]
  • Совпадение? НЕТ — среда выполнения имеет docker, но не gpu-enabled

Пустые требуемые метки совпадают с любой средой выполнения (нет ограничений).

Просмотр меток времени выполнения

В пользовательском интерфейсе

  1. Перейдите на Параметры → Среды выполнения
  2. Нажмите на среду выполнения
  3. Посмотрите Метки возможностей (автоматические) и Пользовательские метки (ручные)

Через API

Конечная точка /runtimes/{id} возвращает оба набора:

{
  "id": "runtime-123",
  "name": "Linux CI runner",
  "capability_labels": ["linux", "amd64", "claude", "docker"],
  "custom_labels": ["ci-runner", "node20", "python3.11"],
  "effective_labels": ["linux", "amd64", "claude", "docker", "ci-runner", "node20", "python3.11"]
}

Эффективные метки — это то, что планировщик использует для сопоставления.

Невозможные для планирования задачи

Если задача требует метки, которые ни одна среда выполнения не имеет, она становится невозможной для планирования:

  • Задача остаётся в очереди
  • Проблема показывает предупреждение: «Ни одна среда выполнения не совпадает с этими требованиями»
  • Задача ждёт (она не терпит неудачу) до появления подходящей среды выполнения
  • По истечении 7 дней невозможные для планирования задачи истекают и отмечаются как незавершённые

Для разрешения:

  1. Проверьте требуемые метки задачи
  2. Проверьте, какие среды выполнения включены и какие метки они имеют
  3. Либо:
    • Добавьте требуемую метку в среду выполнения — например, установите Docker, если задача её требует
    • Удалите требование метки — если задача её на самом деле не требует
    • Включите новую среду выполнения с требуемой возможностью

Лучшие практики

  • Начните просто — не переусложняйте метки; полагайтесь на автоматические метки возможностей
  • Используйте пользовательские метки для наборов инструментов — пометьте среды выполнения поддерживаемыми ими языком/версией
  • Документируйте ваши метки — поделитесь словарём меток с вашей командой
  • Проверяйте невозможные для планирования задачи — если задачи зависают в очереди, проверьте требования их меток

Примеры сценариев

Сценарий 1: Docker + конкретная версия Node

Задача: «Выполнить сборку Docker для моего приложения Node 20»

Требуемые метки: docker, node20

Результат: Только среды выполнения с обеими метками будут претендовать на неё.

Сценарий 2: GPU для вывода ML

Задача: «Выполнить задачу вывода ML»

Требуемые метки: gpu-enabled

Результат: Только среды выполнения с поддержкой GPU будут претендовать на неё. Если GPU-среда недоступна, задача ждёт.

Сценарий 3: Изменения только для производства

Задача: «Развернуть в производство»

Требуемые метки: production

Результат: Только среды выполнения, помеченные production, могут её запустить. Среды разработки исключены.

Сценарий 4: Локальная разработка

Задача: «Запустить тесты локально»

Требуемые метки: (пусто)

Результат: Любая среда выполнения может её запустить. AACWorkflow выбирает наименее нагруженную доступную среду выполнения.

Следующие шаги