Strands Motoru
Libre WebUI, açık kaynaklı Strands Agents harness üzerine kurulu yerleşik bir ajan motoru içerir (@strands-agents/sdk 1.19.0 üzerinde @strands-agents/harness 0.1.1). Motor Libre WebUI arka uç sürecinin içinde çalışır, bu yüzden ayrıca kurulacak bir arka plan hizmeti yoktur. SDK, motor ilk kez kullanıldığında yüklenir; Strands’in kapalı olduğu bir sunucu SDK’yı hiç yüklemez.
Motor, Libre WebUI’nin zaten sunduğu modelleri kullanır:
- Ollama etkinse Ollama modelleri
- etkin sohbet veya tamamlama sağlayıcı eklentilerinin modelleri
Her model çağrısı, Sohbet’in kullandığı aynı Ollama ve eklenti hizmetlerinden geçer. Ayrı bir sağlayıcı yapılandırması ve ayrı bir API anahtarı yoktur. Sağlayıcı kimlik bilgileri ve Ollama anahtarı olduğu gibi geçerlidir.
Motoru üç yerde kullanabilirsiniz:
- kalıcı ajan oturumları için Strands sayfasında
- Sohbet içinde, model seçicideki Strands girişleriyle
- Work içinde, yazma alanındaki Motor denetiminin Strands seçeneği olarak
Erişim
Motoru kimin kullanabileceğini bir yönetici Ayarlar → Kullanıcı Yönetimi → Erişim ve ilkeler → Strands motoru altında seçer:
| Mod | Ayardaki etiket | Strands’i kimler kullanabilir |
|---|---|---|
disabled | Kapalı | Hiç kimse, yöneticiler dahil (varsayılan) |
admins | Yöneticiler | Etkin yöneticiler |
all-users | Tüm kullanıcılar | Her etkin hesap |
Değişiklik, yeniden başlatma gerekmeden bir sonraki istekte geçerli olur.
Modu dağıtım düzeyinde sabitlemek için LIBRE_STRANDS_ACCESS değişkenini ayarlayın:
LIBRE_STRANDS_ACCESS=admins # or disabled, all-users
Sabitlenmiş bir mod, Kullanıcı Yönetimi’ndeki denetimi kilitler. disabled, admins veya all-users dışındaki herhangi bir değer, kayıtlı ayara geri dönmek yerine motoru kapalı konumda kilitler.
Sunucu modu her REST isteğinde, WebSocket sohbetinde ve bir Work çalıştırmasının her model çağrısında uygular. Mod okunamazsa erişim reddedilir. Erişimi olmayan hesaplar Strands sayfasını, Strands sohbet girişlerini veya Strands Work motorunu görmez ve API 403 yanıtı verir.
Strands sayfası
Kenar çubuğundan Strands sayfasını açın (/strands).
- Oturumlar yeniden başlatmalardan sonra korunur, hesap başına en fazla 200 oturum. İlk mesaj yeni oturuma adını verir.
- Her oturum için bir model seçin. Varsayılan model, varsayılan sohbet modelinizi kullanır.
- Yanıtlar üretildikçe akış hâlinde gelir; modelin muhakemesi ve her araç çağrısı için bir kart da gösterilir.
- Durdur çalışan turu iptal eder. Bir oturum aynı anda yalnızca bir tur çalıştırır.
- Bir oturumu silmek, geçmişini ve çalışma alanını da kaldırır.
Sohbet
Model seçicide Strands seçin. Bu giriş, Ajanlar grubunda CLI ajan modellerinin yanında görünür:
- Strands (
strands), motorun varsayılanını, yani varsayılan sohbet modelinizi kullanır. - Strands · model (sağlayıcı) (
strands:<route>), konuşma için tek bir modeli ve sağlayıcısını sabitler.
Sohbet’teki Strands yalnızca Strands erişimine bağlıdır. CLI ajan modelleri anahtarına ihtiyaç duymaz ve bu anahtar kapalıyken de görünür. Sohbet’te ajan, Strands sayfasındakiyle aynı dosya araçlarına sahiptir; hesap başına tek bir özel çalışma alanı kullanır ve yanıtları metin ve muhakeme olarak gelir. Ajanlar grubu ve bir Strands girişini başlıklar ile düşünme özetleri için görev modeli olarak kullanma hakkında bilgi için Kurulu kodlama ajanları sayfasına bakın.
Work
Work yazma alanında Motor denetiminden Libre WebUI veya Strands seçin ve modeli ayrıca belirleyin. Strands ile her adımı bir Strands ajanı planlar; Work da istediği araçları Work korumalı alanında, Work’ün normal onay politikasıyla çalıştırır. Döküm, onaylar, araç yürütme ve çalıştırma geçmişi için yetkili kaynak Work olarak kalır; Strands ajanı Work içinde kendi araçlarını çalıştırmaz.
Temeldeki sağlayıcı modelin araç çağrısını desteklemesi gerekir. Work bunu çalıştırma başlamadan önce denetler ve araç desteği bildirmeyen bir modeli reddeder.
Önceki sürümlerde dsh: model önekiyle kaydedilmiş Work çalıştırmaları Strands çalıştırmaları olarak açılır. Motor seçiminin Sohbet’ten taşınan modellerle nasıl etkileştiği için Work: Strands motoru bölümüne bakın.
Güvenlik modeli
Strands sayfasında ve Sohbet’te ajanın bilinçli olarak küçük tutulmuş bir araç seti vardır:
- çalışma alanındaki dosyalar için
read,writeveedit - çok adımlı işleri planlamak için harness
todoseklentisi
Kabuğu, web getirme yeteneği, belleği ve becerileri yoktur; talimatlarına hiçbir AGENTS.md dosyası eklenmez.
Her oturumun, ajanın /workspace olarak gördüğü özel bir çalışma alanı dizini vardır. Her yol, sembolik bağlantılar izlendikten sonra çözümlenir ve bu dizinin içinde kalmalıdır; böylece çalışma alanındaki bir bağlantı diskin geri kalanına ulaşamaz. Korumalı alan komut çalıştırmayı reddeder.
| Öğe | Sınır |
|---|---|
| Hesap başına oturum | 200 |
| İstem uzunluğu | 32.000 karakter |
| Mesaj başına ajan turu | 24 |
| Dosya okuma veya yazma | Çağrı başına 2 MB |
| Oturum başlığı | 120 karakter |
Tur sınırına ulaşan bir tur durur ve bunu belirtir. Her tur sağlayıcılarınıza birden fazla model çağrısı yapabilir; bu yüzden erişimi, sağlayıcı bütçesi harcayan diğer model erişimleri kadar dikkatle verin.
Depolama
Strands verileri uygulama veritabanında değil, <DATA_DIR>/strands/ altında tutulur. Her hesabın kendi dizini vardır, <DATA_DIR>/strands/users/<account-hash>/, ve şunları içerir:
registry.json: hesabın oturum listesisessions/: ajanın bağlam olarak kullandığı Strands oturum anlık görüntüleritranscripts/: her oturum için Strands sayfasında gösterilen dökümworkspaces/: her oturumun özel çalışma alanıchat-workspace/: Sohbet turlarında kullanılan çalışma alanı
Oturumlar sizin için önemliyse <DATA_DIR>/strands/ dizinini yedeklere dahil edin.
Kullanım
Sağlayıcı Kullanımı (/usage), Strands çağrılarını Ajanlar bölümündeki Strands ajanına atar. Bkz. Ajan kullanımı.
API
/api/strands/access dışındaki her rota, Strands erişimi olan kimliği doğrulanmış bir hesap gerektirir; /api/strands/access ise yönetici gerektirir.
| Yöntem | Yol | Amaç |
|---|---|---|
GET | /api/strands/access | Erişim modunu ve LIBRE_STRANDS_ACCESS tarafından sabitlenip sabitlenmediğini okur (yönetici) |
PUT | /api/strands/access | mode değerini disabled, admins veya all-users yapar (yönetici; sabitlenmişse 409) |
GET | /api/strands/health | Motorun kullanılabilirliği ile harness ve SDK sürümleri |
GET | /api/strands/models | Motorun bu hesap için kullanabileceği modeller |
GET | /api/strands/sessions | Oturumları listeler |
POST | /api/strands/sessions | Oturum oluşturur (isteğe bağlı title ve model) |
GET | /api/strands/sessions/:sessionId | Bir oturumu, dökümünü ve bir turun çalışıp çalışmadığını okur |
PATCH | /api/strands/sessions/:sessionId | Oturumun başlığını veya modelini değiştirir |
DELETE | /api/strands/sessions/:sessionId | Bir oturumu dökümü ve çalışma alanıyla birlikte siler |
POST | /api/strands/sessions/:sessionId/messages | { "text": "..." } gönderir ve turu NDJSON olarak akışla iletir |
POST | /api/strands/sessions/:sessionId/cancel | Çalışan turu durdurur |
Mesaj akışı her satıra bir JSON olayı yazar: turn-start, text, reasoning, tool-start, tool-result, done (durma nedeni ve sağlayıcı bildiriyorsa token kullanımıyla) ve error. Bağlantıyı kapatmak turu iptal eder. Bir tur çalışırken mesaj göndermek 409 döndürür.
Yapılandırma
| Değişken | Varsayılan | Amaç |
|---|---|---|
LIBRE_STRANDS_ACCESS | ayarlanmamış (yönetici ayarı, admins) | disabled, admins veya all-users değerini sabitler; diğer her değer motoru kapalı konumda kilitler |
Sorun giderme
Bkz. Strands motoru sorunları.