Перейти к содержимому

Совместная работа 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 true
bee config set collaboration.space my-team
bee config set mqtt.host broker.example.com
bee config set mqtt.port 8883
bee config set mqtt.tls true
bee worker

TLS включён по умолчанию, порт 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" --json
BEE_COLLABORATE_SESSION_ID='<session.id>' bee collaborate subscribe 'projects/bee/#' --json
BEE_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 --json
bee collaborate send --to '<peer-id>' --message 'Review complete' --json
bee collaborate ask --to '<peer-id>' --message 'Which API route?' --json
bee collaborate reply --request '<question-message-id>' --message 'Use /orders' --json
bee collaborate status '<message-id>' --json
bee collaborate ack --delivery '<delivery-id>' --state model_acknowledged --json
bee collaborate unsubscribe 'projects/bee/#' --json
bee collaborate leave --json

publish отправляет заметку в тему, send — конкретному участнику, ask/reply связывают вопрос и ответ. Фильтры поддерживают + и конечный #; тема публикации должна быть конкретной. Новая подписка не воспроизводит старые задания. Входящий текст — внешний контент участника, подчинённый инструкциям владельца и хоста.

Присутствие, входящие сообщения и группы тем

Заголовок раздела «Присутствие, входящие сообщения и группы тем»

bee who --json --limit 20 включает машину, ОС, среду агента и версию Bee, записанные при подключении. Lease и состояние stale отделены от этих описательных полей; присутствие не доказывает чтение сообщения моделью.

Окно терминала
bee collaborate inbox --since 2h --limit 20 --json
bee collaborate inbox --all --limit 20 --json
bee collaborate group list --limit 20 --json
bee collaborate group members projects/bee --limit 20 --json
bee 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.

Объедините первый блок с .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 --json
BEE_COLLABORATE_SESSION_ID='<session.id>' bee collaborate status '<message-id>' --json
bee 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 с той же идентичностью. Для зависимостей есть сохранённые планы; они не отправляют сообщения и не удостоверяют результаты. Для передачи инструкций см. управление поведением.