Skip to main content
Loop agen adalah proses berseri per sesi yang mengubah pesan menjadi tindakan dan balasan: penerimaan, penyusunan konteks, inferensi model, eksekusi alat, streaming, persistensi.

Titik masuk

  • RPC Gateway: agent dan agent.wait.
  • CLI: openclaw agent.

Urutan proses

  1. RPC agent memvalidasi parameter, menyelesaikan sesi (sessionKey/sessionId), mempersistenkan metadata sesi, dan segera mengembalikan { runId, acceptedAt }.
  2. agentCommand menjalankan giliran: menyelesaikan nilai default model + pemikiran/verbose/jejak, memuat snapshot Skills, memanggil runEmbeddedAgent, dan memancarkan akhir/kesalahan siklus hidup cadangan jika loop tersemat belum memancarkannya.
  3. 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.
  4. subscribeEmbeddedAgentSession menjembatani peristiwa runtime ke aliran agent: peristiwa alat ke stream: "tool", delta asisten ke stream: "assistant", peristiwa siklus hidup ke stream: "lifecycle" (phase: "start" | "end" | "error").
  5. agent.wait (waitForAgentRun) menunggu akhir/kesalahan siklus hidup pada runId dan 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 env OPENCLAW_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).
Lihat Hook untuk penyiapan dan contoh.

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. Gunakan security.installPolicy, bukan before_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.
Lihat Hook Plugin untuk API hook dan detail pendaftaran. Harness dapat mengadaptasi hook ini. Harness server aplikasi Codex mempertahankan hook Plugin OpenClaw sebagai kontrak kompatibilitas untuk permukaan tercermin yang didokumentasikan; hook native Codex adalah mekanisme Codex tingkat lebih rendah yang terpisah.

Streaming

  • Delta asisten dialirkan dari runtime agen sebagai peristiwa assistant.
  • Streaming blok dapat memancarkan balasan parsial pada text_end atau message_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_REPLY difilter 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 aliran compaction 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 oleh subscribeEmbeddedAgentSession (dan sebagai cadangan oleh agentCommand).
  • assistant: delta yang dialirkan dari runtime agen.
  • tool: peristiwa alat yang dialirkan dari runtime agen.
Gateway memproyeksikan peristiwa siklus hidup serta peristiwa mulai/terminal alat ke dalam buku besar audit terbatas yang hanya berisi metadata. Proyeksi ini mencatat asal-usul dan kode hasil tanpa menyalin prompt, pesan, argumen alat, hasil alat, atau kesalahan mentah keluar dari jalur transkrip/runtime.

Penanganan kanal obrolan

Delta asisten ditampung ke dalam pesan delta obrolan. final obrolan dipancarkan saat akhir/kesalahan siklus hidup.

Batas waktu

Diagnostik sesi macet

Dengan diagnostik diaktifkan, ambang bawaan dua menit mengklasifikasikan sesi processing 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 berstatus session.long_running hingga 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 ke session.stalled pada atau setelah ambang pembatalan; aktivitas model/alat usang tanpa pemilik tidak disembunyikan sebagai aktivitas yang berlangsung lama.
  • session.stuck dicadangkan untuk pencatatan sesi usang yang dapat dipulihkan, termasuk sesi antrean menganggur dengan aktivitas model/alat usang tanpa pemilik.
Ambang pembatalan sekurang-kurangnya 5 menit dan 3x ambang peringatan. Pencatatan sesi usang segera melepaskan jalur sesi yang terdampak setelah gerbang pemulihan dilewati; proses tertanam yang macet dikuras melalui pembatalan hanya setelah ambang pembatalan, sehingga pekerjaan dalam antrean dilanjutkan tanpa menghentikan proses yang sekadar lambat. Pemulihan memancarkan hasil permintaan/penyelesaian terstruktur; status diagnostik ditandai menganggur hanya jika generasi pemrosesan yang sama masih berlaku, dan diagnostik 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