Strands-motoren
Libre WebUI har en indbygget agentmotor, der bygger på
Strands Agents harness, som er
open source (@strands-agents/harness 0.1.1 på @strands-agents/sdk 1.19.0).
Den kører i Libre WebUI's backendproces, så der er ingen separat daemon at
installere. SDK'et indlæses første gang, motoren bruges. En server, hvor
Strands er slået fra, indlæser det aldrig.
Motoren driver de modeller, Libre WebUI allerede leverer:
- Ollama-modeller, når Ollama er aktiveret
- modeller fra aktive udbyderplugins til chat eller tekstfuldførelse
Hvert modelkald går gennem de samme Ollama- og plugintjenester, som chatten bruger. Der er ingen separat udbyderkonfiguration og ingen separat API-nøgle. Udbydernes legitimationsoplysninger og Ollama-kontakten gælder uændret.
Du kan bruge motoren tre steder:
- siden Strands, til vedvarende agentsessioner
- Chat, via posterne Strands i modelvælgeren
- Work, som valgmuligheden Strands i skrivefeltets kontrol Motor
Adgang
En administrator vælger, hvem der må bruge motoren, under Indstillinger → Brugeradministration → Adgang og politikker → Strands-motor:
| Tilstand | Etiket i indstillingen | Hvem kan bruge Strands |
|---|---|---|
disabled | Fra | Ingen, heller ikke administratorer (standard) |
admins | Administratorer | Aktive administratorer |
all-users | Alle brugere | Alle aktive konti |
En ændring træder i kraft ved næste anmodning, uden genstart.
Hvis du vil fastlåse tilstanden på udrulningsniveau, skal du angive
LIBRE_STRANDS_ACCESS:
LIBRE_STRANDS_ACCESS=admins # or disabled, all-users
En fastlåst tilstand låser kontrollen i Brugeradministration. Enhver anden
værdi end disabled, admins eller all-users låser motoren som slået fra i
stedet for at falde tilbage til den gemte indstilling.
Serveren håndhæver tilstanden ved hver REST-anmodning, ved chat over WebSocket
og ved hvert modelkald i en Work-kørsel. Hvis tilstanden ikke kan læses, nægtes
adgang. Konti uden adgang ser hverken Strands-siden, Strands-posterne i chatten
eller Strands-motoren i Work, og API'et svarer 403.
Strands-siden
Åbn Strands i sidepanelet (/strands).
- Sessioner bevares på tværs af genstarter, op til 200 pr. konto. Den første besked giver en ny session dens navn.
- Vælg en model for hver session. Standardmodel bruger din standardmodel til chat.
- Svarene streames, mens de genereres, med modellens ræsonnement og et kort for hvert værktøjskald.
- Stop annullerer den igangværende tur. En session kører én tur ad gangen.
- Når du sletter en session, fjernes dens historik og arbejdsområde også.
Chat
Vælg Strands i modelvælgeren. Posten ligger i gruppen Agenter ved siden af Agent CLI-modellerne:
- Strands (
strands) bruger motorens standard, som er din standardmodel til chat. - Strands · model (udbyder) (
strands:<route>) fastlåser én model og dens udbyder for samtalen.
Strands i chatten afhænger kun af Strands-adgangen. Det kræver ikke kontakten til Agent CLI-modeller og vises også, når den kontakt er slået fra. I chatten har agenten de samme filværktøjer som på Strands-siden, i ét privat arbejdsområde pr. konto, og svarene kommer som tekst og ræsonnement. Se Installerede kodeagenter for gruppen Agenter og for, hvordan du bruger en Strands-post som opgavemodel til titler og tankeresuméer.
Work
I Work-skrivefeltet vælger du Libre WebUI eller Strands i kontrollen Motor og vælger modellen separat. Med Strands planlægger en Strands-agent hvert trin, og Work udfører de værktøjer, agenten beder om, i Work-sandkassen efter Works normale godkendelsespolitik. Work er fortsat den autoritative kilde til transskriptionen, godkendelser, værktøjsudførelse og kørselshistorik. Strands-agenten kører ingen egne værktøjer i Work.
Den underliggende udbydermodel skal understøtte værktøjskald. Work kontrollerer det, før en kørsel starter, og afviser en model, der ikke angiver understøttelse af værktøjer.
Work-kørsler, der er gemt i tidligere versioner med modelpræfikset dsh:,
åbnes som Strands-kørsler. Se Work: Strands-motoren
for, hvordan motorvalget spiller sammen med modeller, der følger med fra
chatten.
Sikkerhedsmodel
På Strands-siden og i chatten har agenten et bevidst lille sæt værktøjer:
read,writeogedit, til filer i dens arbejdsområde- rammens plugin
todos, til at planlægge arbejde i flere trin
Den har ingen shell, ingen webhentning, ingen hukommelse og ingen færdigheder,
og ingen AGENTS.md-fil indsættes i dens instruktioner.
Hver session har en privat arbejdsmappe, som agenten ser som /workspace. Hver
sti opløses, efter at symbolske links er fulgt, og skal blive inden for den
mappe, så et link i arbejdsområdet ikke kan nå resten af disken. Sandkassen
nægter at udføre kommandoer.
| Element | Grænse |
|---|---|
| Sessioner pr. konto | 200 |
| Promptlængde | 32.000 tegn |
| Agentture pr. besked | 24 |
| Fillæsning eller filskrivning | 2 MB pr. kald |
| Sessionstitel | 120 tegn |
En tur, der når grænsen for antal ture, stopper og oplyser det. Hver tur kan foretage flere modelkald til dine udbydere, så giv adgang med samme omhu som al anden modeladgang, der bruger af udbyderbudgettet.
Lagring
Strands-data ligger under <DATA_DIR>/strands/, ikke i programmets database.
Hver konto har sin egen mappe, <DATA_DIR>/strands/users/<account-hash>/, som
indeholder:
registry.json: kontoens sessionslistesessions/: de Strands-sessionssnapshots, agenten bruger som konteksttranscripts/: transskriptionen, der vises på Strands-siden for hver sessionworkspaces/: hver sessions private arbejdsområdechat-workspace/: arbejdsområdet, som chattens ture bruger
Medtag <DATA_DIR>/strands/ i sikkerhedskopierne, hvis sessionerne betyder
noget for dig.
Forbrug
Udbyderforbrug (/usage) tilskriver Strands-kald agenten Strands i
afsnittet Agenter. Se Agentforbrug.
API
Alle ruter kræver en godkendt konto med Strands-adgang, undtagen
/api/strands/access, som kræver en administrator.
| Metode | Sti | Formål |
|---|---|---|
GET | /api/strands/access | Læs adgangstilstanden, og om LIBRE_STRANDS_ACCESS fastlåser den (admin) |
PUT | /api/strands/access | Sæt mode til disabled, admins eller all-users (admin; 409 hvis fastlåst) |
GET | /api/strands/health | Motorens tilgængelighed samt versionerne af rammen og SDK'et |
GET | /api/strands/models | Modeller, som motoren kan drive for denne konto |
GET | /api/strands/sessions | Vis sessioner |
POST | /api/strands/sessions | Opret en session (valgfri title og model) |
GET | /api/strands/sessions/:sessionId | Læs en session, dens transskription, og om en tur er i gang |
PATCH | /api/strands/sessions/:sessionId | Skift en sessions titel eller model |
DELETE | /api/strands/sessions/:sessionId | Slet en session med dens transskription og arbejdsområde |
POST | /api/strands/sessions/:sessionId/messages | Send { "text": "..." }, og stream turen som NDJSON |
POST | /api/strands/sessions/:sessionId/cancel | Stop den igangværende tur |
Beskedstrømmen skriver én JSON-hændelse pr. linje: turn-start, text,
reasoning, tool-start, tool-result, done (med stopårsagen og
tokenforbruget, når udbyderen rapporterer det) og error. Hvis forbindelsen
lukkes, annulleres turen. Hvis du sender en besked, mens en tur er i gang,
returneres 409.
Konfiguration
| Variabel | Standard | Formål |
|---|---|---|
LIBRE_STRANDS_ACCESS | ikke angivet (administratorindstilling, admins) | Fastlås disabled, admins eller all-users; enhver anden værdi låser motoren som slået fra |