31 октября 2026 г. · 7 мин. чтения
Локальное code review с AI-агентами без GitHub и Merge Request
Я часто использую Claude Code и Codex, поэтому регулярно приходится проверять довольно большие изменения, которые они вносят в проект. Даже если код компилируется и тесты проходят, это ещё не значит, что реализация меня устраивает.
Для такой проверки хотелось привычного интерфейса, как в GitHub или GitLab, где можно открыть diff относительно dev, пройтись по файлам, оставить комментарии к строкам и отправить замечания агенту. И всё это без Pull Request или Merge Request, ведь сначала я хочу сам проверить код и поправить спорные места, а уже потом показывать изменения коллегам.
Отдавать ревью целиком другому агенту мне тоже не хочется. Об этом хорошо написано в статье Nobody Reviews Their Agent’s Code. Там же описан инструмент crit. Человек оставляет замечания к изменениям агента, тот исправляет, человек проверяет снова. С автором я согласен. AI-ревью может быть дополнительной проверкой, а смотреть изменения я предпочитаю сам.
Что не устраивает в обычном Git diff
Я пишу под iOS и при этом давно не открываю Xcode без необходимости. Собирать и тестировать проще через MCP, да и с пересборкой пакетов при открытом Xcode меньше возни. Так что встроенное сравнение файлов в Xcode для ревью мне не подходит.
Терминальный git diff тоже не совсем подходит. Посмотреть изменения можно, а вот оставить замечания и потом нормально передать их агенту уже сложнее.
Допустим, Codex добавил проверку, которая выполняется внутри CheckoutService. Я хочу выделить конкретные строки и написать «Здесь уже есть проверка на уровне сервиса. Зачем её дублировать?»
Затем перехожу к CheckoutView.swift и вижу новый компонент, хотя подходящий уже существует в MyAppUI. Оставляю ещё один комментарий и продолжаю просмотр.
В GitHub я бы просто написал всё это прямо в diff. Локально приходится либо постоянно переключаться между IDE и чатом агента, либо отдельно собирать замечания с путями к файлам и номерами строк.
Хотелось примерно такого же удобства, как в Pull Request, только на своей машине. Оказалось, готовые решения уже существуют.
Что удалось попробовать и найти
Первым заинтересовал difit. Это небольшая open-source утилита, которая открывает локальный Git diff в браузере. Есть дерево файлов, подсветка изменений и комментарии к строкам.
Например, можно сравнить текущую ветку с dev.
npx difit @ dev --merge-base
Больше всего понравилась функция Copy All Prompt. Сначала проходишься по файлам, оставляешь замечания, а затем одной кнопкой копируешь их вместе с путями и номерами строк.
Получается примерно такой текст.
CheckoutViewModel.swift:L84-L88
Зачем здесь повторная проверка?
CheckoutService уже обрабатывает этот случай.
CheckoutView.swift:L42
Используй существующий компонент из MyAppUI.
Вставляешь его в Claude Code или Codex и просишь обработать замечания. Не приходится каждый раз объяснять, где именно находится проблема.
Позже наткнулся на статью самого автора difit. Там описана похожая проблема. Читать большой diff в терминале неудобно, а создавать Pull Request ради собственного ревью не хочется. В описанном процессе агент заканчивает работу, разработчик проверяет изменения в браузере, оставляет комментарии и возвращает их агенту.
Собственно, именно такой сценарий я изначально и искал. Но со временем захотелось ещё сохранять ответы агента, чтобы при следующем проходе видеть, что обсуждалось и почему было принято определённое решение.
Следующим попробовал Plannotator. Он интегрируется с Claude Code и Codex и позволяет отправлять замечания из браузера, не копируя их вручную.
Идея интересная, однако при моём тестировании с Codex после отправки комментариев открылась новая сессия. Возможно, дело было в способе запуска, но мне такой вариант не понравился.
Я довольно часто переключаюсь между агентами. Например, закончились лимиты Codex, продолжаю задачу в Claude Code. Иногда просто хочу попробовать другой подход. Поэтому мне неудобно, когда процесс ревью оказывается привязан к конкретной AI-сессии.
В идеале комментарии должны храниться отдельно. Тогда неважно, кто в данный момент работает над задачей. Codex может обработать часть замечаний, а Claude Code продолжить с того же места.
Ещё один проект, который я изучил, это diffx. У него есть браузерный просмотр diff, комментарии к строкам и локальный API, через который агент может получать замечания и публиковать ответы. Комментарии можно закрывать, а в интерфейсе видно, какие из них открыты, получили ответ или уже решены.
По возможностям он оказался ближе к тому, что мне нужно. Но в рассмотренной реализации комментарии хранятся в памяти сервера, а мне хотелось бы сохранять историю между запусками. Кроме того, я предпочитаю самостоятельно закрывать замечания после проверки, даже если агент уже исправил код.
В общем, каждый из инструментов решает часть проблемы, но ни один полностью не устроил.
Почему я отказался от идеи постоянного чата
Изначально я думал сделать почти полноценный GitLab, только локально. Оставляешь комментарий в браузере, агент сразу получает его и отвечает под соответствующей строкой. Пишешь уточнение, он снова реагирует. Всё обновляется в реальном времени.
Потом начал разбираться, что для этого потребуется, и постепенно отказался от идеи.
Мало просто поднять локальный сервер. Нужно ещё как-то передавать новые сообщения в работающую сессию Codex или Claude Code, обрабатывать ответы и синхронизировать состояние обсуждений.
А что делать, когда я переключаюсь между агентами? Кто должен получать новые комментарии? Нужно ли прерывать текущую задачу, если я написал очередное замечание?
Всё это можно реализовать, но стоит ли усложнять инструмент ради такой функциональности?
Кроме того, постоянное взаимодействие с агентом означает дополнительные запросы и расход токенов. Особенно если он реагирует на каждый комментарий отдельно, повторно читает код и восстанавливает контекст. Пакетная обработка не обязательно всегда будет дешевле, но позволяет избежать лишних циклов общения.
В какой-то момент я понял, что во время ревью мне вообще не нужны немедленные ответы. Я хочу спокойно пройтись по файлам, оставить замечания, а затем попросить агента обработать их за один проход.
В результате остановился на обычном итерационном процессе.
- Агент заканчивает задачу, я открываю локальный diff и оставляю замечания.
- Передаю все комментарии Codex или Claude Code одной командой.
- Агент отвечает на вопросы, исправляет код и сохраняет результаты обработки.
- Я обновляю diff, проверяю исправления и при необходимости начинаю следующую итерацию.
Если какое-то решение остаётся спорным, можно ещё раз вернуться к обсуждению. Но поддерживать ради этого постоянный интерактив с агентом нет необходимости.
Похожий процесс используется в crit, о котором я упоминал выше. Замечания сохраняются между раундами, а разработчик повторно проверяет код после исправлений.
Мне кажется, это разумный компромисс. Вместо попытки сделать ещё один AI-чат можно сосредоточиться на самом ревью.
Форк инструмента как вариант
Требования в итоге простые. Нужен локальный diff в браузере относительно базовой ветки, комментарии к строкам, передача их агенту одним действием и история, которая живёт между итерациями и не привязана к сессии Codex или Claude Code. Закрывать обсуждения после проверки буду я сам.
Проще сделать форк и доработать его самому, чем открывать Pull Request и ждать полгода. К тому же у автора инструмента может быть немного другое видение. Я люблю настраивать инструменты под себя, а с Codex и Claude Code небольшая доработка занимает не так много времени. Поэтому как вариант можно взять diffx за основу. Плюс все эти инструменты сторонние, и в своём форке проще контролировать, что на самом деле происходит. Версия зафиксирована, зависимости понятны и нет ничего лишнего.
Выводы
В итоге для себя я выбрал итерационное ревью вместо постоянного диалога с агентом. Открыл diff, оставил комментарии, передал их на исправление, проверил результат. При необходимости повторил.
Сам код я по-прежнему предпочитаю проверять лично. AI может помогать с поиском ошибок и исправлением замечаний, но принимать его работу без собственного ревью мне не хочется.
Из рассмотренных решений ближе всего к моим требованиям оказался diffx, поэтому его можно доработать. Возможно, потом выяснится, что достаточно совсем небольших изменений.
Главное, чтобы можно было удобно проверять код локально, не создавая ради каждого прохода Merge Request и не тратя время на ручную передачу замечаний между инструментами.
Ссылки
- difit, локальный браузерный diff с комментариями.
- Plannotator, ревью кода и планов с интеграцией в AI-агентов.
- diffx, локальный diff с API для комментариев и ответов агента.
- Автор difit о локальном code review, как организовать проверку изменений без Pull Request.
- Nobody Reviews Their Agent’s Code, о ручной проверке AI-кода и инструменте
crit.
Читайте также
- ADR для AI-агентов. Как сохранить причины архитектурных решений
7 ноября 2026 г.
- AGENTS.md для Codex и Claude Code. Что писать в инструкции и что вынести в Skills
24 октября 2026 г.
- some vs any в Swift: в чём разница и когда использовать каждый
17 октября 2026 г.







