agent-bridge-mcp
Agent Bridge MCP
agent-bridge-mcp — это локальный сервер Model Context Protocol (MCP), который предоставляет MCP-хосту один управляемый способ делегирования задач между локальными CLI-агентами кодирования и API Manus. Он намеренно не является оркестратором агентов с неограниченным доступом к файловой системе: обычные установки требуют настройки, корневые каталоги проектов находятся в белом списке, режим выполнения по умолчанию — только чтение, а полномочия, выбираемые вызывающей стороной, не могут превышать настроенный предел.
Что реализовано в v0.3.0-rc.8
Бэкенд | Транспорт | Нативное возобновление | Управление файловой системой | Аутентификация, используемая мостом |
Codex | локальный CLI | Да |
| Вход в Codex CLI |
Claude | локальный CLI | Да | Режим разрешений Claude, производный от выбранной песочницы | Вход в Claude CLI/OAuth или связка ключей; вход Claude Desktop/Cowork не используется |
Manus | Manus API v2 через HTTPS | Да, по идентификатору задачи Manus | Нет. Manus удалён и не может просматривать или редактировать локальные файлы. | Файл учётных данных или |
Gemini | локальный CLI | Нет | Не может обеспечить режим только чтения; отклоняет этот режим | Собственная аутентификация Gemini CLI |
Gemini и Manus отключены по умолчанию. Manus должен быть намеренно включён после настройки его учётных данных и подтверждения возможностей учётной записи. Удалённая передача промптов также по умолчанию отключена и требует белого списка агентов/корневых каталогов/классов данных, allow_remote_egress=true, data_classification и израсходованного одобрения remote_egress с точной областью действия при каждом вызове. Каждый прямой удалённый вызов также требует отдельного одобрения paid_or_unknown_cost, поскольку нулевое значение, предоставленное вызывающей стороной, не может доказать, что стоимость провайдера равна нулю. Обе категории всегда являются свежими одноразовыми записями; повторно используемые записи отклоняются до запуска любого провайдера. Необязательный предохранитель policy.cumulativeRemoteCost атомарно резервирует одобренный максимум в целых центах USD перед запуском во всех сеансах. Случаи неизвестной, нулевой, дробной части цента, превышения лимита, повреждённой/отсутствующей книги учёта и одновременной переподписки завершаются ошибкой до вызова провайдера. Сохранённые резервирования никогда не пополняются после успеха, ошибки, тайм-аута, отмены или сбоя процесса, поскольку мост не может доказать, что принятый запрос не был оплачен. Резервирование намеренно предшествует потреблению одобрения, поэтому более поздний локальный сбой может консервативно сжечь бюджет без вызова провайдера. Это учёт одобренных затрат, а не сверка счетов провайдера; устойчивость при внезапной потере питания/ОС по-прежнему зависит от файловой системы хоста. list_agents сообщает о доступности/аутентификации/возможностях и готовности к сотрудничеству; это проверка работоспособности, а не доказательство того, что платная задача может быть выполнена или что удалённый агент может получить доступ к запрошенному рабочему пространству.
Ссылки на задачи Manus принимаются только тогда, когда они соответствуют 22-символьному буквенно-цифровому контракту идентификатора задачи провайдера. После task.create RC6 допускает ограниченный 15-секундный льготный период видимости: 404 от task.listMessages проверяется через task.detail, прежде чем он будет классифицирован. Задача, подтверждённая деталями, но сообщения которой остаются недоступными, сообщается как unknown и может быть возобновлена; только задача, отсутствующая на обоих поверхностях в течение льготного периода, становится not_found и не подлежит возобновлению. Публичные результаты раскрывают только корреляции запросов SHA-256, никогда не раскрывают необработанные идентификаторы запросов провайдера или собственные идентификаторы задач.
Перед предварительным просмотром одобрений или потреблением полномочий мост выполняет локальную предварительную проверку Manus: должно существовать непустое настроенное учётное данное, возможности по умолчанию учётной записи должны быть подтверждены, модель должна быть одной из поддерживаемых профилей Manus, а окончательный промпт должен соответствовать консервативному пределу в 4 500 байт UTF-8. Эта предварительная проверка не выполняет запросов к провайдеру. Обычное продолжение отправляет новое сообщение только задаче провайдера, сохранённое состояние которой — stopped. Задача waiting должна использовать специализированный путь действия ожидания. Для сохранённого результата timed_out, aborted, error или unknown reconcile_manus_task требует согласия на удалённый обмен, классификацию данных и текущую ревизию сеанса, затем выполняет только GET-опрос провайдера без отправки пользовательского сообщения. Локальный тайм-аут сверки записывает задачу как всё ещё нерешённую и никогда не отправляет запрос на остановку провайдера; как только сверка достигает stopped, обычное продолжение снова доступно.
Эти устойчивые одобрения исходящего трафика/затрат на каждый вызов защищают управляемые мостом прямые удалённые API, такие как Manus. Codex, Claude и Gemini — это локальные процессы CLI, но они могут отправлять промпты и содержимое, полученное из рабочего пространства, своим размещённым провайдерам; их учётная запись, провайдер и политики CLI являются внешней границей доверия. list_agents сообщает directRemoteApi и offMachineEgress отдельно, чтобы локальный исполняемый файл никогда не был ошибочно принят за локальную обработку.
В Windows прямые исполняемые файлы запускаются без оболочки. Канонические статические сгенерированные npm .cmd-заглушки распознаются только тогда, когда они называют одну содержащуюся точку входа node_modules; эта точка входа запускается с собственным исполняемым файлом Node моста, поэтому промпты, модели, корни и аргументы расширений никогда не проходят через cmd.exe. Динамические/пользовательские .cmd-файлы и все .bat-загрузчики закрываются с ошибкой UNSAFE_WINDOWS_BATCH_SHIM. Настройте их базовый .exe или используйте каноническую статическую npm .cmd-заглушку. Это предотвращает выход метасимволов пакетных файлов за границы корня моста, песочницы и одобрений.
Установка и настройка
Требуется Node.js 20+ и включённые вами CLI в PATH.
Выберите путь, соответствующий задаче:
Разработка или проверка из исходников: используйте команды ниже и конфигурацию для разработки из исходников.
Эксплуатация установленного релиза: начните с Сборка, тестирование и упаковка, включая неизменяемую последовательность установки/канареечной проверки Windows, затем следуйте Операции создателя. Не указывайте клиенту на исходный
distили непосредственно на каталог версионного релиза.
npm ci
npm run verify
New-Item -ItemType Directory -Force "$env:USERPROFILE\.agent-bridge" | Out-Null
Copy-Item config.example.json "$env:USERPROFILE\.agent-bridge\config.json"Приведённые выше команды создают конфигурацию для разработки из исходников в %USERPROFILE%\.agent-bridge\config.json. Шаблон намеренно имеет пустой массив allowedRoots и не запустится, пока вы не замените его одним или несколькими существующими абсолютными каталогами проектов. Неизменяемый установленный релиз вместо этого использует общий конфиг в %USERPROFILE%\.codex\agent-bridge\config.json, и каждая регистрация Codex/Claude должна устанавливать AGENT_BRIDGE_CONFIG на этот общий файл при запуске стабильной заглушки. В противном случае конфиг можно выбрать с помощью --config <path> или AGENT_BRIDGE_CONFIG; соседний config.json рядом с сервером используется только при его наличии. Отсутствующая, повреждённая или конфигурация без корней отклоняется, а не возвращается к неограниченному каталогу. Не допускайте молчаливого расхождения между резервным вариантом для разработки из исходников и установленным общим конфигом.
Значения по умолчанию во время выполнения: тайм-аут 600 секунд и песочница read-only. config.example.json намеренно использует пример тайм-аута 900 секунд; это не значение по умолчанию во время выполнения. Приоритет песочницы: запрос на каждый ход, если он предоставлен, в противном случае defaults.sandbox; запрошенные/стандартные полномочия затем ограничиваются как agents.<id>.sandboxCeiling, так и policy.sandboxCeiling, и побеждает наиболее ограничительный результат. Потолок workspace-write разрешает отдельно запрошенный ход записи, но сам по себе не делает запись стандартной. policy.sandboxCeiling по умолчанию равен workspace-write для совместимости, поэтому устаревшие конфиги могут по-прежнему запрашивать запись, но больше не могут запрашивать full-access. Полный доступ требует, чтобы конфиг явно указывал "sandboxCeiling": "full-access". agents.<id>.sandboxCeiling может снизить предел для одного бэкенда. Пример cumulativeRemoteCost.maxReservedCents — это общесистемный пожизненный предел резервирования для текущей книги учёта; его увеличение — явное действие оператора, и намеренно нет инструмента MCP для сброса. После первого резервирования маркер инициализации заставляет удаление только книги учёта завершаться с ошибкой. Локальный пользователь ОС, который может удалить и книгу, и маркер, может сбросить эту границу учёта, поэтому храните stateDir вне общего/рабочего хранилища и защитите его ACL. Опустите политику, чтобы отключить этот предохранитель. Мост канонизирует разрешённые корни и рабочий каталог, затем канонизирует снова непосредственно перед запуском, поэтому побег через junction/symlink отклоняется.
Пакет MCPB может включить тот же валидатор без установки поддельного соседнего конфига, установив AGENT_BRIDGE_BUNDLE_MODE=1 и указав AGENT_BRIDGE_ALLOWED_ROOT. Режим пакета по умолчанию использует полномочия только чтения, Codex и Claude включены, а Gemini, Manus и удалённый исходящий трафик отключены. Манифест MCPB также может предоставлять AGENT_BRIDGE_STATE_DIR, переключатели бэкенда AGENT_BRIDGE_ENABLE_*, AGENT_BRIDGE_DEFAULT_SANDBOX и AGENT_BRIDGE_SANDBOX_CEILING. Включение удалённого исходящего трафика дополнительно требует Manus плюс AGENT_BRIDGE_REMOTE_EGRESS=true и один AGENT_BRIDGE_REMOTE_DATA_CLASS. Явный выбор --config или AGENT_BRIDGE_CONFIG всегда имеет приоритет над режимом пакета.
Учётные данные Manus
Запустите предоставленный скрипт настройки из PowerShell:
.\scripts\setup-manus.ps1Он записывает ключ в %USERPROFILE%\.agent-bridge\secrets\manus-api-key с ACL только для пользователя. Включите agents.manus, установите credentialFile на этот путь и установите acknowledgeAccountDefaultCapabilities=true плюс стабильную несекретную метку accountCapabilityProfile только после проверки включённых навыков по умолчанию в учётной записи Manus. Agent Bridge отправляет пустые connectors, force_skills и ссылки на задачи при создании и очищает connectors при продолжении, но Manus API v2 не предоставляет переключатель, обеспечиваемый мостом, который доказывает, что навыки по умолчанию учётной записи отключены. Подтверждение фиксирует принятие этой границы возможностей на стороне провайдера; оно не предоставляет локальный доступ к файловой системе и не авторизует действие connector. Конечная точка провайдера, версия политики возможностей запроса и метка профиля учётной записи привязаны к каждому удалённому конверту одобрения, поэтому изменение учётной записи/возможностей требует новых одобрений. Не помещайте ключ в систему контроля версий или манифест MCP. Конечная точка Manus ограничена HTTPS api.manus.ai (или его поддоменами); переопределение для разработки принимает только loopback HTTP(S). Manus получает текст задачи через свой API и не имеет локального доступа к файловой системе; вместо этого предоставьте соответствующее содержимое файлов или удалённо доступный артефакт.
Ключ, вставленный в чат, раскрывается. Рекомендуемое исправление — ротация. Если оператор явно отказывается от ротации, задокументируйте это решение как принятый остаточный риск, храните ключ только в защищённом ACL файле учётных данных и оставьте гигиену учётных данных как неудачную или признанную, а не называйте её проходной.
Операции MCP
get_creator_status — это локальный обзор создателя. Он агрегирует состояние конфигурации/времени выполнения, настроенные возможности, резервирования одобренных затрат и ограниченную выборку без изменений состояния сеанса, одобрений и рабочей доски без запуска CLI или обращения к провайдеру. Его поля scanned, truncated и unreadable являются свидетельством выборки, а не неограниченными итогами; неполное состояние требует внимания. Работоспособность бэкенда намеренно отделена через list_agents.
Сервер предоставляет последовательные операции моста (list_agents, delegate_task, continue_session, handoff, list_sessions, get_session и постраничный get_turn_output), пассивную diagnose_install, read-only get_budget_status, долговечные операции одобрения (request_approval, decide_approval, list_approvals), точное удаленное планирование через preview_turn_approval и preview_recommendation_approval, GET-only reconcile_manus_task, узкие операции ожидания действий Manus (get_manus_waiting_action, preview_manus_confirmation, confirm_manus_action), независимый collect_recommendations и кооперативные операции создания, выполнения, рецензирования, проверки, жизненного цикла, отмены, повтора и одобрения элементов рабочей доски. Сессии сохраняют внутренние идентификаторы бэкенда для совместимого возобновления. Когда управление переходит к другому агенту или нативное возобновление недоступно/несовместимо, мост добавляет ограниченную, экранированную стенограмму, явно помеченную как недоверенный контекст. Удаленный предпросмотр возвращает два разных хеша: prompt_sha256 идентифицирует финализированный исходящий промпт для сравнения, а payload_sha256 идентифицирует полный конверт одобрения, включая модель, песочницу, таймаут, состояние непрерывности/возобновления, ревизию сессии, политику расширения, конечную точку провайдера, версию политики возможностей запроса и несекретный профиль возможностей учетной записи. Записи одобрения должны использовать хеш конверта. Передавайте session_revision из предпросмотра обратно при продолжении или передаче, чтобы параллельные изменения стенограммы требовали нового предпросмотра. Встроенный вывод агента обрезается; используйте возвращенный output_ref или get_turn_output для получения полного сохраненного вывода ограниченными страницами.
Ожидающие действия Manus
Задачи Manus могут приостанавливаться в состоянии waiting. Agent Bridge сохраняет только нативный идентификатор задачи, идентификатор события и известный тип события; описания провайдера и динамические схемы намеренно отбрасываются, поскольку они могут содержать секреты, личные данные или новые полномочия. Публичные инструменты никогда не возвращают нативный идентификатор задачи. Хотя Manus документирует многие типы подтверждений и может добавлять новые, этот выпуск допускает только четыре фиксированных решения:
Событие Manus | Разрешенное решение моста | Дополнительное одобрение |
|
|
|
|
|
|
|
|
|
|
|
|
Каждое решение также требует свежего одноразового одобрения remote_egress, разрешенного класса данных/корня, точного дайджеста предпросмотра и неизменной ревизии сессии. Предпросмотр подтверждения раскрывает конверт выполнения, который связывает конечную точку провайдера, версию политики возможностей коннектора/навыка по умолчанию и несекретный профиль учетной записи. Адаптер повторно считывает новейшее живое действие провайдера перед потреблением любого одобрения или резервированием бюджета. Только после успешной повторной проверки он фиксирует полномочия, сохраняет запись о попытке подтверждения непосредственно перед неидемпотентным POST task.confirmAction, а затем требует, чтобы ответ содержал ok=true, confirmed=true и возвращал тот же идентификатор задачи. Принятое подтверждение сохраняется до того, как мост возобновит опрос. Неизвестные действия, вопросы пользователя, выбор браузера, фактическая отправка электронной почты, премиальное видео, принятие кредита, секреты, развертывания, команды терминала, действия календаря/маркетинга, авторизация коннектора и постоянные разрешения global_allow/always_allow завершаются с отказом. Этот намеренно более узкий контракт основан на жизненном цикле задач Manus и API task.confirmAction.
Начните с docs/CREATOR_OPERATIONS.md. Его сопутствующие матрица угроз, живой контрольный список приемки, соглашения о доказательствах, граница конфиденциальности и примеры определяют поддерживаемый рабочий процесс создателя и доказательства, необходимые перед продвижением.
Кооперативные рабочие доски
Рабочая доска имеет явные состояния жизненного цикла active, paused, completed, canceled и archived. Элементы могут объявлять вид, критерии приемки, требования к данным/файловой системе/сети/возможностям, инертные типизированные ссылки на артефакты/доказательства и шлюз одобрения рабочего процесса. Изменения жизненного цикла отказывают в живых арендах; повторы очищают результаты без пополнения попыток или использования.
Рабочая доска хранит элементы, учитывающие зависимости, в stateDir/workboards. Сохраненные доски используют явную версию схемы и рекурсивно проверяются при загрузке/сохранении. Исходная неверсионированная форма v0.3-dev мигрирует в памяти при чтении и сохраняется при следующей заблокированной записи, избегая гонки разблокированной миграции. Неизвестные будущие схемы, поврежденные записи и несогласованные комбинации статуса/представления/рецензирования завершаются с отказом. Каждый элемент имеет бюджет попыток/времени, аренду владения, изолированную сессию моста, представление и независимое рецензирование. Использование времени выполнения и рецензирования (стеновое время/ходы) учитывается отдельно. Лимит попыток рецензирования внутренне выводится из maxAttempts; неудачные вызовы рецензента потребляют его, сохраняют представление для повтора и блокируют элемент при исчерпании. token_budget_hint является рекомендательным, поскольку учет токенов бэкенда несопоставим и не всегда доступен. Отдельные готовые элементы могут выполняться параллельно до maxParallel, но каждое выполнение и рецензирование рабочей доски принудительно переводится в read-only независимо от значения по умолчанию моста. Строгие кооперативные ходы подавляют настроенные extraArgs и extraEnv, поэтому эти настройки не могут переопределить флаги read-only. Рецензент не может быть агентом, представившим элемент. Только принятые представления включаются в ограниченный брифинг интегратора.
Текущие рабочие доски передают локальный cwd и текст, а не удаленно доступный, проверяемый по хешу пакет артефактов. Поэтому Manus не может запускать или независимо рецензировать элемент рабочей доски и сообщается как не готовый к кооперации для локальных доказательств кода. Используйте его только через явно одобренную прямую удаленную делегацию, пока не будет реализован рабочий процесс подготовки артефактов. Область brief рекомендаций намеренно изолирована для бэкендов, которые не сообщают о возможности локальной файловой системы; Codex и Claude должны использовать область workspace, тогда как Manus может рецензировать только предоставленный брифинг. Эта граница доказывает только то, что бэкенд не может проверить локальное рабочее пространство через Agent Bridge. Она не обеспечивает поведение read-only или отсутствие побочных эффектов на стороне провайдера; навыки учетной записи Manus по умолчанию остаются признанной внешней возможностью. Коллекция записывает briefSha256, чтобы встроенный артефакт можно было идентифицировать без подразумевания доступа к рабочему пространству.
Этот выпуск разработки намеренно не допускает кооперативную запись. Блокировки на сессию не могут предотвратить редактирование одних и тех же файлов двумя отдельными сессиями агентов, поэтому безопасная параллельная запись требует более позднего дизайна владения рабочим пространством.
Пассивная диагностика
diagnose_install и --doctor --json сообщают идентичность среды выполнения/конфигурации, хеш содержимого конфигурации, если он читается, предупреждения корневого уровня, размер состояния/количество сессий, санированный статус бэкенда и подсказки о расхождении путей исполняемых файлов. Они намеренно раскрывают выбранные локальные пути: путь среды выполнения, путь состояния, настроенные/разрешенные пути исполняемых файлов и корни, названные предупреждениями корневого уровня. Они опускают необработанные байты конфигурации, значения окружения агента, значения учетных данных, необработанные детали провайдера/CLI, промпты и стенограммы. Не встраивайте секреты в пути файловой системы. Локальный результат аутентификации unknown не считается пригодным. Эти команды проверяют включенные бэкенды; используйте scripts/inspect-install.ps1 для пассивных доказательств регистрации/процесса/ACL без запуска или делегирования агенту. Его результат fallbackConfig.divergentRegistrationRisk=true означает, что регистрация моста может читать другой соседний/состояние конфиг, чем установленный общий конфиг, и является блокирующим фактором для переключения. RC6 также распознает допустимые строки TOML в одинарных кавычках в доказательствах регистрации Codex.
Экспериментальный демон/прокси-рантайм
Исходный код включает экспериментальный локальный IPC-демон/прокси-рантайм, построенный на ограниченном фрейм-RPC кодеке и взаимном HMAC-рукопожатии, привязанном к протоколу/конфигурации. Он использует только именованные каналы Windows или доменные сокеты Unix — никогда TCP — и реализует явный жизненный цикл, эксклюзивную привязку конечной точки, строгое состояние рукопожатия, корреляцию запросов, ограничения соединений/незавершенных операций, отмену обработчиков при отключении и чистое завершение. Импорт или конструирование ничего не запускает; тесты используют только одноразовые конечные точки. Он не подключен к точке входа MCP или пакету выпуска, поэтому прямой stdio остается единственным поддерживаемым путем выполнения.
На Unix рантайм применяет режим 0600 к сокету. API net Node.js не может настроить или проверить ACL именованного канала Windows только для пользователя или раскрыть идентичность однорангового узла, поэтому доказательства безопасности Windows правдиво сообщают об этом пробеле и предоставляют перехватчик авторизации с отказом по умолчанию. Не развертывайте экспериментальный демон, пока не будут реализованы и проверены уровень подготовки/проверки ACL Windows и адаптер маршрутизации MCP.
Используйте диагностику процесса перед добавлением его в хост MCP:
node .\dist\agent-bridge.mjs --config "$env:USERPROFILE\.agent-bridge\config.json" --doctor--doctor завершается с ненулевым кодом, если любой включенный бэкенд непригоден. Он сообщает источник конфигурации, корни, песочницу и состояние бэкенда; он не выполняет функциональную делегированную задачу.
Данные, блокировки и лимиты
Состояние моста находится в stateDir (по умолчанию %USERPROFILE%\.agent-bridge): сессии в открытом виде, рабочие доски, одобрения, совокупные резервирования бюджета и их каталоги блокировок. Записи сессий и бюджета являются атомарными заменами; временные байты бюджета сбрасываются перед переименованием, а родительский каталог синхронизируется там, где позволяет платформа. Активная сессия удерживает блокировку; другой ход ждет до sessionLockWaitMs, затем завершается с SESSION_BUSY. Совокупный реестр прямых удаленных операций использует отдельную блокировку, принадлежащую токену, поэтому разные сессии не могут его переподписать. В отличие от обычных блокировок сессий/рабочих досок, блокировка расходов никогда не восстанавливается автоматически: приостановленный старый владелец в противном случае мог бы перезаписать более новое резервирование. Если его процесс завершится, прямые удаленные запуски завершаются с отказом, пока все хосты моста не остановлены и оператор не удалит только stateDir\budget-locks\cumulative-remote-cost.lock.
Стенограммы сессий хранятся в открытом виде как JSON. Они могут содержать промпты, выводы, хвосты ошибок, пути и чувствительный контекст задач. Защищайте stateDir, не помещайте секреты в промпты и рассматривайте get_session как раскрытие сохраненной стенограммы. get_session намеренно удаляет нативные идентификаторы бэкенда и метаданные и ограничивает каждое возвращаемое поле, но это не шифрование и не редактирование. Мост передает ограниченное текстовое резюме контекста между агентами; усечение может опустить более ранний контекст, поэтому критические решения следует повторять в текущем промпте.
Сборка, тестирование и пакетирование
npm run verify
node .\scripts\package.mjsnpm run package сначала выполняет сборку; npm pack также выполняет сборку через свой хук prepack. Команда релиза требует проверенного коммита Git, создаёт свежий каталог .release-staging, создаёт agent-bridge-v<package-version>.mcpb и проверяет, что упакованные server/agent-bridge.mjs, его карта исходников и операционные скрипты Windows побайтово совпадают с зафиксированными входными данными кандидата. Пакет включает manifest.json, среду выполнения, её карту исходников, operations/ и release-metadata.json; каждая полезная нагрузка среды выполнения и операционная полезная нагрузка закреплена в метаданных релиза по SHA-256 и количеству байт. Операционный набор намеренно узок: готовность, переключение с одной блокировкой, откат неизменяемого релиза, пассивная проверка, регистрация клиентов и их общие модули безопасности. Он отказывается от существующего пути вывода и никогда не изменяет установленный MCP-сервер. Не устанавливайте пакет разработки поверх активных хостов; используйте новый неизменяемый каталог и отложите изменения регистрации до завершения выполняющихся задач.
MCPB использует схему манифеста 0.3 и предоставляемый хостом user_config; он не встраивает изменяемую конфигурацию-заглушку. Команда упаковки сообщает значения SHA-256 как для пакета, так и для среды выполнения. Проверьте manifest.template.json с помощью официального CLI MCPB перед релизом. В Windows установите и проверьте артефакт, не затрагивая активный указатель:
.\scripts\install-release.ps1 -BundlePath .\agent-bridge-v0.3.0-rc.8.mcpb -ExpectedBundleSha256 <reported-bundle-sha256>
$candidate = "$env:USERPROFILE\.codex\agent-bridge\releases\<release-id>"
& "$candidate\operations\inspect-install.ps1"
node .\scripts\canary-release.mjs --release-path "$env:USERPROFILE\.codex\agent-bridge\releases\<release-id>" --install-root "$env:USERPROFILE\.codex\agent-bridge" --expected-version 0.3.0-rc.8 --expected-runtime-sha256 <reported-runtime-sha256> --evidence-dir "<durable-private-root>\installed-canary"
node .\scripts\canary-windows-shim.mjs --release-path "$env:USERPROFILE\.codex\agent-bridge\releases\<release-id>" --install-root "$env:USERPROFILE\.codex\agent-bridge" --expected-version 0.3.0-rc.8 --expected-runtime-sha256 <reported-runtime-sha256> --evidence-dir "<durable-private-root>\windows-shim-canary"Канареечный тест установленного релиза с отключённым провайдером запускает абсолютную неизменяемую среду выполнения с одноразовыми config/state/root, проверяет все требуемые инструменты MCP и диагностическую идентичность, а также доказывает, что стабильный шим, общая конфигурация и маркер продвижения не изменились. Канареечный тест шима Windows запускает ту же установленную среду выполнения с локальным имитационным CLI за каноническим npm .cmd в пути с пробелами; он проверяет идентичность среды выполнения, точное сохранение враждебных argv, делегирование только для чтения, отсутствие сигнала внедрения в оболочку и неизменность стабильных файлов без вызова провайдера. Создавайте новые долговечные приватные каталоги для доказательств вне корня стабильной установки. Релизные тесты с поддержкой провайдера принимают абсолютный AGENT_BRIDGE_SERVER_PATH плюс обязательные AGENT_BRIDGE_INSTALL_ROOT, AGENT_BRIDGE_EXPECTED_VERSION и AGENT_BRIDGE_EXPECTED_RUNTIME_SHA256; они проверяют, что среда выполнения находится точно в releases\<release-id>\server этой установки. Установите AGENT_BRIDGE_LIVE_REQUIRED=1, чтобы пропуски исходного dist, аутентификации или квоты не могли быть приняты за прохождение релиза, и сохраняйте каждый структурированный результат в виде очищенного JSON.
Харнесс Manus — это двухэтапная долговечная одноразовая транзакция. Предварительно просмотрите её с помощью node test/live-manus.mjs --evidence-dir <new-absolute-private-directory>; предварительный просмотр выполняет только локальные проверки идентичности/учётных данных, создаёт криптографический nonce и ожидающий тикет и не выполняет никаких вызовов Manus API или проверок работоспособности. Изучите предварительный просмотр, затем выполните точную команду, привязанную к nonce, которую он выводит. Выполнение атомарно потребляет тикет до запуска моста, запроса одобрения, проверок работоспособности или платной работы; повторный запуск невозможен. Он очищает переменные окружения MANUS_API_KEY и MANUS_API_BASE_URL, требует точного вывода и остановленного статуса, проверяет дельту бюджета и оба израсходованных одобрения, а также сохраняет приватные доказательства config/state/work/result вместо их удаления.
Игнорируемые пакеты RC5/RC6/RC7 и их каталоги .release-staging являются лишь историческими артефактами. Они не являются входными данными для RC8 и никогда не должны продвигаться как текущий кандидат.
После продвижения и принятия перезапущенными клиентами создайте строгий дескриптор на основе примера внутри корня доказательств, контролируемого оператором, и выполните npm run evidence:release -- --descriptor <absolute-descriptor.json> --output-dir <evidence-root>\<packet-id> --require-accepted. Базовое имя выходного каталога должно совпадать с идентификатором пакета. Экспортёр проверяет установленные метаданные, маркер продвижения, общую конфигурацию, содержимое пакета, хэши кандидата и именованный профиль принятия; он принимает входные артефакты только из этого канонического корня доказательств, отклоняет конфиденциальные/ограниченные данные и перезаписи, редактирует поля JSON с повествованием/идентификатором провайдера, даже если приватное состояние было переименовано, и сканирует ключи и значения JSON на предмет идентификаторов, характерных для Manus, перед созданием синхронизированных evidence-report.json, evidence-report.md и manifest.json. Выполните npm run evidence:verify -- --packet-dir <absolute-packet-directory>, чтобы обнаружить отсутствующие, лишние или изменённые файлы. Манифест — это перекрёстная проверка целостности, а не подпись против вредоносного локального редактора. Защитите ACL корня доказательств Windows отдельно. Продвижение является предварительным, пока не завершится финальный принятый экспорт. Заблокированный пакет до продвижения может быть экспортирован без --require-accepted; это доказательство, а не принятие.
Предварительно просмотрите нормализацию регистрации для Codex, Claude Code и обнаруженных профилей Claude Desktop с помощью <candidate-release>\operations\configure-clients.ps1. По умолчанию он работает в режиме пробного запуска, отказывается от активных целевых процессов или неоднозначных регистраций и поддерживает манифест восстановления с точным совпадением байтов для изменённых файлов. Не используйте его автономный режим -Apply для обычного переключения релиза. Выполняйте операции релиза из установленного неизменяемого каталога кандидата, а не из изменяемой исходной копии.
Переключение релиза — это намеренная операция в окне технического обслуживания, а не действие фонового наблюдателя. Полностью завершите Codex, Claude Code, Claude Desktop и другие MCP-хосты, затем выполните <candidate-release>\operations\check-cutover-readiness.ps1. Он требует повторных пустых выборок на узлах Agent Bridge и известных семействах и потомках хостов Codex/Claude. Используйте <candidate-release>\operations\cutover-release.ps1 -ReleaseId <version+sha7> для фактической транзакции регистрации и выпуска с одной блокировкой. Наблюдатель может сообщать о готовности, но никогда не должен вызывать команду изменения. Это оперативное затишье, а не принудительный барьер запуска на уровне ОС; хост, открытый во время окна, приводит к прерыванию транзакции и восстановлению, где это обнаружимо.
Перед переключением scripts\rehearse-rollback.ps1 может установить кандидата с точным хэшем и предыдущие пакеты в совершенно новый внешний фикстур, переключить кандидат → предыдущий → кандидат, проверить стабильный шим фикстуры и канареечные тесты MCP с отключённым провайдером, а также сохранить хэшированный манифест доказательств. Он не принимает ни живую установку, ни путь регистрации клиента. Доверенный примитив переключения по-прежнему требует, чтобы все MCP-хосты были закрыты, и это одноразовое доказательство не заменяет послетрансферную живую тренировку отката.
<trusted-release>\operations\switch-release.ps1 — это низкоуровневый примитив релиза/отката. Он проверяет целевую установленную среду выполнения, использует отказывающий обслуживающий шим, записывает маркер релиза перед включением живого шима, создаёт точную резервную копию для отката и закрывается при обнаружении активных процессов. Используйте новейшие проверенные байты операционного скрипта, даже если его цель -ReleaseId — более старая установленная среда выполнения. protect-state.ps1 заменяет унаследованные ACL каталога состояния явным доступом для текущего пользователя, SYSTEM и администраторов; проверьте его цель перед использованием -Force.
См. HANDOFF.md для процедуры релиза и отката и SECURITY.md для модели безопасности.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Runtime permission, approval, and audit layer for AI agent tool execution.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Preflight, approve, and prove consequential agent actions with signed evidence and x402 tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/voyageseattle-hash/agent-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server