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),
але не містить створення субагентів. Щоб зберегти профіль обміну повідомленнями
й усе ж дозволити нативне делегування, додайте:
{
tools: {
profile: "messaging",
alsoAllow: ["sessions_spawn", "sessions_yield", "subagents"],
},
}
Політики груп, провайдерів, пісочниці та окремих агентів усе ще можуть
видаляти ці інструменти після етапу профілю. Скористайтеся /tools у
відповідному сеансі, щоб перевірити фактичний список інструментів.
Перелік і читання сеансів
sessions_list повертає сеанси з їхнім ключем, agentId, типом, каналом, моделлю,
кількістю токенів і часовими мітками. Фільтруйте за типом (main, group,
cron, hook, node), точним label, точним agentId, пошуковим текстом або
давністю (activeMinutes). Коли потрібне сортування у стилі поштової скриньки,
він також може запитати похідний заголовок у межах видимості, фрагмент
попереднього перегляду останнього повідомлення або обмежені нещодавні
повідомлення в кожному рядку. Похідні заголовки й попередні перегляди
створюються лише для сеансів, які викликач уже може бачити за налаштованою
політикою видимості інструментів сеансу, тому непов'язані сеанси лишаються
прихованими.
sessions_history отримує стенограму розмови для певного сеансу. За
замовчуванням результати інструментів виключено -- передайте includeTools: true,
щоб побачити їх. Повернене подання навмисно обмежене та відфільтроване з міркувань безпеки:
- текст асистента нормалізується перед згадуванням:
- теги мислення видаляються
- службові блоки
<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 може запустити цикл відповіді назад, у якому
агенти обмінюються повідомленнями по черзі (до 5 ходів). Цільовий агент може
відповісти REPLY_SKIP, щоб зупинитися раніше.
Помічники стану й оркестрування
session_status -- це легкий інструмент, еквівалентний /status, для поточного
або іншого видимого сеансу. Він повідомляє використання, час, стан
моделі/середовища виконання та пов'язаний контекст фонових завдань, якщо він є.
Як і /status, він може дозаповнювати розріджені лічильники токенів/кешу з
останнього запису використання у стенограмі, а model=default очищає
перевизначення для сеансу. Використовуйте sessionKey="current" для поточного
сеансу викликача; видимі клієнтські мітки, як-от openclaw-tui, не є ключами
сеансів.
sessions_yield навмисно завершує поточний хід, щоб наступним повідомленням
могла стати подія подальшого виконання, на яку ви очікуєте. Використовуйте його
після створення субагентів, коли хочете, щоб результати завершення надійшли як
наступне повідомлення, а не будувати цикли опитування.
subagents -- це помічник площини керування для вже породжених субагентів
OpenClaw. Він підтримує:
action: "list"для перевірки активних/нещодавніх запусківaction: "steer"для надсилання подальших вказівок запущеному дочірньому процесуaction: "kill"для зупинки одного дочірнього процесу абоall
Створення субагентів
sessions_spawn за замовчуванням створює ізольований сеанс для фонового
завдання. Він завжди неблокувальний -- одразу повертає runId і
childSessionKey.
Ключові параметри:
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 незалежно від конфігурації.
Додаткове читання
- Керування сеансами -- маршрутизація, життєвий цикл, обслуговування
- Агенти ACP -- створення зовнішньої обв'язки
- Багатоагентність -- багатоагентна архітектура
- Конфігурація Gateway -- параметри конфігурації інструментів сеансу