Titik masuk
- RPC Gateway:
agentdanagent.wait. - CLI:
openclaw agent.
Urutan proses
- RPC
agentmemvalidasi parameter, menyelesaikan sesi (sessionKey/sessionId), mempersistenkan metadata sesi, dan segera mengembalikan{ runId, acceptedAt }. agentCommandmenjalankan giliran: menyelesaikan nilai default model + pemikiran/verbose/jejak, memuat snapshot Skills, memanggilrunEmbeddedAgent, dan memancarkan akhir/kesalahan siklus hidup cadangan jika loop tersemat belum memancarkannya.runEmbeddedAgent: menyerikan proses melalui antrean per sesi dan global, menyelesaikan model + profil autentikasi, membangun sesi OpenClaw, berlangganan peristiwa runtime, melakukan streaming delta asisten/alat, memberlakukan batas waktu proses (membatalkan saat kedaluwarsa), dan mengembalikan payload beserta metadata penggunaan. Untuk giliran server aplikasi Codex, proses ini juga membatalkan giliran yang telah diterima jika berhenti menghasilkan kemajuan server aplikasi sebelum peristiwa terminal.subscribeEmbeddedAgentSessionmenjembatani peristiwa runtime ke aliranagent: peristiwa alat kestream: "tool", delta asisten kestream: "assistant", peristiwa siklus hidup kestream: "lifecycle"(phase: "start" | "end" | "error").agent.wait(waitForAgentRun) menunggu akhir/kesalahan siklus hidup padarunIddan mengembalikan{ status: ok|error|timeout, startedAt, endedAt, error? }.
Pengantrean dan konkurensi
Proses diserikan berdasarkan kunci sesi (jalur sesi) dan secara opsional melalui jalur global, sehingga mencegah kondisi berpacu pada alat/sesi. Kanal perpesanan memilih mode antrean (steer/followup/collect/interrupt) yang memasok sistem jalur ini; lihat Antrean Perintah. Penulisan transkrip juga dilindungi oleh kunci tulis sesi pada berkas sesi. Kunci ini berbasis berkas dan mengetahui proses, sehingga dapat mendeteksi penulis yang melewati antrean dalam proses atau berasal dari proses lain. Secara default, penulis menunggu hingga 60 detik (penggantian melalui envOPENCLAW_SESSION_WRITE_LOCK_ACQUIRE_TIMEOUT_MS) sebelum melaporkan sesi sebagai sibuk.
Secara default, kunci tulis sesi tidak bersifat reentrant. Pembantu yang sengaja menyarangkan perolehan kunci yang sama sambil mempertahankan satu penulis logis harus mengaktifkannya dengan allowReentrant: true.
Persiapan sesi dan ruang kerja
- Ruang kerja diselesaikan dan dibuat; proses dalam sandbox dapat dialihkan ke root ruang kerja sandbox.
- Skills dimuat (atau digunakan kembali dari snapshot) dan disuntikkan ke env serta prompt.
- Berkas bootstrap/konteks diselesaikan dan disuntikkan ke prompt sistem.
- Kunci tulis sesi diperoleh dan target transkrip sesi disiapkan sebelum streaming dimulai. Setiap jalur penulisan ulang, Compaction, atau pemotongan transkrip selanjutnya harus memperoleh kunci yang sama sebelum mengubah baris transkrip SQLite.
Penyusunan prompt
Prompt sistem dibangun dari prompt dasar OpenClaw, prompt Skills, konteks bootstrap, dan penggantian per proses. Batas khusus model dan token cadangan Compaction diberlakukan. Lihat Prompt sistem untuk mengetahui apa yang dilihat model.Hook
OpenClaw memiliki dua sistem hook:- Hook internal (hook Gateway): skrip berbasis peristiwa untuk perintah dan peristiwa siklus hidup.
- Hook Plugin: titik ekstensi di dalam siklus hidup agen/alat dan pipeline Gateway.
Hook internal (hook Gateway)
agent:bootstrap: berjalan saat membangun berkas bootstrap sebelum prompt sistem diselesaikan. Gunakan untuk menambah atau menghapus berkas konteks bootstrap.- Hook perintah:
/new,/reset,/stop, dan peristiwa perintah lainnya (lihat dokumentasi Hook).
Hook Plugin
Hook berikut berjalan di dalam loop agen atau pipeline Gateway:
Aturan keputusan hook untuk penjaga keluar/alat:
before_tool_call:{ block: true }bersifat terminal dan menghentikan penangan dengan prioritas lebih rendah.{ block: false }tidak melakukan apa pun dan tidak menghapus pemblokiran sebelumnya.before_install: semantik terminal/tanpa operasi sama seperti di atas. Gunakansecurity.installPolicy, bukanbefore_install, untuk keputusan izin/blokir pemasangan milik operator yang harus mencakup jalur pemasangan dan pembaruan CLI.message_sending:{ cancel: true }bersifat terminal dan menghentikan penangan dengan prioritas lebih rendah.{ cancel: false }tidak melakukan apa pun dan tidak menghapus pembatalan sebelumnya.
Streaming
- Delta asisten dialirkan dari runtime agen sebagai peristiwa
assistant. - Streaming blok dapat memancarkan balasan parsial pada
text_endataumessage_end. - Streaming penalaran dapat berupa aliran terpisah atau balasan blok.
- Lihat Streaming untuk perilaku pemotongan dan balasan blok.
Eksekusi alat
- Peristiwa mulai/pembaruan/akhir alat dipancarkan pada aliran
tool. - Hasil alat disanitasi berdasarkan ukuran dan payload gambar sebelum dicatat/dipancarkan.
- Pengiriman alat perpesanan dilacak untuk mencegah konfirmasi asisten duplikat.
Pembentukan balasan
Payload akhir disusun dari teks asisten (beserta penalaran opsional), ringkasan alat inline (saat verbose dan diizinkan), serta teks kesalahan asisten saat model mengalami kesalahan.- Token senyap persis
NO_REPLYdifilter dari payload keluar. - Duplikat alat perpesanan dihapus dari daftar payload akhir.
- Jika tidak ada payload yang dapat dirender tersisa dan alat mengalami kesalahan, balasan kesalahan alat cadangan dipancarkan kecuali alat perpesanan telah mengirim balasan yang terlihat oleh pengguna.
Compaction dan percobaan ulang
Compaction otomatis memancarkan peristiwa alirancompaction dan dapat memicu percobaan ulang. Saat mencoba ulang, buffer dalam memori dan ringkasan alat direset untuk mencegah keluaran duplikat. Lihat Compaction.
Aliran peristiwa
lifecycle: dipancarkan olehsubscribeEmbeddedAgentSession(dan sebagai cadangan olehagentCommand).assistant: delta yang dialirkan dari runtime agen.tool: peristiwa alat yang dialirkan dari runtime agen.
Penanganan kanal obrolan
Delta asisten ditampung ke dalam pesandelta obrolan. final obrolan dipancarkan saat akhir/kesalahan siklus hidup.
Batas waktu
Diagnostik sesi macet
Dengan diagnostik diaktifkan, ambang bawaan dua menit mengklasifikasikan sesiprocessing yang berlangsung lama tanpa balasan, alat, status, blok, atau kemajuan ACP yang teramati:
- Proses tertanam aktif, panggilan model, dan panggilan alat dilaporkan sebagai
session.long_running. Panggilan model senyap yang dimiliki tetap berstatussession.long_runninghingga ambang pembatalan agar penyedia yang lambat atau tidak melakukan streaming tidak ditandai sebagai macet terlalu dini. - Pekerjaan aktif tanpa kemajuan terkini dilaporkan sebagai
session.stalled. Panggilan model yang dimiliki beralih kesession.stalledpada atau setelah ambang pembatalan; aktivitas model/alat usang tanpa pemilik tidak disembunyikan sebagai aktivitas yang berlangsung lama. session.stuckdicadangkan untuk pencatatan sesi usang yang dapat dipulihkan, termasuk sesi antrean menganggur dengan aktivitas model/alat usang tanpa pemilik.
session.stuck berulang menerapkan jeda mundur selama sesi tetap tidak berubah.
Kondisi yang dapat menyebabkan proses berakhir lebih awal
- Batas waktu agen (pembatalan)
- AbortSignal (pembatalan)
- Gateway terputus atau batas waktu RPC
- Batas waktu
agent.wait(hanya menunggu, tidak menghentikan agen)
Terkait
- Alat - alat agen yang tersedia
- Hook - skrip berbasis peristiwa yang dipicu oleh peristiwa siklus hidup agen
- Compaction - cara percakapan panjang diringkas
- Persetujuan Eksekusi - gerbang persetujuan untuk perintah shell
- Pemikiran - konfigurasi tingkat pemikiran/penalaran