Sessions and memory

Alat sesi

OpenClaw memberi agen alat untuk bekerja lintas sesi, memeriksa status, dan mengorkestrasi sub-agen.

Alat yang tersedia

Alat Fungsinya
sessions_list Mencantumkan sesi dengan filter opsional (jenis, label, agen, keterkinian, pratinjau)
sessions_history Membaca transkrip sesi tertentu
sessions_send Mengirim pesan ke sesi lain dan secara opsional menunggu
sessions_spawn Memunculkan sesi sub-agen terisolasi untuk pekerjaan latar belakang
sessions_yield Mengakhiri giliran saat ini dan menunggu hasil sub-agen lanjutan
subagents Mencantumkan, mengarahkan, atau mematikan sub-agen yang dimunculkan untuk sesi ini
session_status Menampilkan kartu bergaya /status dan secara opsional menetapkan override model per sesi

Alat ini tetap tunduk pada profil alat aktif dan kebijakan izinkan/tolak. tools.profile: "coding" mencakup set lengkap orkestrasi sesi, termasuk sessions_spawn, sessions_yield, dan subagents. tools.profile: "messaging" mencakup alat pesan lintas sesi (sessions_list, sessions_history, sessions_send, session_status) tetapi tidak mencakup pemunculan sub-agen. Untuk mempertahankan profil pesan dan tetap mengizinkan delegasi native, tambahkan:

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

Kebijakan grup, penyedia, sandbox, dan per-agen masih dapat menghapus alat tersebut setelah tahap profil. Gunakan /tools dari sesi yang terdampak untuk memeriksa daftar alat efektif.

Mencantumkan dan membaca sesi

sessions_list mengembalikan sesi beserta key, agentId, jenis, kanal, model, jumlah token, dan timestamp-nya. Filter berdasarkan jenis (main, group, cron, hook, node), label persis, agentId persis, teks pencarian, atau keterkinian (activeMinutes). Saat Anda membutuhkan triase bergaya kotak masuk, alat ini juga dapat meminta judul turunan yang dicakup visibilitas, cuplikan pratinjau pesan terakhir, atau pesan terbaru terbatas pada setiap baris. Judul turunan dan pratinjau hanya dibuat untuk sesi yang sudah dapat dilihat pemanggil berdasarkan kebijakan visibilitas alat sesi yang dikonfigurasi, sehingga sesi yang tidak terkait tetap tersembunyi.

sessions_history mengambil transkrip percakapan untuk sesi tertentu. Secara default, hasil alat dikecualikan -- berikan includeTools: true untuk melihatnya. Tampilan yang dikembalikan sengaja dibatasi dan difilter untuk keamanan:

  • teks asisten dinormalisasi sebelum recall:
    • tag thinking dihapus
    • blok scaffolding <relevant-memories> / <relevant_memories> dihapus
    • blok payload XML pemanggilan alat teks polos seperti <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls>, dan <function_calls>...</function_calls> dihapus, termasuk payload terpotong yang tidak pernah ditutup dengan bersih
    • scaffolding pemanggilan/hasil alat yang diturunkan seperti [Tool Call: ...], [Tool Result ...], dan [Historical context ...] dihapus
    • token kontrol model yang bocor seperti <|assistant|>, token ASCII <|...|> lainnya, dan varian lebar penuh <|...|> dihapus
    • XML pemanggilan alat MiniMax yang salah bentuk seperti <invoke ...> / </minimax:tool_call> dihapus
  • teks yang menyerupai kredensial/token disensor sebelum dikembalikan
  • blok teks panjang dipotong
  • riwayat yang sangat besar dapat membuang baris lama atau mengganti baris yang terlalu besar dengan [sessions_history omitted: message too large]
  • alat melaporkan flag ringkasan seperti truncated, droppedMessages, contentTruncated, contentRedacted, dan bytes

Kedua alat menerima session key (seperti "main") atau session ID dari pemanggilan daftar sebelumnya.

Jika Anda membutuhkan transkrip persis byte demi byte, periksa file transkrip di disk alih-alih memperlakukan sessions_history sebagai dump mentah.

Mengirim pesan lintas sesi

sessions_send mengirimkan pesan ke sesi lain dan secara opsional menunggu respons:

  • Kirim lalu lupakan: tetapkan timeoutSeconds: 0 untuk mengantrekan dan kembali segera.
  • Tunggu balasan: tetapkan batas waktu dan dapatkan respons secara inline.

Sesi chat yang dicakup thread, seperti key Slack atau Discord yang berakhir dengan :thread:<id>, bukan target sessions_send yang valid. Gunakan key sesi kanal induk untuk koordinasi antar-agen agar pesan yang dirutekan alat tidak muncul di dalam thread aktif yang menghadap manusia.

Pesan dan balasan lanjutan A2A ditandai sebagai data antar-sesi dalam prompt penerima ([Inter-session message ... isUser=false]) dan dalam provenance transkrip. Agen penerima harus memperlakukannya sebagai data yang dirutekan alat, bukan sebagai instruksi langsung yang ditulis pengguna akhir.

Setelah target merespons, OpenClaw dapat menjalankan loop balas-kembali tempat agen bergantian mengirim pesan (hingga 5 giliran). Agen target dapat membalas REPLY_SKIP untuk berhenti lebih awal.

Pembantu status dan orkestrasi

session_status adalah alat ringan yang setara dengan /status untuk sesi saat ini atau sesi lain yang terlihat. Alat ini melaporkan penggunaan, waktu, status model/runtime, dan konteks tugas latar belakang tertaut jika ada. Seperti /status, alat ini dapat mengisi balik counter token/cache yang jarang dari entri penggunaan transkrip terbaru, dan model=default menghapus override per sesi. Gunakan sessionKey="current" untuk sesi pemanggil saat ini; label klien yang terlihat seperti openclaw-tui bukan session key.

sessions_yield sengaja mengakhiri giliran saat ini sehingga pesan berikutnya dapat menjadi event lanjutan yang Anda tunggu. Gunakan setelah memunculkan sub-agen saat Anda ingin hasil penyelesaian tiba sebagai pesan berikutnya alih-alih membuat loop polling.

subagents adalah pembantu control-plane untuk sub-agen OpenClaw yang sudah dimunculkan. Ini mendukung:

  • action: "list" untuk memeriksa run aktif/terbaru
  • action: "steer" untuk mengirim panduan lanjutan ke child yang sedang berjalan
  • action: "kill" untuk menghentikan satu child atau all

Memunculkan sub-agen

sessions_spawn membuat sesi terisolasi untuk tugas latar belakang secara default. Alat ini selalu non-blocking -- langsung kembali dengan runId dan childSessionKey.

Opsi utama:

  • runtime: "subagent" (default) atau "acp" untuk agen harness eksternal.
  • Override model dan thinking untuk sesi child.
  • thread: true untuk mengikat spawn ke thread chat (Discord, Slack, dll.).
  • sandbox: "require" untuk memberlakukan sandboxing pada child.
  • context: "fork" untuk sub-agen native saat child membutuhkan transkrip requester saat ini; hilangkan atau gunakan context: "isolated" untuk child yang bersih. Sub-agen native yang terikat thread default ke context: "fork" kecuali threadBindings.defaultSpawnContext menentukan lain.

Sub-agen leaf default tidak mendapatkan alat sesi. Saat maxSpawnDepth >= 2, sub-agen orkestrator depth-1 juga menerima sessions_spawn, subagents, sessions_list, dan sessions_history sehingga mereka dapat mengelola child mereka sendiri. Run leaf tetap tidak mendapatkan alat orkestrasi rekursif.

Setelah selesai, langkah announce memposting hasil ke kanal requester. Pengiriman penyelesaian mempertahankan perutean thread/topik terikat jika tersedia, dan jika origin penyelesaian hanya mengidentifikasi kanal, OpenClaw masih dapat menggunakan kembali rute tersimpan sesi requester (lastChannel / lastTo) untuk pengiriman langsung.

Untuk perilaku khusus ACP, lihat Agen ACP.

Visibilitas

Alat sesi dicakup untuk membatasi apa yang dapat dilihat agen:

Level Cakupan
self Hanya sesi saat ini
tree Sesi saat ini + sub-agen yang dimunculkan
agent Semua sesi untuk agen ini
all Semua sesi (lintas agen jika dikonfigurasi)

Default-nya adalah tree. Sesi bersandbox dibatasi ke tree terlepas dari konfigurasi.

Bacaan lebih lanjut

Terkait