Sessions and memory

Інструменти сеансу

OpenClaw надає агентам інструменти для роботи між сесіями, перевірки стану та оркестрації субагентів.

Доступні інструменти

Інструмент Що він робить
sessions_list Перелічує сесії з необов'язковими фільтрами (тип, мітка, агент, давність, попередній перегляд)
sessions_history Читає транскрипт конкретної сесії
sessions_send Надсилає повідомлення до іншої сесії та, за потреби, очікує
sessions_spawn Запускає ізольовану сесію субагента для фонової роботи
sessions_yield Завершує поточний хід і чекає подальших результатів субагента
subagents Перелічує стан запущених субагентів для цієї сесії
session_status Показує картку в стилі /status і, за потреби, задає перевизначення моделі для окремої сесії

На ці інструменти все ще поширюються активний профіль інструментів і політика дозволу/заборони. tools.profile: "coding" включає повний набір оркестрації сесій, зокрема sessions_spawn, sessions_yield і subagents. tools.profile: "messaging" включає інструменти обміну повідомленнями між сесіями (sessions_list, sessions_history, sessions_send, session_status), але не включає запуск субагентів. Щоб зберегти профіль обміну повідомленнями й усе одно дозволити нативне делегування, додайте:

json5
{  tools: {    profile: "messaging",    alsoAllow: ["sessions_spawn", "sessions_yield", "subagents"],  },}

Політики групи, провайдера, пісочниці та окремого агента все ще можуть вилучати ці інструменти після етапу профілю. Використовуйте /tools з відповідної сесії, щоб переглянути ефективний список інструментів.

Перелік і читання сесій

sessions_list повертає сесії з їхнім ключем, agentId, типом, каналом, моделлю, кількістю токенів і часовими мітками. Фільтруйте за типом (main, group, cron, hook, node), точним label, точним agentId, текстом пошуку або давністю (activeMinutes). Коли потрібне сортування на кшталт поштової скриньки, він також може запитати похідний заголовок у межах області видимості, фрагмент попереднього перегляду останнього повідомлення або обмежені нещодавні повідомлення в кожному рядку. Похідні заголовки й попередні перегляди створюються лише для сесій, які викликач уже може бачити відповідно до налаштованої політики видимості інструментів сесії, тому непов'язані сесії залишаються прихованими. Коли видимість обмежена, sessions_list повертає необов'язкові метадані visibility, що показують ефективний режим і попередження, що результати можуть бути обмежені областю видимості.

sessions_history отримує транскрипт розмови для конкретної сесії. За замовчуванням результати інструментів виключено -- передайте includeTools: true, щоб їх побачити. Використовуйте limit для найновішого обмеженого хвоста. Передайте offset: 0, коли потрібні метадані пагінації, а потім передавайте повернені значення nextOffset, щоб гортати назад старіші вікна транскрипту OpenClaw без читання сирих файлів транскрипту. Явні сторінки зі зміщенням не об'єднують зовнішні імпорти резервного CLI; використовуйте стандартне подання найновішого хвоста, коли потрібна ця об'єднана історія відображення. Повернене подання навмисно обмежене й відфільтроване з міркувань безпеки:

  • текст асистента нормалізується перед пригадуванням:
    • теги мислення вилучаються
    • службові блоки <relevant-memories> / <relevant_memories> вилучаються
    • XML-блоки корисного навантаження викликів інструментів у звичайному тексті, як-от <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls> і <function_calls>...</function_calls>, вилучаються, включно з обрізаними корисними навантаженнями, які ніколи не закриваються коректно
    • знижені службові блоки викликів/результатів інструментів, як-от [Tool Call: ...], [Tool Result ...] і [Historical context ...], вилучаються
    • витоки контрольних токенів моделі, як-от <|assistant|>, інші ASCII токени <|...|> і повноширинні варіанти <|...|>, вилучаються
    • некоректний XML викликів інструментів MiniMax, як-от <invoke ...> / </minimax:tool_call>, вилучається
  • текст, схожий на облікові дані або токени, редагується перед поверненням
  • довгі текстові блоки обрізаються
  • дуже великі історії можуть відкидати старіші рядки або замінювати надмірно великий рядок на [sessions_history omitted: message too large]
  • інструмент повідомляє підсумкові прапорці, як-от truncated, droppedMessages, contentTruncated, contentRedacted, bytes, і метадані пагінації

Обидва інструменти приймають або ключ сесії (наприклад, "main"), або ID сесії з попереднього виклику списку.

Якщо потрібен точний побайтовий транскрипт, перегляньте файл транскрипту на диску, а не трактуйте sessions_history як сирий дамп.

Надсилання повідомлень між сесіями

sessions_send доставляє повідомлення до іншої сесії та, за потреби, очікує на відповідь:

  • Відправити й не чекати: задайте timeoutSeconds: 0, щоб поставити в чергу й повернутися негайно.
  • Чекати відповіді: задайте тайм-аут і отримайте відповідь вбудовано.

Сесії чатів, прив'язані до потоку, як-от ключі Slack або Discord, що закінчуються на :thread:<id>, не є допустимими цілями sessions_send. Використовуйте ключ сесії батьківського каналу для координації між агентами, щоб повідомлення, маршрутизовані інструментами, не з'являлися всередині активного потоку, видимого людині.

Повідомлення та подальші відповіді A2A позначаються як дані між сесіями в промпті отримувача ([Inter-session message ... isUser=false]) і в походженні транскрипту. Агент-отримувач має трактувати їх як дані, маршрутизовані інструментами, а не як пряму інструкцію, написану кінцевим користувачем.

Після відповіді цільової сесії OpenClaw може запустити цикл відповіді назад, у якому агенти почергово обмінюються повідомленнями (до session.agentToAgent.maxPingPongTurns, діапазон 0-20, стандартно 5). Цільовий агент може відповісти REPLY_SKIP, щоб зупинитися раніше.

Помічники стану та оркестрації

session_status — це легкий інструмент, еквівалентний /status, для поточної або іншої видимої сесії. Він повідомляє використання, час, стан моделі/середовища виконання та пов'язаний контекст фонових завдань, коли він присутній. Як і /status, він може дозаповнювати розріджені лічильники токенів/кешу з останнього запису використання транскрипту, а model=default очищає перевизначення для окремої сесії. Використовуйте sessionKey="current" для поточної сесії викликача; видимі клієнтські мітки, як-от openclaw-tui, не є ключами сесій.

Коли доступні метадані маршруту, session_status також включає видимий JSON-блок Route context і відповідні структуровані поля details. Ці поля розрізняють ключ сесії та маршрут, який зараз обробляє активний запуск:

  • origin — це місце створення сесії або провайдер, виведений із префікса ключа доставної сесії, коли старішому стану бракує збережених метаданих походження.
  • active — це поточний маршрут активного запуску. Він повідомляється лише для активної або поточної сесії, яку обробляють зараз.
  • deliveryContext — це збережений маршрут доставки, записаний у сесії, який OpenClaw може повторно використати для пізнішої доставки, навіть коли активна поверхня відрізняється.

sessions_yield навмисно завершує поточний хід, щоб наступне повідомлення могло бути подальшою подією, на яку ви чекаєте. Використовуйте його після запуску субагентів, коли хочете, щоб результати завершення надійшли як наступне повідомлення, замість побудови циклів опитування.

subagents — це помічник видимості для вже запущених субагентів OpenClaw. Він підтримує action: "list" для перегляду активних/нещодавніх запусків.

Запуск субагентів

sessions_spawn за замовчуванням створює ізольовану сесію для фонового завдання. Він завжди неблокувальний -- повертається негайно з runId і childSessionKey. Нативні запуски субагентів отримують делеговане завдання в першому видимому повідомленні [Subagent Task] дочірньої сесії, тоді як системний промпт містить лише правила середовища виконання субагента та контекст маршрутизації.

Ключові параметри:

  • runtime: "subagent" (стандартно) або "acp" для агентів зовнішнього стенда.
  • Перевизначення model і thinking для дочірньої сесії.
  • thread: true, щоб прив'язати запуск до потоку чату (Discord, Slack тощо).
  • sandbox: "require", щоб примусово застосувати пісочницю до дочірньої сесії.
  • context: "fork" для нативних субагентів, коли дочірній сесії потрібен поточний транскрипт запитувача; опустіть його або використовуйте context: "isolated" для чистої дочірньої сесії. Нативні субагенти, прив'язані до потоку, стандартно використовують context: "fork", якщо threadBindings.defaultSpawnContext не вказує інше.

Стандартні листові субагенти не отримують інструменти сесії. Коли maxSpawnDepth >= 2, субагенти-оркестратори глибини 1 додатково отримують sessions_spawn, subagents, sessions_list і sessions_history, щоб вони могли керувати власними дочірніми сесіями. Листові запуски все одно не отримують рекурсивні інструменти оркестрації.

Після завершення крок оголошення публікує результат у каналі запитувача. Доставка завершення зберігає прив'язану маршрутизацію потоку/теми, коли вона доступна, а якщо походження завершення ідентифікує лише канал, OpenClaw усе одно може повторно використати збережений маршрут сесії запитувача (lastChannel / lastTo) для прямої доставки.

Про поведінку, специфічну для ACP, див. Агенти ACP.

Видимість

Інструменти сесії обмежені областю видимості, щоб контролювати, що агент може бачити:

Рівень Область
self Лише поточна сесія
tree Поточна сесія + запущені субагенти
agent Усі сесії для цього агента
all Усі сесії (між агентами, якщо налаштовано)

Стандартне значення — tree. Сесії в пісочниці обмежуються до tree незалежно від конфігурації.

Додаткове читання

Пов'язане

Was this useful?
On this page

On this page