मुख्य कंटेंट तक स्किप करें

Strands इंजन

Libre WebUI में ओपन-सोर्स Strands Agents harness पर बना एक एजेंट इंजन शामिल है (@strands-agents/sdk 1.19.0 पर @strands-agents/harness 0.1.1)। यह Libre WebUI बैकएंड प्रक्रिया के अंदर ही चलता है, इसलिए अलग डेमन स्थापित करने की ज़रूरत नहीं। SDK तभी लोड होता है जब इंजन पहली बार उपयोग होता है; जिस सर्वर पर Strands बंद है, वह इसे कभी लोड नहीं करता।

इंजन उन्हीं मॉडलों को चलाता है जिन्हें Libre WebUI पहले से परोसता है:

  • Ollama मॉडल, जब Ollama सक्षम हो
  • सक्रिय चैट या कम्प्लीशन प्रदाता प्लगइन के मॉडल

हर मॉडल कॉल उन्हीं Ollama और प्लगइन सेवाओं से होकर जाती है जिनका उपयोग चैट करता है। न अलग प्रदाता कॉन्फ़िगरेशन है, न अलग API कुंजी। प्रदाता क्रेडेंशियल और Ollama स्विच बिना बदलाव के लागू होते हैं।

इंजन का उपयोग तीन जगह किया जा सकता है:

  • Strands पेज पर, स्थायी एजेंट सत्रों के लिए
  • चैट में, मॉडल चयनकर्ता की Strands प्रविष्टियों के ज़रिए
  • Work में, कंपोज़र के इंजन नियंत्रण के Strands विकल्प के रूप में

पहुँच​

प्रशासक सेटिंग्स → उपयोगकर्ता प्रबंधन → पहुँच और नीतियाँ → Strands इंजन में तय करता है कि इंजन कौन उपयोग कर सकता है:

मोडसेटिंग में लेबलStrands कौन उपयोग कर सकता है
disabledबंदकोई नहीं, प्रशासक भी नहीं (डिफ़ॉल्ट)
adminsव्यवस्थापकसक्रिय प्रशासक
all-usersसभी उपयोगकर्ताहर सक्रिय खाता

बदलाव बिना पुनः प्रारंभ के, अगले अनुरोध से ही लागू हो जाता है।

मोड को डिप्लॉयमेंट स्तर पर स्थिर करने के लिए LIBRE_STRANDS_ACCESS सेट करें:

LIBRE_STRANDS_ACCESS=admins # or disabled, all-users

स्थिर किया गया मोड उपयोगकर्ता प्रबंधन में नियंत्रण को लॉक कर देता है। disabled, admins या all-users के अलावा कोई भी मान सहेजी गई सेटिंग पर लौटने के बजाय इंजन को बंद स्थिति में लॉक कर देता है।

सर्वर यह मोड हर REST अनुरोध, WebSocket चैट और Work रन की हर मॉडल कॉल पर लागू करता है। यदि मोड पढ़ा न जा सके, तो पहुँच अस्वीकार कर दी जाती है। जिन खातों के पास पहुँच नहीं है, उन्हें Strands पेज, Strands चैट प्रविष्टियाँ और Strands Work इंजन नहीं दिखते, और API 403 लौटाता है।

Strands पेज​

साइडबार से Strands खोलें (/strands)।

  • सत्र पुनः प्रारंभ के बाद भी बने रहते हैं, प्रति खाता 200 तक। पहला संदेश नए सत्र का नाम तय करता है।
  • हर सत्र के लिए मॉडल चुनें। डिफ़ॉल्ट मॉडल आपके डिफ़ॉल्ट चैट मॉडल का उपयोग करता है।
  • उत्तर बनते-बनते स्ट्रीम होते हैं, साथ में मॉडल का तर्क और हर टूल कॉल के लिए एक कार्ड दिखता है।
  • रोकें चल रहे टर्न को रद्द करता है। एक सत्र में एक समय पर एक ही टर्न चलता है।
  • सत्र हटाने पर उसका इतिहास और उसका कार्यक्षेत्र भी हट जाता है।

चैट​

मॉडल चयनकर्ता में Strands चुनें। यह एजेंट CLI मॉडलों के पास एजेंट समूह में दिखता है:

  • Strands (strands) इंजन के डिफ़ॉल्ट का उपयोग करता है, यानी आपका डिफ़ॉल्ट चैट मॉडल।
  • Strands · मॉडल (प्रदाता) (strands:<route>) बातचीत के लिए एक मॉडल और उसका प्रदाता तय कर देता है।

चैट में Strands केवल Strands पहुँच पर निर्भर करता है। इसे एजेंट CLI मॉडल टॉगल की ज़रूरत नहीं, और वह टॉगल बंद होने पर भी यह दिखता है। चैट में एजेंट के पास वही फ़ाइल टूल होते हैं जो Strands पेज पर, हर खाते के एक निजी कार्यक्षेत्र में, और उसके उत्तर पाठ और तर्क के रूप में आते हैं। एजेंट समूह के बारे में, और शीर्षकों व थिंकिंग सारांशों के लिए Strands प्रविष्टि को टास्क मॉडल बनाने के बारे में स्थापित कोडिंग एजेंट देखें।

Work​

Work कंपोज़र के इंजन नियंत्रण में Libre WebUI या Strands चुनें, और मॉडल अलग से चुनें। Strands के साथ एक Strands एजेंट हर चरण की योजना बनाता है, और Work उसके माँगे गए टूल Work सैंडबॉक्स में Work की सामान्य स्वीकृति नीति के तहत चलाता है। ट्रांसक्रिप्ट, स्वीकृतियों, टूल निष्पादन और रन इतिहास पर अंतिम अधिकार Work का ही रहता है; Work में Strands एजेंट अपना कोई टूल नहीं चलाता।

अंतर्निहित प्रदाता मॉडल को टूल कॉलिंग का समर्थन करना चाहिए। Work रन शुरू होने से पहले इसकी जाँच करता है और उस मॉडल को अस्वीकार कर देता है जो टूल समर्थन घोषित नहीं करता।

पिछली रिलीज़ में dsh: मॉडल उपसर्ग के साथ सहेजे गए Work रन Strands रन के रूप में खुलते हैं। इंजन का चुनाव चैट से लाए गए मॉडलों के साथ कैसे काम करता है, यह जानने के लिए Work: Strands इंजन देखें।

सुरक्षा मॉडल​

Strands पेज पर और चैट में एजेंट के पास जानबूझकर छोटा टूल सेट रखा गया है:

  • read, write और edit, अपने कार्यक्षेत्र की फ़ाइलों के लिए
  • हार्नेस का todos प्लगइन, कई चरणों वाले काम की योजना के लिए

उसके पास न shell है, न वेब फ़ेच, न मेमोरी, न स्किल, और उसके निर्देशों में कोई AGENTS.md फ़ाइल नहीं जोड़ी जाती।

हर सत्र की एक निजी कार्यक्षेत्र निर्देशिका होती है, जिसे एजेंट /workspace के रूप में देखता है। हर पथ symlink का अनुसरण करने के बाद हल किया जाता है और उसे उसी निर्देशिका के अंदर रहना होता है, इसलिए कार्यक्षेत्र में रखा कोई लिंक बाकी डिस्क तक नहीं पहुँच सकता। सैंडबॉक्स कमांड चलाने से मना कर देता है।

मदसीमा
प्रति खाता सत्र200
प्रॉम्प्ट की लंबाई32,000 अक्षर
प्रति संदेश एजेंट टर्न24
फ़ाइल पढ़ना या लिखनाप्रति कॉल 2 MB
सत्र का शीर्षक120 अक्षर

जो टर्न टर्न सीमा तक पहुँचता है, वह रुक जाता है और यह बता देता है। हर टर्न आपके प्रदाताओं को कई मॉडल कॉल कर सकता है, इसलिए पहुँच उसी सावधानी से दें जैसे आप प्रदाता बजट खर्च करने वाली किसी भी अन्य मॉडल पहुँच को देते हैं।

संग्रहण​

Strands डेटा <DATA_DIR>/strands/ में रहता है, एप्लिकेशन डेटाबेस में नहीं। हर खाते की अपनी निर्देशिका होती है, <DATA_DIR>/strands/users/<account-hash>/, जिसमें ये होते हैं:

  • registry.json: खाते की सत्र सूची
  • sessions/: Strands सत्र स्नैपशॉट, जिन्हें एजेंट संदर्भ के रूप में उपयोग करता है
  • transcripts/: Strands पेज पर हर सत्र के लिए दिखने वाला ट्रांसक्रिप्ट
  • workspaces/: हर सत्र का निजी कार्यक्षेत्र
  • chat-workspace/: चैट टर्न में उपयोग होने वाला कार्यक्षेत्र

अगर सत्र आपके लिए मायने रखते हैं, तो बैकअप में <DATA_DIR>/strands/ शामिल करें।

उपयोग​

प्रदाता उपयोग (/usage) Strands कॉल को अपने एजेंट अनुभाग में Strands एजेंट के नाम दर्ज करता है। एजेंट उपयोग देखें।

API​

हर रूट के लिए Strands पहुँच वाला प्रमाणित खाता चाहिए, सिवाय /api/strands/access के, जिसके लिए प्रशासक होना ज़रूरी है।

विधिपथउद्देश्य
GET/api/strands/accessपहुँच मोड पढ़ें, और देखें कि क्या LIBRE_STRANDS_ACCESS उसे स्थिर करता है (प्रशासक)
PUT/api/strands/accessmode को disabled, admins या all-users पर सेट करें (प्रशासक; स्थिर होने पर 409)
GET/api/strands/healthइंजन की उपलब्धता, और हार्नेस व SDK के संस्करण
GET/api/strands/modelsवे मॉडल जिन्हें इंजन इस खाते के लिए चला सकता है
GET/api/strands/sessionsसत्रों की सूची
POST/api/strands/sessionsसत्र बनाएँ (वैकल्पिक title और model)
GET/api/strands/sessions/:sessionIdसत्र, उसका ट्रांसक्रिप्ट, और कोई टर्न चल रहा है या नहीं, यह पढ़ें
PATCH/api/strands/sessions/:sessionIdसत्र का शीर्षक या मॉडल बदलें
DELETE/api/strands/sessions/:sessionIdसत्र को उसके ट्रांसक्रिप्ट और कार्यक्षेत्र सहित हटाएँ
POST/api/strands/sessions/:sessionId/messages{ "text": "..." } भेजें और टर्न को NDJSON के रूप में स्ट्रीम करें
POST/api/strands/sessions/:sessionId/cancelचल रहा टर्न रोकें

संदेश स्ट्रीम हर पंक्ति में एक JSON ईवेंट लिखती है: turn-start, text, reasoning, tool-start, tool-result, done (रुकने के कारण के साथ, और प्रदाता बताए तो टोकन उपयोग के साथ), और error। कनेक्शन बंद करने से टर्न रद्द हो जाता है। टर्न चलते समय संदेश भेजने पर 409 मिलता है।

कॉन्फ़िगरेशन​

चरडिफ़ॉल्टउद्देश्य
LIBRE_STRANDS_ACCESSसेट नहीं (प्रशासक सेटिंग, admins)disabled, admins या all-users स्थिर करें; कोई अन्य मान इंजन को बंद स्थिति में लॉक कर देता है

समस्या निवारण​

Strands इंजन की समस्याएँ देखें।