---
title: "Synapse 0.3: дашборд для агентів на Laravel AI SDK навчився схвалювати інструменти"
url: https://laravelukraine.com/blog/synapse-03-dasbord-dlia-agentiv-na-laravel-ai-sdk-navcivsia-sxvaliuvati-instrumenti
date: 2026-11-04
---

# Synapse 0.3: дашборд для агентів на Laravel AI SDK навчився схвалювати інструменти

[Synapse](https://github.com/RedberryProducts/synapse) від Redberry вийшов у версіях [0.3.0](https://github.com/RedberryProducts/synapse/releases/tag/v0.3.0) і [0.3.1](https://github.com/RedberryProducts/synapse/releases/tag/v0.3.1) 29 і 30 жовтня. Це відкритий (MIT) дашборд для розробки агентів на [Laravel AI SDK](https://github.com/laravel/ai), який автори описують як «Telescope і Horizon, але для агентів». Головне в новому релізі - виклики інструментів, що чекають схвалення, тепер можна підтвердити або відхилити прямо в браузері.

Відколи AI SDK [вийшов у 1.0](/blog/laravel-ai-sdk-10-klasifikaciia-zatverdzennia-instrumentiv-ta-novi-mozlivosti), агентів пишуть уже не лише для демо. А налагоджувати їх незручно: з `tinker`, тимчасового маршруту чи `dd()` видно, що агент відповів, але не те, які інструменти він викликав, із якими аргументами, скільки кроків зробила модель і де згоріли токени. Якщо відповідь неправильна, лишається гадати, чи винен промпт, інструмент, модель чи провайдер.

### Що вміє Synapse

Пакет сканує застосунок і показує кожен клас, що реалізує контракт `Agent` з SDK, разом із провайдером, моделлю та інструментами. Нічого реєструвати не треба: написали клас у `app/Ai/Agents` чи `app/Agents`, оновили сторінку - агент у списку. Якщо агент лежить деінде, його не буде видно, доки не додасте шлях у `discovery.paths`. Провайдери й ключі Synapse бере з вашого `config/ai.php`.

Далі - плейграунд:

- **чат зі стримінгом** - вкладення, вибір іншої моделі для одного повідомлення без зміни коду агента, збережена історія з пошуком і фільтрами;
- **картки викликів інструментів** - аргументи, результат, тривалість і помилка, причому вбудовані інструменти провайдера (як-от вебпошук) відрізняються від ваших;
- **використання токенів** на кожне повідомлення і загалом на розмову, токени міркувань окремо;
- **інформаційна панель** - системний промпт, схеми інструментів, параметри генерації та `middleware` такими, якими їх розв'яже SDK під час виклику;
- **помилки** - будь-який виняток стає карткою з класом, повідомленням, відповіддю провайдера і стек-трейсом, а не обірваним стримом.

### Як поставити

Synapse призначений лише для середовища розробки:

```bash
  composer require --dev 'redberry/synapse:^0.3'
  php artisan synapse:install
```

Інсталятор публікує `config/synapse.php`, міграції та `SynapseServiceProvider` із гардом доступу, реєструє провайдер лише в `local` і запускає міграції. Дашборд відкривається на `/synapse`, npm не потрібен - зібрані ассети вже в пакеті.

Вимоги: PHP 8.3+, Laravel 12.62+ або 13.15+, `laravel/ai` ^1.3. Якщо в проєкті стоїть `laravel/mcp`, він має бути не нижчим за 1.1.0 - Synapse задає цю межу через security-раду [GHSA-m25c-38v7-94p8](https://github.com/laravel/mcp/security/advisories/GHSA-m25c-38v7-94p8). Що змінилося в MCP 1.1 і AI SDK 1.3, ми розбирали [в огляді AI-інструментів Laravel](/blog/boost-2104-laravel-mcp-11-i-ai-sdk-13-shho-zminilosia-v-ai-instrumentax-laravel).

### Що нового в 0.3

**Схвалення інструментів.** Інструменти з контрактом `Approvable` і трейтом `InteractsWithApprovals`, а також інструменти SDK, на яких викликано `requireApproval('...')`, у 0.2 лише ставили хід на паузу. Тепер плейграунд показує аргументи та причину ще до виконання, кожен виклик можна схвалити або відхилити, і щойно рішення є для всіх викликів, агент продовжує той самий хід. Після відхилення модель отримує пояснення, що дію скасовано, і відповідає далі. Призупинені запити переживають перезавантаження сторінки. Працює для власних інструментів, обгорток MCP з SDK і схвалення перед делегуванням субагенту. Не підтримуються інструменти, які виконує сам провайдер, і запити на схвалення зсередини дочірнього агента. Як влаштоване схвалення в самому SDK, ми писали [в окремій новині](/blog/laravel-ai-sdk-otrimav-funkciiu-human-in-the-loop-dlia-pidtverdzennia-dii).

**Джерела.** URL-цитування, які повертає провайдер, показуються клікабельним списком під відповіддю. Звичайні посилання в тексті чи в результатах інструментів джерелами не стають, і, як чесно пишуть автори, цитування - це те, на що послався провайдер, а не гарантія правильності відповіді.

**Пояснення зупинок.** Якщо відповідь обірвалася через ліміт вихідних токенів, фільтр контенту чи явне скасування, плейграунд так і каже, а часткова відповідь лишається видимою. Це допомагає відрізнити «треба збільшити ліміт» від справжнього збою.

**Інспектор кроків.** Під збереженою відповіддю розгортається **Steps (N)** - окремі кроки моделі в межах ходу: провайдер і модель, текст, міркування, причина завершення, використання токенів і пов'язані виклики інструментів. Для нових кроків видно тривалість самого запиту до моделі окремо від виконання інструментів. Так легко знайти найдорожчий крок у довгій розмові.

### 0.3.1: Octane

У 0.3.0 під Laravel Octane виклики інструментів у воркерах могли не записатися: рекордер «губив» виклик. 0.3.1 це виправляє, і окремих налаштувань для Octane не треба. FrankenPHP і Swoole під Octane віддають відповідь поступово, а от RoadRunner зберігає розмови та рішення щодо схвалень, але відповідь віддає лише наприкінці ходу - плейграунд показує про це попередження. Після оновлення перезапустіть воркери:

```bash
  composer require --dev 'redberry/synapse:^0.3.1'
  php artisan octane:reload --server=frankenphp
```

### Що врахувати

- **З 0.2.0** історія зберігається, але треба опублікувати й запустити дві нові міграції: `php artisan vendor:publish --tag=synapse-migrations` і `php artisan migrate`. Старі призупинені ходи продовжити не вийде. З 0.1.x міграція окрема і вимагає скидання історії - див. [UPGRADE.md](https://github.com/RedberryProducts/synapse/blob/main/UPGRADE.md).
- **Справжні провайдери в тестах - лише OpenAI.** Під час валідації 0.2.0 смоук-тести на живому API проганяли на OpenAI `gpt-4.1-mini`, решта тестів - на фейкових агентах. Іншими провайдерами автори пакет наживо не перевіряли.
- **Structured output - за один прохід.** Агенти зі структурованою відповіддю отримують лише поточне повідомлення без попередніх ходів, результат показується як JSON.
- **Це справжні виклики.** Плейграунд витрачає справжні кредити API і виконує ваші справжні інструменти з усіма побічними ефектами. Поза `local` доступ закриває гард `viewSynapse`, а в продакшені маршрути не реєструються, поки ви явно не задасте `SYNAPSE_ENABLED=true`.

### Чи варто ставити

Якщо ви пишете агентів на Laravel AI SDK 1.3 і досі налагоджуєте їх через логи, Synapse варто спробувати: він ставиться однією командою як dev-залежність і нічого не змінює в коді агентів. Найкорисніше в 0.3 - можливість прогнати сценарій зі схваленням людиною ще до того, як ви збудуєте для нього власний інтерфейс. Пакет поки в 0.x, і між мінорними версіями вже траплялися зміни, що вимагали скидання історії, тож перед оновленням читайте примітки до релізу. Під Octane ставте одразу 0.3.1.
