Engine Strands
Libre WebUI obsahuje vestavěný agentní engine postavený na open-source
harnessu Strands Agents
(@strands-agents/harness 0.1.1 nad @strands-agents/sdk 1.19.0). Běží přímo
v procesu backendu Libre WebUI, takže není potřeba instalovat žádného
samostatného démona. SDK se načte při prvním použití enginu; server, na kterém
je Strands vypnutý, ho nikdy nenačte.
Engine pohání modely, které Libre WebUI už poskytuje:
- modely Ollama, pokud je Ollama zapnutá
- modely z aktivních pluginů poskytovatelů pro chat nebo completion
Každé volání modelu prochází stejnými službami Ollama a pluginů, jaké používá Chat. Neexistuje žádná samostatná konfigurace poskytovatelů ani samostatný API klíč. Přihlašovací údaje poskytovatelů a přepínač Ollama platí beze změny.
Engine můžete používat na třech místech:
- na stránce Strands pro trvalé relace agenta
- v Chat prostřednictvím položek Strands ve výběru modelu
- ve Work jako možnost Strands v ovládacím prvku Engine v editoru
Přístup
Správce vybírá, kdo může engine používat, v Nastavení → Správa uživatelů → Přístup a zásady → Engine Strands:
| Režim | Popisek v nastavení | Kdo může Strands používat |
|---|---|---|
disabled | Vyp. | Nikdo, ani správci (výchozí) |
admins | Správci | Aktivní správci |
all-users | Všichni uživatelé | Každý aktivní účet |
Změna se projeví při dalším požadavku, bez restartu.
Pokud chcete režim pevně nastavit na úrovni nasazení, nastavte
LIBRE_STRANDS_ACCESS:
LIBRE_STRANDS_ACCESS=admins # or disabled, all-users
Pevně nastavený režim uzamkne ovládací prvek ve Správě uživatelů. Jakákoli jiná
hodnota než disabled, admins nebo all-users engine uzamkne ve vypnutém
stavu, místo aby se použilo uložené nastavení.
Server vynucuje režim u každého požadavku REST, u chatu přes WebSocket a u
každého volání modelu v běhu Work. Pokud režim nelze načíst, přístup je
odepřen. Účty bez přístupu nevidí stránku Strands, položky Strands v chatu ani
engine Strands ve Work a API odpovídá 403.
Stránka Strands
Otevřete Strands z postranního panelu (/strands).
- Relace se zachovávají i po restartu, maximálně 200 na účet. Nová relace dostane název podle první zprávy.
- Pro každou relaci zvolte model. Výchozí model použije váš výchozí chatový model.
- Odpovědi se streamují průběžně, jak vznikají, včetně uvažování modelu a karty pro každé volání nástroje.
- Zastavit zruší probíhající kolo. Relace zpracovává vždy jen jedno kolo.
- Odstraněním relace smažete její historii i její pracovní prostor.
Chat
Ve výběru modelu zvolte Strands. Najdete ho ve skupině Agenti vedle modelů agentů CLI:
- Strands (
strands) používá výchozí model enginu, tedy váš výchozí chatový model. - Strands · model (poskytovatel) (
strands:<route>) pro konverzaci připne jeden model a jeho poskytovatele.
Strands v chatu závisí jen na přístupu ke Strands. Nepotřebuje přepínač modelů agentů CLI a zobrazuje se, i když je tento přepínač vypnutý. V chatu má agent stejné souborové nástroje jako na stránce Strands, v jednom soukromém pracovním prostoru pro každý účet, a jeho odpovědi přicházejí jako text a uvažování. Skupinu Agenti a použití položky Strands jako modelu úloh pro názvy a souhrny uvažování popisuje stránka Nainstalovaní programovací agenti.
Work
V editoru Work zvolte v ovládacím prvku Engine možnost Libre WebUI nebo Strands a model vyberte zvlášť. Se Strands plánuje každý krok agent Strands a Work spouští nástroje, o které požádá, v sandboxu Work podle běžných pravidel schvalování Work. Work zůstává rozhodující pro přepis, schvalování, spouštění nástrojů a historii běhů; agent Strands ve Work žádné vlastní nástroje nespouští.
Podkladový model poskytovatele musí podporovat volání nástrojů. Work to ověří před spuštěním běhu a model, který podporu nástrojů neuvádí, odmítne.
Běhy Work uložené staršími verzemi s prefixem modelu dsh: se otevřou jako
běhy Strands. Jak volba enginu souvisí s modely převzatými z chatu, popisuje
Work: engine Strands.
Bezpečnostní model
Na stránce Strands a v chatu má agent záměrně malou sadu nástrojů:
read,writeaeditpro soubory ve svém pracovním prostoru- plugin harnessu
todospro plánování vícekrokové práce
Nemá shell, stahování z webu, paměť ani dovednosti a do jeho instrukcí se
nevkládá žádný soubor AGENTS.md.
Každá relace má soukromý adresář pracovního prostoru, který agent vidí jako
/workspace. Každá cesta se vyhodnocuje až po rozbalení symbolických odkazů a
musí zůstat uvnitř tohoto adresáře, takže odkaz v pracovním prostoru se ke
zbytku disku nedostane. Sandbox odmítá spouštět příkazy.
| Položka | Limit |
|---|---|
| Relace na účet | 200 |
| Délka promptu | 32 000 znaků |
| Kola agenta na zprávu | 24 |
| Čtení nebo zápis souboru | 2 MB na volání |
| Název relace | 120 znaků |
Kolo, které dosáhne limitu kol, se zastaví a oznámí to. Každé kolo může u vašich poskytovatelů provést několik volání modelů, proto přidělujte přístup se stejnou opatrností jako jakýkoli jiný přístup k modelům, který čerpá rozpočet poskytovatele.
Úložiště
Data Strands jsou uložena v <DATA_DIR>/strands/, ne v databázi aplikace.
Každý účet má vlastní adresář <DATA_DIR>/strands/users/<account-hash>/, který
obsahuje:
registry.json: seznam relací účtusessions/: snímky relací Strands, které agent používá jako kontexttranscripts/: přepis každé relace zobrazovaný na stránce Strandsworkspaces/: soukromý pracovní prostor každé relacechat-workspace/: pracovní prostor, který používají kola v chatu
Pokud vám na relacích záleží, zahrňte <DATA_DIR>/strands/ do záloh.
Využití
Využití poskytovatelů (/usage) přiřazuje volání Strands agentovi Strands
v sekci Agenti. Viz Využití agentů.
API
Každá trasa vyžaduje ověřený účet s přístupem ke Strands, kromě
/api/strands/access, která vyžaduje správce.
| Metoda | Cesta | Účel |
|---|---|---|
GET | /api/strands/access | Načte režim přístupu a informaci, zda ho pevně nastavuje LIBRE_STRANDS_ACCESS (správce) |
PUT | /api/strands/access | Nastaví mode na disabled, admins nebo all-users (správce; 409, pokud je nastaven pevně) |
GET | /api/strands/health | Dostupnost enginu a verze harnessu a SDK |
GET | /api/strands/models | Modely, které engine může pro tento účet pohánět |
GET | /api/strands/sessions | Vypíše relace |
POST | /api/strands/sessions | Vytvoří relaci (volitelně title a model) |
GET | /api/strands/sessions/:sessionId | Načte relaci, její přepis a informaci, zda právě probíhá kolo |
PATCH | /api/strands/sessions/:sessionId | Změní název nebo model relace |
DELETE | /api/strands/sessions/:sessionId | Odstraní relaci včetně jejího přepisu a pracovního prostoru |
POST | /api/strands/sessions/:sessionId/messages | Odešle { "text": "..." } a streamuje kolo jako NDJSON |
POST | /api/strands/sessions/:sessionId/cancel | Zastaví probíhající kolo |
Stream zpráv zapisuje na každý řádek jednu událost JSON: turn-start, text,
reasoning, tool-start, tool-result, done (s důvodem zastavení a
spotřebou tokenů, pokud ji poskytovatel hlásí) a error. Uzavřením spojení se
kolo zruší. Odeslání zprávy během probíhajícího kola vrátí 409.
Konfigurace
| Proměnná | Výchozí hodnota | Účel |
|---|---|---|
LIBRE_STRANDS_ACCESS | nenastaveno (nastavení správce, admins) | Pevně nastaví disabled, admins nebo all-users; jakákoli jiná hodnota engine uzamkne ve vypnutém stavu |