Strands motor
A Libre WebUI egy olyan ügynökmotort tartalmaz, amely a nyílt forráskódú Strands Agents harness projektre épül (@strands-agents/harness 0.1.1 a @strands-agents/sdk 1.19.0 felett). A motor a Libre WebUI háttérfolyamatán belül fut, így nem kell külön démont telepíteni. Az SDK a motor első használatakor töltődik be; ha a Strands ki van kapcsolva a szerveren, az SDK soha nem töltődik be.
A motor azokat a modelleket használja, amelyeket a Libre WebUI már kiszolgál:
- Ollama-modellek, ha az Ollama engedélyezve van
- az aktív chat- vagy completion-szolgáltatói bővítmények modelljei
Minden modellhívás ugyanazokon az Ollama- és bővítményszolgáltatásokon megy át, amelyeket a Chat is használ. Nincs külön szolgáltatói konfiguráció és nincs külön API-kulcs. A szolgáltatói hitelesítő adatok és az Ollama kapcsolója változatlanul érvényesek.
A motort három helyen használhatja:
- a Strands oldalon, tartós ügynök-munkamenetekhez
- a Chatben, a modellválasztó Strands bejegyzésein keresztül
- a Workben, a szerkesztő Motor vezérlőjének Strands lehetőségeként
Hozzáférés
Egy rendszergazda választja ki, ki használhatja a motort, a Beállítások → Felhasználókezelés → Hozzáférés és szabályzatok → Strands motor alatt:
| Mód | Címke a beállításban | Ki használhatja a Strandst |
|---|---|---|
disabled | Ki | Senki, a rendszergazdákat is beleértve (alapértelmezett) |
admins | Rendszergazdák | Az aktív rendszergazdák |
all-users | Minden felhasználó | Minden aktív fiók |
A módosítás a következő kéréstől érvényes, újraindítás nélkül.
Ha a módot telepítési szinten szeretné rögzíteni, állítsa be a LIBRE_STRANDS_ACCESS változót:
LIBRE_STRANDS_ACCESS=admins # or disabled, all-users
A rögzített mód zárolja a vezérlőt a Felhasználókezelésben. A disabled, admins és all-users értéken kívül bármely más érték kikapcsolt állapotban zárolja a motort, ahelyett hogy a mentett beállításra esne vissza.
A szerver minden REST-kérésnél, a WebSocket-chatben és egy Work-futás minden modellhívásánál érvényesíti a módot. Ha a mód nem olvasható be, a hozzáférés megtagadva. A hozzáféréssel nem rendelkező fiókok nem látják a Strands oldalt, a Strands chatbejegyzéseket és a Strands Work-motort, az API pedig 403 választ ad.
A Strands oldal
Nyissa meg a Strands oldalt az oldalsávról (/strands).
- A munkamenetek újraindítás után is megmaradnak, fiókonként legfeljebb 200. Az első üzenet adja az új munkamenet nevét.
- Minden munkamenethez válasszon modellt. Az Alapértelmezett modell az Ön alapértelmezett chatmodelljét használja.
- A válaszok generálás közben folyamatosan érkeznek, a modell gondolatmenetével és minden eszközhíváshoz egy kártyával.
- A Leállítás megszakítja a futó kört. Egy munkamenetben egyszerre egy kör fut.
- Egy munkamenet törlése eltávolítja annak előzményeit és munkaterületét.
Chat
Válassza a Strands lehetőséget a modellválasztóban. Az Agents csoportban jelenik meg, az Agent CLI modellek mellett:
- A Strands (
strands) a motor alapértelmezését használja, vagyis az Ön alapértelmezett chatmodelljét. - A Strands · modell (szolgáltató) (
strands:<route>) egy modellt és annak szolgáltatóját rögzíti a beszélgetéshez.
A Chatben a Strands csak a Strands-hozzáféréstől függ. Nincs szüksége az Agent CLI modellek kapcsolójára, és akkor is megjelenik, ha az a kapcsoló ki van kapcsolva. A Chatben az ügynök ugyanazokkal a fájleszközökkel rendelkezik, mint a Strands oldalon, fiókonként egy privát munkaterületen, és a válaszai szövegként és gondolatmenetként érkeznek. Az Agents csoportról, valamint arról, hogyan használható egy Strands bejegyzés feladatmodellként a címekhez és a gondolatmenet-összefoglalókhoz, lásd: Telepített kódolóügynökök.
Work
A Work szerkesztőjében válassza a Libre WebUI vagy a Strands lehetőséget a Motor vezérlőben, a modellt pedig külön válassza ki. Strands esetén egy Strands ügynök tervezi meg az egyes lépéseket, a Work pedig a Work sandboxban, a Work szokásos jóváhagyási szabályzata szerint hajtja végre a kért eszközöket. Az átirat, a jóváhagyások, az eszközvégrehajtás és a futási előzmények tekintetében a Work marad a hiteles forrás; a Strands ügynök a Workben nem futtat saját eszközöket.
Az alatta lévő szolgáltatói modellnek támogatnia kell az eszközhívást. A Work ezt a futás indítása előtt ellenőrzi, és elutasítja azt a modellt, amely nem jelez eszköztámogatást.
A korábbi kiadásokban dsh: modellelőtaggal mentett Work-futások Strands-futásként nyílnak meg. Arról, hogy a motor kiválasztása hogyan viszonyul a Chatből átvett modellekhez, lásd: Work: Strands motor.
Biztonsági modell
A Strands oldalon és a Chatben az ügynök szándékosan kis eszközkészlettel rendelkezik:
read,writeésedita munkaterületén lévő fájlokhoz- a harness
todosbővítménye a többlépéses munka megtervezéséhez
Nincs shellje, webes lekérése, memóriája és nincsenek skilljei, és az utasításaiba semmilyen AGENTS.md fájl nem kerül be.
Minden munkamenetnek saját privát munkaterület-könyvtára van, amelyet az ügynök /workspace néven lát. Minden elérési út feloldása a szimbolikus linkek követése után történik, és annak ezen a könyvtáron belül kell maradnia, így a munkaterületen lévő link sem érheti el a lemez többi részét. A sandbox megtagadja a parancsok végrehajtását.
| Elem | Korlát |
|---|---|
| Munkamenetek fiókonként | 200 |
| Prompt hossza | 32 000 karakter |
| Ügynökkörök üzenetenként | 24 |
| Fájlolvasás vagy -írás | 2 MB hívásonként |
| Munkamenet címe | 120 karakter |
A körkorlátot elérő kör leáll, és ezt jelzi is. Minden kör több modellhívást is indíthat az Ön szolgáltatóihoz, ezért a hozzáférést ugyanolyan körültekintéssel adja meg, mint bármely más, szolgáltatói keretet fogyasztó modellhozzáférést.
Tárolás
A Strands adatai a <DATA_DIR>/strands/ alatt találhatók, nem az alkalmazás adatbázisában. Minden fióknak saját könyvtára van, <DATA_DIR>/strands/users/<account-hash>/, amely a következőket tartalmazza:
registry.json: a fiók munkamenetlistájasessions/: a Strands munkamenet-pillanatképek, amelyeket az ügynök kontextusként használtranscripts/: az egyes munkamenetekhez a Strands oldalon megjelenített átiratworkspaces/: az egyes munkamenetek privát munkaterületechat-workspace/: a Chat-körök által használt munkaterület
Ha a munkamenetek fontosak Önnek, vegye fel a <DATA_DIR>/strands/ könyvtárat a biztonsági mentésekbe.
Használat
A Provider Usage (/usage) az Agents szakaszában a Strands ügynökhöz rendeli a Strands-hívásokat. Lásd: Ügynökhasználat.
API
Minden útvonalhoz Strands-hozzáféréssel rendelkező, hitelesített fiók szükséges, kivéve a /api/strands/access útvonalat, amelyhez rendszergazda kell.
| Metódus | Útvonal | Cél |
|---|---|---|
GET | /api/strands/access | A hozzáférési mód lekérése, és annak jelzése, hogy a LIBRE_STRANDS_ACCESS rögzíti-e (admin) |
PUT | /api/strands/access | A mode beállítása disabled, admins vagy all-users értékre (admin; rögzítés esetén 409) |
GET | /api/strands/health | A motor elérhetősége, valamint a harness és az SDK verziója |
GET | /api/strands/models | A motor által ehhez a fiókhoz használható modellek |
GET | /api/strands/sessions | Munkamenetek listázása |
POST | /api/strands/sessions | Munkamenet létrehozása (opcionális title és model) |
GET | /api/strands/sessions/:sessionId | Egy munkamenet, annak átirata és annak lekérése, hogy fut-e éppen kör |
PATCH | /api/strands/sessions/:sessionId | Egy munkamenet címének vagy modelljének módosítása |
DELETE | /api/strands/sessions/:sessionId | Munkamenet törlése az átiratával és munkaterületével együtt |
POST | /api/strands/sessions/:sessionId/messages | { "text": "..." } küldése és a kör streamelése NDJSON formátumban |
POST | /api/strands/sessions/:sessionId/cancel | A futó kör leállítása |
Az üzenetfolyam soronként egy JSON-eseményt ír: turn-start, text, reasoning, tool-start, tool-result, done (a leállás okával és a tokenhasználattal, ha a szolgáltató jelenti) és error. A kapcsolat bezárása megszakítja a kört. Ha futó kör közben küld üzenetet, a válasz 409.
Konfiguráció
| Változó | Alapértelmezett | Cél |
|---|---|---|
LIBRE_STRANDS_ACCESS | nincs beállítva (rendszergazdai beállítás, admins) | disabled, admins vagy all-users rögzítése; bármely más érték kikapcsolt állapotban zárolja a motort |
Hibaelhárítás
Lásd: A Strands motor problémái.