Як працює розмовний AI-агент зсередини
6 етапів одного кроку розмови в OpenClaw — з реальною затримкою, вартістю за розмову та 4 лініями захисту від галюцинацій.
Equipe OpenClaw · Time de Engenharia & Produto
A Equipe OpenClaw é formada por engenheiros, designers e especialistas em IA dedicados a construir a melhor plataforma de agentes conversacionais para negócios brasileiros. Combinamos expertise…
Як працює розмовний ІІ-агент зсередини (Архітектура OpenClaw)
Як працює розмовний ІІ-агент на практиці, крок за кроком? Цей пост відкриває чорну скриньку OpenClaw: від моменту, коли повідомлення клієнта надходить у WhatsApp, до тексту, який агент пише у відповідь. Буде технічно. Варто прочитати, якщо ви приймаєте рішення щодо архітектури продукту, якщо збираєтесь купити рішення і хочете оцінити його глибину, або якщо вам цікаво знати, що відбувається за лаштунками розмови.
TL;DR: кожен крок проходить через 6 етапів — ingest, визначення контексту, вибір навичок, прийняття рішення про наступну дію, виконання з guard-rails, збереження пам'яті. Весь цикл виконується за <2 секунди на edge Cloudflare, без виділеного сервера.
Чому архітектура має значення
Розмовний агент, який начебто працює на демо, але ламається в продакшені, зазвичай має одну з цих 4 проблем:
- Висока затримка — клієнт чекає 8 секунд на відповідь, розмова вмирає.
- Неконтрольована галюцинація — агент вигадує ціну, розклад, політику.
- Втрачений контекст — клієнт повертається через 2 дні, а агент "забуває" все.
- Неконтрольовані витрати — кожна довга розмова заповнює промпт, і ви платите цілий статок за токени.
Усі 4 — це вибір архітектури, а не обмеження моделі. OpenClaw був побудований, щоб уникнути всіх 4 — і шлях до розуміння — це розглянути цикл одного кроку.
Цикл одного кроку (6 етапів)
Уявіть, що клієнт щойно надіслав повідомлення "quero marcar pra sábado de manhã". Що відбувається між "received" і відповіддю агента?
Етап 1 — Ingest (edge worker, <50ms)
Повідомлення з WhatsApp надходить через webhook Meta безпосередньо в Cloudflare Worker у найближчій географічно точці присутності (PoP). У Бразилії це означає Сан-Паулу або Ріо, мережева затримка < 20ms.
Worker виконує три речі:
- Перевіряє підпис вебхука (HMAC проти секрету WABA).
- Ідентифікує тенанта за номером телефону отримувача (multi-tenant за
to_number). - Нормалізує payload — аудіо перетворюється на транскрипцію, зображення на опис, локація на
{lat,lng}, текст залишається як є.
Наприкінці етапу 1 ви маєте об'єкт {tenant_id, conversation_id, user_message}, готовий до наступного кроку.
Етап 2 — Визначення контексту (D1 + KV, ~80ms)
Агенту потрібні 3 частини контексту перед прийняттям рішення:
- Нещодавня історія розмови (останні N релевантних кроків).
- Довгострокова пам'ять клієнта (вподобання, історія покупок, нотатки).
- Стан агента (персона, увімкнені skills, правила).
Усе це надходить із D1 (розподілений SQLite від Cloudflare). D1 замінює традиційний Postgres/Mongo — жодного сервера бази даних для підтримки, доступ за кілька мс із worker, мультитенантність за tenant_id.
Ключовий момент: ми не завантажуємо всю розмову в промпт. Memory Manager v2 від OpenClaw (описаний у нашій внутрішній документації) обирає лише релевантні кроки для поточного ходу (останні N + N із високою семантичною релевантністю). Це дозволяє зберігати передбачувану вартість токенів навіть у розмовах із 100+ кроків.
Етап 3 — Вибір skills (policy engine, ~20мс)
Кожен агент має набір доступних skills — функцій, які він може викликати. Приклади: consultar_calendario, criar_evento, gerar_link_pagamento, consultar_pedido, chamar_humano.
Для повідомлення "quero marcar pra sábado de manhã" policy engine фільтрує:
- Skills, сумісні з виявленим наміром (планування).
- Skills, дозволені для цієї фази розмови (не всі skills доступні весь час).
- Skills, які цей tenant увімкнув (calendar з'являється лише якщо tenant інтегрував його).
У результаті ви маєте невеликий підмножину skills, що передається моделі — не всі 50 можливих, а лише 4, які мають сенс у цьому контексті. Це різко знижує ймовірність того, що модель викличе неправильний skill.
Етап 4 — Рішення (LLM call, 400-1200мс)
Тепер вступає модель. OpenClaw робить один виклик до frontier LLM (Anthropic Claude, OpenAI GPT, Google Gemini — налаштовується для кожного tenant) з:
- System prompt = персона агента + правила + доступні skills.
- History = кроки, обрані на етапі 2.
- User message = повідомлення поточного ходу.
Модель відповідає одним із двох варіантів:
- Фінальна відповідь (текст безпосередньо клієнту).
- Tool call (запит на виконання конкретного skill із параметрами).
У прикладі "quero marcar pra sábado de manhã" модель зазвичай повертає:
{
"tool": "consultar_calendario",
"args": { "date_range": "2026-04-19 06:00 to 12:00" }
}
Етап 5 — Виконання з guard-rails (змінна, ~100-500мс)
Skill не виконується в моделі. Він виконується в нашому коді, який:
- Валідує параметри (date_range має правильний формат? відповідає правилам tenant?).
- Перевіряє дозвіл (цей агент має право запитувати цей календар?).
- Виконує виклик (Google Calendar API у цьому випадку).
- Повертає структурований результат моделі.
Чому це важливо? Тому що модель ніколи не вигадує результат. Якщо календар повертає [10h, 11h], саме це й потрапляє до наступного виклику. Якщо skill завершується з помилкою, модель знає, що сталася помилка. Нуль ризику того, що агент "вигадає", що є вільний час о 9-й, коли його немає.
Для випадків, що стосуються чутливої інформації (ціна, термін, ім'я клієнта), pipeline примусово використовує tool call — не дозволяє моделі відповідати з власних "знань". Це усуває клас галюцинацій, найпоширеніший у комерційних агентів.
Етап 6 — Відповідь і збереження (~50ms)
Маючи результат skill, модель робить другий виклик — тепер для формування фінальної відповіді клієнту. Наприклад:
"Маю суботу о 10-й і 11-й. Який варіант обираєте?"
Паралельно worker:
- Надсилає повідомлення назад через API WhatsApp.
- Зберігає повний хід (user + assistant + tool calls + тривалість) у D1.
- Оновлює довготривалу пам'ять, якщо хід створив новий факт (наприклад: "клієнт надає перевагу суботі").
- Генерує подію спостережуваності (метрика латентності, вартість токенів, рівень ескалації).
Все це працює паралельно. Збереження не блокує надсилання повідомлення — клієнт не чекає на D1.
Де знаходиться захист від галюцинацій
Агент, який галюцинує у продакшені, швидко втрачає довіру. OpenClaw має 4 лінії захисту:
- Примусове джерело істини. Фактичні дані (ціна, час, ім'я) завжди надходять від skill, ніколи від моделі самостійно.
- Подвійна перевірка чутливих даних. Запис підтверджується з клієнтом перед збереженням. Оплата підтверджується перед наданням доступу.
- Явні негативні правила. Персона кожного агента включає "ніколи не вигадуй X, Y, Z" — модель підкоряється.
- Фолбек на людину. Коли жоден skill не покриває запитання, агент каже
"дозвольте я уточню з командою"і створює тікет — не вгадує.
В аудитах, які ми провели за останні 6 місяців (реальні розмови, переглянуті вручну), рівень фактичних галюцинацій залишився нижче 0,3% ходів — і майже всі випадки були через конфігурацію (tenant забув увімкнути відповідний skill), а не через помилку моделі.
Вартість за розмову
Гарна архітектура невидима, доки ви не подивитесь на рахунок. Враховуючи, що кожен крок робить 1-2 виклики LLM + запити до D1, типова вартість за повну розмову (10-15 кроків) становить:
Equipe OpenClaw
Опубліковано 27 травня 2026 р.