{/ Эта страница автоматически создается на основе файла SKILL.md навыка с помощью сайта site/scripts/generate-skill-docs.py. Редактируйте исходный код SKILL.md, а не эту страницу. /}

Канбан-работник

Подводные камни, примеры и крайние случаи для сотрудников Hermes Kanban. Сам жизненный цикл автоматически вводится в системное приглашение каждого работника как KANBAN_GUIDANCE (из агента/prompt_builder.py); этот навык вы загружаете, когда хотите получить более подробную информацию о конкретных сценариях.

Метаданные навыков

Источник В комплекте (устанавливается по умолчанию)
Путь skills/devops/kanban-worker
Версия 2.0.0
Платформы Linux, MacOS, Windows
Теги канбан, мультиагентность, сотрудничество, рабочий процесс, подводные камни
Сопутствующие навыки kanban-orchestrator

Ссылка: полная версия SKILL.md:::информация

Ниже приведено полное определение навыка, которое Гермес загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навык активен.

Канбан-работник — подводные камни и примеры

Вы видите этот навык, потому что диспетчер Hermes Kanban создал вас как работника с --skills kanban-worker — он загружается автоматически для каждого отправленного работника. Жизненный цикл (6 шагов: ориентация → работа → пульс → блокировка/завершение) также находится в блоке KANBAN_GUIDANCE, который автоматически вводится в системное приглашение. Этот навык представляет собой более глубокую деталь: хорошие формы передачи обслуживания, повторную диагностику, крайние случаи.

Обработка рабочей области

Тип вашего рабочего пространства определяет, как вам следует вести себя внутри $HERMES_KANBAN_WORKSPACE:

Вид Что это такое Как работать
царапать Свежий каталог tmp, только твой Читать/писать свободно; он получает GC, когда задача архивируется.
каталог:<путь> Общий постоянный каталог Другие прогоны будут читать то, что вы пишете. Относитесь к этому как к долгоживущему государству. Путь гарантированно абсолютен (ядро отвергает относительные пути).
рабочее дерево Рабочее дерево Git по разрешенному пути Если .git не существует, сначала запустите git worktree add <path> <branch> из основного репозитория, затем cd и работайте нормально. Зафиксируйте работу здесь.

Изоляция арендатора

Если установлен $HERMES_TENANT, задача принадлежит пространству имен арендатора. При чтении или записи в постоянную память добавляйте к записям памяти префикс арендатора, чтобы контекст не перетекал между арендаторами:

Хорошее резюме + формы метаданных

Передача kanban_complete(summary=..., Metadata=...) — это то, как нижестоящие работники читают то, что вы сделали. Шаблоны, которые работают:

Задание по кодированию:

kanban_complete(
    summary="shipped rate limiter — token bucket, keys on user_id with IP fallback, 14 tests pass",
    metadata={
        "changed_files": ["rate_limiter.py", "tests/test_rate_limiter.py"],
        "tests_run": 14,
        "tests_passed": 14,
        "decisions": ["user_id primary, IP fallback for unauthenticated requests"],
    },
)

Исследовательская задача:

kanban_complete(
    summary="3 competing libraries reviewed; vLLM wins on throughput, SGLang on latency, Tensorrt-LLM on memory efficiency",
    metadata={
        "sources_read": 12,
        "recommendation": "vLLM",
        "benchmarks": {"vllm": 1.0, "sglang": 0.87, "trtllm": 0.72},
    },
)

Проверить задачу:

kanban_complete(
    summary="reviewed PR #123; 2 blocking issues found (SQL injection in /search, missing CSRF on /settings)",
    metadata={
        "pr_number": 123,
        "findings": [
            {"severity": "critical", "file": "api/search.py", "line": 42, "issue": "raw SQL concat"},
            {"severity": "high", "file": "api/settings.py", "issue": "missing CSRF middleware"},
        ],
        "approved": False,
    },
)

Формируйте «метаданные», чтобы последующие парсеры (рецензенты, агрегаторы, планировщики) могли использовать их, не перечитывая вашу прозу.

Получение карт, которые вы действительно создали

Если в результате выполнения были созданы новые задачи канбана (через «kanban_create»), передайте идентификаторы в «created_cards» в «kanban_complete». Ядро проверяет, существует ли каждый идентификатор и создан ли он вашим профилем; любой фантомный идентификатор блокирует завершение с указанием ошибок, в которых указано, что пошло не так, а отклоненная попытка постоянно записывается в журнал событий задачи. Списывайте только идентификаторы, полученные из успешного возвращаемого значения kanban_create — никогда не придумывайте идентификаторы из текста, никогда не вставляйте идентификаторы из предыдущих запусков, никогда не требуйте карточек, созданных другим работником.

# GOOD — capture return values, then claim them.
c1 = kanban_create(title="remediate SQL injection", assignee="security-worker")
c2 = kanban_create(title="fix CSRF middleware", assignee="web-worker")

kanban_complete(
    summary="Review done; spawned remediations for both findings.",
    metadata={"pr_number": 123, "approved": False},
    created_cards=[c1["task_id"], c2["task_id"]],
)
# BAD — claiming ids you don't have captured return values for.
kanban_complete(
    summary="Created remediation cards t_a1b2c3d4, t_deadbeef",  # hallucinated
    created_cards=["t_a1b2c3d4", "t_deadbeef"],                   # → gate rejects
)

Если вызов kanban_create завершается неудачно (исключение,tool_error), карта НЕ была создана — не указывайте для нее фантомный идентификатор. Повторите попытку создания или опустите идентификатор и упомяните об ошибке в сводке. Проход прозаического сканирования также улавливает ссылки t_<hex> в вашем резюме в произвольной форме, которые не разрешаются; они не блокируют завершение, а отображаются в виде рекомендательных предупреждений о задаче на панели мониторинга.

Блокируйте причины, на которые быстро отвечают

Плохо: «застрял» — у человека нет контекста.

Хорошо: одно предложение с указанием конкретного решения, которое вам нужно. Вместо этого оставьте более длинный контекст в качестве комментария.

kanban_comment(
    task_id=os.environ["HERMES_KANBAN_TASK"],
    body="Full context: I have user IPs from Cloudflare headers but some users are behind NATs with thousands of peers. Keying on IP alone causes false positives.",
)
kanban_block(reason="Rate limit key choice: IP (simple, NAT-unsafe) or user_id (requires auth, skips anonymous endpoints)?")

Сообщение о блокировке — это то, что отображается на панели управления/уведомлении шлюза. Комментарий — это более глубокий контекст, который человек читает, когда открывает задачу.

Heartbeats стоит отправить

Прогресс с хорошим пульсом: «эпоха 12/50, потеря 0,31», «просканировано 1,2 млн/2,4 млн строк», «загружено 47/120 видео».

Плохое сердцебиение: «все еще работает», пустые ноты, интервалы в доли секунды. Максимум каждые несколько минут; пропустить полностью для задач менее 2 минут.

Повторные сценарии

Если вы открываете задачу, а kanban_show возвращает runs: [...] с одним или несколькими закрытыми запусками, это повторная попытка. «Результат» / «сводка» / «ошибка» предыдущих запусков расскажет вам, что не сработало. Не повторяйте этот путь. Типичная повторная диагностика:

НЕ

Подводные камни

Состояние задачи может меняться между отправкой и запуском. Между запросом диспетчера и фактической загрузкой процесса задача могла быть заблокирована, переназначена или заархивирована. Всегда сначала kanban_show. Если он сообщает «заблокировано» или «заархивировано», остановитесь — вам не следует запускать.

Рабочая область может содержать устаревшие артефакты. В частности, рабочие области dir: и worktree могут содержать файлы из предыдущих запусков. Прочтите ветку комментариев — обычно там объясняется, почему вы снова работаете и в каком состоянии находится рабочая область.

Не полагайтесь на интерфейс командной строки, когда доступны инструкции. Инструменты kanban_* работают во всех терминальных бэкендах (Docker, Modal, SSH). hermes kanban <verb> из вашего терминального инструмента не будет работать в контейнерных бэкэндах, поскольку там не установлен CLI. Если сомневаетесь, используйте этот инструмент.

Резервный вариант CLI (для сценариев)

Каждый инструмент имеет эквивалент CLI для операторов и сценариев: - kanban_showhermes kanban show <id> --json - kanban_completehermes kanban Complete <id> --summary "..." --metadata '{...}' - kanban_blockгермес канбан-блок <id> "причина" - kanban_createhermes kanban create "title" --assignee <профиль> [--parent <id>] - и т. д.

Используйте инструменты изнутри агента; CLI существует для человека на терминале.