Как Функционира Агент на ИА Конверсационал по Дентур
Околните 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…
Как Функционира Един Agente на IA за Конверсация върху (Архитектура OpenClaw)
Как функционира един agente на IA за конверсация в практика, на повороти, на повороти? Този пост отваря куфарчето на OpenClaw: от момента, където съобщението на клиента пристига в WhatsApp до текста, който агентът пише отново. Ще бъде технично. Стои да се прочете, ако решите да изградите архитектура на продукт, ще купите решение и искате да оцените основата, или ако ви харесва да знаете, което става зад конверсацията.
TL;DR: на всяко повороти минава през 6 етапа — ингест, решава контекст, избират умения, решават следваща действие, изпълняват с гари, запазват памет. Съвършеният цикъл се върти в <секунди на края на Cloudflare, без фиксиран сървър.
Защо архитектурата е важна
Агент за конверсация, който изглежда функционира в демонстрация, но се разваля в производство обикновено има един от тези 4 проблеми:
- Висока латентност — клиентът чака 8 секунди за отговор, конверсацията умира.
- Ненадеждена алукинация — агентът измисля цена, час, политика.
- Забравен контекст — клиентът се връща след 2 дни и агентът "забравя" всичко.
- Ненадеждени разходи — всяка дълга конверсация напълнява предикт и вие плащате много пари в токени.
Съществуват в изборите на архитектурата, не в ограниченията на модела. OpenClaw е създаден, за да избегне 4-те — и пътя за разбиране е да се погледне цикъла на повороти.
Цикълът на повороти (6 етапа)
Представете си, че клиентът е изпратил съобщението "харесвам да се запишат за събота на сутринта" . Какво става между "получено" и отговора на агента?
Етап 1 — Ингест (edge worker, <ms)
Съобщението на WhatsApp пристига чрез webhook на Meta директно в Cloudflare Worker на най-близкия географически точка (PoP). В Бразилия това значи Сао Пауло или Рио, латентност на мрежата <0ms.
Работникът прави три неща:
- Валидира подписа на webhook (HMAC срещу секрет на WABA).
- Идентифицира тенианта по номера на телефона на получателя (много-тенант по
to_number). - Нормализира payload-а — аудио става транскрипция, снимка става описание, местоположение става
{lat,lng}, текст остава като е.
На края на етап 1 имате обект {tenant_id, conversation_id, user_message} готов за следващия етап.
Етап 2 — Решава контекст (D1 + KV, ~80ms)
Агентът трябва да има 3 части от контекст преди да реши:
- Контекст на разговора — кой е клиентът, какво е съобщението му.
- Контекст на тенианта — какво е тенианта, какво е състоянието му.
- Контекст на агента — какво е състоянието на агента, какво е състоянието му.
Агентът трябва да има тези части от контекст, за да реши следващото действие.
- Новите последни от разговора (последните N важни обръщения).
- Дългосрочна памет на клиента (предпочитания, история на покупки, бележки).
- Състояние на агента (личност, активирани умения, правила).
Всички идват от D1 (разпределен SQLite на Cloudflare). D1 замества традиционния Postgres/Mongo – без сървър за база данни за поддръжка, достъп в няколко милисекунди от работника, множествено-тенантство чрез tenant_id.
Ключовата точка: ние не зареждаме цялото разговор в prompt. Memory Manager v2 на OpenClaw (описан в нашия вътрешен документ) избира само важните обръщения за текущия обръщение (последните N + N с висока семантична важност). Това запазва предвидимият стойност на токена дори и в разговори с над 100 обръщения.
Стадиум 3 – Избор на умения (политика на движението, ~20ms)
Кажди агент има набор от умения, които могат да бъдат извикани. Примери: consultar_calendario, criar_evento, gerar_link_pagamento, consultar_pedido, chamar_humano.
Дадена съобщението "quero marcar pra sábado de manhã", политиката на движението филтрира:
- Умения, които са съвместими с детектираната цел (агендиране).
- Умения, които са допустими за тази фаза на разговора (не всички умения са достъпни във всеки момент).
- Умения, които са активирани от този клиент (календар ще се появи само ако клиентът е интегрирал календара).
На края от това имате малък набор от умения, които се предават на модела – не 50 възможности, а само 4, които са подходящи тук. Това drasticно намалява шансите модела да извика грешно умение.
Стадиум 4 – Решение (звън на LLM, 400-1200ms)
Сега модела влиза в действие. OpenClaw прави единствена звънка към LLM на граничата (Anthropic Claude, OpenAI GPT, Google Gemini – конфигурируем от клиента) с:
- Системен prompt = личност на агента + правила + активирани умения.
- История = избрани обръщения в етап 2.
- Съобщение на клиента = съобщение за текущото обръщение.
Модела отговаря едно от две неща:
- Финално съобщение (текст директно към клиента).
- Умиеливи извиквания (предложение за извикване на конкретно умение с параметри).
В примера "quero marcar pra sábado de manhã", модела обикновено отговаря:
{
"tool": "consultar_calendario",
"args": { "date_range": "2026-04-19 06:00 to 12:00" }
}
Стадиум 5 – Изпълнение с гарири (променлива, ~100-500ms)
Уменията не се изпълняват в модела. Те се изпълняват в кода ни, който:
...
- Проверяване на параметри (датата в диапазона е в съответствие с формата? е в рамките на правилата на тенианта?).
- Проверяване на разрешение (този агент има право да извлича информация от този календар?).
- Извикване на API (в този случай Google Calendar API).
- Връщане на структурирано резултат към модела.
Защо това е важно? Защото модела никога не създава резултата. Ако календарът върне [10h, 11h], това е точно това, което ще бъде изпратено в следващата чакане. Ако уменията се провалят, модела знае, че е провалил. Няма риск от агента да "създаде" часове от 9 часа, когато няма такива.
В случаи, които включват чувствителна информация (цена, срок, име на клиента), пайплайнът принуждава tool call — не дава на модела да отговаря от собственото "знание". Това изключва класа на алукинцията най-често срещана при търговски агенти.
Стадий 6 — Отговор и съхранение (~50ms)
С резултата от уменията в ръце, модела прави втората чакане — сега за да сформира окончателния отговор към клиента. Например:
"Имам събота от 10 часа и 11 часа. Какво предпочитате?"
Паралелно, работникът:
- Изпраща обратната информация чрез API на WhatsApp.
- Съхранява цялото обръщение (потребител + асистент + извиквания на уменията + продължителност) в D1.
- Актуализира паметта за дълга съжителство ако обръщението създаде ново събитие (например "клиентът предпочита събота").
- Изпраща събитие за наблюдаване (метрика за задържаност, стойност на токена, скорост на скалите).
Всичко това се изпълнява паралелно. Съхранението не блокира изпращането на информацията — клиентът не чака D1.
Къде е защитата срещу алукинция
Агент, който алукинява в експлоатация, губи доверието бързо. OpenClaw има 4 линии на защита:
- Истински източник принуден. Фактични данни (цена, час, име) съвсем винаги идват от уменията, никога от модела самия.
- Двойно проверяване на чувствителни данни. Пригаждането се потвърждава с клиента преди да се съхранява. Платежът се потвърждава преди да се освободи достъпът.
- Изрично отрицателни правила. Персона на всяка агент включва "никога не създавай X, Y, Z" — модела се подчинява.
- Паднал обратно към човека. Когато няма умения, които да покрият въпроса, агентът казва
"останите да проверя с тима"и отваря билет — не хвърля.
В аудираните от нас през последните 6 месеца (реални разговори, регистрирани ръчно), стойността на алукинцията била под 0,3% от обръщенията — и почти всички случаи били поради конфигурация (тениантът забравил да включи подходящите умения), а не поради грешка на модела.
Стоимостта на обръщението
Translated markdown (bg-BG) ends here.
Хубавата архитектура е невидима, докато не погледнете на счетоводството. Съображая, че всеки обръщение прави 1-2 извиквания на LLM + търсения в D1, обичайният разход за пълна разговорна сесия (10-15 обръщения) е:
(предполага се, че има съдържание в markdown, което трябва да бъде преведено)
Equipe OpenClaw
Публикувано на 29 май 2026 г.