Ga naar hoofdinhoud

Strands-engine

Libre WebUI bevat een ingebouwde agentengine die gebaseerd is op de open-source Strands Agents harness (@strands-agents/harness 0.1.1 op @strands-agents/sdk 1.19.0). De engine draait binnen het backendproces van Libre WebUI, dus u hoeft geen aparte daemon te installeren. De SDK wordt geladen zodra de engine voor het eerst wordt gebruikt; een server waarop Strands is uitgeschakeld, laadt hem nooit.

De engine stuurt de modellen aan die Libre WebUI al aanbiedt:

  • Ollama-modellen, wanneer Ollama is ingeschakeld
  • modellen van actieve chat- of completion-providerplugins

Elke modelaanroep loopt via dezelfde Ollama- en plugindiensten die Chat gebruikt. Er is geen aparte providerconfiguratie en geen aparte API-sleutel. Providerreferenties en de Ollama-schakelaar gelden ongewijzigd.

U kunt de engine op drie plaatsen gebruiken:

  • de pagina Strands, voor blijvende agentsessies
  • Chat, via de Strands-items in de modelkiezer
  • Work, als de optie Strands van het Engine-besturingselement in de composer

Toegang​

Een beheerder bepaalt wie de engine mag gebruiken onder Instellingen → Gebruikersbeheer → Toegang en beleid → Strands-engine:

ModusLabel in de instellingWie Strands mag gebruiken
disabledUitNiemand, ook beheerders niet (standaard)
adminsBeheerdersActieve beheerders
all-usersAlle gebruikersElk actief account

Een wijziging geldt vanaf het volgende verzoek, zonder herstart.

Om de modus op deploymentniveau vast te leggen, stelt u LIBRE_STRANDS_ACCESS in:

LIBRE_STRANDS_ACCESS=admins # or disabled, all-users

Een vastgelegde modus vergrendelt het besturingselement in Gebruikersbeheer. Elke andere waarde dan disabled, admins of all-users zet de engine vergrendeld uit, in plaats van terug te vallen op de opgeslagen instelling.

De server dwingt de modus af bij elk REST-verzoek, bij WebSocket-chat en bij elke modelaanroep van een Work-run. Als de modus niet kan worden gelezen, wordt de toegang geweigerd. Accounts zonder toegang zien de Strands-pagina, de Strands-chatitems en de Strands-engine van Work niet, en de API antwoordt met 403.

Strands-pagina​

Open Strands vanuit de zijbalk (/strands).

  • Sessies blijven bewaard na een herstart, tot 200 per account. Het eerste bericht geeft een nieuwe sessie haar naam.
  • Kies per sessie een model. Standaardmodel gebruikt uw standaard chatmodel.
  • Antwoorden worden gestreamd terwijl ze worden gegenereerd, met de redenering van het model en een kaart voor elke toolaanroep.
  • Stoppen annuleert de lopende beurt. Een sessie voert één beurt tegelijk uit.
  • Als u een sessie verwijdert, worden de geschiedenis en de werkruimte ervan verwijderd.

Chat​

Kies Strands in de modelkiezer. Het staat in de groep Agents, naast de Agent CLI-modellen:

  • Strands (strands) gebruikt de standaardinstelling van de engine, dat wil zeggen uw standaard chatmodel.
  • Strands · model (provider) (strands:<route>) legt voor het gesprek één model en de bijbehorende provider vast.

Strands in Chat hangt alleen af van Strands-toegang. Het heeft de schakelaar voor Agent CLI-modellen niet nodig en verschijnt ook als die schakelaar uit staat. In Chat heeft de agent dezelfde bestandstools als op de Strands-pagina, in één privéwerkruimte per account, en komen de antwoorden binnen als tekst en redenering. Zie Geïnstalleerde programmeeragenten voor de groep Agents en voor het gebruik van een Strands-item als taakmodel voor titels en samenvattingen van de redenering.

Work​

Kies in de Work-composer Libre WebUI of Strands in het Engine-besturingselement en kies het model apart. Met Strands plant een Strands-agent elke stap, en Work voert de tools die de agent vraagt uit in de Work-sandbox, volgens het normale goedkeuringsbeleid van Work. Work blijft leidend voor het transcript, goedkeuringen, de uitvoering van tools en de runhistorie; de Strands-agent voert in Work geen eigen tools uit.

Het onderliggende providermodel moet toolaanroepen ondersteunen. Work controleert dit voordat een run start en weigert een model dat geen toolondersteuning aangeeft.

Work-runs die door eerdere releases zijn opgeslagen met het modelvoorvoegsel dsh: worden geopend als Strands-runs. Zie Work: Strands-engine voor hoe de keuze van de engine samenwerkt met modellen die uit Chat zijn meegenomen.

Beveiligingsmodel​

Op de Strands-pagina en in Chat heeft de agent bewust een kleine set tools:

  • read, write en edit, voor bestanden in zijn werkruimte
  • de todos-plugin van de harness, voor het plannen van werk in meerdere stappen

De agent heeft geen shell, geen webfetch, geen geheugen en geen skills, en er wordt geen AGENTS.md-bestand in zijn instructies geïnjecteerd.

Elke sessie heeft een eigen werkruimtemap, die de agent ziet als /workspace. Elk pad wordt opgelost nadat symbolische links zijn gevolgd en moet binnen die map blijven, zodat een link in de werkruimte de rest van de schijf niet kan bereiken. De sandbox weigert opdrachten uit te voeren.

OnderdeelLimiet
Sessies per account200
Promptlengte32.000 tekens
Agentbeurten per bericht24
Bestand lezen of schrijven2 MB per aanroep
Sessietitel120 tekens

Een beurt die de beurtlimiet bereikt, stopt en meldt dat. Elke beurt kan meerdere modelaanroepen naar uw providers doen, dus verleen toegang met dezelfde zorg als bij elke andere modeltoegang die providerbudget verbruikt.

Opslag​

Strands-gegevens staan onder <DATA_DIR>/strands/, niet in de applicatiedatabase. Elk account heeft een eigen map, <DATA_DIR>/strands/users/<account-hash>/, met daarin:

  • registry.json: de sessielijst van het account
  • sessions/: de Strands-sessiesnapshots die de agent als context gebruikt
  • transcripts/: het transcript dat de Strands-pagina voor elke sessie toont
  • workspaces/: de privéwerkruimte van elke sessie
  • chat-workspace/: de werkruimte die door Chat-beurten wordt gebruikt

Neem <DATA_DIR>/strands/ op in uw back-ups als de sessies belangrijk voor u zijn.

Gebruik​

Providergebruik (/usage) wijst Strands-aanroepen toe aan de agent Strands in de sectie Agents. Zie Agentgebruik.

API​

Elke route vereist een geauthenticeerd account met Strands-toegang, behalve /api/strands/access, waarvoor een beheerder nodig is.

MethodePadDoel
GET/api/strands/accessLeest de toegangsmodus en of LIBRE_STRANDS_ACCESS die vastlegt (beheerder)
PUT/api/strands/accessStelt mode in op disabled, admins of all-users (beheerder; 409 als vastgelegd)
GET/api/strands/healthBeschikbaarheid van de engine en de versies van de harness en de SDK
GET/api/strands/modelsModellen die de engine voor dit account kan aansturen
GET/api/strands/sessionsSessies weergeven
POST/api/strands/sessionsEen sessie aanmaken (optioneel title en model)
GET/api/strands/sessions/:sessionIdEen sessie lezen, met transcript en of er een beurt loopt
PATCH/api/strands/sessions/:sessionIdDe titel of het model van een sessie wijzigen
DELETE/api/strands/sessions/:sessionIdEen sessie verwijderen, met transcript en werkruimte
POST/api/strands/sessions/:sessionId/messages{ "text": "..." } verzenden en de beurt streamen als NDJSON
POST/api/strands/sessions/:sessionId/cancelDe lopende beurt stoppen

De berichtstream schrijft één JSON-gebeurtenis per regel: turn-start, text, reasoning, tool-start, tool-result, done (met de stopreden en het tokengebruik als de provider dat rapporteert) en error. Als de verbinding wordt gesloten, wordt de beurt geannuleerd. Een bericht verzenden terwijl er een beurt loopt, levert 409 op.

Configuratie​

VariabeleStandaardDoel
LIBRE_STRANDS_ACCESSniet ingesteld (beheerinstelling, admins)Legt disabled, admins of all-users vast; elke andere waarde zet de engine vergrendeld uit

Probleemoplossing​

Zie Problemen met de Strands-engine.