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/access | mode को 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 इंजन की समस्याएँ देखें।