> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hubtalk.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 01. Модель диалога

> Узлы, переходы, один ход: кто решает, что агент скажет дальше.

# Модель диалога: узлы, переходы, один ход

<Info>
  **Цель модуля:** объяснить своими словами, кто решает, что агент скажет дальше — и почему это решает не «нейросеть вообще».
</Info>

Агент в Conversation Flow — это **ориентированный граф**. Узел (нода) — это один шаг разговора: поздороваться, спросить дату, позвонить в CRM, перевести на человека. Переход — правило, по которому диалог уходит из узла дальше. Разговор всегда стоит в каком-то одном узле, и это главное отличие от «просто промпта»: поведение агента предсказуемо и его можно чинить точечно.

Один ход диалога (тёрн) в основном режиме `rigid` выглядит так:

```mermaid theme={null}
flowchart LR
    A["Реплика клиента<br/>ASR или чат"] --> B["Классификатор<br/>какой переход сработал"]
    B -->|переход подошёл| C["Переход в новый узел<br/>и он говорит / работает"]
    B -->|ничего не подошло| D["Ответ текущего узла<br/>остаёмся на месте"]
    C --> E(["Следующий ход"])
    D --> E
```

Ключевое правило: **за один ход агент либо переходит, либо отвечает**. Переход выбирает отдельная быстрая модель-классификатор — она видит только условия исходящих переходов узла, а не весь ваш промпт.

## Два сорта узлов

* **Говорящий** — только `Conversation`. Единственный тип, который произносит реплику клиенту.
* **Немые** — `Logic Split`, `Extract Variables`, `Function`, `Code`, `MCP`. Клиент их не слышит: они считают, извлекают, вызывают внешние системы и сразу уходят дальше.
* **Управляющие звонком** — `End` (завершить) и `Transfer` (перевести на человека).
* `Begin` — стартовый маркер, и `Компонент` — ссылка на готовый переиспользуемый блок.

<Note>
  **Почему так, а не один промпт**

  Одна большая инструкция «поговори с клиентом про запись» ломается тремя вещами: её нельзя проверить по шагам, она забывает про обязательные вопросы и её нельзя отладить точечно. Граф даёт то, чего в промпте нет: узел, на котором видно, где именно разговор идёт не так; переменные, которые точно заполнены; и запись «где был звонок» в истории каждого разговора.
</Note>

<Frame caption="Итог курса. Тот агент, который вы соберёте: подтверждение визита, перенос через CRM, вопросы из базы знаний, перевод на администратора, SMS-напоминание и два разных завершения. 17 узлов — это нормальный размер боевого агента." hint="Нажмите, чтобы открыть целиком">
  <img src="https://mintcdn.com/hubtalk/GMvtjWdqWk0BhtuQ/images/tutorial/tut-01-canvas-overview.webp?fit=max&auto=format&n=GMvtjWdqWk0BhtuQ&q=85&s=34f35072e36988c1f906700fec9b7e83" alt="Холст редактора: карта диалога агента из 17 узлов" style={{ width: "100%", height: "620px", objectFit: "cover", objectPosition: "top", borderRadius: "6px" }} width="1180" height="1619" data-path="images/tutorial/tut-01-canvas-overview.webp" />
</Frame>

<Check>
  **Проверь себя**

  Ответьте не глядя: 1) кто выбирает переход — исполняющая модель или классификатор? 2) сколько узлов в графе могут произнести фразу? 3) что произойдёт, если ни одно условие перехода не совпало?
</Check>
