Hop til hovedindhold

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:

TilstandEtiket i indstillingenHvem kan bruge Strands
disabledFraIngen, heller ikke administratorer (standard)
adminsAdministratorerAktive administratorer
all-usersAlle brugereAlle 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, write og edit, 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.

ElementGrænse
Sessioner pr. konto200
Promptlængde32.000 tegn
Agentture pr. besked24
Fillæsning eller filskrivning2 MB pr. kald
Sessionstitel120 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 sessionsliste
  • sessions/: de Strands-sessionssnapshots, agenten bruger som kontekst
  • transcripts/: transskriptionen, der vises på Strands-siden for hver session
  • workspaces/: hver sessions private arbejdsområde
  • chat-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.

MetodeStiFormål
GET/api/strands/accessLæs adgangstilstanden, og om LIBRE_STRANDS_ACCESS fastlåser den (admin)
PUT/api/strands/accessSæt mode til disabled, admins eller all-users (admin; 409 hvis fastlåst)
GET/api/strands/healthMotorens tilgængelighed samt versionerne af rammen og SDK'et
GET/api/strands/modelsModeller, som motoren kan drive for denne konto
GET/api/strands/sessionsVis sessioner
POST/api/strands/sessionsOpret en session (valgfri title og model)
GET/api/strands/sessions/:sessionIdLæs en session, dens transskription, og om en tur er i gang
PATCH/api/strands/sessions/:sessionIdSkift en sessions titel eller model
DELETE/api/strands/sessions/:sessionIdSlet en session med dens transskription og arbejdsområde
POST/api/strands/sessions/:sessionId/messagesSend { "text": "..." }, og stream turen som NDJSON
POST/api/strands/sessions/:sessionId/cancelStop 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​

VariabelStandardFormål
LIBRE_STRANDS_ACCESSikke angivet (administratorindstilling, admins)Fastlås disabled, admins eller all-users; enhver anden værdi låser motoren som slået fra

Fejlfinding​

Se Problemer med Strands-motoren.