Přeskočit na hlavní obsah

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žimPopisek v nastaveníKdo může Strands používat
disabledVyp.Nikdo, ani správci (výchozí)
adminsSprávciAktivní správci
all-usersVš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, write a edit pro soubory ve svém pracovním prostoru
  • plugin harnessu todos pro 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žkaLimit
Relace na účet200
Délka promptu32 000 znaků
Kola agenta na zprávu24
Čtení nebo zápis souboru2 MB na volání
Název relace120 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í účtu
  • sessions/: snímky relací Strands, které agent používá jako kontext
  • transcripts/: přepis každé relace zobrazovaný na stránce Strands
  • workspaces/: soukromý pracovní prostor každé relace
  • chat-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.

MetodaCestaÚčel
GET/api/strands/accessNačte režim přístupu a informaci, zda ho pevně nastavuje LIBRE_STRANDS_ACCESS (správce)
PUT/api/strands/accessNastaví mode na disabled, admins nebo all-users (správce; 409, pokud je nastaven pevně)
GET/api/strands/healthDostupnost enginu a verze harnessu a SDK
GET/api/strands/modelsModely, které engine může pro tento účet pohánět
GET/api/strands/sessionsVypíše relace
POST/api/strands/sessionsVytvoří relaci (volitelně title a model)
GET/api/strands/sessions/:sessionIdNačte relaci, její přepis a informaci, zda právě probíhá kolo
PATCH/api/strands/sessions/:sessionIdZmění název nebo model relace
DELETE/api/strands/sessions/:sessionIdOdstraní relaci včetně jejího přepisu a pracovního prostoru
POST/api/strands/sessions/:sessionId/messagesOdešle { "text": "..." } a streamuje kolo jako NDJSON
POST/api/strands/sessions/:sessionId/cancelZastaví 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_ACCESSnenastaveno (nastavení správce, admins)Pevně nastaví disabled, admins nebo all-users; jakákoli jiná hodnota engine uzamkne ve vypnutém stavu

Řešení problémů​

Viz Problémy s enginem Strands.