Данила (Dayfing)
Назад к публикациям
1 898 слов8 мин

Agentic coding на практике: Codex, Claude Code и Copilot CLI с PR и тестами

Agentic coding — это не только просьба к модели написать функцию. Агент читает репозиторий, выбирает инструменты, меняет несколько файлов, запускает команды и готовит изменение, которому должны доверять человек или CI-система. Поэтому полезно сравнивать весь цикл управления: как инструмент запускается, узнаёт правила репозитория, получает доступ, проверяет поведение, показывает diff и доходит до pull request.

В статье сравниваются терминальные сценарии, описанные в документации OpenAI Codex CLI, Anthropic Claude Code и GitHub Copilot CLI. Срез документации сделан 28 августа 2026 года. Это не личный бенчмарк, не тест скорости и не отчёт о ручном запуске команд. Примеры команд взяты из документации продуктов и требуют адаптации к скриптам и политике конкретного репозитория. «Проверено» означает, что возможность описана поставщиком. «Практический вывод» — рекомендация, выведенная из этих задокументированных ограничений.

Одна задача и три плоскости управления

Для сравнения возьмём ограниченную задачу: «Добавь проверку просроченной сессии, обнови модульные тесты, запусти нужные проверки, покажи diff и подготовь pull request, не отправляя изменения в ветку по умолчанию». У задачи есть границы, наблюдаемая тестовая команда и артефакт для ревью. Одновременно она показывает, где каждый продукт ожидает решения человека.

Плоскость Codex CLI Claude Code GitHub Copilot CLI
Локальный запуск codex или codex exec claude copilot или copilot -p
Инструкции репозитория Иерархия AGENTS.md CLAUDE.md, импортирует AGENTS.md Инструкции Copilot, path rules, AGENTS.md
Разрешения Sandbox и политика approval Правила allow, ask, deny и режимы Области tool, path, URL и sandbox
Цикл тестов Команда репозитория Найти, написать, запустить, исправить Команды агента или hook после изменений
Ревью /review, без изменения дерева Git review и автоматизация Actions /review и review-агент
Pull request Action для ревью, Git для локального PR Git PR и @claude в Actions /pr, исправление CI и облачная делегация
Неинтерактивный режим codex exec с sandbox-флагами claude -p и Actions -p, autopilot, Actions

Это карта возможностей, а не таблица победителей. Подходящий вариант зависит от места хранения репозитория, доступных учётных данных и требуемого уровня подтверждения.

Установка и первый безопасный запуск

Документация Codex описывает установку отдельного CLI, переход в каталог проекта и вход при первом запуске. Начните в Git-репозитории, попросите кратко описать проект и проверьте разрешения командами /status и /permissions. Для автоматизации используется codex exec.

Обзор Claude Code описывает нативную установку для macOS, Linux, WSL и Windows PowerShell, затем запуск claude в каталоге проекта и авторизацию при первом использовании. Также описаны каналы Homebrew и WinGet. Первый запуск следует считать решением о доверии: после выдачи разрешений CLI может читать файлы, выполнять команды и менять их.

Copilot CLI устанавливается поддерживаемым пакетным или платформенным способом, после чего запускается командой copilot. В первой сессии он спрашивает, доверяете ли вы текущей папке. GitHub предупреждает, что CLI может читать, изменять и выполнять файлы в ней и ниже по дереву. Выполните /login и не сохраняйте папку как доверенную, пока не понятны её скрипты.

Для всех трёх инструментов безопасная последовательность одинакова: используйте отдельную ветку или worktree, запишите исходный результат теста, проверьте загруженные инструкции, разрешите только нужные команды и защитите ветку по умолчанию. Это рекомендация процесса, а не обещание автоматического enforcement со стороны продукта.

Инструкции репозитория — часть интерфейса

Codex читает AGENTS.md перед работой. В задокументированную цепочку входят глобальный файл и по одному файлу в каждом каталоге от корня проекта до текущего каталога. Внутри каталога AGENTS.override.md имеет приоритет, а более конкретные файлы идут после общих. Команды тестов и правила безопасности удобно держать в корне, а соглашения отдельного сервиса — ниже.

Claude Code читает CLAUDE.md и CLAUDE.local.md в иерархии каталогов. Он не читает AGENTS.md напрямую, но CLAUDE.md может импортировать его записью @AGENTS.md. Общие правила сборки, тестов и архитектуры храните в CLAUDE.md, личные предпочтения — в игнорируемом локальном файле, а path rules — в .claude/rules/.

Copilot CLI поддерживает .github/copilot-instructions.md, path-specific файлы .instructions.md и AGENTS.md. Команда copilot init помогает создать начальные правила. Эти файлы формируют prompt, но не являются границей разрешений. Фразу «не трогать production credentials» нужно подкрепить запретами на пути, настройками окружения и политикой CI.

Переносимый репозиторий может иметь короткий общий AGENTS.md, импорт для Claude и отдельные дополнения Copilot. Зафиксируйте команды package manager, минимальный тест, правила generated files, запрещённые пути, миграционную политику и обязательные доказательства для PR. Не превращайте инструкцию в справочник: длинный контекст расходует бюджет модели.

Sandbox и approvals — разные контроли

Codex ясно разделяет эти понятия. Sandbox определяет, к каким файлам и сетевым ресурсам команды имеют доступ, а approvals определяют, когда Codex остановится перед действием. Для локальной реализации обычным профилем служит workspace-write с approval on-request. read-only подходит для исследования или CI-ревью без правки. danger-full-access и псевдоним --yolo снимают границу безопасности и предназначены только для изолированной среды.

Для локальной работы контракт можно сделать явным:

codex --sandbox workspace-write --ask-for-approval on-request

В CI codex exec по документации работает в режиме только чтения. Добавляйте --sandbox workspace-write, лишь если job должна создать patch. --ask-for-approval never допустим только при контролируемых runner, checkout, списке команд и пути вывода. Не копируйте устаревший --full-auto в новые скрипты.

В Claude Code используется многоуровневая система разрешений. Чтение файлов и встроенные read-only shell-команды в Manual-режиме не требуют подтверждения. Изменение файлов, общий Bash, web fetch и поиск могут запрашивать approval. Правила allow, ask и deny проверяет клиент, а не модель. Есть режимы Manual, Plan, Auto и bypass для изолированного контейнера или виртуальной машины. Sandboxed Bash добавляет изоляцию файловой системы и сети через /sandbox.

Copilot CLI спрашивает перед инструментами, которые изменяют или выполняют файлы, а read-only поиск и чтение разрешает автоматически. Разрешения можно ограничить инструментами, путями и URL. Локальный sandbox — отдельная экспериментальная настройка команд и инструментов CLI. GitHub также описывает эфемерный облачный sandbox. Перед автономным запуском проверьте /sandbox policy и действующие разрешения.

Практическое правило для всех продуктов — выдавать возможности слоями: чтение репозитория, конкретные formatter и test-команды, затем запись в ветку или worktree. Сеть, установку пакетов, credentials, push и deploy держите отдельными подтверждениями. Sandbox ограничивает радиус действия, но не проверяет смысл изменения.

Инструменты, MCP и hooks автоматизации

Все три продукта используют shell, операции с файлами и поиск по репозиторию. Codex документирует skills, plugins, MCP и GitHub Action. Claude Code — MCP-серверы, skills, hooks и subagents. Copilot CLI — MCP, skills, plugins, custom agents, hooks и встроенный GitHub MCP-сервер.

Рассматривайте каждое расширение как код, работающий внутри процесса. Проверьте его исходники, ограничьте credentials и решите, нужен ли сервер исполнителю или отдельному ревьюеру. MCP, который создаёт тикеты или мержит PR, отличается от read-only сервера документации. Само подключение не делает его безопасным.

Hooks могут форматировать файл после правки или запускать быстрый тест в конце задачи. Делайте их детерминированными и короткими. Не прячьте deploy или разрушительную миграцию в hook, который агент не может объяснить в transcript.

Тесты — это цикл доказательств, а не фраза о готовности

Хороший prompt называет поведение, fixtures, команды и условия остановки. Попросите агента изучить тесты, добавить падающий сценарий просроченной сессии, внести минимальное исправление, запустить focused test и обязательные проверки. В отчёте нужны команда и exit status. Если focused test уже проходит, пусть агент объяснит причину, а не пишет второй вариант.

Документация common workflows Claude Code прямо описывает поиск непокрытого кода, scaffolding, edge cases, запуск тестов и исправление ошибок. Codex и Copilot CLI могут запускать команды репозитория, когда позволяют разрешения и инструменты. Сгенерированные тесты не доказывают полноту. Человек проверяет контракт, fixtures, integration paths и security cases.

По возможности используйте три уровня: быстрый focused test, suite пакета или сервиса для интеграционных эффектов и обязательные PR checks как merge gate. Ограничьте число попыток исправления и сохраняйте исходный вывод ошибки. Повторный запуск flaky-команды не создаёт новых доказательств.

Diff, review и pull requests

Ревью начинается до PR. Попросите список изменённых файлов, инварианты, выполненные тесты и пробелы. Сопоставьте ответ с задачей, затем сами прочитайте Git diff. Резюме агента — объяснение, а не источник истины.

Codex документирует /review для незакоммиченных изменений, коммита или сравнения веток. Reviewer сообщает приоритетные находки и не меняет рабочее дерево. В документации Codex GitHub Action есть workflow для ревью новых и обновлённых PR с публикацией результата. Для локального создания PR нужны обычные Git или GitHub-инструменты и их разрешения.

Claude Code документирует staging, коммиты, ветки и PR. Его GitHub Actions поддерживают @claude в issue или комментарии PR, задачу issue-to-PR и review workflow. Оставьте token и разрешения репозитория узкими и сохраните обычные CI-gates.

Copilot CLI документирует /review, /pr create и /pr fix feedback, а также исправление конфликтов и CI. /delegate передаёт работу cloud agent, который открывает draft PR и продолжает удалённо. Наличие этих команд не означает, что PR готов к merge.

Для любого инструмента отделяйте «подготовить» от «опубликовать». Пусть агент создаст ветку, patch, тесты и черновик описания. Push, labels, approval и merge оставьте человеку или защищённой identity. В PR укажите задачу, файлы, команды, результаты, риски и непроверенные области.

CI и повторяемость

Неинтерактивный режим Codex предназначен для pipelines. Он отделяет итоговый вывод от progress, выдаёт JSON Lines, записывает последнее сообщение и принимает output schema. Workflow всё равно должен безопасно обрабатывать authentication, logs и failures.

Claude Code запускается с -p и в GitHub Actions. Для недоверенных PR используйте read-only review job, а для разрешённых maintenance-задач — отдельный job с правом записи. Trigger- и token-правила остаются частью границы безопасности.

Copilot CLI предлагает -p, форматы вывода, autopilot и Actions. Флаг --max-autopilot-continues ограничивает продолжение. В Actions заранее выберите identity, оплачивающую модель, и token, которому разрешена запись. Ответ модели не является успешным CI, пока реальный test job не завершится без ошибок.

Безопасность и расходы

Prompt injection может попасть из issue, fixture, README, generated file или веб-страницы. Не выдавайте широкую сеть или production credentials только ради чтения исходников. Запрещайте пути секретов, не печатайте environment variables, отделяйте установку пакетов от тестов и проверяйте MCP-серверы и hooks как зависимости цепочки поставки.

Лимиты Codex и варианты credit зависят от плана и размера задачи. Claude Code различает API-биллинг и подписку, показывает /usage, а extended thinking и длинный контекст могут увеличивать расход. Copilot CLI использует GitHub AI Credits и документирует --max-ai-credits. Эти системы учёта нельзя напрямую сравнивать.

Задайте бюджет процесса. Для mapping используйте меньший effort, а для рискованного решения — более сильную модель. Ограничьте retries, параллельных агентов, autopilot и время cloud runtime. Между несвязанными задачами очищайте или сжимайте сессию. Считайте не только tokens, но и время человеческого ревью.

Рабочие схемы по контексту

Для локального изменения начните любой из трёх инструментов в plan или read-only режиме. Пусть агент изучит репозиторий, процитирует важные инструкции и предложит файлы и тесты. Разрешите минимальный набор, запустите focused и обязательные проверки, а затем прочитайте diff до команды PR.

Команде, ориентированной на GitHub и исправление PR или CI из терминала, подойдёт документированный цикл /pr Copilot CLI. Для работы по комментариям есть Actions Claude Code и review Action Codex. Для структурированного вывода локальной команды у Codex exec описаны JSONL и schemas. Это вывод о соответствии интерфейсов, а не рейтинг.

Для чувствительного кода выбирайте режим, который организация способна принудительно контролировать. Read-only reviewer в закрытом runner может быть безопаснее автономной локальной сессии. Политику помещайте в CI и настройки провайдера, а не только в prose. Полезны заметки AGENTS.md и coding agents, оценка AI-агентов и production AI-agent architecture.

Небольшой operating contract

До запуска определите репозиторий, ветку, разрешённые пути, test-команду, сетевые потребности, предел исправлений и владельца PR. Требуйте видимые вызовы инструментов, ограниченные approval и различие между фактами репозитория и догадками. В конце запросите diff, тестовые доказательства, риски и сигнал usage. Готовность определяют обычные reviewer и CI.

Использованная официальная документация

Ещё публикации