Потік повідомлень (загальний рівень)
messages.*для префіксів, черг і поведінки груп.agents.defaults.*для стандартних параметрів потокового передавання блоків і фрагментації.- Перевизначення каналів (
channels.whatsapp.*,channels.telegram.*тощо) для лімітів і перемикачів потокового передавання.
Дедуплікація вхідних повідомлень
Канали можуть повторно доставляти те саме повідомлення після повторних підключень. OpenClaw зберігає короткочасний кеш із ключем за каналом/обліковим записом/співрозмовником/сесією/ідентифікатором повідомлення, щоб повторні доставки не запускали ще один запуск агента.Debounce вхідних повідомлень
Швидкі послідовні повідомлення від того самого відправника можна об’єднувати в один хід агента черезmessages.inbound. Debounce обмежений каналом + розмовою
і використовує найновіше повідомлення для прив’язки відповіді до гілки/ідентифікаторів.
Конфігурація (глобальне значення за замовчуванням + перевизначення для каналів):
- Debounce застосовується до повідомлень лише з текстом; медіа/вкладення надсилаються негайно.
- Керівні команди обходять debounce, щоб залишатися окремими. Канали, які явно вмикають об’єднання DM від того самого відправника, можуть залишати команди DM у вікні debounce, щоб payload, надісланий кількома частинами, міг потрапити в той самий хід агента.
Сесії та пристрої
Сесіями керує gateway, а не клієнти.- Прямі чати згортаються в ключ основної сесії агента.
- Групи/канали отримують власні ключі сесій.
- Сховище сесій і транскрипти зберігаються на хості gateway.
Метадані результату інструмента
content результату інструмента — це результат, видимий моделі. details результату інструмента — це
метадані runtime для рендерингу UI, діагностики, доставлення медіа та плагінів.
OpenClaw явно зберігає цю межу:
toolResult.detailsвилучається перед повторним відтворенням у провайдера та вхідними даними Compaction.- Збережені транскрипти сесій містять лише обмежені
details; завеликі метадані замінюються компактним підсумком із позначкоюpersistedDetailsTruncated: true. - Плагіни й інструменти мають розміщувати текст, який модель повинна прочитати, у
content, а не лише вdetails.
Тіла вхідних повідомлень і контекст історії
OpenClaw розділяє тіло prompt і тіло команди:BodyForAgent: основний текст для поточного повідомлення, спрямований до моделі. Плагіни каналів мають тримати його сфокусованим на поточному тексті відправника, що містить prompt.Body: застарілий резервний варіант prompt. Він може містити обгортки каналу та необов’язкові обгортки історії, але поточні канали не мають покладатися на нього як на основний вхід моделі, коли доступнийBodyForAgent.CommandBody: сирий текст користувача для розбору директив/команд.RawBody: застарілий псевдонім дляCommandBody(залишений для сумісності).
[Chat messages since your last reply - for context][Current message - respond to this]
CommandBody (або
RawBody) як початковий текст повідомлення та залишати Body як об’єднаний prompt.
Структурована історія, відповіді, переслані повідомлення та метадані каналу рендеряться як
ненадійні контекстні блоки з роллю користувача під час складання prompt.
Буфери історії налаштовуються через messages.groupChat.historyLimit (глобальне
значення за замовчуванням) і перевизначення для каналів, як-от channels.slack.historyLimit або
channels.telegram.accounts.<id>.historyLimit (встановіть 0, щоб вимкнути).
Черги та followups
Якщо запуск уже активний, вхідні повідомлення за замовчуванням спрямовуються в поточний запуск.messages.queue вибирає, чи повідомлення під час активного запуску спрямовуються, ставляться в чергу на
потім, збираються в один пізніший хід, чи переривають активний запуск.
- Налаштування через
messages.queue(іmessages.queue.byChannel). - Режим за замовчуванням —
steer, із debounce 500 мс для пакетів steering Codex і черг followup/collect. - Режими:
steer,followup,collectіinterrupt.
Володіння запуском каналу
Плагіни каналів можуть зберігати порядок, застосовувати debounce до вводу та керувати backpressure транспорту перед тим, як повідомлення потрапить у чергу сесії. Вони не мають накладати окремий timeout навколо самого ходу агента. Після маршрутизації повідомлення до сесії довготривала робота керується життєвим циклом сесії, інструмента та runtime, щоб усі канали узгоджено повідомляли про повільні ходи та відновлювалися після них.Потокове передавання, фрагментація та пакетування
Потокове передавання блоків надсилає часткові відповіді в міру того, як модель створює текстові блоки. Фрагментація враховує текстові ліміти каналу та уникає розбиття fenced code. Основні параметри:agents.defaults.blockStreamingDefault(on|off, за замовчуванням off)agents.defaults.blockStreamingBreak(text_end|message_end)agents.defaults.blockStreamingChunk(minChars|maxChars|breakPreference)agents.defaults.blockStreamingCoalesce(пакетування на основі idle)agents.defaults.humanDelay(людиноподібна пауза між блоками відповіді)- Перевизначення каналів:
*.blockStreamingі*.blockStreamingCoalesce(канали не Telegram потребують явного*.blockStreaming: true)
Видимість міркувань і токени
OpenClaw може показувати або приховувати міркування моделі:/reasoning on|off|streamкерує видимістю.- Вміст міркувань усе одно враховується у використанні токенів, коли його створює модель.
- Telegram підтримує потік міркувань у тимчасову чернеткову бульбашку, яка видаляється після фінального доставлення; використовуйте
/reasoning onдля постійного виводу міркувань.
Префікси, threading і відповіді
Форматування вихідних повідомлень централізоване вmessages:
messages.responsePrefix,channels.<channel>.responsePrefixіchannels.<channel>.accounts.<id>.responsePrefix(каскад вихідного префікса), плюсchannels.whatsapp.messagePrefix(вхідний префікс WhatsApp)- Reply threading через
replyToModeі стандартні значення для каналів
Тихі відповіді
Точний тихий токенNO_REPLY / no_reply означає «не доставляти відповідь, видиму користувачу».
Коли хід також має pending media інструмента, наприклад згенероване TTS-аудіо, OpenClaw
вилучає тихий текст, але все одно доставляє медіавкладення.
OpenClaw визначає цю поведінку за типом розмови:
- Прямі розмови ніколи не отримують prompt guidance
NO_REPLY. Якщо прямий запуск випадково повертає голий тихий токен, OpenClaw пригнічує його замість переписування або доставлення. - Групи/канали за замовчуванням дозволяють тишу лише для автоматичних групових відповідей.
У режимі видимої відповіді
message_toolтиша означає, що модель не викликаєmessage(action=send). - Внутрішня оркестрація за замовчуванням дозволяє тишу.
/verbose full.
Стандартні значення розташовані в agents.defaults.silentReply; surfaces.<id>.silentReply
може перевизначати політику груп/внутрішніх поверхонь для кожної поверхні.
Голі тихі відповіді відкидаються на всіх поверхнях, тому батьківські сесії залишаються тихими
замість переписування sentinel text у fallback chatter.
Пов’язане
- Рефакторинг життєвого циклу повідомлення - цільовий довговічний дизайн надсилання й отримання
- Потокове передавання — доставлення повідомлень у реальному часі
- Повторна спроба — поведінка повторної спроби доставлення повідомлень
- Черга — черга обробки повідомлень
- Канали — інтеграції з платформами обміну повідомленнями