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:
| Modus | Label in de instelling | Wie Strands mag gebruiken |
|---|---|---|
disabled | Uit | Niemand, ook beheerders niet (standaard) |
admins | Beheerders | Actieve beheerders |
all-users | Alle gebruikers | Elk 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,writeenedit, 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.
| Onderdeel | Limiet |
|---|---|
| Sessies per account | 200 |
| Promptlengte | 32.000 tekens |
| Agentbeurten per bericht | 24 |
| Bestand lezen of schrijven | 2 MB per aanroep |
| Sessietitel | 120 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 accountsessions/: de Strands-sessiesnapshots die de agent als context gebruikttranscripts/: het transcript dat de Strands-pagina voor elke sessie toontworkspaces/: de privéwerkruimte van elke sessiechat-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.
| Methode | Pad | Doel |
|---|---|---|
GET | /api/strands/access | Leest de toegangsmodus en of LIBRE_STRANDS_ACCESS die vastlegt (beheerder) |
PUT | /api/strands/access | Stelt mode in op disabled, admins of all-users (beheerder; 409 als vastgelegd) |
GET | /api/strands/health | Beschikbaarheid van de engine en de versies van de harness en de SDK |
GET | /api/strands/models | Modellen die de engine voor dit account kan aansturen |
GET | /api/strands/sessions | Sessies weergeven |
POST | /api/strands/sessions | Een sessie aanmaken (optioneel title en model) |
GET | /api/strands/sessions/:sessionId | Een sessie lezen, met transcript en of er een beurt loopt |
PATCH | /api/strands/sessions/:sessionId | De titel of het model van een sessie wijzigen |
DELETE | /api/strands/sessions/:sessionId | Een 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/cancel | De 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
| Variabele | Standaard | Doel |
|---|---|---|
LIBRE_STRANDS_ACCESS | niet ingesteld (beheerinstelling, admins) | Legt disabled, admins of all-users vast; elke andere waarde zet de engine vergrendeld uit |