Kanban Codex Lane
Применяйте, когда воркер Hermes Kanban хочет запустить Codex CLI как изолированную дорожку реализации, а Hermes сохраняет контроль над жизненным циклом задачи, сверкой, тестированием и передачей результата.
Метаданные навыка
| Источник | Встроенный (установлен по умолчанию) |
| Путь | skills/autonomous-ai-agents/kanban-codex-lane |
| Версия | 1.0.0 |
| Автор | Hermes Agent |
| Лицензия | MIT |
| Теги | kanban, codex, worktrees, autonomous-agents, prediction-market-bot |
| Связанные навыки | kanban-worker, codex, hermes-agent |
Справочник: полный SKILL.md
Ниже приведено полное определение навыка, которое Hermes загружает при его срабатывании. Именно это агент видит как инструкции, когда навык активен.
Kanban Codex Lane
Обзор
Навык задаёт лёгкую двухдорожечную схему Hermes+Codex для воркеров Kanban. Владелец задачи всегда Hermes: он вызывает kanban_show, решает, уместен ли Codex, создаёт или выбирает изолированное рабочее пространство, запускает и наблюдает за Codex, сверяет diff, прогоняет проверку и записывает финальную передачу через kanban_complete или kanban_block. Codex — только входная дорожка. Его вывод не считается сигналом завершения задачи, не выступает доверенным ревьюером и не вправе напрямую записывать долговременное состояние Kanban.
Схема нужна для того, чтобы воркер Hermes мог использовать Codex для ограниченной помощи с реализацией, не изменяя диспетчер. Диспетчер по-прежнему обязан запускать воркеров Hermes. Воркер может по желанию запустить Codex внутри своего прогона, а затем принять, частично принять или отклонить дорожку после независимого ревью и тестов.
Когда использовать
Используйте дорожку Codex, когда выполнено всё перечисленное:
- Задача Kanban — это код, рефакторинг, документация, тесты или механическая миграция с чёткими критериями приёмки.
- Ограниченный diff Hermes может оценить за один прогон.
- Репозиторий можно скопировать или выгрузить в изолированный git worktree/ветку.
- После выхода Codex Hermes сам способен прогнать нужные тесты.
- В промпте можно перечислить все ограничения безопасности и файлы, которые менять нельзя.
Не используйте дорожку Codex, если верно хотя бы одно из следующего:
- Задача требует человеческого суждения, которое ещё не зафиксировано в теле карточки Kanban.
- У воркера нет доступа к репозиторию, авторизации Codex или времени на сверку результата.
- Изменения затрагивают секреты, хранилища учётных данных, приватные данные пользователей или боевые системы ввода ордеров.
- Небольшая прямая правка быстрее и безопаснее, чем запуск ещё одного агента.
- Задача только исследовательская и должна давать письменную передачу, а не diff.
- Есть соблазн пометить задачу как Done только по самоотчёту Codex.
Правила владения
- Жизненным циклом Kanban владеет Hermes. Codex никогда не должен вызывать
kanban_complete,kanban_block,kanban_create, сообщения через шлюз или любой board CLI Hermes вместо воркера. - Финальной приёмкой владеет Hermes. Считайте коммиты и diff’ы Codex недоверенными патчами, пока они не отревьюены и не проверены.
- Прогоном тестов владеет Hermes. Codex может запускать тесты, но эти прогоны носят справочный характер; повторите обязательную проверку из Hermes с канонической обёрткой репозитория.
- Безопасностью владеет Hermes. Если Codex меняет границы безопасности, риск-гейты, поведение живой торговли или работу с секретами, отклоняйте дорожку даже при прохождении тестов.
- Очисткой владеет Hermes. Убивайте зависшие процессы Codex и удаляйте временные worktree, когда они больше не нужны.
Обязательный шаблон worktree и ветки
Никогда не запускайте Codex прямо в общем грязном чекауте. Используйте имя ветки/worktree, которое связывает дорожку с задачей Kanban и держит недоверенные правки в изоляции.
Рекомендуемые переменные:
TASK_ID="${HERMES_KANBAN_TASK:-t_manual}"
REPO="/path/to/repo"
BASE="$(git -C "$REPO" rev-parse --abbrev-ref HEAD)"
SAFE_TASK="$(printf '%s' "$TASK_ID" | tr -cd '[:alnum:]_-')"
BRANCH="codex/${SAFE_TASK}/$(date -u +%Y%m%d%H%M%S)"
WORKTREE="/tmp/${SAFE_TASK}-codex-lane"
Создайте изолированную дорожку:
git -C "$REPO" fetch --all --prune
git -C "$REPO" worktree add -b "$BRANCH" "$WORKTREE" "$BASE"
git -C "$WORKTREE" status --short --branch
Если текущее рабочее пространство Kanban уже представляет собой изолированный git worktree, созданный для этой задачи, можно завести в нём соседнюю ветку Codex — но только если git status --short чист, не считая намеренных правок Hermes. Иначе создайте отдельный временный worktree и после сверки перенесите принятые коммиты обратно через cherry-pick или копирование.
Очистка после сверки:
git -C "$REPO" worktree remove "$WORKTREE"
git -C "$REPO" branch -D "$BRANCH" # только после того, как принятые коммиты скопированы/перенесены через cherry-pick или намеренно отклонены
Оставьте worktree, если он нужен как артефакт для ревью; зафиксируйте его в codex_lane.artifacts и упомяните в передаче.
Проверки доступности Codex
Запускайте их перед стартом Codex. Отсутствие Codex — нормальная причина пропустить дорожку, а не блокер задачи, если Hermes может выполнить её напрямую.
command -v codex
codex --version
codex features list | grep -i goals || true
Если нужна поддержка /goal, включайте её или запускайтесь с флагом фичи только после проверки доступности:
codex features enable goals || true
codex --enable goals --version
Авторизация возможна через OPENAI_API_KEY или состояние OAuth в Codex CLI (обычно ~/.codex/auth.json). Не выводите файлы с токенами. Отсутствие OPENAI_API_KEY ещё не доказывает, что авторизация недоступна.
Выбор режима
Используйте codex exec для ограниченных одноразовых правок, где Codex должен сам завершиться:
terminal(
command="codex exec --full-auto '$(cat /tmp/codex_prompt.md)'",
workdir=WORKTREE,
background=True,
pty=True,
notify_on_complete=True,
)
/goal в Codex подходит для более широкой многошаговой работы, которой полезно долговременное отслеживание цели. Запускайте интерактивно в сессии PTY/tmux или с codex --enable goals, если фича по умолчанию выключена. Держите формулировку цели самодостаточной: путь к репозиторию, id задачи, ограничения безопасности, разрешённая область, критерии приёмки, тесты и ожидания по коммитам.
Пример текста цели /goal для вставки в Codex:
/goal Work in this repository only: <WORKTREE>. Task: <TASK_ID> <TITLE>.
Hermes owns the Kanban lifecycle; do not call Hermes kanban tools or messaging.
Create small commits on branch <BRANCH>. Follow the PMB safety constraints in the prompt.
Run the requested verification commands and report exact outputs. Stop after producing a diff and summary.
Не используйте --yolo для prediction-market-bot и других репозиториев, чувствительных к безопасности. Предпочитайте --full-auto внутри изолированного worktree и полагайтесь на сверку в Hermes.
Построение промпта
Для работы с prediction-market-bot используйте связанный шаблон templates/pmb-codex-lane-prompt.md. Для других репозиториев сохраняйте ту же структуру, заменив специфичный для PMB блок безопасности на инварианты конкретного репозитория.
Каждый промпт для Codex обязан включать:
task_id, заголовок и полные критерии приёмки из Kanban.- Путь к репозиторию, путь к worktree, имя ветки и разрешённую область файлов.
- Явное утверждение: жизненным циклом Kanban владеет Hermes; Codex — только входная дорожка.
- Обязательный вывод: краткое резюме, изменённые файлы, коммиты, прогнанные тесты и известные риски.
- Запрещённые действия: доступ к секретам, внешние сообщения, изменение доски, посторонний рефакторинг, обновление зависимостей без необходимости.
- Команды проверки, которые Codex может запускать, и команды, которые Hermes запустит после.
Для PMB включайте эти обязательные ограничения безопасности дословно:
PMB safety constraints:
- live-SIM is paper-only; do not add or enable live REST order entry.
- Never use market orders.
- Do not add execution crossing or bypass price/risk checks.
- Do not fake passive fills, fills, PnL, order states, or reconciliation evidence.
- Do not weaken risk gates, limits, kill switches, or fail-closed behavior.
- Keep research/selection outside the C++ hot path unless explicitly requested.
- Do not read, print, write, or require secrets/tokens/credentials.
Мониторинг, таймаут и поведение при остановке
Длинные дорожки Codex запускайте в фоне с PTY и уведомлением о завершении:
result = terminal(
command="codex exec --full-auto '$(cat /tmp/codex_prompt.md)'",
workdir=WORKTREE,
background=True,
pty=True,
notify_on_complete=True,
)
session_id = result["session_id"]
Наблюдайте, не вмешиваясь:
process(action="poll", session_id=session_id)
process(action="log", session_id=session_id, limit=200)
process(action="wait", session_id=session_id, timeout=300)
Для дорожек дольше двух минут отправляйте heartbeat в Kanban каждые несколько минут, например kanban_heartbeat(note="Codex lane running in <WORKTREE>; waiting for tests/diff").
Условия остановки:
- Нет полезного вывода в течение оставшегося бюджета времени задачи.
- Codex запрашивает секреты, боевые учётные данные или внешние разрешения.
- Codex пытается менять файлы за пределами worktree.
- Codex начинает посторонние переписывания или возню с зависимостями.
- Codex всё ещё работает близко к таймауту воркера, а безопасного частичного артефакта нет.
Команда остановки:
process(action="kill", session_id=session_id)
После остановки проверьте git status --short, сохраните полезные патчи только если это безопасно, и запишите codex_lane.result: timed_out или rejected с конкретным rejected_reason.
Чек-лист сверки
Hermes обязан пройти этот чек-лист, прежде чем принимать любой результат дорожки Codex:
-
git -C <WORKTREE> status --short --branchпоказывает только ожидаемые файлы. -
git -C <WORKTREE> diff --statиgit diffотревьюены Hermes. - Не включены секреты, учётные данные, сгенерированные кэши, посторонние данные или локальные артефакты.
- Ограничения безопасности PMB сохранены: нет живого ввода ордеров через REST, нет рыночных ордеров, нет кроссинга при исполнении, нет фейковых пассивных исполнений/PnL, нет ослабления риск-гейтов, нет секретов.
- Коммиты Codex достаточно мелкие, чтобы чисто сделать cherry-pick или squash.
- Hermes сам прогнал канонические тесты — через
scripts/run_tests.shдля Hermes Agent или задокументированную обёртку других репозиториев. - Тесты, запущенные Codex, перечислены отдельно от тестов, запущенных Hermes.
- Принятые коммиты/diff’ы применены к рабочему пространству/ветке, которыми владеет Hermes.
- У отклонённой или частичной работы есть конкретная причина и путь к артефакту, если он полезен.
Итоги приёмки:
accepted: diff/коммиты Codex отревьюены, применены и проверены.partial: часть работы Codex принята после правок или cherry-pick; отклонённые части задокументированы.rejected: ни одно изменение Codex не принято; причина задокументирована.timed_out: Codex превысил бюджет дорожки; полезные артефакты могут как существовать, так и нет.
Схема метаданных kanban_complete
Включайте этот объект под metadata.codex_lane для каждой задачи, где дорожка рассматривалась. Если Codex не использовался, поставьте used: false и объясните почему в rejected_reason или соседнем поле notes.
{
"codex_lane": {
"used": true,
"mode": "exec | goal | skipped",
"worktree": "/absolute/path/to/codex/worktree",
"branch": "codex/t_caa69668/20260508100000",
"command": "codex exec --full-auto ...",
"result": "accepted | rejected | partial | timed_out",
"accepted_commits": ["<sha1>", "<sha2>"],
"rejected_reason": "empty when fully accepted; otherwise concrete reason",
"tests_run": [
{"command": "scripts/run_tests.sh tests/tools/test_x.py", "exit_code": 0, "owner": "hermes"},
{"command": "codex-reported: npm test", "exit_code": 0, "owner": "codex"}
],
"artifacts": ["/absolute/path/to/log-or-patch"]
}
}
Для задач, где Codex намеренно пропущен:
{
"codex_lane": {
"used": false,
"mode": "skipped",
"worktree": null,
"branch": null,
"command": null,
"result": "rejected",
"accepted_commits": [],
"rejected_reason": "Direct Hermes edit was smaller and safer than spawning Codex.",
"tests_run": [],
"artifacts": []
}
}
Частые ошибки
- Принимать самоотчёт Codex за проверку. Всегда смотрите diff и заново прогоняйте тесты из Hermes.
- Запускать Codex в грязном основном чекауте пользователя. Всегда изолируйте в worktree/ветке.
- Отдавать Codex владение Kanban. Codex может резюмировать прогресс, но состояние доски пишет Hermes.
- Забыть про инварианты безопасности PMB в промпте. Пропущенный текст безопасности — провал при настройке дорожки.
- Использовать
/goalдля быстрых правок. Предпочитайтеcodex exec, если не нужно долговременное многошаговое продолжение. - Убивать зависшую дорожку, не зафиксировав причину.
rejected_reasonобязан объяснять решение. - Принимать широкую постороннюю чистку из-за того, что тесты прошли. Отклоняйте либо берите через cherry-pick только изменения в рамках области.
Чек-лист проверки
- Codex пропущен или запущен только после
command -v codex,codex --versionи опциональной проверки фичи goals. - Codex работал только в изолированном worktree/ветке.
- Промпт включал область задачи, правила владения, ограничения безопасности PMB при необходимости и команды проверки.
- Hermes отревьюил
git diffи файлы, чувствительные к безопасности. - Hermes независимо прогнал канонические тесты.
-
kanban_complete.metadata.codex_laneсоответствует схеме выше. - Временные процессы и ненужные worktree очищены.