QuotaCheap Playbook
OpenClaw Agent Loop: vòng đời thật của một AI agent production
Giải thích OpenClaw agent loop cho developer xây AI agent production: intake, context, model, tools, streams, persistence, agent.wait, timeout và usage/cos…
Từ intake, context, model, tools, streaming đến persistence: cách đọc agent loop của OpenClaw như một runtime vận hành thật.
Playbook tiếng Việt giải thích OpenClaw agent loop trong production: entrypoint agent/agent.wait, per-session queueing, context assembly, model inference, tool execution, assistant/tool/lifecycle streams, wait semantics, timeout và lớp quan sát usage/cost với QuotaCheap.
Một AI agent production không chỉ là một lời gọi model.
Nó là một vòng lặp có trạng thái: nhận input, dựng context, gọi model, chạy tool, stream kết quả, lưu transcript, rồi chuẩn bị cho lượt tiếp theo.
Trong OpenClaw, phần này được gọi là agent loop : đường chạy thật biến một message thành hành động và phản hồi cuối cùng.
Nếu chỉ nhìn OpenClaw như một chatbot wrapper, bạn sẽ bỏ lỡ phần quan trọng nhất: nó là runtime điều phối session, tools, streams và persistence.
Bài này đi theo docs OpenClaw về agent loop, rồi rút ra checklist production cho builder Việt Nam.
Agent loop là gì trong OpenClaw?
Theo OpenClaw docs, agentic loop là một run đầy đủ của agent: Nói đơn giản: khi một message đi vào OpenClaw, hệ thống không chỉ đẩy text vào model.
Nó cần: nhận request từ Gateway RPC hoặc CLI; xác định session đang dùng; chuẩn bị workspace, skills và bootstrap context; dựng system prompt và context phù hợp; gọi model; xử lý tool calls; stream assistant/tool/lifecycle events; ghi transcript và metadata để session nhất quán.
Đây là khác biệt giữa một demo agent và một runtime agent.
Demo có thể chạy bằng một hàm chat .
Runtime cần biết run nào đang chạy, session nào đang bận, tool nào đã gọi, event nào đã stream, và kết quả nào đã persist.
Entrypoint: agent và agent.wait OpenClaw docs nêu hai entrypoint chính: Gateway RPC: agent và agent.wait.
Luồng high level như sau: 1.
agent RPC validate params, resolve session, persist metadata, rồi trả { runId, acceptedAt } ngay.
Agent command chạy runtime thật: resolve model, thinking/verbose/trace defaults, load skills snapshot, rồi gọi embedded agent runtime.
Runtime stream events khi model nghĩ, gọi tools và trả output.
agent.wait dùng runId để chờ lifecycle end hoặc error, rồi trả status như ok, error hoặc timeout.
Điểm đáng chú ý: agent và agent.wait tách nhau.
Đây là pattern tốt cho production vì request có thể được accept nhanh, còn client hoặc caller quyết định có chờ completion hay không.
Queueing: mỗi session cần một lane riêng Một lỗi phổ biến khi xây agent là cho nhiều run trong cùng một conversation chạy song song.
Kết quả thường rất xấu: message sau đọc history chưa cập nhật; tool call ghi đè trạng thái; stream bị trộn; transcript lưu sai thứ tự; user thấy câu trả lời không khớp ngữ cảnh.
OpenClaw giải quyết bằng cách serialize runs theo session key, đồng thời có thể đi qua global lane.
Nói ngắn: cùng một session thì chạy tuần tự; session khác vẫn có thể chạy độc lập.
Đây là một nguyên tắc rất đáng copy khi tự xây agent runtime: Không phải mọi thứ đều nên bị lock toàn hệ thống.