> ## 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.

# 10. Компоненты

> Переиспользуемый мини-флоу вместо копипаста одного куска диалога в каждого агента.

# Компоненты: один блок на всех агентов

<Info>
  **Цель модуля:** перестать копировать один и тот же кусок диалога в каждого агента.
</Info>

Компонент — это мини-флоу с собственным входом и выходом, который живёт отдельно от агентов. Типичные компоненты: согласие на запись разговора, предложение SMS-напоминания, закрытие сделки, стандартный отказ.

Два уровня: **Библиотека компании** (общий, правки прилетают во все черновики сразу) и **локальный компонент агента**. На холсте компонент — это одна нода-ссылка; при публикации она разворачивается в обычные узлы, поэтому движок про компоненты ничего не знает.

<Frame caption="Компонент-нода ссылается на компонент «Согласие на SMS-напоминание»: 2 узла внутри, уровень «Библиотека».">
  <img src="https://mintcdn.com/hubtalk/GMvtjWdqWk0BhtuQ/images/tutorial/tut-17-component-node.webp?fit=max&auto=format&n=GMvtjWdqWk0BhtuQ&q=85&s=56015cfed65ba12dd48ac7d462bd3ae2" alt="Инспектор компонент-ноды: ссылка на библиотечный компонент" style={{ width: "100%", maxWidth: "470px", height: "560px", objectFit: "cover", objectPosition: "top", borderRadius: "6px" }} width="760" height="3217" data-path="images/tutorial/tut-17-component-node.webp" />
</Frame>

<Accordion title="Показать панель целиком">
  <img src="https://mintcdn.com/hubtalk/GMvtjWdqWk0BhtuQ/images/tutorial/tut-17-component-node.webp?fit=max&auto=format&n=GMvtjWdqWk0BhtuQ&q=85&s=56015cfed65ba12dd48ac7d462bd3ae2" alt="Инспектор компонент-ноды: ссылка на библиотечный компонент" width="760" height="3217" data-path="images/tutorial/tut-17-component-node.webp" />
</Accordion>

<Frame caption="/components — каталог: где компонент используется, режим переходов, версия. Удаление библиотечного компонента не рвёт агентов — он превращается в локальную копию.">
  <img src="https://mintcdn.com/hubtalk/GMvtjWdqWk0BhtuQ/images/tutorial/tut-18-components-list.webp?fit=max&auto=format&n=GMvtjWdqWk0BhtuQ&q=85&s=8d9e8eaca93f32c4b879ab85d7f3786e" alt="Раздел «Компоненты»: библиотека компании и локальные компоненты" width="1280" height="328" data-path="images/tutorial/tut-18-components-list.webp" />
</Frame>

<Frame caption="Редактор компонента. Внутри компонента — тот же холст. Отличие одно: вместо End стоит Exit («возврат в флоу») — выход, который при публикации склеивается со связью компонент-ноды." hint="Нажмите, чтобы открыть целиком">
  <img src="https://mintcdn.com/hubtalk/GMvtjWdqWk0BhtuQ/images/tutorial/tut-19-component-editor.webp?fit=max&auto=format&n=GMvtjWdqWk0BhtuQ&q=85&s=60cf29a8b21f2a0132576969f05604fd" alt="Редактор компонента: Begin, два узла и Exit «возврат в флоу»" style={{ width: "100%", height: "620px", objectFit: "cover", objectPosition: "top", borderRadius: "6px" }} width="1280" height="1693" data-path="images/tutorial/tut-19-component-editor.webp" />
</Frame>

## Локальная копия помнит, откуда она взялась

Локальная копия библиотечного компонента хранит ссылку на родителя и версию, от которой её отпочковали, и носит бейдж **«переопределяет библиотеку»**. Рядом есть просмотр расхождения копии с **текущим** телом родителя — сравнение идёт по смыслу, поэтому перестановка ключей расхождением не считается.

## Закрепление и выкат во все агенты

**Закреплённый библиотечный компонент** нельзя отвязать и удалить, а роли «разработчик» — ещё и править. Это способ зафиксировать формулировку, которую согласовали юристы, чтобы её не «поправили под сценарий» в одном агенте.

Правку компонента можно **выкатить во все агенты** мастером: он показывает список потребителей до применения и позволяет перепубликовать выбранных. Без него правка библиотеки попадает в черновики, но на боевые звонки не влияет, пока каждого агента не опубликуют вручную.

<Note>
  **Зачем это дисциплина, а не удобство**

  Формулировка согласия или напоминания — то, что меняется по требованию юристов и сразу во всех агентах. Пока это скопированный текст в двадцати узлах, изменение гарантированно где-то забудут. Компонент делает такую правку одной операцией — и видно, в скольких агентах она отразится.
</Note>
