Перейти к содержимому страницы
Документация
Документация Make Agent Fast

SvelteKit

Загружайте и снимайте встраиваемого агента в браузерном жизненном цикле макета SvelteKit.

Кратко

Загружайте и снимайте встраиваемого агента в браузерном жизненном цикле макета SvelteKit.

Путь установки встраиванияЗагрузчик на вашем сайте общается с размещённой средой агента
Ваш сайтHTML / appСкрипт-загрузчикembed.jsИнтерфейс виджетаЧат / голосАгент

Подготовьте origin#

Включите встраивание для агента и разрешите каждый точный origin разработки, предпросмотра и продакшена SvelteKit. Используйте корневой макет для загрузчика на весь сайт или вложенный макет/компонент страницы для выбранных маршрутов.

Создайте компонент#

onMount выполняется только в браузере. Возвращайте функцию очистки, когда владеющий макет/компонент может размонтироваться.

<script lang="ts">
  import { onMount } from "svelte";

  const slug = "YOUR_SITE_SLUG";

  onMount(() => {
    if (document.getElementById(`maf-embed-root-${slug}`)) return;

    const script = document.createElement("script");
    script.id = "maf-agent";
    script.src = "https://makeagent.fast/embed.js?v=20260728-widget-v2";
    script.dataset.agent = slug;
    script.dataset.position = "right";
    script.async = true;
    document.body.appendChild(script);

    return () => {
      script.remove();
      document.getElementById(`maf-embed-root-${slug}`)?.remove();
    };
  });
</script>

Смонтируйте компонент один раз из src/routes/+layout.svelte для всего приложения. Для группы маршрутов разместите его в +layout.svelte этой группы; очистка удалит загрузчик, когда посетитель уходит из группы.

Используйте конфигурацию безопасно#

Публичный slug сайта может быть публичным значением окружения SvelteKit, потому что он не учётные данные. Не используйте $env/static/public или браузерный код для ключей MAF API, ключей AI-провайдеров или секретов коннекторов. Держите их в серверных модулях/маршрутах.

Сохранение или сброс состояния диалога#

Удержание компонента в корневом макете сохраняет один и тот же iframe между клиентскими переходами. Очистка по маршруту намеренно сбрасывает этот iframe и его текущее состояние на странице. Выберите одно поведение вместо перемонтирования на каждой странице.

Проверьте продакшен-сборку#

  1. Запустите продакшен-адаптер/сборку SvelteKit.
  2. Загрузите публичный маршрут напрямую и убедитесь, что загрузчик/корень один.
  3. Перейдите внутрь владеющего макета и из него.
  4. Проверьте Network/CSP и точный родительский origin.
  5. Проверьте реальное сообщение, узкое окно и микрофон, если он включён.

Решение проблем#

СимптомРешение
Ошибка document во время SSRДержите весь код загрузчика внутри onMount
Загрузчик остаётся после ухода из макетаВерните очистку и удалите созданный корень
Диалог сбрасывается на каждой страницеМонтируйте в постоянный родительский +layout.svelte
Защита от дублей мешает новому монтажуУбедитесь, что предыдущая очистка удалила старый корень перед добавлением нового скрипта
Падает только в продакшенеРазрешите финальный HTTPS origin и проверьте CSP-заголовки адаптера

Npm-адаптер для SvelteKit пока не опубликован; размещённый скрипт — поддерживаемая поверхность интеграции.