Codex стабильно находит в моих планах разработки вещи, которые Claude в своём же плане не видит. Я заметил это в первые несколько дней после покупки GPT Pro — и с тех пор стараюсь не садиться писать код, пока план не пройдёт хотя бы один раунд cross-review.

GPT Pro я брал в основном из-за Pro-модели, Codex в комплекте был приятным бонусом — плюс в мае OpenAI давали двойные лимиты на Codex для Pro-подписок. Но не совру, если скажу, что идея немного ослабить vendor lock-in и свою зависимость от Антропика мне также грела душу.

К моему удивлению, пока самым полезным и часто используемым сценарием стал cross-review планов разработки. Берёшь готовый PLAN.md, который Claude Code пишет в фазе планирования, кидаешь в Codex, просишь: «найди дыры, не пиши код». Получаешь список замечаний, несешь обратно в Claude Code. Смыть и повторить.

Почему вторая модель находит то, чего автор плана не видит

Это известный паттерн LLM-as-judge: одна модель оценивает выход другой. Даже свежая Claude-сессия на той же модели уже что-то находит. Но ревью с помощью другой модели работает заметно мощнее. У Codex другие фокусы внимания, другая интуиция про edge-кейсы, другие опасения. Если Claude писал план на оптимистичной волне («сейчас быстренько добавим вот этот хук»), Codex как правило настроения автора не разделяет.

Категории находок, по моим ощущениям, повторяются: недооценённые edge-кейсы, неаккуратные предположения о библиотечном API, места, где сам Claude в плане честно написал «возможно, понадобится отдельный шаг», — а к финалу плана этот шаг куда-то исчез.

Чего я не ожидал: ревьюер хочет переписать план в код

Один план я как-то гонял аж 15 итераций. В какой-то момент я вчитался поглубже в то, что Codex пишет в очередном review, — и увидел, откуда эти 15 итераций берутся.

Если спрашивать LLM «что не так с этим планом?», она по дефолту дрейфует в сторону «давай я просто перепишу твой план так, как он должен выглядеть». И «как он должен выглядеть» в её представлении — максимально похоже на готовый код. Псевдокод, готовые блоки кода прямо в плане, иногда детальные пошаговые инструкции уровня «и вот эту проверку добавь сюда». По мере итераций план переходит из «вот примерный маршрут и три развилки, где надо подумать» до «вот построчная спецификация, агенту-исполнителю остаётся только распарсить».

Звучит как улучшение — пока не задумаешься, что это значит дальше.

Дальше писать код пойдёт другой агент. Если план уже превратился в построчный псевдокод — у этого агента не осталось пространства для решений. Микро-выборы, которые он мог бы сделать с учётом контекста кода, за него уже сделал ревьюер плана, у которого этого контекста на момент критики не было.

Какое-то время я добавлял ручной промпт «не превращай в код, оставляй решения за writer-агентом» и переклеивал его в Codex каждую итерацию. Работает, но это становится отдельным ритуалом. На третьей-четвёртой итерации забываешь — и план снова дрейфует в псевдокод.

Что сломалось окончательно: вкладки

Есть ещё одна неприятная штука в ручном режиме — потерянный контекст между раундами. План обычно сходится за 4–6 итераций, но не подряд: между ними отвлекаешься на другие дела. А у Codex в интерфейсе рядом с сообщениями нет времени отправки.

Возвращаешься к плану через час-другой и не помнишь: уже скопировал последний фидбек Codex в Claude или ещё нет? Версия плана у тебя в Claude — это уже после прошлой итерации Codex или до?

Возня со вкладками — главное, что хотелось убрать. Стало понятно: проще автоматизировать.

Откуда взялся plan-tango

Идея напрашивалась сама: пусть Claude Code сам дёргает Codex по команде столько раз, сколько нужно.

Официальный Codex-плагин для Claude Code — полезная штука, но ревью плана с автоматическими итерациями он из коробки делать не умеет. Он может выполнить за тебя задачу, может сделать code review только что написанного кода, ещё какие-то полезные вещи. Цикла «отправить план → собрать замечания → внести правки → отправить снова, и так пока не сойдётся» в нём нет.

Первую версию plan-tango я написал поверх этого плагина — просто чтобы получить нужную мне петлю. Базовые сценарии работали. А дальше я уперся в одну штуку: я хотел гонять Codex в fast mode (в полтора раза быстрее обычного, но жжёт ощутимо больше лимитов, доступно в рамках обычной подписки). Через плагин этот параметр пробросить было нельзя.

2 минуты в fast mode против трёх в обычном режиме — кажется, мелочь. Но за 4–6 итераций разница набегает. К тому же в недельный лимит ChatGPT я пока всё равно не упираюсь — так почему бы не получить бесплатное ускорение?

Так что я переделал plan-tango: вместо вызовов через Codex-плагин он теперь дёргает Codex CLI напрямую. Одной зависимостью меньше, а контроля над тем, как вызывается Codex, больше.

Как это сейчас работает

Plan-tango живёт в одном окне Claude Code и запускается командой /plan-tango:tango на текущем плане. Дальше петля автоматическая: Codex review → правки в плане → Codex review → правки → пока план не сойдётся (или пока не упрётся в hard cap).

Стандартно откручивается до 6 итераций, hard cap 12 — это sanity-ограничитель, Codex всегда найдёт что покритиковать, и без ограничения петля может быть бесконечной. Более того, по умолчанию плагин сейчас считает план согласованным, если нет находок уровня critical и major (minor и nit считаются проходными). Количество итераций и проходной балл легко настраиваются.

Fast mode включается флагом --fast и просто меняет скорость работы Codex — priority service tier, в полтора раза быстрее. В моём конфиге он включён всегда.

Дефолтный промпт в плагине просит ревьюера «не писать код, оставлять решения за writer-агентом». Это попытка через prompt удержать ревьюера от того самого дрейфа в псевдокод, про который я писал выше — работает в большинстве случаев, но это всё-таки prompt, не строгая гарантия. Кому не подходит — поведение настраивается.

Остальное (severity-aware auto-stop, снапшоты на каждом раунде, защита от того, что файл плана поменяют параллельно) — есть, но описывать здесь не буду. Кому интересно — в README на GitHub.

Плагин и инструкции по установке: github.com/egsok/plan-tango.

Лицензия MIT — берите, форкайте, кастомизируйте под себя. Буду благодарен за звезды!

Резюме

Кросс-модельное ревью плана у меня осело в постоянном workflow. Сама по себе идея простая — на полстраницы кода: одна модель пишет план, другая его рвёт.

Я и так всегда предпочитал больше времени на планирование, чем потом ловить баги и переделывать. Plan-tango просто позволяет полностью отдать эту часть для задач средней сложности и не участвовать руками: сформулировал ТЗ, запустил, ушёл по делам, вернулся к готовому плану.

Сам паттерн при этом прекрасно работает и без плагина. Сначала попробуйте руками в соседнем окне. А если зайдёт — забирайте plan-tango.


Оригинал в моем блоге: egorsokolov.ru/ai/plan-tango

Ещё пишу про AI-инструменты и нейросетевой workflow в своём ТГ-канале: Нейросеть не виновата