Loop Agen (OpenClaw)
Loop agentik adalah keseluruhan proses “nyata” saat agen berjalan: penerimaan → perakitan konteks → inferensi model → eksekusi alat → balasan streaming → persistensi. Ini adalah jalur otoritatif yang mengubah pesan menjadi tindakan dan balasan akhir, sambil menjaga status sesi tetap konsisten. Di OpenClaw, sebuah loop adalah satu proses tunggal yang diserialkan per sesi yang mengirimkan peristiwa siklus hidup dan stream saat model berpikir, memanggil alat, dan melakukan streaming output. Dokumen ini menjelaskan bagaimana loop autentik itu dirangkai secara menyeluruh dari awal hingga akhir.Titik masuk
- Gateway RPC:
agentdanagent.wait. - CLI: perintah
agent.
Cara kerjanya (tingkat tinggi)
- RPC
agentmemvalidasi parameter, menyelesaikan sesi (sessionKey/sessionId), menyimpan metadata sesi, dan langsung mengembalikan{ runId, acceptedAt }. agentCommandmenjalankan agen:- menyelesaikan default model + thinking/verbose
- memuat snapshot Skills
- memanggil
runEmbeddedPiAgent(runtime pi-agent-core) - mengirim lifecycle end/error jika loop tersemat tidak mengirimkannya
runEmbeddedPiAgent:- menserialkan proses melalui antrean per sesi + global
- menyelesaikan profil model + autentikasi dan membangun sesi pi
- berlangganan ke peristiwa pi dan melakukan streaming delta asisten/alat
- menerapkan timeout -> membatalkan proses jika terlampaui
- mengembalikan payload + metadata penggunaan
subscribeEmbeddedPiSessionmenjembatani peristiwa pi-agent-core ke streamagentOpenClaw:- peristiwa alat =>
stream: "tool" - delta asisten =>
stream: "assistant" - peristiwa siklus hidup =>
stream: "lifecycle"(phase: "start" | "end" | "error")
- peristiwa alat =>
agent.waitmenggunakanwaitForAgentRun:- menunggu lifecycle end/error untuk
runId - mengembalikan
{ status: ok|error|timeout, startedAt, endedAt, error? }
- menunggu lifecycle end/error untuk
Antrean + konkurensi
- Proses diserialkan per kunci sesi (lajur sesi) dan secara opsional melalui lajur global.
- Ini mencegah race pada alat/sesi dan menjaga riwayat sesi tetap konsisten.
- Channel pesan dapat memilih mode antrean (collect/steer/followup) yang masuk ke sistem lajur ini. Lihat Command Queue.
Persiapan sesi + workspace
- Workspace diselesaikan dan dibuat; proses yang disandbox dapat dialihkan ke root workspace sandbox.
- Skills dimuat (atau digunakan ulang dari snapshot) dan disuntikkan ke env dan prompt.
- File bootstrap/konteks diselesaikan dan disuntikkan ke laporan system prompt.
- Kunci tulis sesi diambil;
SessionManagerdibuka dan disiapkan sebelum streaming.
Perakitan prompt + system prompt
- System prompt dibangun dari prompt dasar OpenClaw, prompt Skills, konteks bootstrap, dan override per proses.
- Batas khusus model dan token cadangan untuk pemadatan diterapkan.
- Lihat System prompt untuk mengetahui apa yang dilihat model.
Titik hook (tempat Anda dapat mencegat)
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 file bootstrap sebelum system prompt difinalisasi. Gunakan ini untuk menambah/menghapus file konteks bootstrap.- Hook perintah:
/new,/reset,/stop, dan peristiwa perintah lainnya (lihat dokumen Hooks).
Hook plugin (siklus hidup agen + gateway)
Ini berjalan di dalam loop agen atau pipeline gateway:before_model_resolve: berjalan sebelum sesi (tanpamessages) untuk menimpa provider/model secara deterministik sebelum resolusi model.before_prompt_build: berjalan setelah sesi dimuat (denganmessages) untuk menyuntikkanprependContext,systemPrompt,prependSystemContext, atauappendSystemContextsebelum prompt dikirimkan. GunakanprependContextuntuk teks dinamis per giliran dan field system-context untuk panduan stabil yang harus berada dalam ruang system prompt.before_agent_start: hook kompatibilitas lama yang dapat berjalan di salah satu fase; lebih baik gunakan hook eksplisit di atas.before_agent_reply: berjalan setelah tindakan inline dan sebelum pemanggilan LLM, memungkinkan plugin mengambil alih giliran dan mengembalikan balasan sintetis atau membungkam giliran sepenuhnya.agent_end: memeriksa daftar pesan akhir dan metadata proses setelah selesai.before_compaction/after_compaction: mengamati atau memberi anotasi pada siklus pemadatan.before_tool_call/after_tool_call: mencegat parameter/hasil alat.before_install: memeriksa temuan pemindaian bawaan dan secara opsional memblokir instalasi skill atau plugin.tool_result_persist: secara sinkron mentransformasi hasil alat sebelum ditulis ke transkrip sesi.message_received/message_sending/message_sent: hook pesan masuk + keluar.session_start/session_end: batas siklus hidup sesi.gateway_start/gateway_stop: peristiwa siklus hidup gateway.
before_tool_call:{ block: true }bersifat terminal dan menghentikan handler berprioritas lebih rendah.before_tool_call:{ block: false }adalah no-op dan tidak menghapus blok sebelumnya.before_install:{ block: true }bersifat terminal dan menghentikan handler berprioritas lebih rendah.before_install:{ block: false }adalah no-op dan tidak menghapus blok sebelumnya.message_sending:{ cancel: true }bersifat terminal dan menghentikan handler berprioritas lebih rendah.message_sending:{ cancel: false }adalah no-op dan tidak menghapus pembatalan sebelumnya.
Streaming + balasan parsial
- Delta asisten di-stream dari pi-agent-core dan dikirim sebagai peristiwa
assistant. - Streaming blok dapat mengirim balasan parsial baik pada
text_endmaupunmessage_end. - Streaming reasoning dapat dikirim sebagai stream terpisah atau sebagai balasan blok.
- Lihat Streaming untuk perilaku chunking dan balasan blok.
Eksekusi alat + alat perpesanan
- Peristiwa mulai/pembaruan/selesai alat dikirim di stream
tool. - Hasil alat disanitasi untuk ukuran dan payload gambar sebelum dicatat/dikirim.
- Pengiriman alat perpesanan dilacak untuk menekan konfirmasi asisten yang duplikat.
Pembentukan balasan + penekanan
- Payload akhir dirakit dari:
- teks asisten (dan reasoning opsional)
- ringkasan alat inline (saat verbose + diizinkan)
- teks kesalahan asisten saat model mengalami error
- Token hening yang persis
NO_REPLY/no_replydisaring dari payload keluar. - Duplikat alat perpesanan dihapus dari daftar payload akhir.
- Jika tidak ada payload yang dapat dirender dan alat mengalami error, balasan fallback kesalahan alat akan dikirim (kecuali alat perpesanan sudah mengirim balasan yang terlihat oleh pengguna).
Pemadatan + percobaan ulang
- Pemadatan otomatis mengirim peristiwa stream
compactiondan dapat memicu percobaan ulang. - Saat percobaan ulang, buffer dalam memori dan ringkasan alat direset untuk menghindari output duplikat.
- Lihat Compaction untuk pipeline pemadatan.
Stream peristiwa (saat ini)
lifecycle: dikirim olehsubscribeEmbeddedPiSession(dan sebagai fallback olehagentCommand)assistant: delta streaming dari pi-agent-coretool: peristiwa alat streaming dari pi-agent-core
Penanganan channel chat
- Delta asisten dibuffer menjadi pesan chat
delta. - Chat
finaldikirim pada lifecycle end/error.
Timeout
- Default
agent.wait: 30 dtk (hanya penantian). ParametertimeoutMsmenimpa nilai ini. - Runtime agen: default
agents.defaults.timeoutSecondsadalah 172800 dtk (48 jam); diterapkan di timer pembatalanrunEmbeddedPiAgent. - Timeout idle LLM:
agents.defaults.llm.idleTimeoutSecondsmembatalkan permintaan model ketika tidak ada chunk respons yang datang sebelum jendela idle berakhir. Atur secara eksplisit untuk model lokal yang lambat atau provider reasoning/pemanggilan alat; atur ke 0 untuk menonaktifkan. Jika tidak diatur, OpenClaw menggunakanagents.defaults.timeoutSecondsbila dikonfigurasi, atau 120 dtk bila tidak. Proses yang dipicu cron tanpa timeout LLM atau agen eksplisit menonaktifkan watchdog idle dan mengandalkan timeout luar cron.
Tempat proses dapat berakhir lebih awal
- Timeout agen (abort)
- AbortSignal (batal)
- Gateway terputus atau timeout RPC
- Timeout
agent.wait(hanya penantian, tidak menghentikan agen)
Terkait
- Tools — alat agen yang tersedia
- Hooks — skrip berbasis peristiwa yang dipicu oleh peristiwa siklus hidup agen
- Compaction — bagaimana percakapan panjang diringkas
- Exec Approvals — gerbang persetujuan untuk perintah shell
- Thinking — konfigurasi tingkat thinking/reasoning