2026-09-05 Primele apeluri reale au fost date: cinci s-au încheiat normal, șase au eșuat. Scrie aici ce s-a rupt.

Asistenți

Tot ce compune un asistent.

Un transcriptor, un model, o voce, câteva unelte, niște cunoștințe, o schemă pentru ce vrei înapoi și un mod de a dovedi că merge și săptămâna viitoare.

§01 Banc de lucru

Latența, costul și calitatea stau pe cardul de unde alegi.

Alegerea unui model este un compromis în trei, iar majoritatea interfețelor ascund două dintre cele trei în spatele unei pagini de comparație pe care nu o deschide nimeni. În bancul de lucru al asistentului, fiecare opțiune își poartă latența, costul pe minut și un indice de calitate chiar pe card, iar cardul este comanda: apeși pe el și se deschide selectorul.

Deasupra cardurilor stă bara de latență stivuită pentru configurația curentă, în cele șapte culori de etapă, și costul estimat pe minut pentru tot ansamblul. Cele două cifre pe care le pui în balanță se citesc împreună, fiindcă a o vedea pe una fără cealaltă înseamnă jumătate de decizie.

Presetările sunt reguli de ordonare peste registrul de furnizori, nu trei nume de model bătute în cuie, așa că un model scos din uz coboară la următoarea opțiune bună în loc să strice presetarea. Din clipa în care o etapă este editată de mână, asistentul nu mai corespunde niciunei presetări, iar interfața o spune, în loc să evidențieze o presetare care nu mai descrie configurația.

Trei feluri în care se scrie o cifră
1 240 ms
Măsurată. Simplă, la greutate întreagă, fără prefix. Vine dintr-o observație reală a acestui sistem.
~690 ms
Estimată. Cu tildă în față, estompată, cu un indiciu care spune că este o cifră tipică publicată de vendor, nu ceva măsurat de CallAgent.
preț necunoscut
Registrul nu are un preț publicat. Se arată banda relativă și nu se inventează nicio cifră, fiindcă un număr pe care un client își face bugetul trebuie să fie unul pe care îl putem susține.

Este o regulă din componentă, nu o preferință editorială: o estimare care nu poate fi confundată cu o măsurătoare dintr-o privire.[1]

§02 Unelte

Unelte, și servere MCP luate în serios.

O unealtă este o schemă JSON, o destinație și o versiune. Modelul vede schema, runtime-ul validează apelul față de ea, iar fiecare încercare se scrie în registrul apelului — inclusiv cele refuzate.

Serverele MCP nu sunt lipite ca portiță generică de scăpare. Fiecare unealtă pe care o expune un server este descoperită, păstrată cu schema ei și oferită modelului separat.

Descoperirea, prefixarea și poarta de permisiuni stau toate în planul de control, așa că poarta de acces nu trebuie niciodată să redescopere un server în mijlocul unui apel.[2]

Cum sunt tratate uneltele și serverele MCP.
unelte proprii Rutele tale HTTP, cu versiuni și publicare ca la asistenți. O versiune de unealtă aflată în uz merge mai departe cât timp editezi ciorna.
scheme Schemă JSON la intrare, JSON la ieșire, validate de ambele părți. Consola arată schema pe care a primit-o modelul, nu pe cea salvată ultima dată.
descoperire MCP Conectezi un server și i se preiau lista de unelte, schemele și datele despre el. Descoperirea se reîmprospătează programat și poate fi forțată din consolă.
expunere MCP Fiecare unealtă de la distanță devine o funcție proprie în lista modelului, prefixată pe server, ca două servere să poată expune amândouă o unealtă numită search fără să se ciocnească. Modelul le adresează separat, nu printr-o unealtă generică de tip cheamă-serverul.
permisiuni MCP Permis și interzis pe fiecare unealtă, cu un nivel de risc pentru fiecare. O unealtă interzisă nu este doar ascunsă de model; apelul către ea este refuzat și consemnat.
prospețime MCP O comandă programată reîmprospătează descoperirea din oră în oră, ca un server care adaugă sau scoate o unealtă să nu se abată pe tăcute de la ce crede modelul că are.
refuzuri Un apel de unealtă refuzat este un eveniment de rang întâi, cu motiv, nu o cerere pierdută. Vezi ce politică l-a refuzat și când.
§03 Cunoștințe
Cum funcționează baza de cunoștințe.
depozit Postgres cu pgvector. O bază, o copie de siguranță, un singur domeniu de tenant.
preluare Documentele sunt extrase, tăiate în fragmente și vectorizate printr-un lanț pus la coadă, ca o încărcare mare să nu blocheze cererea care a pornit-o.
căutare Un căutător hibrid care combină similaritatea vectorială cu căutarea de text integral din Postgres, fiindcă un client care cere un cod de piesă exact nu face căutare semantică.
vectori În spatele unei interfețe de furnizor, cu o implementare OpenAI livrată. Schimbarea ei nu atinge căutătorul.
în apel O căutare în timpul apelului scrie knowledge.queried, iar una care nu a găsit nimic util scrie knowledge.insufficient — așa că vezi apelurile în care asistentul a răspuns fără sprijin.
mod doar-cunoștințe Un asistent poate fi limitat la ce a întors efectiv baza de cunoștințe, în loc să i se permită să umple golul din greutățile modelului.

Căutare care stă în aceeași bază de date ca restul.

Niciun serviciu de vectori separat, de ținut sincron cu granița ta de tenant. Documentele, fragmentele și vectorii sunt rânduri în aceeași bază Postgres ca apelurile care le citează, sub același domeniu de organizație.

§04 Formă

Să scoți datele afară și să predai ștafeta.

Un apel este util doar dacă îl poate citi ceva mai departe. Două mecanisme acoperă cea mai mare parte: o schemă pe care modelul o completează în timpul apelului și o echipă care mută conversația la alt asistent fără să pice linia.

Ieșiri structurate, echipe și predarea contextului.
ieșiri structurate Definești câmpurile pe care le vrei înapoi ca schemă, o legi de un asistent, iar modelul o completează în timpul apelului. Înregistrări cu versiuni, validate la scriere, citibile din API și dintr-un webhook.
echipe Mai mulți asistenți pe același apel, fiecare cu promptul, modelul și uneltele lui. Rutarea între ei este un rezolvator cu decizie explicită, nu o instrucțiune în prompt și o speranță.
context la predare Cât din conversație primește următorul asistent este o setare, fiindcă uneori transcrierea întreagă este exact ideea, iar alteori este exact ce nu ai voie să trimiți mai departe.
§05 Dovadă

Să știi că mai merge după ce ai schimbat promptul.

Agenții vocali regresează în liniște. Un cuvânt adăugat într-un prompt face modelul vorbăreț, replica trece de buget și nu pică nimic — apelurile devin doar mai lente și mai slabe până ascultă cineva unul.

Așa că uneltele de observat fac parte din produs, nu sunt ceva ce construiești pe urmă.

Obiectele de evaluare, monitorizare și analiză.
seturi de evaluare Cazuri cu aserțiuni, rulate pe un asistent și punctate. Fiecare rulare își păstrează rezultatele pe caz, ca o regresie să arate direct cazul care s-a stricat.
seturi de simulare Conversații scriptate rulate pe un asistent, pentru comportamentul care nu se poate verifica pe un singur răspuns.
fișe de scor Metrici evaluate pe apeluri reale — a colectat câmpul, a rămas în buget, a predat ștafeta când trebuia.
monitoare Condiții permanente evaluate programat, ca o abatere de latență sau de rată de eșec să ridice ceva, nu să aștepte să fie observată.
incidente Ce ridică un monitor. O înregistrare cu o stare, nu un e-mail pe care nu îl citește nimeni.
tablouri Analiză pe date agregate, nu pe evenimente brute: percentile calculate în SQL, agregări orare și zilnice, pâlnii și histograme.
§06 Publicare

O ciornă pe care o poți strica și o versiune publicată pe care nu.

Asistenții au versiuni. Editezi o ciornă, o publici, iar apelurile în desfășurare rămân pe configurația cu care au pornit. O versiune publicată este un instantaneu, așa că revenirea înseamnă să alegi una veche, nu să îți amintești ce ai schimbat.

Publicarea este și momentul validării, în fața omului care a făcut alegerea. Exemplul din dreapta este real: un asistent a fost publicat cândva cu un transcriptor de lot pus ca transcriptor live, poarta de acces a respins toată configurația apelului trei straturi mai încolo, iar apelantul a auzit o linie moartă fără ca vreun ecran să spună de ce.

Refuzat la publicare

Un transcriptor care merge doar pe o înregistrare încheiată nu poate fi cel live. Publicarea este blocată, cu motivul și cu locul unde opțiunea chiar se potrivește.

Sonix transcrie doar o înregistrare încheiată, deci nu poate fi transcriptorul live. Alege aici un transcriptor în flux și configurează Sonix la Artefacte → transcriere după apel.

Mesajul este citat din validator, nu scris pentru pagina asta.[3]

Note

  1. 1 Convenția estimărilor: resources/views/components/ca/provider-card.blade.php și antetul bancului de lucru din resources/views/filament/resources/assistants/workbench-header.blade.php.
  2. 2 Aplatizarea și prefixarea MCP: app/Services/Calls/AssistantSnapshotWire.php și apps/voice-gateway/src/tools/ToolExecutor.ts. Poarta de permisiuni: app/Services/Mcp/McpPermissionGate.php.
  3. 3 Verificarea la publicare și mesajul ei: app/Services/Assistants/AssistantValidator.php.