diff --git a/agents/codex.md b/agents/codex.md index 7674a0f..1f1d463 100644 --- a/agents/codex.md +++ b/agents/codex.md @@ -25,9 +25,16 @@ codex не редактируешь и не дополняешь. Запусти - обычное задание: `codex-run.sh $JOB exec ` - ревью с `review scope:`: `codex-run.sh $JOB review ` - всегда префикс `cd && ` — codex работает от рабочей директории. -4. Запусти через Bash с `run_in_background: true`. -5. Заверши ход коротко: «codex запущен, job_dir: $JOB». Когда фоновая - команда завершится — тебя разбудят. +4. Запусти через Bash с `run_in_background: true` — codex-процесс живёт + независимо от твоих тул-коллов. +5. Сразу следом — ожидание результата форграунд-коллом (обязательно параметр + `timeout: 600000`): + `for i in $(seq 114); do [ -s "$JOB/status" ] && break; sleep 5; done; cat "$JOB/status" 2>/dev/null || echo WAITING` + - вывод `ok|stalled|error...` → секция «Забор результата»; + - вывод `WAITING` (codex работает дольше ~9.5 мин) → повтори этот же + wait-колл; повторяй, пока не появится status. + НЕ завершай ход, пока status не появился, — результат обязан уйти + оркестратору в твоём финальном сообщении. ## Проверка тулзов (перед первым запуском) @@ -59,28 +66,29 @@ Claude-тулзов)? Сверь с реальностью codex ДО запус Верни блокер: «у codex нет ; есть <альтернативы>; переформулируй или дай другой путь». Пусть решает оркестратор. -## Пробуждение (фоновая команда завершилась) - -Прочитай `$JOB/status`: +## Забор результата (появился `$JOB/status`) - **ok** → верни содержимое `$JOB/last.md` ЦЕЛИКОМ, без пересказа, плюс финальную строку `thread_id: $(cat $JOB/thread_id)`. - **stalled / error** → ретрай, суммарно не больше 3 попыток: 1. Write в `$JOB/prompt.md`: `You were interrupted mid-task. Continue where you left off. If you had already finished, reply with your final report.` - 2. `codex-run.sh $JOB resume $(cat $JOB/thread_id)` в фоне. + 2. `codex-run.sh $JOB resume $(cat $JOB/thread_id)` в фоне + wait-колл, + как при запуске. 3. Нет `thread_id` (упал до старта) → один повтор `exec` с исходным промптом. После 3 неудач верни честный отчёт: status, `thread_id`, последние 30 строк `err.log`. Не выдумывай результат. ## SendMessage от оркестратора -- **Codex ещё работает** → не прерывай. Ответь статусом: `tail -5 - $JOB/events.jsonl` — что codex делает сейчас. -- **Codex свободен** → это новая реплика (ответ на вопрос codex, доработка, - следующая итерация консультации): Write текст в `$JOB/prompt.md` (дословно), - запусти `codex-run.sh $JOB resume $(cat $JOB/thread_id)` в фоне, по - завершении верни ответ по правилам «Пробуждения». +Новая реплика (ответ на вопрос codex, доработка, следующая итерация +консультации): Write текст в `$JOB/prompt.md` (дословно), запусти +`codex-run.sh $JOB resume $(cat $JOB/thread_id)` в фоне, дальше wait-колл и +«Забор результата» — как при первом запуске. + +Если сообщение пришло, пока codex ещё работает (редко — твой ход обычно занят +wait-коллом): не прерывай процесс, ответь статусом по `tail -5 +$JOB/events.jsonl` и продолжай ждать. ## Транспортная преамбула (вставляй перед первым заданием)