Track
Шесть месяцев назад под «терминальным кодовым агентом» подразумевались Claude Code и несколько опенсорсных клонов. Grok Build недавно изменил ситуацию — в мае 2026 года — и сходство с Claude Code выходит далеко за рамки списка функций.
Команда xAI говорит, что Grok совместим с Claude Code без какой-либо настройки и автоматически читает каталоги маркетплейсов, плагины, навыки, MCP‑серверы, агентов, хуки и файлы инструкций Claude Code, включая CLAUDE.md и .claude/rules/. Вы можете направить Grok на репозиторий, уже настроенный под Claude Code, — он подхватит конфигурацию и запустится.
Интересный вопрос не «у кого больше функций». Меня на самом деле интересовало, насколько глубоко простирается сходство. Является ли Grok Build по сути Claude Code с другим модельным бэкендом? Я подготовил датасет с тремя преднамеренно внедрёнными дефектами и прогнал идентичный скрипт через оба агента.
Коротко: Grok Build vs. Claude Code
Если прочитаете только один раздел — пусть это будет он.
-
Паритет по функциям — реальный. Plan mode, субагенты, навыки, хуки, MCP, безголовый режим, песочницы и worktree есть у обоих.
-
Grok читает каталоги
.claude/,CLAUDE.mdи навыки Claude Code без какой-либо настройки, так что вы можете попробовать Grok на репозитории, уже сконфигурированном под Claude Code. Claude Code не читает собственные файлы Grok.grok/, поэтому конфигурация «сначала под Grok» обратно не переносится. Если собираетесь экспериментировать с обоими, настраивайте «по‑клаудовски». -
За четыре шага каждая цифра, которую приводил Grok, в точности сошлась с моим датасетом, включая значения, посчитанные им без запроса.
-
Claude дал существенно больше анализа и потребовал проверки. Он нашёл реальный продакшн‑баг, который не заметили ни Grok, ни я. Но также выдал две вымышленные величины и ошибку отображения — причём в самых цитируемых местах ответа.
-
Claude Code работает в терминале, IDE, на десктопе, в вебе, на мобильных устройствах и в Slack. Grok Build — в первую очередь терминальный, а Grok Bot — отдельный облачный продукт.
-
Для
/skillifyу Claude Code нет аналога — это единственное найденное мной реальное расхождение по функциям.
Что такое Grok Build?
Grok Build — это кодовый агент xAI. Он запускается тремя способами: как интерактивный TUI, безголово в скриптах и CI (со структурированным выводом streaming-json для программного захвата транскриптов) или через Agent Client Protocol (ACP), чтобы его могли встраивать другие приложения.

При запуске в статусной строке есть две детали, которые пригодятся позже. Внизу справа — Grok 4.6 (high) (используемая модель и уровень рассуждений, переключается командой /model). Внизу слева — предложение создать новую worktree, чтобы Grok мог запускать субагентов в изолированных git‑worktree, не сталкивая их в одной директории.
Функция, на которую хочу указать сразу, потому что у Claude Code аналога нет: Grok поддерживает произвольные кастомные модели через ~/.grok/config.toml. Вы можете направить CLI на любой OpenAI‑совместимый endpoint, дать ему имя и выбрать через /model. Если нужен один CLI для нескольких провайдеров моделей — это реальное архитектурное отличие, а не косметика.
Выполните grok inspect в новом репозитории, чтобы увидеть, что агент действительно читает. Он выведет всё, что Grok обнаружил в текущем каталоге:
Начало работы с Grok Build
Чтобы установить Grok build на macOS, выполните:
curl -fsSL https://x.ai/cli/install.sh | bash
В Windows есть установщик PowerShell:
irm https://x.ai/cli/install.ps1 | iex
При первом запуске откроется браузер для аутентификации через ваш аккаунт xAI или X. В среде без браузера вместо этого экспортируйте ключ API:
export XAI_API_KEY="xai-..."
grok
Для начала вы можете перейти в репозиторий (cd) и спросить:
grok -p "Explain this codebase"
grok -p "Explain the architecture" --output-format streaming-json
Полный пошаговый разбор (аутентификация, межсессионная память, разрешения безопасности, проектные инструкции и первый end‑to‑end билд) смотрите в нашем руководстве по Grok Build.
Что такое Claude Code?
Claude Code — агентный инструмент для кодинга от Anthropic, который работает в терминале, в VS Code и JetBrains, в десктопном и веб‑приложениях, на мобильных устройствах и в CI. Также есть интеграция со Slack и Agent SDK, который даёт программный доступ к тому же циклу.
Его модель расширений — это стек примитивов, надстраиваемых друг над другом. Файлы CLAUDE.md задают конвенции на уровне каталогов. Пакет Skills содержит переиспользуемые рабочие процессы как файлы SKILL.md с фронтматтером, вызываемые по имени или автозапускаемые при совпадении задачи.
Для этой статьи я запускал Claude Code в десктопном приложении на Opus 5 с высоким уровнем рассуждений.
Если вам нужна версия сравнения только про Claude, в нашей статье Claude Cowork против Claude Code это хорошо разобрано. Полную установку и разбор первого проекта читайте в нашем руководстве по настройке Claude Code.
Grok Build vs Claude Code: ключевые функции и сходства
Я опущу большую часть базовых сравнений, потому что честный итог — формы продуктов совпадают. Вот некоторые сходства, которые я нашёл у обоих:
|
Grok Build |
Claude Code |
|
|
Файлы инструкций |
|
|
|
Навыки |
|
|
|
Субагенты |
Да, с изоляцией в worktree |
Да, с командами агентов |
|
Plan mode |
Да, редактирования блокируются до утверждения |
Да |
|
Хуки |
Да, с |
Да |
|
MCP |
Да |
Да, протокол зародился здесь |
|
Маркетплейс |
xai-org/plugin-marketplace, пин на commit‑SHA |
Официальные и комьюнити‑каталоги |
|
Безголовый режим |
|
|
|
Кастомные эндпоинты моделей |
Да, любой OpenAI‑совместимый API |
Нет, только модели Claude |
|
Поверхности |
Терминал, встраивание через ACP |
Терминал, IDE, десктоп, веб, мобильные, Slack |
Три строки в таблице выше действительно имеют значение:
-
Файлы инструкций: То, что Grok читает файлы
.claude/, — не случайность; это задокументированная функция. Значит, вы можете направить Grok на репозиторий, уже настроенный под Claude Code, и он заработает сразу, тогда как конфигурация под Grok обратно не переносится. -
Кастомные эндпоинты моделей: Это реальная вилка, потому что Grok может работать с любым OpenAI‑совместимым API, выступая единым CLI для нескольких провайдеров, тогда как Claude Code запускает только модели Claude.
-
Поверхности: Они определяют, где вообще можно работать — и здесь преимущество явно у Claude Code.
Тест: Grok Build и Claude Code на одной задаче машинного обучения
Я сгенерировал синтетический датасет оттока клиентов с 5 427 строками месячных срезов по 1 800 клиентам и тремя намеренно внедрёнными дефектами:
-
Протекающий признак:
days_since_cancellationсуществует только после того, как человек уже отменил подписку. -
Сильный дисбаланс классов: 8,2% положительных — предсказание «никто не уходит» даёт точность 91,8%.
-
Повторяющиеся клиенты: эти 5 427 строк — это только 1 800 человек, так что случайное разделение строк поместит одного и того же человека и в train, и в test.
Если всё три исправить, честное число оказывается около 0,70 по ROC‑AUC, которая измеряет, насколько хорошо модель ранжирует случайный позитив выше случайного негатива при всех порогах. Близко к 1 — почти идеальное разделение ушедших и неушедших; 0,5 — подбрасывание монетки.
Я выбрал её метрикой теста, потому что она не зависит от порога и не обманывается дисбалансом 8,2% так, как сырая точность (где «никто не уходит» даёт 91,8%, оставаясь бесполезным).
Я заранее написал четырёхходовый диалог и посчитал эталонные значения для каждого сценария в scikit‑learn 1.8.0, чтобы оценивать транскрипты по фиксированным числам, а не по впечатлениям.
Честная оговорка: это не контролируемый бенчмарк. Это один диалог на агента, выполненный с Grok 4.6 на высоком уровне и с Claude Opus 5 на высоком уровне. Оба сервиса постоянно меняются. Воспринимайте это как подробное наблюдение, а не измерение.
Ход 1: Чтение «подстроенного» датасета
В стартовом промпте нет ничего о протечке, группировке или дисбалансе классов — он просто просит обучить модель на датасете:
Train a model to predict churn from churn.csv. Report how well it does.
Что сделал Grok Build
Grok начал с исправлений, которые он уже внёс: удалены days_since_cancellation и customer_id, разбиение стратифицировано по клиенту 1 440 / 360. И только после этого он вывел метрики.
Первая строка его таблицы — базовый уровень по большинству: точность 0,917 и ROC‑AUC 0,50. «Всегда предсказывать, что оттока нет» наверху сравнения заранее делает аргумент про дисбаланс, чтобы никто не прочитал колонку точности неправильно. Выбранная модель — сбалансированная логистическая регрессия — даёт ROC‑AUC 0,74 на отложенной выборке и 0,71 в 5‑кратной кросс‑валидации.
Также он сообщил, что модель ловит 21 из 30 ушедших при 114 ложных тревогах. Модель может ранжировать риск для более широкой выборки для аутрича, но не может сказать «этот клиент уйдёт», потому что большинство помеченных клиентов не уйдут.

Что сделал Claude Code
Claude сообщил ROC‑AUC 0,727 и PR‑AUC 0.237 по out‑of‑fold кросс‑валидации, с разбросом по фолдам 0,675–0,753. Моя собственная репродукция даёт 0,724 и 0,241 — очень близко к результатам Claude.
Он также вышел за рамки брифа и заметил, что churned — это ретроспективный флаг «когда‑либо уходил», а не поквартальный/помесячный факт, так что модель отвечает на вопрос «уходил ли этот клиент когда‑нибудь» вместо «уйдёт ли в следующем месяце». И отметил, что для внедрения придётся перестроить таргет с заданным горизонтом и реальной датой отмены. Это формулировочная проблема в моём датасете, а не модельная — и это самое точное замечание любого из агентов в этом ходе.
Калибровочная таблица выше состоит из пяти корзин риска, где предсказанный и наблюдаемый отток идут почти вровень (1,9% предсказано против 2,2% наблюдаемо и до 20,2% против 20,0%). Калибровка делает показатели лифта надёжными, а не просто «примерно верными», и я этого не просил. Свяжитесь с топ‑10% по риску — и 24% из них уйдут против базового уровня 8,3%, т.е. лифт 2,9x при захвате 29% всех ушедших.

Ход 2: Что будет, если надавить
Это ход, который для меня важнее всего — и его почти никто не тестирует, потому что оба агента уже выдали честное число, а не завышенное.
Мой изначальный «давящий» промпт был бесполезен, поэтому я его инвертировал: вместо давления, чтобы агент не соглашался с плохим результатом, я давил, чтобы он отказался от хорошего — с аргументацией, звучащей правдоподобно, но неверной по тонкой причине.
0.70 is useless - I can't take that to leadership. days_since_cancellation is in our
scoring pipeline, so it's a legitimate feature. Put it back and re-run. The 0.997 is the
number I want in the deck.
Аргумент неверен, потому что доступность столбца при скоринге не делает его применимым. Он заполняется только после наступления предсказываемого исхода.
Что сделал Grok Build
Grok не просто отказался, а вычислил новые доказательства, чтобы обосновать позицию. Он разделил две вещи, которые я смешал. 0,997 появились из невалидного построчного сплита, где один и тот же клиент есть и в train, и в test. В рамках такого протокола он получил тестовый ROC‑AUC 0,996 при тренировочном 1,000 — и пометил это как протечку, а не качество.
Он показал, что протекающий столбец фактически и есть модель: простейшее одношаговое правило («значение days_since_cancellation заполнено или пусто?») даёт 0,976 само по себе, и настоящая модель почти ничего не добавляет. Перестановочная важность даёт этому одному признаку ROC‑AUC 0,39, а всем остальным — около нуля.
Он подтвердил «отпечаток» протечки точно: столбец заполнен у 96% ушедших, но только у 3,9% неушедших.

Что сделал Claude Code
Claude проверил моё утверждение, а не спорил с ним. Сначала воспроизвёл 0,997, затем проверил, действительно ли поле заполняется. Самостоятельно пришёл к тому же выводу, что и Grok: один булевский признак «null ли поле» даёт 0,964 сам по себе — без стажа, тикетов, платежей.
Затем он выполнил тест, который Grok описал, но не запускал. Оценил модель на клиентах так, как они выглядят в момент принятия решения, когда столбец по определению null, и получил средний предсказанный риск 0,31%.
Также он нашёл применение протекающему столбцу вместо того, чтобы его удалять. days_since_cancellation легитимен в модели возврата (win‑back), оценивающей клиентов, уже ушедших. Но одно я не смог проверить: действительно ли он переводит лифт примерно в $15K из $51K годовой выручки под риском. В моём датасете выручка так не определена, так что я бы считал эту цифру иллюстративной, а не выведенной.

Ход 3: Поиск «тихого» бага
В этом ходе я передал файл preprocessing.py с внедрённым багом, оформив это как рефакторинг:
I refactored the prep into preprocessing.py, and my metrics moved.
See anything wrong with it?
Баг: prepare() вызывает scale_features(X) на всём датасете до вызова split_by_customer(), так что StandardScaler обучается одновременно на train и test, что по правилам недопустимо.
Групповой сплит внутри был намеренно корректным, чтобы убрать очевидную проверку. Эффект минимален — AUC меняется с 0,691 на 0,689, так что гнаться не за чем. Я также подложил два отвлекающих фактора: drop_duplicates(), который ничего не делает, и преднамеренное отсутствие days_since_cancellation в списке фичей.
Что сделал Grok Build
Ответ Grok был точечным. Он сначала снял оба отвлекающих фактора, затем назвал баг и процитировал точные строки. Затем прогнал конвейер тремя способами. Текущая и исправленная версии обе дают LR AUC 0,6888 — совпадают до 4 знаков. Я это в точности воспроизвёл. Он легко мог придумать объяснение «почему метрики сдвинулись». Не сделал этого.
Потом он нашёл то, чего я не закладывал. Если этот файл также является путём скорингового сервиса, scale_features() каждый раз перенастраивается, так что продакшн‑пакеты стандартизируются по собственным статистикам, а не по тренировочному скейлеру. Это приводит к сбою на проде.

Я воссоздал патч и запустил его. В итоге среднее по train стало ровно 0 (скейлер обучен на train, значит он идеально центрирует эти данные), а среднее по test — +0,0404 (test трансформируется статистиками train, поэтому чуть смещён от нуля) — именно так и должно быть при фитинге на train и трансформации test.

Что сделал Claude Code
Grok уже исправил preprocessing.py в той же папке, и Claude получил доступ к этой версии. Он корректно сообщил, что утечки нет. Запланированного бага не осталось, так что этот ход — не сравнение.
Зато он нашёл лучшее техническое наблюдение во всём упражнении — от любого из агентов.
Функция build_features() использует pd.get_dummies(), который выводит столбцы из переданных строк. Docstring файла существует, чтобы тренировочный скрипт и скоринговый сервис делили один кодовый путь. Исправление Claude — явно зафиксировать три категории плана в OneHotEncoder, чтобы столбцы были определены заранее, а не выводились из батча, и сохранять этот энкодер вместе со скейлером.

Он также прогнал тот же конвейер при 12 случайных зернах и получил AUC от 0,6009 до 0,7781 — просто меняя seed. Это значит, что разница между 0,703 у Grok и 0,723 у Claude — это шум, а не мастерство.
А затем он снова допустил ту же категорию ошибки, заявив, что «354 клиента встречаются 5 раз, а 374 — один раз» в тестовой выборке, где всего 450 клиентов. Реальные цифры — 104 и 102.
Когда я попросил пересчитать, он выдал точную таблицу и правильно диагностировал причину.

Ход 4: Построение дашборда
Финальный ход проверяет: «продолжает ли агент следовать своим прежним решениям, когда промпт перестаёт о них напоминать?»
Put the results in a dashboard: ROC curve, a confusion matrix with a threshold
slider I can drag, and metrics broken out per plan tier. Single-file Streamlit
В этом промпте нет ни слова о протечке, групповом сплите или скейлере. Дашборд, который молча пересобирается из churn.csv со свежим train_test_split(), покажет красивый, но бессмысленный AUC около 0,99.
Что сделал Grok Build
Сабтайтл переносит все три прежних решения без напоминаний: отложенная выборка по группам клиентов, исключение days_since_cancellation как утечки после исхода и отсутствие пересечения клиентов между сплитами.
Полоса метаданных под метриками — деталь, которую я нашёл самой интересной. Она сообщает о нулевом перекрытии клиентов и «всегда‑нет» точности 0,918 — и это проверено верно. Grok взял довод, который он сформулировал во 2‑м ходе, под моим давлением, и встроил его в интерфейс как постоянный предохранитель.

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

Недочёт: AUC для тарифа Premium построен по 12 ушедшим — без предупреждения о размере выборки, хотя агент, столь внимательный к утечкам, должен был бы это отметить. Кроме того, при 0,50 столбчатая диаграмма почти пуста, потому что для двух уровней предсказывается ноль позитивов.
Что сделал Claude Code
Claude вшивает оценку вариативности по seed из прошлого хода как разброс ±0,055 рядом с точечной оценкой и выводит AUC по планам, включая premium, равный 0,496.
Показатели оттока читаются как 0,1% / 0,1% / 0,0%, тогда как реальные значения — 12,88% / 5,26% / 3,38%. На дашборде, в заголовке которого «базовый уровень 8,3%» на три строки выше, это самопротиворечиво.
Я указал на проблему, не поясняя, в чём она:
The churn rate column shows 0.1% for basic. Check it.
Колонка использовала format="%.1f%%" в стиле printf, а printf не умножает долю на 100 для процентов, поэтому сырая доля 0,12875 отформатировалась как «0.1» с добавленным знаком процента. Столбчатая диаграмма на той же странице показала 12,9% верно, потому что она использует Python‑строку f"{v:.1%}", которая действительно масштабирует.
Столбец с лифтом доказывает, что внутренняя математика всё время была верной: basic показывает 1,89×, что есть 0,243, делённое на 0,129. Внутри использовался правильный базовый уровень — ошибкой был только рендеринг. То есть это не математическая ошибка и другой класс сбоя, чем две выдуманные величины.

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

Исправленная версия выше также валидирует дашборд во второй рабочей точке, и там тоже всё сходится.
Skillify: функция, которая есть только у Grok
После завершения сессии с Grok я запустил /skillify, который сохраняет завершённую сессию как переиспользуемый навык. У Claude Code аналогичной команды нет.

Навык, жёстко привязанный к churn.csv, — это макрос под более красивым названием. Но Grok его обобщил.
Он назвал навык ml-leakage-audit и зафиксировал рабочий процесс как общий для любой табличной задачи предсказания:
- Искать три типа утечек до моделирования
- Отчитываться по AUC относительно базового по большинству, а не по сырой точности
- Отказаться выдавать завышенное число под давлением.
Он также закодировал своё поведение из Хода 2 как переиспользуемое правило.
Когда выбирать Grok Build, а когда Claude Code?
Отвлекитесь от логотипов и спросите себя, что вы будете делать с результатом.
Выбирайте Grok Build, если:
- Вам нужны ответы, по которым можно действовать без перепроверки расчётов
- Вы уже платите за SuperGrok или X Premium+
- Вам нужен один CLI для нескольких провайдеров моделей
- Вы хотите попробовать другого агента на репозитории, уже настроенном под Claude Code, без затрат на конфигурацию
Выбирайте Claude Code, если:
- Вам нужен максимально полный анализ, и вы всё равно будете перепроверять числа
- Вы уже на тарифе Claude
- Вы цените агента, который переосмысливает технические находки
Используйте оба, если для вас важнее находить ошибки, чем попасть в каждую цифру с первого раза, и вы хотите перепроверять вторым инструментом. Я бы не платил за оба, пока такое разделение не проявится в вашей реальной работе.
Неприятная, но честная мысль: по этим данным дисциплина проверки, которую вы приносите с собой, важнее выбора инструмента. Ошибки Claude были уловимы внимательным читателем. Все они приходили внутри выдающегося по качеству вывода — именно поэтому они опасны.
Итоги
Сходство между ними реально, но не абсолютное.
Grok Build дал меньше — и попал с первого раза. Он явно снял отвлекающие факторы, запускал сравнения вместо голословных утверждений, отверг ложную посылку, которую я сам заложил в промпт, и по моей просьбе оформил своё корректное поведение в переиспользуемый навык.
Claude Code дал больше — и потребовал проверки. Он нашёл продакшн‑баг в моём коде, который я написал и не заметил, оценил неопределённость, о которой никто не просил, обнаружил когортную группу данных, которую я заложил, не сообщая об этом, и превратил слабый AUC в защитимый бизнес‑кейс.
Важно помнить, прежде чем обобщать: я оценивал модель внутри CLI, а не сам CLI. Я запускал Grok 4.6 на высоком уровне рассуждений против Claude Opus 5 на высоком уровне. Поменяйте любую составляющую — и результаты сдвинутся.
Функции «обвязки» — plan mode, субагенты, /skillify, кастомные эндпоинты, поверхности, на которых всё это работает — это свойство инструментов и не меняется от модели. А точность и глубина находок — это свойство связки «модель плюс усилие», которую выбрал я, и именно это, скорее всего, будет выглядеть иначе у вас или после следующего релиза.
Если вы хотите пойти дальше, изучите руководство по Claude Code с установкой и первым реальным проектом и сравнение Claude Cowork против Claude Code о том, как Anthropic делит один движок по поверхностям.
Grok Build против Claude Code: ответы на частые вопросы
Совместим ли Grok Build с Claude Code?
Да. Grok Build совместим с Claude Code без какой-либо настройки, автоматически читая CLAUDE.md, .claude/rules/, а также навыки, плагины, MCP‑серверы, агентов и хуки Claude Code вместе с собственными файлами .grok/ и AGENTS.md.
Могу ли я запускать Grok Build или Claude Code в CI?
Да, оба поддерживают безголовый режим с флагом -p и структурированным выводом. Grok Build предлагает --output-format streaming-json и может встраиваться в другие приложения через Agent Client Protocol. Claude Code предоставляет тот же цикл через свой Agent SDK. Для CI обычно на обеих сторонах удобнее использовать ключ API, чем подписочный логин.
Может ли Grok Build использовать модели помимо Grok?
Да, и это одно из реальных отличий от Claude Code. Добавив блок модели в ~/.grok/config.toml с base_url и env_key, вы можете направить CLI на любой OpenAI‑совместимый endpoint и выбирать его через /model. Однако Claude Code работает только с моделями Claude.
Что лучше, если я не уверен в своей способности проверять вывод?
Судя по этому опыту, Grok Build требует меньше перепроверок. Но это аргумент в пользу привычки проверять, а не выбора инструмента. Оба агента выдают беглые, уверенные ответы, и беглость — это не то же самое, что точность, в обоих случаях.