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

# 21. Публикация и версии

> Черновик против опубликованной версии, снапшот и восстановление.

# Публикация и версии

<Info>
  **Цель модуля:** понять, что именно уходит в бой, и уметь вернуться назад.
</Info>

У агента всегда два состояния: **черновик** (то, что вы правите) и **опубликованная версия** (то, по чему идут звонки). Правки черновика на живые звонки не влияют вообще — это главная страховка платформы.

<Steps>
  <Step title="Нажали «Опубликовать»">
    Запускается валидация. Есть ошибки — публикации нет.
  </Step>

  <Step title="Черновик становится версией">
    Прошло — черновик становится новой версией, к ней пишется заметка («что изменили»).
  </Step>

  <Step title="Идущие звонки не прерываются">
    Звонки, которые идут в этот момент, продолжаются по своей версии: снапшот версии иммутабелен.
  </Step>

  <Step title="Откат при необходимости">
    В **Истории версий** любую версию можно посмотреть, сравнить с черновиком и **восстановить**.
  </Step>
</Steps>

<Frame caption="История версий: версия, дата, автор (человек или человек + Copilot) и заметка. «Дифф с черновиком» показывает, чем текущая правка отличается от боевой версии — читать перед каждой публикацией.">
  <img src="https://mintcdn.com/hubtalk/cKl-cjuDGhk4sToG/images/tutorial/tut-43-version-history.webp?fit=max&auto=format&n=cKl-cjuDGhk4sToG&q=85&s=872fc8b7ce8ba178baddc8b94841214d" alt="Модальное окно «История версий» с версией v1 и кнопками просмотра, диффа и восстановления" width="1280" height="794" data-path="images/tutorial/tut-43-version-history.webp" />
</Frame>

<Note>
  **Что фиксируется в версии**

  Не только граф: в снапшот попадают модели, голос, ASR, настройки звонка, привязки баз знаний, наблюдатели и развёрнутые компоненты. Поэтому правка справочника или библиотечного компонента не меняет поведение уже опубликованной версии — она подхватится при следующей публикации. Это ровно то, что нужно на проде: ничто не «уезжает» само.
</Note>

## Проверка настроек провайдеров

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

Так ловится то, что иначе вскрылось бы на первом же живом звонке:

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

<Note>
  Это предупреждения, а не блокировка: публикация проходит. Смысл в том, чтобы вы узнали о сломанной настройке на своём экране, а не из записи разговора с клиентом.
</Note>

<Warning>
  **Публикация — это ещё и появление агента в чужих списках**

  Участник выбирает агента для кампании только из опубликованных, поэтому **первая публикация делает агента выбираемым для всей организации**. Если агент ещё сырой, а опубликовать его нужно — например, чтобы прогнать телефонный тест, — сначала переключите его в «Скрыто от участников» в секции **«Доступ»** панели настроек, и только потом публикуйте. Скрытие не мешает ни звонкам, ни тестам: оно убирает агента из выбора, а не выключает его. Подробности — в [Агентах](/ru/v4/platform/agents/list).
</Warning>

<Check>
  **Практика**

  Опубликуйте своего агента с заметкой «учебная сборка v1». Затем измените приветствие, посмотрите «Дифф с черновиком» и опубликуйте v2. Восстановите v1 и убедитесь, что приветствие вернулось.
</Check>
