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_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 може запустити цикл відповіді назад, у якому агенти обмінюються повідомленнями по черзі (до session.agentToAgent.maxPingPongTurns, діапазон 0-20, за замовчуванням 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 незалежно від конфігурації.

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

Пов’язане

Was this useful?