Ana içeriğe geç

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:

ModAyardaki etiketStrands’i kimler kullanabilir
disabledKapalıHiç kimse, yöneticiler dahil (varsayılan)
adminsYöneticilerEtkin yöneticiler
all-usersTüm kullanıcılarHer 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, write ve edit
  • çok adımlı işleri planlamak için harness todos eklentisi

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.

ÖğeSınır
Hesap başına oturum200
İstem uzunluğu32.000 karakter
Mesaj başına ajan turu24
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 listesi
  • sessions/: ajanın bağlam olarak kullandığı Strands oturum anlık görüntüleri
  • transcripts/: her oturum için Strands sayfasında gösterilen döküm
  • workspaces/: 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öntemYolAmaç
GET/api/strands/accessErişim modunu ve LIBRE_STRANDS_ACCESS tarafından sabitlenip sabitlenmediğini okur (yönetici)
PUT/api/strands/accessmode değerini disabled, admins veya all-users yapar (yönetici; sabitlenmişse 409)
GET/api/strands/healthMotorun kullanılabilirliği ile harness ve SDK sürümleri
GET/api/strands/modelsMotorun bu hesap için kullanabileceği modeller
GET/api/strands/sessionsOturumları listeler
POST/api/strands/sessionsOturum oluşturur (isteğe bağlı title ve model)
GET/api/strands/sessions/:sessionIdBir oturumu, dökümünü ve bir turun çalışıp çalışmadığını okur
PATCH/api/strands/sessions/:sessionIdOturumun başlığını veya modelini değiştirir
DELETE/api/strands/sessions/:sessionIdBir 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şkenVarsayılanAmaç
LIBRE_STRANDS_ACCESSayarlanmamış (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ı.