Совместная работа AI-сессий
Подсказки передаются с MQTT QoS 2. Существующий Mongo claim обеспечивает вставку в контекст не более одного раза. Сбой во время вызова harness оставляет доставку в состоянии uncertain без автоматического повтора; повторная отправка допускается только по явному запросу получателя. Только worker использует постоянную сессию брокера с ограниченным сроком; publisher и doctor используют чистые сессии и случайные ID. bee collaborate doctor сообщает о снижении QoS, а доставка продолжается через Mongo polling. Результат каждого получателя сохраняется даже при истечении срока сообщения до публикации подсказки.
Bee Collaborate связывает существующие AI-сессии через MQTT и общую MongoDB. Если хост поддерживает это, сообщение поступает в ту же беседу и может активировать ожидающую сессию. Каждая нативная сессия имеет отдельную идентичность.
Общая база и брокер
Заголовок раздела «Общая база и брокер»Настройте MongoDB команды по руководству Первый запуск. Профили используют одну базу и пространство совместной работы. Настройте MQTT-брокер, например EMQX, и оставьте получатель работающим:
bee config set collaboration.enabled truebee config set collaboration.space my-teambee config set mqtt.host broker.example.combee config set mqtt.port 8883bee config set mqtt.tls truebee workerTLS включён по умолчанию, порт 8883. Передайте BEE_MQTT_USERNAME и
BEE_MQTT_PASSWORD через менеджер секретов или используйте маскируемые параметры
mqtt.username / mqtt.password. Маскирование не шифрует базу данных. Брокер
должен разрешать пространство bee/v1/<space>/.... После изменения настроек
перезапустите worker.
Подключиться из настоящей беседы
Заголовок раздела «Подключиться из настоящей беседы»Запустите в среде инструментов живой сессии Codex с поддержкой queue --thread:
bee collaborate join --harness codex --name backend --native-id "$CODEX_THREAD_ID" --jsonBEE_COLLABORATE_SESSION_ID='<session.id>' bee collaborate subscribe 'projects/bee/#' --jsonBEE_COLLABORATE_SESSION_ID='<session.id>' bee collaborate publish projects/bee/backend --message 'API ready for review' --jsonЗамените <session.id> значением из результата join. Передавайте публичный
селектор явно в следующих командах: отдельные shell-инструменты не сохраняют
предыдущие export. Используйте один профиль BEE_HOME. Селектор связан с
идентичностью хоста и не является повторно используемым credential. Старый
транскрипт не заменяет живую сессию. После выхода или смены беседы подключитесь заново.
Сообщения, вопросы и ответы
Заголовок раздела «Сообщения, вопросы и ответы»Следующие команды также предполагают явную передачу того же селектора сессии:
bee collaborate peers --jsonbee collaborate send --to '<peer-id>' --message 'Review complete' --jsonbee collaborate ask --to '<peer-id>' --message 'Which API route?' --jsonbee collaborate reply --request '<question-message-id>' --message 'Use /orders' --jsonbee collaborate status '<message-id>' --jsonbee collaborate ack --delivery '<delivery-id>' --state model_acknowledged --jsonbee collaborate unsubscribe 'projects/bee/#' --jsonbee collaborate leave --jsonpublish отправляет заметку в тему, send — конкретному участнику, ask/reply
связывают вопрос и ответ. Фильтры поддерживают + и конечный #; тема публикации
должна быть конкретной. Новая подписка не воспроизводит старые задания.
Входящий текст — внешний контент участника, подчинённый инструкциям владельца и хоста.
Присутствие, входящие сообщения и группы тем
Заголовок раздела «Присутствие, входящие сообщения и группы тем»bee who --json --limit 20 включает машину, ОС, среду агента и версию Bee, записанные при подключении. Lease и состояние stale отделены от этих описательных полей; присутствие не доказывает чтение сообщения моделью.
bee collaborate inbox --since 2h --limit 20 --jsonbee collaborate inbox --all --limit 20 --jsonbee collaborate group list --limit 20 --jsonbee collaborate group members projects/bee --limit 20 --jsonbee collaborate group history projects/bee --limit 20 --jsonВыполняйте команды в подключённой исходной беседе с её селектором сессии. Чтение входящих не захватывает, не подтверждает, не активирует и не удаляет доставку. --all включает подтверждённые входящие этой сессии. История требует активной подписки на точную тему в текущем поколении; подписка с wildcard не даёт доступа к истории.
Списки групп и участников по умолчанию ограничены 20 записями, принимают 1–100 и показывают shown, hasMore, omissions. Входящие и история по умолчанию содержат 50 сообщений, допустимо 1–500. Обычный текст показывает до 160 символов; JSON содержит полные тела сообщений. Поля сессии и текстовые предпросмотры очищаются от управляющих символов терминала. Небольшой лимит уменьшает объём контекста.
Поддержка хостов
Заголовок раздела «Поддержка хостов»- Codex CLI/TUI: нативная очередь зарегистрированной живой беседы. macOS/Linux
проверяет владельца через
lsofи writer lock; активация Windows не реализована. В Windows подключение Codex возвращаетunsupported_platformс кодом 5 до создания локальной идентичности, привязки или удалённой сессии. Поддержка доставки Codex для Windows не добавляется. - Claude Code: нужны Bee Channel server (
bee collaborate channel) в MCP конфигурации, разрешение Channels и lifecycle hooks. Одной регистрации MCP недостаточно. Канал подтверждает, какому хосту он принадлежит: поCLAUDE_PID, если эта переменная есть, иначе — по родительскому процессу операционной системы. Claude передаётCLAUDE_PIDдочерним процессам hooks и shell, но не дочерним MCP-серверам, поэтому MCP-сервер всегда идёт по пути родительского процесса. В Windows этот поиск появился в 1.0.0-beta.10; более ранние сборки Windows завершались при запуске с пустым stdout, а MCP-клиенты сообщают об этом только как о закрытом соединении. Пример настройки приведён ниже. - Hermes CLI:
bee collaborate install-hermes --home /path/to/hermes-homeустанавливает плагин. Включите его в том же профиле командойhermes plugins enable bee-collaborate --no-allow-tool-override, затем перезапустите с нужнымиHERMES_HOMEиBEE_HOME. Первый инструментbee_*присоединяется к исходной CLI-беседе. Gateway/Desktop этот адаптер не обслуживает.
Неожиданное завершение процесса-получателя останавливает канал с кодом 1 даже до инициализации MCP. После инициализации EOF, ошибка ввода-вывода или явный ошибочный результат получателя также останавливают канал. Диагностика выводится в stderr. При завершении выполняется попытка leave с проверкой поколения и ограниченным ожиданием. Значение состояний доставки сохраняется: запись в транспорт не доказывает, что модель прочитала сообщение.
Что доказывает статус доставки?
Заголовок раздела «Что доказывает статус доставки?»Bee сохраняет сообщение и получателей до MQTT-уведомления. Восстановление может
повторить уведомление; постоянное состояние каждого получателя предотвращает
повторную нативную отправку той же подсказки. transport_written, host_accepted,
model_acknowledged и связанный ответ — разные уровни доказательства.
Подтверждение брокера не доказывает, что модель прочитала сообщение.
При сбое процесса возможен статус uncertain; однократное выполнение модели не
гарантируется. Задания истекают; локально для регистрации получателя допускается
30 подходящих доставок за 60-секундное окно. Это не бюджет токенов модели.
MQTT-связь не означает соответствие отдельной спецификации протокола A2A.
Настройка Claude Channel
Заголовок раздела «Настройка Claude Channel»Объедините первый блок с .mcp.json, второй — с .claude/settings.json, сохранив существующие записи. Замените абсолютные пути и используйте тот же BEE_HOME, что у worker. Команды hooks рассчитаны на macOS/Linux. Не задавайте CLAUDE_CODE_SESSION_ID вручную: его предоставляет живой хост. В preview Channels требуется нативное разрешение разработки. Обычные разрешения инструментов и политика организации сохраняются. После смены беседы переподключите MCP-сервер или перезапустите Claude перед новой подпиской. Попросите модель использовать bee_subscribe; в той же сессии работают bee_publish, bee_send, bee_ask, bee_reply, bee_peers и bee_ack.
{ "mcpServers": { "bee-collaborate": { "command": "/absolute/path/to/bee", "args": ["collaborate", "channel"], "env": { "BEE_HOME": "/absolute/path/to/bee-profile" } } }}{ "hooks": { "SessionStart": [{ "hooks": [{ "type": "command", "command": "BEE_HOME='/absolute/path/to/bee-profile' '/absolute/path/to/bee' collaborate channel-hook --event SessionStart" }] }], "SessionEnd": [{ "hooks": [{ "type": "command", "command": "BEE_HOME='/absolute/path/to/bee-profile' '/absolute/path/to/bee' collaborate channel-hook --event SessionEnd" }] }] }}В Windows VAR='value' command — недопустимый синтаксис shell, поэтому команды
hooks не несут BEE_HOME и используется профиль по умолчанию в домашнем каталоге
пользователя. Прямые слэши избавляют от экранирования в JSON.
{ "hooks": { "SessionStart": [{ "hooks": [{ "type": "command", "command": "\"C:/absolute/path/to/bee.exe\" collaborate channel-hook --event SessionStart" }] }], "SessionEnd": [{ "hooks": [{ "type": "command", "command": "\"C:/absolute/path/to/bee.exe\" collaborate channel-hook --event SessionEnd" }] }] }}Шим .cmd нельзя использовать как MCP command: MCP-клиенты на Node запускают
исполняемый файл напрямую и отклоняют его. Указывайте настоящий bee.exe или
стабильную ссылку на каталог установленного инструмента, чтобы путь пережил
обновления.
claude --dangerously-load-development-channels server:bee-collaborateНе хотите писать эти файлы вручную? Попросите агента сделать это →
Текущая работа с ограниченным выводом
Заголовок раздела «Текущая работа с ограниченным выводом»После присоединения используйте bee collaborate work set --repo bee --branch feature/example --task "Review tests". Отсутствующие репозиторий и ветка определяются из текущего Git worktree; текст задачи не угадывается.
bee who --json --limit 20 показывает незакрытые сессии, включая просроченные с пометкой stale. По умолчанию выводится до 20 записей; допустимы значения 1–100. shown, hasMore, omissions.recordsAtLeast и truncatedFields в строке явно отражают ограничения без выдуманного общего числа пропусков. Задача допускает до 512 символов UTF-16, репозиторий/ветка — 256, worktree — 1024. В новом вводе управляющие символы отклоняются; из текстового списка они удаляются.
Путь worktree и описание задачи доступны настроенному пространству. Изменение требует существующей идентификации вызывающего и проверок живой сессии. Повторное подключение сохраняет успешные изменения работы. Это метаданные сессии, а не автоматическое назначение задач или доказательство завершения.
Восстановите сеанс или неподтверждённое сообщение
Заголовок раздела «Восстановите сеанс или неподтверждённое сообщение»Используйте этот порядок, если участник виден, но работа не доходит до его разговора. Нужны описанные выше хранилище, брокер и native-среда. Команды проверены по справке/коду; это не запись живого обмена. Подставьте собственные возвращённые ID.
Сначала прочитайте состояние; явно указывайте BEE_COLLABORATE_SESSION_ID в каждом отдельном вызове оболочки:
BEE_COLLABORATE_SESSION_ID='<session.id>' bee collaborate inbox --since 2h --limit 20 --jsonBEE_COLLABORATE_SESSION_ID='<session.id>' bee collaborate status '<message-id>' --jsonbee who --json --limit 20Чтение inbox — не ACK. Успех publish/send означает принятие операции, а не чтение участником. transport_written фиксирует запись в транспорт; host_accepted — принятие хостом; model_acknowledged — подтверждение получателя. Связанный ответ подтверждает ответ, но не выполнение задачи или QA. Подтверждайте доставку только после фактического получения; не создавайте ACK ради удаления предупреждения.
При устаревшем presence восстановите живой разговор владельца и войдите заново в нём. Используйте новый селектор, а не привязку другого thread. После leave или смены разговора повторите join и subscribe. После изменения брокера/настроек перезапустите worker. Диагностика завершения канала/receiver находится в stderr. uncertain означает, что выполнение при сбое не установлено: перед повторной отправкой потенциально дублируемой работы проверьте состояние и уточните у получателя.
Ошибки различают неверное использование (4), отсутствие (3), отключение/недоступность/неподдерживаемую платформу (5) и конфликт (8); другие отказы могут дать 1. Читайте также JSON-код ошибки. Windows Codex unsupported_platform нельзя исправить повторным join или выдуманным native ID. Используйте поддерживаемую среду/платформу. receive активно потребляет доставки; для чтения используйте inbox.
По завершении используйте unsubscribe и leave с той же идентичностью. Для зависимостей есть сохранённые планы; они не отправляют сообщения и не удостоверяют результаты. Для передачи инструкций см. управление поведением.