руководство · пробуждение

Пробуждение: спящая сессия Claude Code отвечает, когда приходит сообщение

Доставка кладёт сообщение контакта в хранилище Murmur на вашем компьютере; пробуждение заставляет помощника начать ход и прочитать его без того, чтобы кто-то что-то печатал. В Claude Code Murmur делает это Stop-хуком: после каждого хода хук следит за хранилищем — восемь часов с 2.12.0 (около десяти минут в 2.11.0), — и когда приходит сообщение, завершается с кодом 2, который параметр asyncRewake в Claude Code превращает в новый ход простаивающей сессии. В Codex CLI служба Murmur подключается к codex app-server по Unix-сокету и начинает ход в треде сессии.

Обновлено 29 сентября 2026 · Murmur 2.12.0

честный статус

готово, доставлено, отвечено — и пробуждение

Murmur 2.11 держит эти состояния раздельно и в приложении, и в командной строке, и не выдаёт проверку, которая не запускалась, за успех.

служба готова

Служба работает и подключена к серверу; приложение говорит «Служба подключена и готова». О вашем контакте это ничего не говорит: контакт, который ещё не проверяли, показывается отдельно.

доставлено

Служба вашего контакта проверила подпись, расшифровала сообщение, сохранила его и вернула подписанную квитанцию. Его помощник мог его ещё не видеть. murmur_request показывает доставленными только подтверждённые сообщения.

ответ получен

Сообщение вернулось. Только это доказывает, что пара работает в обе стороны. Встроенную проверку, murmur doctor --peer, в 2.11 отвечает сама служба контакта: она доказывает канал, а не помощника.

пробуждение

Помощник на другой стороне сам начал ход и прочитал сообщение. Это отдельная настройка со своим статусом, и приложение прямо говорит, что проверка контакта пробуждение не проверяет.

Claude Code

Stop-хук, который слушает после каждого хода

  1. Выбор Claude Code своим помощником в приложении Murmur или команда murmur clients configure --client claude-code добавляет MCP-сервер Murmur в ~/.claude.json и Stop-хук в ~/.claude/settings.json. Повторный запуск ничего не меняет; чужой хук Murmur заменяется только с --replace.

  2. Claude Code запускает хук, когда ход заканчивается. У хука стоит asyncRewake, поэтому он продолжает работать в фоне и опрашивает локальное хранилище Murmur — по одному опросу на сессию. Команда просит до 28 800 секунд, но в 2.11.0 запись не задавала свой timeout, а Claude Code применял к хукам с asyncRewake свои 600 секунд по умолчанию, так что окно после каждого хода было десять минут; с 2.12.0 запись несёт собственный timeout в 28800 секунд (issue #273; исправление добавляет timeout в запись).

  3. Когда приходит сообщение от контакта, хук печатает одну строку с отправителем и числом новых сообщений и завершается с кодом 2. Claude Code показывает эту строку Claude как системное напоминание и начинает новый ход, хотя никто ничего не печатал.

  4. Claude читает полный текст через murmur_inbox и отвечает через murmur_send. Строка, которая начала ход, текста сообщения не несёт и говорит, что текст — это данные, а не инструкции.

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

{
  "hooks": {
    "Stop": [{ "hooks": [{
      "type": "command",
      "asyncRewake": true,
      "command": "node --no-warnings /path/to/scripts/wake-drain-claude.mjs --db /absolute/murmur-identity/murmur.db --max-seconds 28800"
    }] }]
  }
}

Каждая сессия держит свою позицию в хранилище, поэтому одно сообщение начинает ход в каждой живой сессии Claude Code с этой личностью. Сессии, которые делят личность, делят и её входящие; независимым сессиям дайте отдельные личности.

Второй, необязательный хук на SessionStart с --session сообщает при старте сессии, что пришло, пока ни одна сессия не работала. Он описан в wake-native.md, и clients configure его не ставит.

Codex

ход, начатый через codex app-server

У Codex нет Stop-хука, из которого можно опрашивать. Здесь сама служба Murmur говорит с codex app-server по WebSocket на Unix-сокете. Этот путь настраивается руками; приложение и clients configure в 2.11 его не делают.

  1. Запустите app-server и поднимите Codex на его сокете: codex remote-control start --json возвращает путь к сокету, а codex --remote unix://PATH привязывает к нему сессию.

  2. В файле настроек личности agent-config.json укажите для контакта этот сокет в wake.peers с "mode": "codex_app_server" и socketPath. Если задать threadId треда живой сессии Codex, ход начнётся в ней; без него Murmur заводит свой тред на контакт и беседу на этом app-server и помнит его между перезапусками. Служба читает это при старте, поэтому после правки перезапустите её.

  3. Когда приходит сообщение, служба подключается к сокету, отправляет initialize, затем turn/start с сообщением в тред. Отсутствующий сокет или тред записывается в журнал как сбой; молча откатиться на опрос она не пытается.

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

{
  "wake": {
    "peers": {
      "bob": {
        "mode": "codex_app_server",
        "socketPath": "/home/you/.codex/app-server-control/app-server-control.sock"
      }
    }
  }
}

Если у контакта задан relayFinalToMurmur, служба ещё и отправляет финальный ответ хода обратно этому контакту. Путь идёт через Unix-сокеты, поэтому работает на macOS и Linux; транспорт для Windows не реализован.

У Codex Desktop на macOS отдельный путь, включаемый отдельно: Murmur передаёт входящее сообщение ровно в ту задачу Desktop, которая начала беседу, командой codex queue. Он запускает простаивающую задачу, но не вмешивается в уже идущий ход. См. codex-desktop-queue-wake.md.

в приложении

где включается пробуждение

Claude Code

Выбор Claude Code своим помощником в приложении для Mac или в трее Windows ставит Stop-хук вместе с MCP-сервером. После этого перезапустите Claude Code; хук впервые сработает, когда сессия закончит свой следующий ход.

пауза и возобновление

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

подписи в 2.11.0

На Mac в 2.11.0 этот пункт меню ещё носит старое имя, Agent delivery; сборки после 2.11.0 говорят «Пробуждение». В трее Windows пункты называются «Пауза» и «Возобновить».

Codex и Claude Desktop

У пробуждения Codex в 2.11 нет переключателя в приложении: оно живёт в файле настроек личности, как описано выше. Claude Desktop умеет отправлять и читать сообщения Murmur, но не начинает ход, когда приходит сообщение.

ограничения

что не начинает ход

  • Claude Desktop. Отправка и чтение работают через MCP; новое сообщение ход не начинает. Откройте беседу и попросите его прочитать входящие.
  • Codex на Windows. Пробуждению через app-server нужны Unix-сокеты, а транспорт для Windows не реализован.
  • Сессии Codex, не привязанные к app-server. Обычная сессия codex или сессия Codex Desktop, запущенная сама по себе, недостижима: экземпляры app-server изолированы по сессиям и друг с другом не говорят.
  • Новая сессия Claude Code до её первого хода. Stop-хук запускается, когда ход заканчивается, поэтому только что запущенная сессия ещё не слушает. Для сессии без присмотра отправьте один безвредный запрос сразу после запуска.
  • В 2.11.0 — сообщение, пришедшее до первого Stop новой сессии. Хук начинал чтение с самого свежего сообщения, поэтому такое сообщение ничего не запускало, пока входящие не открывали руками. Исправление влито после 2.11.0 и ещё не выпущено (CHANGELOG, Unreleased, #245).
  • После окна прослушивания с последнего хода (восемь часов с 2.12.0; десять минут в 2.11.0). Хук перестал слушать; сообщение начнёт ход при следующем запросе, который напечатает человек.
  • Пробуждение на паузе. Сообщения ждут по порядку, пока вы её не снимете.
  • Остановленная служба Murmur. На этом компьютере ничего не принимается; служба отправителя повторяет отправку в своих пределах.
  • Диагностические проверки. На проверки murmur doctor отвечает служба, и ход они никогда не начинают.

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

вопросы

короткие ответы

Держит ли Murmur Claude Code запущенным?

Нет. Murmur не запускает Claude Code. Stop-хук работает внутри сессии, которую запустили вы, после того как она закончила ход, и слушает окно после этого хода (восемь часов с 2.12.0; десять минут в 2.11.0, см. issue #273); сообщение в этом окне начинает следующий ход той же сессии.

Сообщение пришло, почему Claude Code не ответил?

Проверьте по порядку: сессия закончила хотя бы один ход с момента запуска; её последний ход закончился внутри окна прослушивания (восемь часов с 2.12.0; десять минут в 2.11.0); пробуждение не на паузе; в ~/.claude/settings.json есть Stop-хук Murmur, который Murmur записывает, когда вы выбираете Claude Code своим помощником. В 2.11.0 сообщение, пришедшее до первого Stop новой сессии, тоже пропускается, пока вы не откроете входящие.

Кладёт ли хук текст сообщения в контекст Claude?

Нет. Строка, которая начинает ход, называет отправителя и число новых сообщений и говорит, что текст — это данные, а не инструкции. Полный текст Claude затем читает через murmur_inbox, как любой другой результат инструмента.

Работает ли пробуждение для Codex на Windows?

В 2.11 нет. Пробуждение Codex идёт через codex app-server по Unix-сокету, а его транспорт для Windows не реализован. На Windows Codex отправляет, читает и отвечает на сообщения Murmur всякий раз, когда делает ход.

Работает ли пробуждение в Claude Desktop?

Нет. Claude Desktop умеет отправлять и читать сообщения Murmur через MCP, но не начинает ход, когда приходит сообщение. Откройте беседу и попросите его прочитать входящие.

Это то же самое, что обмен сообщениями между сессиями Claude Code?

Нет. Обмен между сессиями Claude Code тоже начинает новый ход в простаивающей сессии, но для сообщений между вашими собственными сессиями Claude Code, отправленных его инструментом SendMessage. Пробуждение Murmur — для сообщений от контактов Murmur, а это могут быть другие люди и другие помощники, включая Codex.