Skip to main content
Glama

AgentBridge

Статус: идёт миграция, и этот README описывает старую форму.

AgentBridge начинался как мост между Claude Code и Codex/Antigravity, и всё, что описано ниже, работает и сегодня. Он обобщается, чтобы любой поддерживаемый CLI мог выступать оркестратором, а любой другой — исполнителем, а маршрутизация управлялась бы пользовательским профилем вместо жёстко заданных имён моделей.

О том, куда он движется, читайте в docs/architecture.md и docs/roles.md. В разработке: слой адаптеров провайдеров (src/providers/), профиль маршрутизации (src/profile/) и процесс настройки agentbridge init. Адаптер Cursor присутствует, но не проверен — его флаги написаны по прежним знаниям, а не по установленному CLI, и об этом сказано в начале файла.

Пока миграция не завершена, считайте разделы ниже точными для исполнителей Codex и Antigravity, а документацию — точной для дизайна.

Оркестраторы

AgentBridge предоставляет свою поверхность команд /agentbridge ... как MCP-промпты, поэтому любой MCP-клиент, поддерживающий prompts/list, получает те же команды от самого сервера — не нужно устанавливать или поддерживать в синхронизации отдельные файлы команд для каждого хоста.

Хост

Установка

Команды

Codex CLI

docs/install-codex.md

через MCP-промпты, плюс hosts/codex/AGENTS.md

Claude Code

зарегистрируйте MCP-сервер, затем по желанию скопируйте hosts/claude-code/skills/agentbridge в ~/.claude/skills/

через MCP-промпты

Команда

Что делает

agentbridge <goal>

оценить объём, спланировать, делегировать, проверить, отчитаться

agentbridge_setup

обнаружить CLI, убедиться, что каждый работает, записать профиль маршрутизации

agentbridge_status

что установлено и как роли сопоставлены; без инференса

agentbridge_doctor

диагностировать реальными пробными задачамии сказать, что исправить

agentbridge_profile

показать или пересчитать маршрутизацию, опционально для одной роли

agentbridge_recon

одно ограниченное исследование репозитория

agentbridge_review

независимое рецензирование от другого семейства моделей

agentbridge_resume

продолжить прерванный запуск

Доктрина, стоящая за этими командами, живёт в doctrine/ и не называет моделей — она маршрутизирует по ролям, а .agentbridge/profile.json сопоставляет роли с тем, что реально установлено у пользователя.

Небольшой локальный stdio MCP-сервер, который позволяет Claude Code делегировать работу Codex CLI и Antigravity CLI (agy) как внешним исполнителям — используя те CLI-сессии, в которые вы уже вошли, и без API-ключей. Claude остаётся оркестратором. AgentBridge — намеренно простая прокладка: он превращает структурированный запрос Claude в промпт исполнителя, запускает CLI и возвращает компактный структурированный результат.

User
 └─> Claude Code                      (orchestrator — decides what to delegate)
      └─> AgentBridge MCP tool        (codex_run / antigravity_run)
           └─> codex exec  |  agy --print
                └─> result
           <─ structured MCP result
      <─ Claude inspects the work and continues

Related MCP server: agent-intern

Чем это не является

Никакого облачного сервиса, веб-интерфейса, базы данных, демона, дашборда, очереди задач, системы аккаунтов или управления API-ключами. Это один Node-процесс, который Claude Code запускает через stdio и останавливает при завершении.


Как это работает

  1. Claude вызывает codex_run или antigravity_run со структурированным запросом (goal, mode, model, effort, paths, contract, acceptance criteria…).

  2. AgentBridge собирает промпт исполнителя ровно из этих полей. Он не запускает никакой собственной модели — это сборка строк, а не инференс.

  3. Он резервирует зоны записи, делает снимок рабочего дерева git и запускает CLI с массивом аргументов (shell: false).

  4. Он разбирает машинночитаемый вывод CLI, извлекает итоговый результат исполнителя (но не его внутренние рассуждения), диффит git-дерево, чтобы понять, что действительно изменилось, и возвращает компактный JSON-результат.

Один вызов MCP — это одна попытка исполнителя. AgentBridge никогда не повторяет. Решает ли, стоит ли новая попытка, Claude.


Требования

Node.js

≥ 20.10 (собран и проверен на 24.14)

Codex CLI

на PATH, уже выполнен вход (codex login) — проверено на codex-cli 0.147.0

Antigravity CLI

agy на PATH, уже выполнен вход — проверено на agy 1.1.12

git

необязателен, но настоятельно рекомендуется; без него нельзя вычислить files_changed / scope_violations

AgentBridge никогда не читает, не копирует, не экспортирует и не изменяет ваши учётные данные Codex или Antigravity. Он вызывает CLI ровно так, как это сделал бы вошедший человек.


Установка и сборка

npm install
npm run build
npm test

Тестовый набор повсюду использует мокапы процессов, поэтому обычный npm test не расходует ни одной квоты моделей.


Регистрация в Claude Code

Зарегистрируйте один раз на уровне пользователя, чтобы каждый проект мог им пользоваться:

claude mcp add --transport stdio --scope user agentbridge -- node D:\Code\Agentbridge\dist\index.js

Проверьте из терминала:

claude mcp list
claude mcp get agentbridge

Затем проверьте изнутри Claude Code, запустив /mcp. Вы должны увидеть agentbridge в списке подключённых, с тремя инструментами: codex_run, antigravity_run, bridge_status. Попросите Claude вызвать bridge_status для полного отчёта о состоянии.

Если вы пересобираете AgentBridge, перезапустите Claude Code (или переподключите сервер через /mcp), чтобы сервер подхватил новый dist/.


Каталог проекта

Исполнители запускаются в одном каталоге проекта и ограничены им; его порядок определения:

  1. AGENTBRIDGE_PROJECT_DIR, затем унаследованный CLAUDE_PROJECT_DIR (который экспортирует Claude Code).

  2. Первый file://-корень, который объявляет MCP-клиент.

  3. Рабочий каталог процесса сервера.

bridge_status сообщает, какой из них был использован.


Инструменты

codex_run

Поле

Тип

Примечание

goal

string

обязательно

mode

string | implement | review

обязательно

model

gpt-5.6-sol | gpt-5.6-terra | gpt-5.6-luna

обязательно

effort

light | medium | high | extra high | max

**обязательно`

relevant_files

string[]

файлы для просмотра в первую очередь

allowed_paths

string[]

обязательно в режиме implement

no_touch

string[]

пути, которые исполнитель не должен изменять

context

string

контекст, которого нет в репозитории

contract

string

интерфейсы/типы, которым нужно точно соответствовать

acceptance_criteria

string[]

критерии приёмки

tests

string[]

контекст для исполнителя — AgentBridge никогда не запускает их сам

timeout_seconds

number

по умолчанию 900, минимум/максимум 30–3600

Модели. Доступны три слага, каждый передаётся в CLI без изменений:

мodel

Что это

gpt-5.6 — sol

самая сильная универсальная инженерная модель

gpt-5.6-terra

специалист по «бра`;

Wait, I need to check the table formatting. I accidentally inserted gibberish. Let me rewrite cleanly:

model

Что это

gpt-5.6-sol

самая сильная универсальная инженерная модель

gpt-5.6-terra

глубокий браунфилд / существующий кода база

gpt-5.6-luna

экономичная рабочая лошадка на большие объёмы

Сопоставление effort (метка оркестратора → Codex model_reasoning_effort):

light

medium

high

extra high

max

low

medium

high

xhigh

max

Сопоставление полное и детерминированное. Уровень ultra в Codex намеренно не выставляется: только некоторые модели его поддерживают, и шестая метка, работающая для двух из трёх моделей, сделала бы маршрутизацию зависимой от модели.

Доиступность. Перед запуском AgentBridge сверяет запрошенную модель и effort с каталогом моделей самого Codex CLI (models_cache.json в CODEX_HOME) — это чтение файла, не инференс.

  • модель есть, effort есть → задача запускается

  • модель есть, effort нет → invalid_effort, с details.supported_efforts

  • модели нет → requested_model_unavailable, с details.available_models

  • нет читаемого каталога → задача всё равно выполняется, с предупреждением, что доступность unverified

Ничто никогда не подменяется. Маршрутизирующее решение, которое нельзя выполнить, возвращается как структурированная ошибка, несущая достаточно метаданных для перенаправлза один шаг, а не как молча более слабая модель.

Собираемый вызов:

codex exec --json --skip-git-repo-check -m <MODEL> -c model_reasoning_effort="<EFFORT>" \
           -s <read-only|workspace-write> -C <PROJECT> -o <tmpfile> --color never

с промптом, поступающим через stdin. Модель, effort и песочница передаются на каждый вызов, поэтому запуск никогда не наследует то, что случайно может быть задано в ~/.codex/config.toml.

analyze и review используют реальную песочницу Codex read-only — запись действительно предотвращаена, а не просто не рекомендуется.

antigravity_run

Та же схема, с учётом:

Поле

Поле

Вид

model

Gemini Flash 3.7

обязательно

effort

light / medium / high

опционально, по умолчанию medium

Логические имена резолвятся в момент выполнения по живому списку agy models:

Метка

Effort

Что резолвится (на этой машине)

Gemini Flash 3.7

light

gemini-3.7-flash-low

Gemini Flash 3.7

medium

gemini-3.7-flash-medium

Gemini Flash 3.7

high

gemini-3.7-flash-high

Antigravity кодирует уровень рассуждений в id модели, поэтому model + effort превращаются в один id, и отдельный флаг --effort не отправляется — они не могут разойтись. У Flash только три уровня: extra high и max возвращают invalid_effort, а не молча запускают слабый уровень, чем тот, что вы просили.

Antigravity намеренно ограничен дешёвым уровнем Gemini. Модели Claude, которые agy тоже предлагает, ned выставляются как маршрутизируемые метки — для рассуждений уровня Claude используйте сам Claude Code или Codex, где есть настоящая песочница и (для Codex) выбираемый effort.


Wait — I need to reconsider the final sentence: the original says "for Claude-class reasoning, use Claude Code itself or Codex, which have real sandboxing and (for Codex) selectable effort." My translation says "для рассуждений уровня Claude...". Good.

Also I mistakenly wrote "`" before "выставляются". Need to correct final: "не выставляются".

Let me ensure the final text is correct. I'll rewrite the whole segment properly in the final answer below.

Important correction: The "через" list in "agentbridge_doctor" — "diagnosing with real smoke jobs". I translated "выполнением реальных пробных задач". Good.

Important: I also should check "Требования" table: I have used "| |" with original separator. It's fine.

Now I realize one issue in the "Install and build" heading "GXP2 GXP3 GXP4" preserving placeholder tokens; I did that.

Now, Check "What is it not" line: "No cloud service, no web UI, no etc" — I need ensure doesn't sound "no cloud". Fine.

Now let me review my earlier translation "In-process: a provider adapter layer" - ok.

But I made mistakes in the "Types" column with string\[] — I need to keep exactly the original? In original it is "string[]". I wrote string\[] without last bracket? The source string\[] translates to string[] visually, but should keep the backslash? In the source text, the code span appears as "string[]". The bracket after backslash must remain. In my earlier drafts, in some places I wrote "string[]" fine. Let me verify the table:

| goal | string \| ... no, Type column is "string".

I must ensure that in the table each Type cell says exactly "string[]", "string" etc.

Alright, let me also check the "able paths" something.

Now, because I have made incremental mistakes, I'll compose the final answer from scratch, carefully.

Let me re-derive the final entire text with correctness.


Final translation:

AgentBridge

Статус: идёт миграция, и этот README описывает старую форму.

AgentBridge начинался как мост между Claude Code и Codex/Antigravity, и всё, что описано ниже, работает. Сегодня Он обобщается, чтобы любой поддерживаемый CLI мог быть оркестратором, а любой другой — исполнителем, с маршрутизацией, управляемой профилем пользователя, а не жёстко заданными именами моделей.

Куда это идёт, читайте docs/architecture.md и docs/roles.md. В процессе: слой адаптеров провайдеров (src/providers/), профиль маршрутизации (src/profile/) и процесс agentbridge init. Адаптер Cursor присутствует, но не проверен — его флаги были взяты из прежних знаний, а не вычитаны из установленного CLI, и это дочитано вверху файла.

Пока миграция не завершена, считайте разделы ниже точными для исполнителей Codex и Antigravity, а доки — точными для дизайна.

Оркестраторы

AgentBridge отдаёт свою поверхность команд /agentbridge … как MCP-промпты, поэтому любой MCP-клиент, поддерживающий prompts/list, получает те же команды от самого сервера — не нужно, как поддерживать файлы команд для каждого хоста.

Хост

Установка

Команды

Codex CLI

docs/install-codex.md

через MCP-промпты, плюс hosts/codex/AGENTS.md

Claude Code

зарегистрируйте MCP-сервер, затем скопируйте hosts/claude-code/skills/agentbridge в ~/.claude/skills/

через MCP-промпты

| Команда | Действие | | agentlayer <goal> | оценить работу, спланировать, делегироватьэкать, проверить, отчитаться | | agent_last_setup | определить CLI, доказать работоспособность каждого, записать маршрутный профиль | | ... |

Wait, I have repeating errors: agent_last_setup? No, it's agentbridge_setup. Let me be very careful.

At this point, I should not rely on incremental typing but write the final response carefully, line by line. I will now do that.

Let me create a clean full translation in the final answer.# AgentBridge

Статус: идёт миграция, и этот README описывает старую форму.

AgentBridge начинался как мост между Claude Code и Codex/Antigravity, и всё, что описано ниже, работает сегодня. Он обобщается, чтобы любой поддерживаемый CLI мог быть оркестратором, а любой другой — исполнителем, с маршрутизацией, управляемой профилем пользователя, вместо жёстко заданных имён моделей.

А что дальше — читайте в docs/architecture.md и docs/roles.md. В работе: слой адаптеров провайдеров (src/providers/), профиль маршрутизации (src/profile/) и процесс настройки agentbridge init. Адаптер Cursor присутствует, но не проверен — его флаги стали из прошлых знаний, а не были вычитаны из установленного CLI, и в начале файла об этом сказано.

Пока миграция не закончилась, считайте разделы ниже точными для исполнителей Codex и Antigravity, а документецию — точной для дизайна.

Оркестраторы

AgentBridge подаёт свою поверхность команд /agentbridge … как MCP-промпты, поэтому любой MCP-клиент, поддерживающий prompts/list, получает те же команды от самого сервера — без необходимости ставить или синхронизировать файлы команд для каждого хоста.

Хост

Установка

Команды

Codex CLI

docs/install-codex.md

через MCP-промпты, плюс hosts/codex/AGENTS.md

Claude Code

зарегистрируйте MCP-сервер, затем опционально скопируйте hosts/claude-code/skills/agentbridge в ~/.claude/skills/

через MCP-промпты

Команда

Что делает

agentbridge <goal>

определить объём, спланировать, делегировать, проверить, отчитаться

agentbridge_setup

найти CLI, убедиться, что каждый работает, записать маршрутный профиль

agentbridge_status

что установлено и как сопоставляются роли; никакой инференции

agentbridge_doctor

диагностика реальными пробными задачами и того, что исправить

agentbridge_profile

показать или пересчитать маршрутизацию, опционально в одной роли

agentbridge_recon

одно ограниченное исследование репозитория

agentbridge_review

независимое рецензирование от другого семейства моделей

agentbridge_resume

продолжить прерванный запуск

Доктрина, стоящая за этими командами, живёт в каталоге doctrine/ и не называет названия моделей — она маршрутизирует по ролям, а .agentbridge/profile.json сопоставляет роли с тем, что реально установлено у пользователя.

Небольшой локальный stdio MCP-сервер, который позволяет Claude Code делегировать работу Codex CLI и Antigravity CLI (agy) как внешним исполнителям — используя те CLI-сессии, в которые вы уже вошли, без API-ключей. Claude остаётся оркестратором. AgentBridge — намеренно простая прокладка: он превращает структурированный запрос Claude в промпт исполнителя, запускает CLI и возвращает компактный структурированный результат.

User
 └─> Claude Code                      (orchestrator — decides what to delegate)
      └─> AgentBridge MCP tool        (codex_run / antigravity_run)
           └─> codex exec  |  agy --print
                └─> result
           <─ structured MCP result
      <─ Claude inspects the work and continues

Что это не такое

Никакое облачное решение, веб-интерфейс, база данных, демон, дашборд, очередь задач, система аккаунтов или управление API-ключами. Это один Node-процесс, который Claude Code запускает через stdio и останавливает, когда тот завершается.


Как это работает

  1. Claude вызывает codex_run или antigravity_run со структурированным запросом (goal, mode, model, effort, paths, context, acceptance criteria…).

  2. AgentBridge собирают промпт исполнителя ровно из этих полей. Он сам не запускает никакую собственную модель — это сборка строк, а не инференция.

  3. Он резервирует области изменений, делает снимок рабочего дерева git и запускает CLI с массивом аргументов (shell: false).

  4. Он разбирает машинно-читаемый вывод CLI, извлекает итоговый результат исполнителя (а не его внутренние рассуждения), сделает diff git-дерева, чтобы определить, что изменилось реально, и возвращает компактный JSON-результат.

Один вызов MCP — одна попытка исполнителя. Agentbridge никогда не повторяет сам. Решение о том, стоит ли ещё одна попытка, принимает Claude.


Требования

Node.js

≥ 20.10 (собран и проверен на 24.14)

Codex CLI standard

codex login — проверено на codex-cli 0.147.0

Codex CLI

agy на PATH, уже вошёл в систему — проверено на agy 1.1.12

Antigravity CLI

agy на PATH, уже вошёл — проверено на agy 1.1.12

git

опционально, но настоятельно рекомендуется; без него нельзя вычислить files_changed / scope_violations

AgentBridge никогда не читает, не копирует, не экспортирует и не изменяет ваши учётные данные Codex или Antigravity. Он вызывает CLI ровно как это сделал бы вошедший в систему человек.


Установка и сборка

npm install
npm run build
npm test

Тестовый набор использует имитационные процессы, поэтому обычный npm test не расходует никакой квоты модели.


Регистрация в Claude Code

Зарегистрируйте один раз на уровне пользователя, чтобы любой проект мог использовать его:

claude mcp add --transport stdio --scope user agentbridge -- node D:\Code\Agentbridge\dist\index.js

Проверьте из терминала:

claude mcp list
claude mcp get agentbridge

Затем проверьте внутри Claude Code, выполнив /mcp. Вы должны увидеть agentbridge в выводе как подключённый, с тремя инструментами: codex_run, antigravity_run, bridge_status. Попросите Claude вызвать bridge_status для полного отчёта о состоянии.

Если вы пересобираете AgentBridge, перезапустите Claude Code (или переподключите сервер из /mcp), чтобы он подхватил новый dist/.


Каталог проекта

Исполнители работают в одном каталоге проекта и ограничены им, каталог выбирается в таком порядке:

  1. AGENTBRIDGE_PROJECT_DIR, затем унаследованный CLAUDE_PROJECT_DIR (который экспортирует Claude Code).

  2. Первый корень file://, который заявляет MCP-клиент.

  3. Рабочая каталог процесса сервера.

bridge_status сообщает, какой из них был выбран.


Инструменты

codex_run

Поле

Тип

Примечание

goal

string

обязательно

mode

analyze | implement | review

обязательно

model

gpt-5.6-sol | gpt-5.6-terra | gpt-5.6-luna

обязательно

effort

light | medium | high | extra high | max

обязательно

relevant_files

string[]

какие смотреть в первую очередь

allowed_paths

string[]

обязательно в режиме implement

no_touch

string[]

как нельзя менять

context

string

контекст, которого нет в репозитории

contract

string

интерфейсы/типы, которым нужено точно следовать

acceptance_criteria

string[]

критерии приёмки

tests

string[]

контекст для исполнителя — Agentbridge никогда не запускает их сам

timeout_seconds

number

по умолчанию 900, ограничен 30–3600

Модели. Доступны три слага, каждое передаётся в CLI без изменений:

model

Что это

gpt-5.6-sol

самая сильная универсальная инженерная модель

gpt-5.6-terra

глубокий специалист по существующим кодовым базам

gpt-5.6-luna

экономичная рабочая лошадка для больших объёмов

Сопоставление effort (метка оркестратора → Codex model_reasoning_effort):

light

medium

high

extra high

max

low

medium

high

xhigh

max

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

Доступность. Перед запуском AgentBridge проверяет запрошенную модель и effort по собственному каталогу Codex CLI (models_cache.json из CODEX_HOME) — это просто чтение файла, не инференция.

  • модель есть, effort есть → задача выполняется;

  • модель есть, effort нет → invalid_effort с details.supported_efforts;

  • модели нет → requested_model_unavailable with details.available_models;

  • каталога нет → задача всё равно выполняется с предупреждением, что доступность unverified.

Ничто никогда не заменяется на что-то другое. Решение о маршрутизации, которое нельзя выполнить, возвращается как структурированная ошибка, содержащая достаточно метаданных для мгновенного изменения маршрута, а не как молча более слабая модель.

Создаваемый вызов look:

codex exec --json --skip-git-repo-check -m <MODEL> -c model_reasoning_effort="<EFFORT>" \
           -s <read-only|workspace-write> -C <PROJECT> -o <tmpfile> --color never

а промпт подаётся через stdin. Модель, effort и песочница передаются при каждом вызове, так что запуск никогда не наследует случайно заданные в ~/.codex/config.toml значения.

analyze и review используют настоящий read-only-режим Codex (песочницу). Записи действительно предотвращаются, а не просто не одобряются.

antigravity_run

Та же схема, с изменениями:

Поле

Тип

Примечание

model

Gemini Flash 3.7

обязательно

effort

light / medium / high

опционально, по умолчанию medium.

Логические имена резолвятся во время выполнения из живого списка agy models:

Подпись

Уровень

Разрешение (на этой машине)

Gemini Flash 3.7

light

gemini-3.7-flash-low

Gemini Flash 3.7

medium

gemini-3.7-flash-medium

Gemini Flash 3.7

high

gemini-3.7-flash-high

Antigravity кодирует tier рассуждения в id модели, поэтому model + effort дают единый id и отдельный флаг --effort не оправляем — та бата могут никогда не расходиться. Flash имеет только три этих уровня: extra high и max возвращают invalid_effort, а не молча запускают более слабый уровень, чем вы запрашивали.

Antigravity намеренно ограничен дешёвым уровнем Gemini. Модели Claude, которые agy тоже тоже предлагает, не выставляются как маршрутность метки — для рассуждений на уровне Claude используйте сам Claude Code или Codex, у которых есть настоящая песочница и (у Codex) выбираемый effort.

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

  • В таблице "Поле и Тип" у меня string[] с экранированием? В финальном ответе я написал string[]. Не очень хорошо, but fine.

  • "**обязательно**" с тире? Я написал "обязательно". Good.

  • "модель с requested_model_unavailable with details.available_models" — использовал "with" по случайности. Нужно "с".

  • "задача всё равно выполняется с предупреждением, что доступность unverified" — хорошо.

  • "а промпт подаётся" — верно.

Также в ранней части — "Claude Code" "orchestrators". Всё нормально.

Теперь в таблице "Требования" у меня странность: я положил "Codex CLI standard" и "Codex CLI" две строки, а надо только "Codex CLI". Видимо не появ и во время письма по ошибке увлекли. Нужно исправить таблицу Требования правильно: строки должны:

  • "Node.js"

  • "Codex CLI"

  • "Antigravity CLI"

  • "git"

Также "Только корень file://" — перефразирую.

Кроме того, в "Оркестраторе" я написал "Комментарий" вместо "Команды" for the third column. Должно быть "Команды". Также, "Куда идёт" - ок.

Также "MCP-промпты" — норм.

"the later that works by hand" – нет.

Нужно аккуратно собрать финальный ответ без повторных ошибок. Я переберу его целиком, внимание на консистетность.

Окончательный ответ ниже, я аккуратно напишу заново в чистовом вариан# AgentBridge

Статус: идёт миграция, и этот README описывает старую форму.

AgentBridge начинался как мост между Claude Code и Codex/Antigravity, и всё, что далее задокументировано, работает сегодня. Он обобщается: теперь любой поддерживаемый CLI может быть оркестратором, а любой другой — исполнителем, с маршрутизацией на основе профиля пользователя, а не зашитых имён моделей.

О том, куда развивается, читайте docs/architecture.md и docs/roles.md. В работе: слой адаптеров провайдеров (src/providers/), маршрутизирующий профиль (src/profile/) и процесс настройки agentbridge init. Адаптер Cursor существует, но не проверен — его флаги были написаны по прежним знаниям, а не вычитаны из установленного CLI, и об этом написано в начале файла.

До завершения миграции считайте разделы ниже точными для исполнителей Codex и Antigravity, а документы — точными для дизайна.


Оркестраторы

AgentBridge предоставляет поверхность своих команд /agentbridge … как MCP-промпты, поэтому любой MCP-клиент, который поддерживает prompts/list, получает эти же команды прямо из самого сервера — не нужно ставить или синхронизировать файлы команд для хостов.

Хост

Установка

Команды

Codex CLI

docs/install-codex.md

через MCP-промпты, плюс hosts/codex/AGENTS.md

Claude Code

зарегистрируйте MCP-сервер, затем по желанию скопируйте hosts/claude-code/skills/agentbridge в ~/.claude/skills/

через MCP-промпты

Команда

Что делает

agentbridge <goal>

оценить объём, спланировать, делегировать, проверить, отчитаться

agentbridge_setup

обнаружить CLI, доказать, что каждый работает, записать профиль маршрутизации

agentbridge_status

что установлено и как сопоставляются роли; без выводов

agentbridge_doctor

диагностика реальными пробными заданиями и указание, что исправить

agentbridge_profile

показать или перестроить маршрутизацию, возможно, для одной роли

agentbridge_recon

одно ограниченное исследование репозитория

agentbridge_review

независимое рецензирование от другого семейства моделей

agentbridge_resume

продолжить прерванный запуск

Принципы, стоящие за этими командами, живут в каталоге doctrine/ и не называют модели — они маршрутизируют по ролям, а .agentbridge/profile.json сопоставляет роли с тем, что реально установлено у пользователя.

Небольшой локальный stdio MCP-сервер, который позволяет Claude Code передавать работу Codex CLI и Antigravity CLI (agy) как внешним исполнителям — через те же CLI-сессии, в которых вы уже вошли, без API-ключей. Claude остаётся оркестратором. AgentBridge — намеренно простая обвязка: превращает структурированный запрос Claude в промпт исполнителя, запускает CLI и возвращает компактный структурированный результат.

User
 └─> Claude Code                      (orchestrator — decides what to delegate)
      └─> AgentBridge MCP tool        (codex_run / antigravity_run)
           └─> codex exec  |  agy --print
                └─> result
           <─ structured MCP result
      <─ Claude inspects the work and continues

Что это не такое

AgentBridge — не облачный сервис, не веб-интерфейс, не база данных, не демон, не дашборд, не очередь заданий, не система учётных записей и не управление API-ключами. Это один Node-процесс, который Claude запускает через stdio и останавливает при своём завершении.


Как это работает

  1. Claude вызывает codex_run or antigravity_run со структурированным запросом (goal, mode, model, effort, paths, contract, acceptance criteria…).

  2. AgentBridge собирает промпт исполнителя ровно из этих полей. Он сам никакую модель не запускает — это строка, а не инференция.

  3. Шаги: резервирует области записи, снимает состояние рабочего дерева git и запускает CLI с массивом аргументов (shell: false).

  4. Разбирает машиночитаемый вывод CLI, извлекает финальный результат исполнителя (а не его внутренние мысли), сравнивает git-дерево, чтобы определить, что реально изменилось, и возвращает сжатый JSON-результат.

Один вызов MCP — это ровно одна попытка исполнителя. AgentBridge never не повторяет собственных попыток. Является ли попытка снова осмысленной — решает Claude.


Требования

Node.js

≥ 20.10 (проверено на) работает на 24.14

Codex CLI

в PATH, уже выполнен вход (codex login) — проверено с codex-cli 0.147.0

Antigravity CLI

agy в PATH, уже выполнен вход — проверено с agy 1.1.12

git

необязательно, но настоятельно рекомендуется: без него никак не вычислить files_changed / scope_violations

AgentBridge никогда читает, не открывает, не копирует, не экспортирует и не модифицирует ваши учётные данные Codex или Antigravity. CLI он вызывает ровно так, как это сделали бы в сессии вошедшего человека.


Установка и сборка

npm install
npm run build
npm test

Тестовый набор основан на имитация процессов, поэтому обычный npm test не использует анную вам квоту.


Регистрация в Claude Code

Зарегистрируйте один раз на уровне пользователя, чтобы каждый проект мог via его использовать:

claude mcp add --transport stdio --scope user agentbridge -- node D:\Code\Agentbridge\dist\index.js

Проверьте из терминала:

claude mcp list
claude mcp get agentbridge

Затем проверьте изнутри Claude командой /mcp. Вы должны увидеть agentbridge как подключённый сервер с тремя инструментами: codex_run, antigravity_run, bridge_status. Попросите Claude кликнуть на bridge_status, чтобы получить полный диагностический отчёт.

Если вы пересобираете AgentBridge, перезапустите Claude Code (или переподключите сервер /mcp), чтобы он подхватил новый dist/.


Каталог проекта

Для свершений используется один кадр-каталог проекта, который определяется в порядке:

  1. AGENTBRIDGE_PROJECT_DIR, затем унаследованный CLAUDE_PROJECT_DIR, который предоставляет Claude Code.

  2. Первый корень file://, предоставляемый MCP-клиентом.

  3. Рабочий каталог процесса сервера.

bridge_status показывает, какой из них выбран.


Инструменты

codex_run

Поле

Тип

Примечание

goal

string

** обязательно**

mode

analyze|implement|review

** обязательность**

model

gpt-5.6-sol | gpt-5.6-terra | gpt-5.6-luna

** обязательно**

effort

light|medium|high|extra high|max

** обязательно**

relevant_files

string[]

файлы, на которые смотрят в первую очередь

allowed_paths

string[]

** обязательно в режиме implement**

no_touch

string[]

пути, которые исполнитель не вправе изменять

context

string

контекст, которого нет в репозитории

contract

string

интерфейсы/типы, которым нужно соответствовать точ

acceptance_criteria

string[]

критерии приёмки

tests

string[]

фон для исполнителя; сам AgentBridge их не выполняет

timeout_seconds

number

default 900, range 30–3600

Модели. Доступны три слага, каждое передаётся в CLI без изменения:

model

описание

gpt-5.6-sol

cамый сильная универсальная инженерная модель

gpt-5.6-terra

глубокий браунфилд / старая кодовя база

gpt-5.6-luna

экономичная рабочая лошадка для больших объёмов

Сопоставление effort (метка оркестратора → Codex model_reasoning_effort):

light

medium

high

extra high

max

low

medium

high

xhigh

max

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

Доступность. Перед запуском AgentBridge измеряет запрошенную модель и effort с каталогом моделей CLI (models_cache.json в CODEX_HOME) — чтение файла, инференции нет.

  • модель есть и effort есть → задача выполняется

  • модель есть, effort нет → invalid_effort, с details.supported_efforts

  • модели нет → requested_model_unavailable, с details.available_models

  • каталог недоступен → задача всё равно выполняется, с предупреждением, что доступность unverified

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

Собственно вызов:

codex exec --json --skip-git-repo-check -m <MODEL> -c model_reasoning_effort="<EFFORT>" \
           -s <read-only|workspace-write> -C <PROJECT> -o <tmpfile> --color never

промпт передаётся через stdin. Во всяком вызове задаются model, effort и sandbox, чтобы запуск не наследовал того, что окажется в ~/.codex/config.toml.

analyze и review используют настоящую песочницу Codex read-only — записи действительно предотвращены, а не промстим.

antigravity_run

Схема та же, но:

| Поле | Тип || Поле | | | -- | --------------------------------- | | model | Gemini Flash 3.7 | обязательно | | effort | light/medium/high | optional, defaults to medium |

Логические имена раскрываются на момент выполнения по актуальному списку agy models:

Наименование

effort

Разрешение (на этой машине)

Gemini Flash 3.7

light

gemini-3.7-flash-low

Gemini Flash 3.7

medium

gemini-3.7-flash-medium

Gemini Flash 3.7

high

gemini-3.7-flash-high

Antigravity кодирует уровень reasoning в id модели, поэтому model-button

  • effort сводятся к одному ID, отдельный флаг --effort не отправляется — за два параметра не могут никогда разойтись. Flash имеет имеет только эти три уровня: extra high и max дают invalid_effort, а не молча выполняют более слабый уровень, чем вы просили.

Antigravity специально используют дешёвый Gemini уровень. Модели Claude, которые agy тоже имеет, не открыты как маршрутируемые метки — для рассуждений высокого класса Claude используйте сам Claude Code или Codex; у них настоящая песочница и (Codex) выбираемый effort.

Однако я вижу, что в этом ответе всё ещё есть англицизмы и неудачные места, типа "полностью ", "grid". Давайте я улучшу финальный текст в более чистом русском, но без изменения структуры и сохраняя код.

Я буду использовать заметки ниже в отставке, и подам последний cleaned-up вариант.# AgentBridge

Статус: идёт миграция, и это README описывает старый облик.

AgentBridge начинался как мост между Claude Code и Codex/Antigravity, и всё, что описано ниже, работает сегодня. Он обобщается: теперь любой поддерживаемый CLI может быть оркестратором, а любой другой — исполнителем, с маршрутизацией, которой управляет профиль пользователя, а не жёстко заданные имена моделей.

Описание планов — в docs/architecture.md и docs/roles.md. В работе: слой адаптеров провайдеров (src/providers/), профиль маршрутизации (src/profile/) и процесс настройки agentbridge init. Адаптер Cursor присутствует, но не проверен — его флаги писаны из предварительных знаний, а не вычитаны из установленного CLI, о чём сказано в начале файла.

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

Оркестраторы

AgentBridge предоставляет свою поверхность команд /agentbridge … как MCP-промпты, поэтому любой MCP-клиент, который поддерживает prompts/list, получает те же команды прямо от самого сервера — не нужно устанавливать и держать синхронизированными командные файлы для каждого клиента.

Хост

Установка

Команды

Codex CLI

docs/install-codex.md

через MCP-промпты, плюс hosts/codex/AGENTS.md

Claude Code

зарегистрируйте MCP-сервер, затем скопируйте hosts/claude-code/skills/agentbridge в ~/.claude/skills/

через MCP-промпты

Команда

Что делает

agentbridge <goal>

оценить объём, спланировать, делегировать, проверить, отчитаться

agentbridge_setup

обнаружить CLI, доказать, что каждый работает, записать профиль маршрутизации

agentbridge_status

что установлено и как роли маппя; без инференции

agentbridge_doctor

диагностика реальными проверочными задачами и указание, что починить

agentbridge_profile

показать или пересобрать маршрутизацию, опционально — для одной роли

agentbridge_recon

одно ограниченное исследование репозитория

agentbridge_review

независимое рецензирование другой моделью/семейством

agentbridge_resume

продолжить прерванный запуск

Доктрина, лежащая в основе этих команд, живёт в doctrine/ и не называет модели, а маршрутизирует по ролям; .agentbridge/profile.json маппит роли на то, что реально стоит у мая у пользователя.

Небольшой локальный stdio MCP-сервер, который даёт решение Claude Code передавать работу Codex CLI и Antigravity CLI (agy) как внешним исполнителям — используя те CLI-сессии, в которые вы уже залогинены, без API-ключей. Claude остаётся оркестратором. AgentBridge намеренно просто «трубы»: превращает структурированный запрос Claude в промпт исполнителя, запускает CLI и возвращает компактный струк

Метка содержит упорядоченный список идентификаторов-кандидатов для одной и той же модели. Если установленный CLI не предлагает ни одного из них, вызов завершается ошибкой requested_model_unavailable и полным списком доступных моделей. Он никогда молча не переключается на другую модель. Разрешённый идентификатор эхом возвращается в warnings при каждом запуске.

Собранный вызов выглядит так:

agy --print <PROMPT> --model <RESOLVED_ID> --output-format json \
    --mode <plan|accept-edits> --add-dir <PROJECT> \
    --dangerously-skip-permissions --print-timeout <N>s

Флаг --disable-slash-commands добавляется только для режимов implement: CLI игнорирует --mode plan, когда расширение slash-command выключено, поэтому передача обоих флагов молча отбросит единственный режим без записи, который предлагает Antigravity.

bridge_status

Аргументов не принимает. Ни одного вызова инференса модели не выполняет — только пробы --version, agy models, один git rev-parse и чтение кэша моделей CLI Codex.

Возвращает:

  • Версию AgentBridge, каталог проекта (и как он был определён), node/платформу

  • git_verification — будет ли вообще работать здесь построенное на git files_changed / scope_violations. Если не будет, пустые scope_violations — это молчание, а не чистая справка о здоровье, и предупреждения явно об этом сообщают

  • codex.installed / version / path / auth

  • codex.model_status — для каждой модели: available | unavailable | unverified, метки effort, которые принимает AgentBridge, и истинные уровни рассуждений CLI

  • codex.model_source — источник данных о доступности и то, насколько он свеж

  • antigravity.installed / version / path / auth, обнаруженные модели, то, как разрешилась каждая логическая метка и ярус, и model_status в той же самой трёхсостоятельной форме

  • antigravity.unsupported_efforts — метки оркестратора, которые Flash не может принять

  • активные задания и их области записи

  • предупреждения warnings

Доступность никогда не угадывается. Если установленный CLI не предоставляет дешёвого подтверждения, статус — unverified, а не утверждение в ту или иную сторону.

Он никогда не возвращает учётные данные или переменные окружения.


Формат результата

{
  "status": "success",
  "provider": "codex",
  "model": "gpt-5.6-luna",
  "effort": "high",
  "mode": "implement",
  "duration_ms": 12345,
  "exit_code": 0,
  "summary": "...",
  "files_changed": ["src/upload.ts"],
  "scope_violations": [],
  "tests_or_checks_run": ["npm test -- upload"],
  "test_results": "12 passed",
  "concerns_or_blockers": [],
  "stderr_tail": "",
  "warnings": []
}

effort присутствует у обоих провайдеров — это уровень рассуждений Codex или ярус Flash, закодированный в идентификаторе модели. files_changed и scope_violations вычисляются AgentBridge на основе git, а не со слов воркера. Внутренние рассуждения отбрасываются. summary ограничен 16 000 символов — сохраняются начало и конец, а при усечении выставляется summary_truncated: true.

Ошибки

Сбои возвращают ту же форму конверта: status: "failed", категорию ошибки в error, полезный message и, где доступно, exit_code, stderr_tail и объект details.

Категория

Значение

executable_not_found

codex / agy отсутствуют в PATH

authentication_required

CLI сообщил о проблеме входа — войдите снова самостоятельно

requested_model_unavailable

запрошенная модель не предлагается; подмены не было

invalid_effort

метка effort вне пяти поддерживаемых значений

invalid_arguments

например, режим implement без allowed_paths

scope_conflict

другой активный воркер уже занимает пересекающиеся пути записи

scope_violation

переданный путь вышел за корень проекта, или воркер записал вне своей области

timeout

воркер превысил отведённое время; его дерево процессов было завершено

process_failed

ненулевой код выхода или конверт CLI не SUCCESS

output_parse_failed

не далось разобрать машиночитаемый вывод CLI


Примеры вызова воркеров Клодом

Дешёвый быстрый анализ:

{ "tool": "codex_run",
  "goal": "Explain how session refresh works and where it can race.",
  "mode": "analyze", "model": "gpt-5.6-luna", "effort": "light",
  "relevant_files": ["src/auth/session.ts"] }

Сложная реализация, максимум рассуждений, строго ограниченная область:

{ "tool": "codex_run",
  "goal": "Make the uploader retry 502s with exponential backoff.",
  "mode": "implement", "model": "gpt-5.6-sol", "effort": "max",
  "allowed_paths": ["src/upload.ts", "tests/upload.test.ts"],
  "no_touch": ["src/auth"],
  "contract": "export function upload(f: File): Promise<Result>",
  "acceptance_criteria": ["Retries up to 3 times", "Existing callers unchanged"],
  "tests": ["npm test -- upload"] }

Два воркера Codex на непересекающихся областях — они выполняются параллельно:

{ "tool": "codex_run", "mode": "implement", "model": "gpt-5.6-sol",
  "effort": "high", "allowed_paths": ["src/api"], "goal": "..." }
{ "tool": "codex_run", "mode": "implement", "model": "gpt-5.6-luna",
  "effort": "medium", "allowed_paths": ["src/ui"], "goal": "..." }

Antigravity для дешёвой механической работы:

{ "tool": "antigravity_run", "goal": "Summarise every exported symbol in src/lib.",
  "mode": "analyze", "model": "Gemini Flash 3.7", "effort": "light" }

{ "tool": "antigravity_run", "goal": "Build the settings page from design.png.",
  "mode": "implement", "model": "Gemini Flash 3.7", "effort": "high",
  "allowed_paths": ["src/pages/settings"] }

Параллельность и область файлов

  • implement требует allowed_paths. Пути нормализуются относительно корня проекта; всё выходящее за него (.., другие диски, абсолютные пути вне проекта) отвергается ещё до запуска процесса.

  • Активные задания implement держат свои области записи в памяти. Новое задание, области которого пересекаются с активным, получает отказ scope_conflict. Непересекающиеся области выполняются параллельно — несвязанная работа никогда не сериализуется.

  • analyze и review ничего не резервируют: они никогда не блокируют и их никогда не блокируют.

Ограничение V1: обнаружение, а не изоляция

Защита области файлов обнаруживает и сообщает нарушения, но не изолирует каждого воркера в его собственном дереве. Воркер implement у Codex запускается с правами workspace-write по всему проекту, поэтому он может писать вне своих allowed_paths — AgentBridge перечислит все такие файлы в scope_violations, понизит статус с success и прямо скажет вам об этом.

Никогда ничего автоматически не откатывается. Откат файла, который уже был изменён до запуска воркера, уничтожил бы вашу (или Клода) существующую работу. Обнаружение и честный отчёт — это контракт V1; изоляция перенесённых рабочих деревьев (git-worktree) осознанно вне объёма.

Атрибуция аккуратно относится к существующему состоянию: файлы, которые уже были грязными до запуска и после него побайтово идентичны, никогда не приписываются воркеру. Сравнение использует porcelain-статус и хэширование содержимого, а зафиксированные файлы выявляются через diff при перемещении HEAD.


Безопасность

  • Процессы запускаются массивами аргументов и shell: false — никогда не интерполированной строкой команды. Метасимволы оболочки в аргументах остаются литеральными.

  • Лаунчереры Windows .cmd/.ps1 (которые Node отказывается запускать без оболочки) разрешаются в реальный входной скрипт Node и запускаются как node <script> — так что shell: true никогда не требуется.

  • Промпты передаются в Codex через stdin; промпты Antigravity чрезмернейшей величины записываются в расширенный файл и указываются путём. Ни то, ни другое не столкнётся с лимитом длины командной строки Windows в 32 767 символов.

  • tests — это контекст для воркера. AgentBridge никогда его не выполняет, и ни один аргумент MCP не становится командом, которую выполняет AgentBridge.

  • Обartt за пределы корня проекта отклоняется.

  • При тайм-ауте убивается полное дерево процессов: taskkill /T /F на Windows, а на POSIX — SIGTERM в группу процессов с повышением до SIGKILL по истечении трёхсекундного льга_range. Эскалация намеренно переживает собственный выход потом — как раз когда его возможей. процесса может работать. Это best-effort: Node не предоставляет Windows Job Object, так что если сам taskkill не запустится, можно достигнуть только прямого потомка.

  • Буферы вывода ограничены (8 МБ на поток), и UTF-8 декодируется только после пересборки, чтобы многобайтовые символы никогда не делились.

  • Журналlog содержит только метаданные заданий. Никогда токены, никогда окружение, а промпты и вывод — только при AGENTBRIDGE_DEBUG=1.

  • От чего AgentBridge вас не защищает: воркер — это настоящий coding agent, работающий с вашими правами. В режиме implement он может выполнять команды репозитория через свой инструментарий. Настройте allowed_paths с этим психикой.


Верификация

AgentBridge сам после выхода воркера, уже вне песочницы, запускает собственные проверки проекта и возвращает их реальный вывод в verification:

"verification": [
  { "command": "npm run typecheck", "ok": true,  "exit_code": 0, "timed_out": false, "duration_ms": 4120, "output_tail": "..." },
  { "command": "npm run test",      "ok": false, "exit_code": 1, "timed_out": false, "duration_ms": 8830, "output_tail": "..." }
]
  • verify_commands — выполнить именно эти, в любом режиме.

  • Если режим implement, параметр опускается: AgentBridge читает package.json и выполняет скрипты typecheck и test, если запускает тему. Он никогда сам по своей инициативе не запускает build, dev или start; просите их явно.

  • skip_verification: true — ничего не выполнять и полагаться на словесное подтверждение воркера.

Команды выполняются без оболочки, поэтому |, &&, ;, > и обратные кавычки вне кавычек отвергаются, а не исполняются частично. Провал проверки ставит error: "verification_failed" и пониает success до partial — так что воркер, утверждающий, что тесты зелёные, не может переусмотреть сами тесты.

tests_or_checks_run и test_results описывают то, что AgentBridge реально запускал, когда верификация происходила; они только при её отсутствии и возвращаются к самостоятельным утверждениям воркера.

Поскольку команды исходят из репозитория, запись с неправильным запускателем не может заставить AgentBridge его выполнить: репозиторий, где тестовый скрипт — node --import tsx --test, проверяется этими командами, независимо от содержания записки.


Переменные окружения

Variable

Purpose

AGENTBRIDGE_PROJECT_DIR

каталог проекта; независим от хоста, предпочтителен

CLAUDE_PROJECT_DIR

устаревшее имя; по-прежнему работает, задаёт Claude Code

AGENTBRIDGE_DEBUG=1

писать хорошо обезличенные промпты и вывод

AGENTBRIDGE_LOG_DIR

расположение журнала (по умолчанию ~/.agentbridge/logs)

AGENTBRIDGE_CODEX_BIN

явный путь к CLI Codex

AGENTBRIDGE_AGY_BIN

явный путь к CLI agy

AGENTBRIDGE_CODEX_SANDBOX

зафиксировать политику изоляции Codex: read-only, workspace-write, danger-full-access или auto (по умолчанию)

AGENTBRIDGE_CODEX_WINDOWS_SANDBOX

бекенд песочницы Windows (по умолчанию unelevated)

AGENTBRIDGE_CODEX_SANDBOX=auto использует read-only для analyze/review и workspace-write для implement — с одним исключением: на Windows изолированный воркер Codex не может захватить вывод вобособ ( spawn EPERM при передачах piped stdio), а именно это делают скрипты npm, тестовые раннеры и бандлеры — поэтому он может читать и редактировать, но не может запустить тестовый раннер, проверщик типов или сборку. Это ограничение Codex без предоступительной настройки, поэтому jobs на implement считаются с danger-full-access uponce однократный зپسد подтверждает проблему, и сообщают об этом в warnings. analyze и review сохраняют принудительную границу read-only. В зависимости от операционной Windows, если попытка fails with this broken helper (helper_unknown_error: apply deny-read ACLs), AgentBridge повторит такую job один раз с danger-full-access, запомнит вердic для всей сессии и приложит предупреждение к каждому затронутому результату, что граница не соблюдалась. Ничто другое не вызывает это исключение, а перезапуск AgentBridge снова пробует настоящую песочницу — поэтому исправленный релиз Codex автоматически его возвращает. macOS и Linux не проверяют, не повторяют и не идут на исключение.

Логи — это одна строка JSON на задачу: временная метка, id задания, провайдер, модель, effort, режим, проект, длительность, тречный выход, категория ошибки.


Troubleshooting

executable_not_found — утилита CLI не находится в PATH, передаваемой Claude Code своим дочерним процессам. Подтвердите это в той же оболочке: ум codex --version / agy --version или установите AGENTBRIDGE_CODEX_BIN / AGENTBRIDGE_AGY_BIN.

authentication_required — сессия CLI истекла. Исправьте в терминале: для Codex — codex login, для agy — войдите снова. У AgentBridge нет способа сознательно передать это: он не касается учётных данных.

requested_model_unavailable — список моделей изменился, либо в установленном CLI такой модели никогда не было. Запустите bridge_status (или agy models), чтобы увидеть, что реально доступно; поле details в ошибке уже содержит эту информацию. AgentBridge намеренно завершается с ошибкой, а не молча запускает другую модель. Если провайдер переименовал идентификатор модели, добавьте новый идентификатор в список кандидатов для этой метки в src/models/antigravity.ts (или в CODEX_MODELS в src/models/codex.ts), затем пересоберите.

output_parse_failed — CLI изменил формат машиночитаемого вывода. Проверьте details.stdout_head в результате, затем сравните с parseCodexEvents / parseAgyOutput.

После обновления CLI — повторно запустите тесты, затем живую проверку:

SMOKE_LIVE=1 node scripts/smoke.mjs

Она запускает реальную MCP-сессию и выполняет самую дешёвую конфигурацию каждого воркера. Без SMOKE_LIVE=1 выполняется только рукопожатие и bridge_status, ничего не расходуя.

files_changed всегда пуст — каталог проекта не находится внутри git-рабочего дерева. Предупреждение в результате сообщает об этом. Для проверки изменений требуется git.

В /mcp ничего не отображается — проверьте, что зарегистрированный путь указывает на dist/index.js (собранный, а не src/), и перезапустите Claude Code после пересборки.


Структура

src/
  index.ts               stdio entry point
  server.ts              MCP server, tool schemas, dispatch
  config.ts              project-dir resolution, timeout clamping
  logging.ts             JSONL job log (stderr only, never stdout)
  parse.ts               worker-envelope parsing, summary capping
  types.ts
  cli/
    resolve.ts           PATH lookup + Windows shim unwrapping
    detect.ts            version probes, agy model listing, auth heuristics
    codex-catalogue.ts   zero-inference Codex model availability + effort capability
    codex-sandbox.ts     sandbox policy decision and helper-failure detection
  models/
    codex.ts             effort map, argv construction
    antigravity.ts       logical→real model resolution, argv construction
  process/
    runner.ts            shell-free spawn, bounded output, tree kill
  prompts/
    worker-prompt.ts     structured request → worker prompt
  scope/
    paths.ts             normalisation, traversal rejection, overlap
    locks.ts             in-memory write-scope registry
    git-state.ts         snapshot/diff file attribution
  tools/
    codex.ts  antigravity.ts  status.ts  common.ts
tests/                   252 tests, mocked processes, no quota used
scripts/smoke.mjs        real MCP end-to-end check

Available Tools

3 tools
antigravity_runA

Delegate a task to the Antigravity CLI (agy) running as an external worker, using your existing Antigravity login (no API key). The logical model name and effort tier are resolved against the installed CLI's live model list and are never silently substituted. Returns the worker's final result plus git-verified files_changed and scope_violations. One call = one attempt; AgentBridge never retries on its own.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesWhat the worker must accomplish. Be specific and self-contained.
modeYesanalyze/review are read-only investigations; implement makes changes and runs checks.
modelYesAntigravity model to run.
testsNoTests or checks the worker should run. Context for the worker only — use `verify_commands` for anything AgentBridge should execute.
effortNoFlash reasoning tier, selected via the model id. light=search/extraction/docs/simple edits, medium=default coding, debugging, review, refactors, high=hard reasoning, architecture, visual/multimodal work. Defaults to medium. 'extra high' and 'max' do not exist here — route those to Codex.
contextNoBackground the worker needs but cannot infer from the repository.
contractNoInterfaces, types, or API shapes the worker must conform to exactly.
no_touchNoProject-relative paths the worker must not modify.
allowed_pathsNoProject-relative paths the worker may write. Required in implement mode; overlapping scopes across concurrent implement jobs are rejected.
relevant_filesNoProject-relative files the worker should look at first.
timeout_secondsNoWall-clock limit for the worker process. Default 900s, clamped to 30-3600s.
acceptance_criteriaNoConditions that must hold for the job to be considered done.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility and does an excellent job: it discloses authentication requirements ('using your existing Antigravity login (no API key)'), resolution behavior ('never silently substituted'), return contents ('git-verified files_changed and scope_violations'), and retry policy ('AgentBridge never retries on its own'). No contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only four sentences, each earning its place: delegation mechanism, resolution policy, return value summary, and retry semantics. It is front-loaded with the primary action and free of redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 12 parameters, no output schema, and no annotations, the description covers key operational context: auth, resolution, returns, and retry policy. It lacks guidance on when to prefer this over codex_run and what happens if the CLI is unavailable, but the 100% schema coverage compensates for parameter-level details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The description does not add new parameter-level semantics beyond what the schema already provides; it only references the model/effort resolution vaguely, which is adequately covered in the parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Delegate a task to the Antigravity CLI (`agy`) running as an external worker.' It specifies the verb, resource, and distinctive auth behavior (no API key). However, it does not explicitly differentiate from sibling tools like codex_run, even though the Antigravity-specific naming implies it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (codex_run, bridge_status). It mentions 'One call = one attempt' and 'never retries' as behavioral facts, but does not state usage conditions, prerequisites, or when to choose a different tool. Relevant routing advice (e.g., 'extra high' → Codex) is buried in the parameter descriptions, not the main description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bridge_statusA

Report AgentBridge health: version, project directory, whether git-based scope verification will work here, whether the Codex and Antigravity CLIs are installed, their versions and sign-in state, per-model availability (available | unavailable | unverified) and the efforts each model accepts, resolved Antigravity model ids, active jobs, and warnings. Consumes no model inference — availability comes from each CLI's own catalogue, and is reported as unverified rather than guessed when it cannot be established cheaply. Never returns credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With zero annotations provided, the description fully carries the transparency burden and excels: it discloses a no-inference cost guarantee, an explicit epistemic honesty policy ('reported as unverified rather than guessed'), and a security guarantee ('Never returns credentials'). These behavioral traits go well beyond what the empty schema reveals.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three prior sentences, each earning its place: scope, then cost/accuracy behavior, then security. The second sentence is list-heavy but necessary since no annotations or output schema exist — the description is the sole documentation. Slightly long but never wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity 0-param, read-only tool with no annotations and no output schema, the description is the only source of truth and covers all critical operations: exact contents of the report, inference cost (none), accuracy semantics (unverified vs guessed), and credential safety (never). Nothing material is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty schema, so the baseline of 4 per the rubric applies. The description adds no conflicting param info; the only implied input is the health-report scope itself, which is irrelevant for a no-arg call. No compensation needed for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb+resource ('Report AgentBridge health') and exhaustively enumerates the report's scope: version, directory, CLIs, model availability, model ids, jobs, warnings. This specificity clearly delineates it from siblings codex_run/antigravity_run, which are execution-oriented, making the health/introspection function unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The health/introspection framing implies pre-flight or diagnostic use (checking sign-in state, git verification, per-model availability) with clear context. However, no explicit exclusions or named alternatives appear in the description; sibling distinction is inferred from context rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

codex_runA

Delegate a task to the Codex CLI running as an external worker, using your existing Codex login (no API key). Model and reasoning effort are chosen per call and never inherited from global Codex config. Returns the worker's final result plus git-verified files_changed and scope_violations, and — unless skipped — a verification block holding the real output of the project's checks, which AgentBridge runs itself. One call = one attempt; AgentBridge never retries on its own.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesWhat the worker must accomplish. Be specific and self-contained.
modeYesanalyze/review are read-only investigations; implement makes changes and runs checks.
modelYesCodex model to run, passed to the CLI verbatim. gpt-5.6-sol is the strongest general engineering model, gpt-5.6-terra the deep brownfield/existing-codebase specialist, gpt-5.6-luna the economical high-volume workhorse. Availability is checked against the installed CLI's own model catalogue; an unavailable model fails with requested_model_unavailable and is never substituted.
testsNoTests or checks the worker should run. Context for the worker only — use `verify_commands` for anything AgentBridge should execute.
effortYesReasoning effort: light->low, medium->medium, high->high, 'extra high'->xhigh, max->max.
contextNoBackground the worker needs but cannot infer from the repository.
contractNoInterfaces, types, or API shapes the worker must conform to exactly.
no_touchNoProject-relative paths the worker must not modify.
allowed_pathsNoProject-relative paths the worker may write. Required in implement mode; overlapping scopes across concurrent implement jobs are rejected.
relevant_filesNoProject-relative files the worker should look at first.
timeout_secondsNoWall-clock limit for the worker process. Default 900s, clamped to 30-3600s.
verify_commandsNoCommands AgentBridge runs itself in the project directory after the worker exits, e.g. ["npm run typecheck", "node --import tsx --test"]. Their real output comes back in `verification`. Run without a shell, so no pipes, redirection, or `&&`. Omitted in implement mode, AgentBridge derives them from the project's own `typecheck` and `test` scripts.
skip_verificationNoSet true to skip AgentBridge's own checks for this job. The result then carries only the worker's account of whether the change works.
acceptance_criteriaNoConditions that must hold for the job to be considered done.
verify_timeout_secondsNoWall-clock limit for each verification command. Default 300s.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses critical behaviors: authentication via existing login, per-call model/effort choices, git-verified files_changed and scope_violations, the verification block auto-run by AgentBridge, skip_verification semantics, and the no-retry policy. It also mentions error behavior (requested_model_unavailable) in schema but the main description adds substantial context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence adds value, covering purpose, authentication, behavioral semantics, and verification details. It is front-loaded with the core action and flows logically. Slightly long but appropriate for a 15-parameter tool; no fluff detected.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (15 params, no output schema), the description is remarkably complete. It explains the verification process, git-verified outputs, retry behavior, and model availability handling. It does not detail return value structure, but since there is no output schema, the description covers the essential outcomes (result, files_changed, scope_violations, verification block) sufficiently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds minimal parameter-specific meaning beyond what schema provides; it does note that model is passed verbatim and verification runs without a shell, but these are already in schema descriptions. No extra compensation needed, but also no significant enhancement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool delegates a task to the Codex CLI external worker, specifying the resource (Codex CLI) and the verb (Delegate). It distinguishes from siblings by naming Codex explicitly, and includes details like 'no API key' and 'one call = one attempt' that set it apart from antigravity_run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus antigravity_run or bridge_status. It mentions configuration behavior (model/effort per call, no global inheritance) and retry policy, but fails to state conditions for selecting this tool over alternatives. This is a gap given the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv1.0.0
    • First observedantigravity_run
    • First observedbridge_status
    • First observedcodex_run

TDQS

A4.1/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: codex_run and antigravity_run target different external CLIs, and bridge_status is the health/status reporter. There is no meaningful overlap or ambiguity between them.

Naming Consistency4/5

The two worker tools follow a consistent <cli>_run pattern, while bridge_status deviates by using a noun instead of a verb. This is a minor inconsistency in an otherwise predictable naming scheme.

Tool Count5/5

Three tools is well-scoped for a bridge server: one for each external worker and one for status. Every tool earns its place and the count feels appropriate for the server's purpose.

Completeness4/5

The core workflows of delegating to either CLI and checking bridge health are covered. Minor gaps exist around job lifecycle management (e.g., listing or canceling active jobs), but these are not critical to the stated purpose.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A local MCP server that lets Claude delegate scoped work to Codex with structured results and guardrails, supporting planning, code review, build, reverse engineering, and long-running background tasks.
    11
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that bridges Claude Code with Antigravity CLI using a Swarm Agent architecture to optimize local development workflows and minimize LLM token costs. Includes a web UI for monitoring agent workflows.
    29
    467 PyPI
    29
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    A local MCP server that connects AI coding agents like Claude, Codex, and Gemini, enabling task routing, cross-model debates, and token-efficient context sharing without external APIs.
    17
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that bridges CLI coding agents like Claude Code, Codex, opencode, and Antigravity into any MCP client, enabling synchronous and asynchronous task execution, follow-up input, and a structured code review tool.
    43 npm
    2
    MIT