by Hoylon (community) Claude Desktop, Claude Code, OpenCode, Codex, Grok, Kimi, DeepSeek, Gemini, локальные модели через Ollama/vLLM, совместимые с OpenAI API, macOS, Linux, Windows
Local-first, auditable MCP-координация для равноправных AI coding-агентов и их оператора-человека.
Open-source control plane и runtime для организационных агентов: общий контекст компании, изолированное выполнение, approvals и MCP.
Плагин DeepSeek Harness (DSH): диспетчеризация задач DSH-агентам из Claude Code / Codex — нативный прогресс субагентов, …
Git-based control plane для навыков, инструментов, контекста, прав доступа и идентичности AI-агентов. Self-hosted, MCP-native.
Позволяет чату напрямую диспетчеризовать и контролировать локальные Codex / DSH: не нужно вручную переносить промпты и …
git clone https://github.com/hoylon/peerbridge-mcp.git cd peerbridge-mcp python -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install -e ".[dev]" peerbridge init --project-root . --scope demo peerbridge doctor --project-root . --scope demo
Английский | Традиционный китайский | Упрощённый китайский
![]()
Объедините Codex, Claude Code, Grok, Kimi, DeepSeek, Gemini, локальные модели и другие MCP или совместимые с OpenAI агенты в одну проверяемую команду ИИ.
PeerBridge подключает официальные клиенты, ретрансляционные сервисы, совместимые API и локальные модели, не привязывая команду к одному поставщику. Он предоставляет каждому агенту равное место, общую одобренную память, ограниченное параллельное обсуждение, владение задачами, взаимное оценивание, кросс-агентные аудиты и управляемую человеком комнату, где работа остаётся видимой. Живая панель токенов показывает использование по поставщику и модели. PeerBridge работает локально на SQLite, хранит учётные данные поставщиков вне чата и истории проекта и сохраняет связанную с SHA запись сообщений, решений, доказательств, оценок, отзывов и передач задач.
Сообщения от человека или агента могут активировать комнату, сотрудничество останавливается при достижении консенсуса, возникновении блокировок, застое или явных ограничениях, а оператор может вмешаться в любой момент.
Статус: альфа. Ядро координации и аудита протестировано, но публичный API и схема базы данных могут измениться до версии 1.0.
Непрерывность работы и коммерциализация являются явными границами проектирования. См. память и длительные операции и границу open-core. Модуль для удалённого/мобильного доступа экспериментальный и по умолчанию отключён. Пункты дорожной карты не являются заявлениями о возможностях.
Запуск двух агентов кодирования в одном репозитории создаёт предсказуемые режимы сбоев:
PeerBridge решает эти проблемы координации, не делая ни одного из агентов главным. Одна задача имеет одного арендатора записи, коллеги могут рецензировать друг друга, а человек может вмешаться.
flowchart LR
H["Human operator"] --> M["Pixel control room"]
C["Codex / Claude Code"] --> S1["PeerBridge stdio process"]
A["Grok / Kimi / DeepSeek / Gemini / local Agents"] --> S2["PeerBridge stdio process"]
M --> S3["PeerBridge stdio process"]
R["Private mobile UI"] -->|"Tailnet HTTPS"| T["Tailscale Serve"]
T -->|"loopback only"| S4["Human MCP message gateway"]
S1 --> DB[("Shared SQLite store")]
S2 --> DB
S3 --> DB
S4 --> DB
DB --> L["SHA-linked audit events"]
DB --> W["Mailbox, leases, reviews, proofs"]
Каждый клиент MCP запускает собственный процесс сервера stdio с уникальным --agent-id. Эти процессы координируются через одну локальную для проекта базу данных .peerbridge/peerbridge.sqlite3. Режим WAL SQLite и транзакции BEGIN IMMEDIATE сериализуют изменения состояния.
solo_allowed, two_party_required, presence_aware и кворума N участников.feedback (cryptography).2026-07-28.Скачайте PeerBridgeControlRoom-0.1.0a5.post1-windows-x64-portable.zip из GitHub-релиза Alpha, распакуйте ZIP-архив полностью в папку с правами на запись и дважды щёлкните по Launch PeerBridge.cmd. Портативное приложение создаёт локальное рабочее пространство в %LOCALAPPDATA%\PeerBridge\workspace; оно не включает учётные данные провайдера или приватные данные времени выполнения.
Этот Alpha-исполняемый файл не подписан кодом, поэтому Windows SmartScreen может запросить проверку издателя. Проверьте SHA-256 релиза перед открытием. PeerBridge не предоставляет автоустановщик и не изменяет существующую среду Python.
Требования: Python 3.11 или новее.
git clone https://github.com/hoylon/peerbridge-mcp.git
cd peerbridge-mcp
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"
peerbridge init --project-root . --scope demo
peerbridge doctor --project-root . --scope demo
Запустите сервер вручную:
peerbridge serve --project-root . --agent-id codex-main --scope demo
Когда один клиент может выбирать несколько официальных или ретранслируемых моделей, запишите маршрут без раскрытия учётных данных:
peerbridge serve --project-root . --agent-id grok-relay-reviewer --scope demo `
--client-name relay-coding-client `
--provider-id relay:grok-official-channel `
--model-id grok
agent-id идентифицирует логического работника. client-name идентифицирует приложение или адаптер с поддержкой MCP. provider-id — это несекретная метка маршрута, предоставляемая оператором, а model-id идентифицирует выбранную модель. Официальные сайты Grok или DeepSeek и ретранслируемый маршрут являются отдельными идентификаторами, даже если они предоставляют одну и ту же семейство моделей.
Прямые OpenAI-совместимые конечные точки не требуют CC Switch. На странице Безопасные подключения сохраните базовый URL API и ключ API в диспетчере учётных данных Windows, затем зарегистрируйте один маршрут на каждого логического агента. Ключ API никогда не попадает в SQLite или сообщения MCP. Некоторые ретрансляторы принимают один запрашиваемый идентификатор модели, но сообщают стабильный псевдоним развёртывания в ответах. В этом случае явно укажите ОЖИДАЕМУЮ МОДЕЛЬ ОТВЕТА. Например, маршрут может запрашивать grok-4.6, но требовать, чтобы ответ сообщал grok-4.6-build. Не настроенный или изменяющийся псевдоним приводит к отказу, а не молчаливо обрабатывается как запрошенная модель.
Сервер общается через JSON-RPC с разделителями в виде новых строк через stdin/stdout. Обычно MCP-клиент запускает его за вас, поэтому сервер, запущенный вручную и ожидающий ввода, — это ожидаемое поведение.
Используйте абсолютный путь к исполняемому файлу Python, чтобы каждый клиент запускал одну и ту же установленную среду и общую базу данных.
codex mcp add peerbridge -- C:\path\to\peerbridge-mcp\.venv\Scripts\python.exe `
-m peerbridge_mcp serve --project-root C:\path\to\your-project `
--agent-id codex-main --scope your-project
claude mcp add --scope project --transport stdio peerbridge -- `
C:\path\to\peerbridge-mcp\.venv\Scripts\python.exe `
-m peerbridge_mcp serve --project-root C:\path\to\your-project `
--agent-id claude-code --scope your-project
Используйте разные имена точек входа MCP-сервера, когда оба клиента записывают общий конфигурационный файл проекта, например peerbridge-codex и peerbridge-claude. Примеры для TOML, JSON, Linux и macOS см. в конфигурации клиента.
Тот же сервер stdio можно зарегистрировать в Kimi Code CLI; другим провайдерам может потребоваться отдельный раннер с поддержкой API. См. границы интеграции агентов.
PeerBridge сообщает об эффективных возможностях каждого связанного места в комнате, а не выводит их из имени агента:
MCP NATIVE: реальный MCP-клиент или терминал владеет сессией и может напрямую вызывать сервер PeerBridge.MCP TOOL: API-модель находится внутри ограниченного, разрешённого цикла MCP-инструментов PeerBridge; это поддерживает инструменты, но не представлено как нативная клиентская сессия.INFERENCE: маршрут может возвращать ограниченный ответ модели, но не может вызывать инструменты PeerBridge. Веб-чаты и однократные CLI-запросы относятся сюда.Любой другой клиент или терминал, реализующий MCP, может использовать ту же команду stdio, показанную в конфигурации клиента. Настроенный маршрут не считается активным, пока этот клиент фактически не запущен и не авторизован.
Официальные справочники по клиентам:
peerbridge monitor --project-root C:\path\to\your-project --scope your-project
Монитор отображает сообщения, владение задачами, рецензии коллег, записи доказательств и журнал событий. Его редактор отправляет человеческое сообщение через тот же путь MCP stdio, что и агент, поэтому вмешательство человека получает те же хеши и аудиторский след.
Комната создаёт место с областью видимости комнаты; она не перемещает и не потребляет глобальную идентичность. Таким образом, один и тот же агент может участвовать в нескольких комнатах одновременно. У каждого места есть независимый room_session_id, запрошенный маршрут и курсор комнаты. Удаление места останавливает будущую доставку в этой комнате, сохраняя её сообщения и историю аудита. Контекст не копируется между комнатами автоматически; для его передачи требуется явное, аудируемое сводное сообщение, когда оператор хочет поделиться контекстом.
Каждая пользовательская комната имеет явную политику автоматизации. Выключено записывает историю без активации модели. Один раунд запрашивает каждое маршрутизированное место агента параллельно ровно один раз. Ограниченная дискуссия продвигает параллельные раунды только после завершения всех текущих диспетчеризаций. Ответы заканчиваются на CONTINUE, CONSENSUS или BLOCKED; координатор останавливается при достижении консенсуса, блокировках, застое, лимите раундов или бюджете сообщений. Панель комнаты позволяет человеку приостановить и возобновить выполняющийся раунд, продолжить ограниченную дискуссию после автоматического условия остановки или остановить её вручную.
Ответы никогда не создают неконтролируемый каскад ответов. Диспетчеризуемы только созданные координатором запросы, продвижение раунда идемпотентно, и у каждой области видимости есть один супервизорский блокировщик записи. Запуск нового поста в комнате останавливает более старую открытую дискуссию, сохраняя её историю и причину остановки.
Настольный редактор может прикреплять до пяти явно выбранных файлов PNG/JPEG/GIF/WebP или текстовых файлов UTF-8 в форматах Markdown/CSV/JSON/log (по 8 МиБ каждый, всего 16 МиБ). PeerBridge проверяет объявленный тип, отклоняет текст, похожий на учётные данные, копирует каждый файл в игнорируемое локальное хранилище .peerbridge-artifacts/chat/ под именем SHA-256 и привязывает к сообщению только этот относительный путь с адресацией по содержимому. Исходный абсолютный путь и имя файла не попадают в SQLite. Начальные запросы на рассылку/дискуссию получают привязку один раз; последующие раунды не дублируют её. Передача вложения не доказывает, что выбранный провайдер может интерпретировать изображения, поэтому неподдерживаемые маршруты должны обрабатывать его как аудируемую ссылку на файл.
Страница Общая память отображает явные записи памяти отдельно от чата. PeerBridge не извлекает и не синхронизирует скрытую цепочку рассуждений, состояние разговора на стороне провайдера или учётные данные. Агент может записывать собственные частные черновые заметки, активные участники комнаты могут читать память комнаты, а публиковать или отзывать память проекта может только human-operator. Продвижение проекта требует привязанного к SHA исходного сообщения, родительской памяти или артефакта проекта. Отзыв сохраняет оригинальную запись и добавляет новую квитанцию аудита вместо удаления истории.
Запускаемые через API совместимые с OpenAI раннеры получают только инструменты list_memories и read_memory в режиме только для чтения по умолчанию. Таким образом, они могут использовать те же утверждённые факты, что и Codex, Claude Code, Grok, Kimi, DeepSeek или локальная модель, не получая права на публикацию памяти на уровне проекта. Каждая комната поддерживает независимую сессию модели и курсор, даже если один и тот же глобальный агент имеет место в нескольких комнатах.
Дополнительная Экспериментальная страница удалённого доступа предоставляет намеренно узкий интерфейс для человека через Tailscale Serve. Бэкенд привязывается только к 127.0.0.1; прокси tailnet предоставляет аутентифицированную идентификацию пользователя. Поддерживается наблюдение с ограничением области видимости и аудируемые сообщения MCP от человека, но не выполнение команд оболочки или изменение файлов.
.\scripts\launch_remote_control.cmd -Port 8765 -Scope your-project
См. приватное удалённое и мобильное управление для ознакомления с границей безопасности, тестами, настройкой телефона и явным запретом на публичное раскрытие Tailscale Funnel.
PeerBridge предоставляет машиночитаемую границу возможностей без активации размещённого сервиса, платёжного потока или коммерческого поставщика прав:
peerbridge product --project-root . status
peerbridge product --project-root . status --capability remote.experimental.self_hosted
Локальный хук аналитики ВЫКЛЮЧЕН по умолчанию. Без явного согласия он не создаёт идентификатор установки, не ставит событие в очередь и не обращается к сетевой конечной точке. В текущей Альфа-версии вообще нет отправителя аналитики; включённые данные остаются на локальной машине в виде агрегированных счётчиков за UTC-день с случайным, сбрасываемым идентификатором установки.
peerbridge analytics --project-root . status
peerbridge analytics --project-root . enable
peerbridge analytics --project-root . export
peerbridge analytics --project-root . disable
Счётчик загрузок download_count в GitHub Release измеряет количество загрузок файлов, а не уникальных пользователей. Реальные оценки DAU/WAU/MAU требуют будущего прозрачного сборщика плюс явного согласия приложения и должны описываться как активные установки, а не люди. Запросы, тела сообщений, API-ключи, выводы моделей, имена/пути файлов, названия проектов, учётные идентификаторы, IP-адреса и
Произвольные метаданные находятся вне публичной схемы событий. См.
телеметрию и метрики запуска и
Экспериментальные удалённые/коммерческие хуки.
Объявления не зависят от аналитики. В собранной Альфа-версии по умолчанию включено HTTPS-соединение для объявлений только на чтение, чтобы срочные уведомления могли появляться без проверки обновлений. Каждый запрос отправляет выбранную локаль интерфейса, курсор объявлений для данной локали и фиксированный неидентифицирующий User-Agent клиента объявлений PeerBridge; обычная сетевая инфраструктура также может наблюдать IP-адрес источника. Он не отправляет идентификатор установки, учётные данные, пути к проектам, содержимое сообщений или вывод моделей. На странице «Объявления» предусмотрен отдельный сетевой переключатель: его отключение останавливает запросы объявлений, оставляя доступным для чтения ограниченный локальный кэш. Всплывающие уведомления имеют собственную независимую настройку. Если сохранённый файл настроек нечитаем, оба механизма — сетевой опрос и всплывающие уведомления — блокируются до тех пор, пока пользователь явно не сохранит новые настройки.
Обратная связь отправляется приватно по HTTPS. Обычные метаданные отчёта, выбранные пользователем диагностические данные, контактные данные и вложения защищены при передаче, но не имеют сквозного шифрования внутри пакета поддержки. Только дополнительные учётные данные, которые пользователь явно выбирает для включения, шифруются локально на открытый ключ поддержки мейнтейнера перед загрузкой. См. конфиденциальность обратной связи.
Пульт управления предоставляет сохраняемую языковую основу для локалей zh-Hant / zh-Hans / английский,
воспроизводимое обучающее руководство для первого запуска и явную проверку обновлений только для чтения. Установка Альфа-версии сообщает о новых релизах на GitHub. Будущий Стабильный канал будет следовать только за стабильной веткой релизов.
Проверка никогда не загружает и не устанавливает код; подписанные обновления и откаты в один клик остаются задачей на будущее.
На странице «Безопасные подключения» поддерживаются два локальных пути подключения:
Для URL-адреса, совместимого только с OpenAI, PeerBridge добавляет стандартный базовый путь API /v1. Если провайдер публикует явный путь совместимости, введите этот полный базовый путь; PeerBridge сохраняет его. Это поддерживает такие конечные точки, как базовый путь совместимости Gemini /v1beta/openai/, без кода, специфичного для провайдера.
PeerBridge не помещает сырые API-ключи или полные частные конечные точки в сообщения MCP, SQLite, аудит-события, квитанции, журналы, аргументы командной строки, глубокие ссылки, Git или телеметрию. Он не читает базу данных CC Switch и не экспортирует конфигурацию CC Switch. Автоматическое создание провайдеров CC Switch намеренно отключено, поскольку его публичные контракты глубоких ссылок/импорта могут раскрыть ключ за пределами хранилища секретов операционной системы.
Композитор использует проверяемый каскад: агент-получатель, зарегистрированный маршрут провайдера, модель, доступная на этом маршруте, а затем режим рассуждения, доступный для этой конкретной модели. Семейства моделей и уровни рассуждения — это отдельные поля; вариант модели, такой как
gpt-5.6-luna, не должен представляться как уровень рассуждения. Маршрутизированное сообщение остаётся в статусе REQUESTED до тех пор, пока сессия получателя, чья наблюдаемая идентичность во время выполнения соответствует всем запрошенным полям, не подтвердит его.
Сессия с несовпадающими данными не может подтвердить сообщение. Только после этого PeerBridge добавляет квитанцию маршрута с привязкой к SHA и статусом VERIFIED.
Сохранённые маршруты можно зарегистрировать через MCP:
{
"route_id": "codex-luna-medium",
"agent_id": "codex-main",
"provider_id": "openai-official",
"model_id": "gpt-5.6-luna",
"reasoning_mode": "medium",
"route_class": "official"
}
Для провайдера с проверенным псевдонимом ответа добавьте отдельную привязку:
{
"route_id": "relay-grok-4.6",
"agent_id": "grok-relay",
"provider_id": "relay-grok-sui-xiang",
"model_id": "grok-4.6",
"response_model_id": "grok-4.6-build",
"route_class": "relay"
}
model_id — это идентификатор исходящего запроса. response_model_id — это точный идентификатор модели, требуемый в каждом ответе завершения; если он опущен, по умолчанию используется model_id. Оба привязаны к SHA в профиле маршрута и квитанции вывода.
Вызовите upsert_route_profile с этим полезным нагрузкой, затем выберите профиль в мониторе или передайте route_profile_id в send_message. Профили и введённые пользователем метки являются запросами маршрутизации, а не доказательством идентичности вышестоящего провайдера. Запускайте каждый MCP-пир с его фактической
Наблюдаемые метки, включая --reasoning-mode, чтобы шлюз квитанций мог их проверить.
bridge_status и workboard перед началом работы.claim_task с точными путями для чтения и записи.announce_work, пока работает за пределами PeerBridge.record_proof.request_review.submit_review.complete_task; PeerBridge повторно хеширует файлы и проверяет политику.verify_audit_chain или запустить peerbridge doctor.request_review — это ручная очередь управления. Он никогда не вызывает модель и отображается на странице Review, а не в чате комнаты. Чтобы разбудить маршрутизированных агентов комнаты, отправляйте сообщения через post_room_message: once отправляет один параллельный раунд, а discussion запускает ограниченные параллельные раунды. Ответы никогда не вызывают автоматическое распространение.
PeerBridge координирует работу. Клиенты для кодирования по-прежнему читают, редактируют и тестируют файлы с помощью своих обычных инструментов.
| Режим | Правило завершения |
|---|---|
solo_allowed |
Достаточно актуального доказательства. |
two_party_required |
Требуется утверждённый отзыв от настроенного пира. |
presence_aware |
Требует присутствия пира, пока он в сети; записывает резервный соло-режим, когда он офлайн. |
quorum_required |
Требуется review_quorum утверждений от настроенных required_peers. |
Режим с учётом присутствия поддерживает прерывистое использование. Он позволяет избежать блокировки всей работы, когда запущен только один платный агент, но при этом требует проверки, когда указанный пир действительно активен. Режим кворума предназначен для трёх или более независимо подключённых агентов. Он не запускает, не оплачивает и не аутентифицирует эти агенты.
.peerbridge/ может содержать метаданные разговоров и задач. Он игнорируется Git, но не шифруется. Защищайте каталог проекта с помощью разрешений операционной системы.Перед использованием моста для чувствительных репозиториев ознакомьтесь с полной моделью угроз.
python -m pytest
python -m compileall -q src
python -m build
См. CONTRIBUTING.md, архитектуру и демонстрационное руководство. Будущие облачные и мобильные разработки чётко разделены в дорожной карте.
Лицензия Apache 2.0. См. LICENSE.
Название и логотип PeerBridge являются отдельными брендовыми активами и не лицензируются по Apache-2.0. См. происхождение брендовых активов и рекомендации по товарным знакам.