- Зачем: два плейбука оркестрации разошлись, а из них на практике нужно только независимое ревью моделью другого семейства. - Что: линзы для ревьюера (по задаче, по коду, форма и вкус, вычитание, план), общий мандат и перепроверка; разбор находок остаётся у автора. Механика запуска вынесена в адаптеры: T3 Code, codex exec, claude -p. Следующие круги ревью идут продолжением сессии того же ревьюера. Старые плейбуки пока не удалены. - Проверка: запуск, запись отчёта и продолжение сессии прогнаны на codex-cli 0.163.0, Claude Code 2.1.302 и в T3 Code; два круга ревью скилла (gpt-6.1-sol, gpt-6-astra), находки исправлены; ссылки и YAML проверены скриптом. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
101 lines
6.2 KiB
Markdown
101 lines
6.2 KiB
Markdown
# Запуск Codex из командной строки
|
||
|
||
Для автора, у которого есть shell и установлен `codex`. Проверено на
|
||
codex-cli 0.163.0 (Linux, 2026-10-17): первый запуск, продолжение по id,
|
||
запись отчёта в обменный каталог.
|
||
|
||
## Перед первым запуском
|
||
|
||
На новой машине и после обновления Codex проверь, что команды внутри
|
||
песочницы вообще выполняются:
|
||
|
||
```bash
|
||
codex sandbox -c 'sandbox_mode="workspace-write"' -- sh -c 'echo SANDBOX_OK'
|
||
```
|
||
|
||
На Linux отказ вида `bwrap: ... Failed RTM_NEWADDR` обычно значит, что
|
||
AppArmor запрещает непривилегированные user namespaces. Это настройка машины,
|
||
а не ревью: сообщи пользователю и сошлись на
|
||
[требования песочницы](https://learn.chatgpt.com/docs/sandboxing#prerequisites).
|
||
Работающий веб-поиск о песочнице ничего не говорит.
|
||
|
||
## Первый запуск
|
||
|
||
```bash
|
||
# D — обменный каталог с готовым brief.md, S — каталог скилла
|
||
cat "$D/brief.md" "$S/prompts/mandate.md" "$S/prompts/lens-code.md" \
|
||
> "$D/prompt.md"
|
||
|
||
set -o pipefail
|
||
cat "$D/prompt.md" | codex exec --json --strict-config --approve-for-me \
|
||
--add-dir "$D" -m <model> -c 'model_reasoning_effort="<effort>"' \
|
||
-o "$D/final.md" - > "$D/log.jsonl" 2> "$D/err.txt"
|
||
```
|
||
|
||
- **Промпт — каналом через stdin** (`cat … | codex exec … -`): так он
|
||
доходит в любой среде. Поток событий и ошибки — в файлы; в свой контекст
|
||
читай только `final.md` и отчёт `REPORT`.
|
||
- **`--approve-for-me`** даёт песочницу `workspace-write` и сам одобряет
|
||
выход за неё: сеть, docker, команды вне каталога. Вместе с `-s` он не
|
||
принимается. Шире — `danger-full-access` — ревьюеру не нужно.
|
||
- **`--add-dir "$D"`** разрешает запись отчёта в обменный каталог.
|
||
- **Модель и глубину задавай явно.** Иначе они берутся из
|
||
`~/.codex/config.toml` и зависят от последней интерактивной сессии
|
||
пользователя. На 2026-10 для ревью кода обычно лучше всего подходит
|
||
`gpt-6.1-sol` с глубиной `high`. `gpt-6-astra` с `xhigh` сильнее и
|
||
заметно дороже: бери её по просьбе пользователя или когда ошибка особенно
|
||
дорога. Названия моделей быстро устаревают: при сомнении спроси
|
||
пользователя.
|
||
- **`--strict-config`** останавливает запуск при неизвестном ключе `-c`.
|
||
Без него опечатка молча заменяется настройкой по умолчанию.
|
||
|
||
## Ожидание
|
||
|
||
Ревью идёт от нескольких минут до получаса. Запускай команду фоном средствами
|
||
своей среды: в Claude Code — Bash с `run_in_background`, без `&` внутри
|
||
команды; среда разбудит тебя по завершении.
|
||
|
||
- **id сессии** — в первой строке лога:
|
||
`head -1 "$D/log.jsonl" | jq -r .thread_id`. Сохрани его сразу: по нему
|
||
идут перепроверка и спасение, если процесс умер.
|
||
- **Признак жизни** — рост `log.jsonl`. Долгая сборка или тесты внутри
|
||
песочницы событий не пишут, поэтому застывший лог — повод посмотреть, а не
|
||
приговор.
|
||
- **Вердикт без находок** проверь по логу: работа это или отписка.
|
||
`grep -c '"command_execution"' "$D/log.jsonl"` — число выполненных команд.
|
||
Голое APPROVED при нуле команд перезапускай.
|
||
|
||
## Затраты
|
||
|
||
Токены по каждому ходу пишутся в лог:
|
||
`jq -c 'select(.type=="turn.completed") | .usage' "$D/log.jsonl"`.
|
||
Стоимости в выводе нет.
|
||
|
||
## Следующие круги
|
||
|
||
Узкая перепроверка или полный проход по новой версии — продолжением той же
|
||
сессии. Что положить в поручение — в разделе «Следующие круги» SKILL.md.
|
||
|
||
```bash
|
||
cat "$D/recheck-prompt.md" | codex exec resume --json --strict-config \
|
||
-m <model> -c 'model_reasoning_effort="<effort>"' \
|
||
-o "$D/recheck-final.md" <thread-id> - \
|
||
> "$D/recheck-log.jsonl" 2> "$D/recheck-err.txt"
|
||
```
|
||
|
||
- **Только по явному id.** `--last` подхватит последнюю сессию, а при
|
||
нескольких ревьюерах это может быть чужая.
|
||
- Песочница и доступ к `$D` принадлежат сессии и сохраняются; ключей `-s`,
|
||
`--approve-for-me` и `--add-dir` у `resume` нет.
|
||
- Модель и глубину повтори явно — те же, что при первом запуске: иначе
|
||
подставятся значения из конфига, а смена глубины внутри сессии сбрасывает
|
||
кэш.
|
||
|
||
## Особенности ревьюеров Codex
|
||
|
||
- Мандат и формат отчёта держат надёжно.
|
||
- Бывает, требуют исправлений сверх цели задачи; в других прогонах все
|
||
починки выходили соразмерными. Проверяй соразмерность как обычно.
|
||
- Хорошо ловят уровень требований: недостающие критерии, наблюдаемость,
|
||
«формально отчитаться можно».
|