Motor döngüsü
core/engine.ts agent döngüsünü çalıştırır:
route → stream → izin kapısı → araçlar → sonuç → tekrar
- Route — router görev için bir model ve effort seçer.
- Stream — modelin cevabı sağlayıcıdan akış olarak alınır.
- İzin kapısı — her araç çağrısı izin politikasından geçer.
- Araçlar — izin verilen çağrılar çalışır; çıktıları araç sonucu olur.
- Tekrar — sonuçlar sona eklenir ve tur bitene kadar döngü sürer.
Motor UI’dan bağımsızdır: yalnızca protokol olayları yayar (protocol/events.ts). Ink TUI, headless mod ve JSONL kaydı aynı olayların tüketicileridir.
Modüller
| Yol | Sorumluluk |
|---|---|
core/engine.ts | Agent döngüsü; yalnızca protokol olayları yayar. |
router/ | Görev türü × karmaşıklık × profil → model + effort; yükseltme; emin değilse Haiku ile sınıflandırma. |
llm/ | Sağlayıcıdan bağımsız mesaj ve olay tipleri; Anthropic adaptörü; çevrimdışı ve test için scripted sağlayıcı; kendi retry / backoff politikası. |
tools/ | read, glob, grep, edit, write, exec_command, write_stdin, read_block, update_plan, ask_user. |
permissions/ | Komut sınıflandırma ve politika. |
context/ | Donmuş sistem promptu, ortam envanteri, proje talimat dosyaları, reminder’lardaki dinamik durum. |
core/optimizer, connectivity, session/resume | Token optimizasyonu, çevrimdışı dayanıklılık, sunucu tarafı araç çıktısı temizleme / compaction, keep-alive, /resume. |
headless.ts | Etkileşimsiz çalışma (vulgr -p). |
tui/ | Ink arayüzü: bloklar, agent turu, izin ve soru kutuları, durum çubuğu. |
LLM katmanı
- Sağlayıcıdan bağımsız tipler — motor SDK tiplerini doğrudan görmez.
- Anthropic adaptörü — imzalı thinking bloklarını aynen geri oynatır ve prompt-cache breakpoint’leri yerleştirir.
- Scripted sağlayıcı — çevrimdışı kullanım ve testler için deterministik cevaplar.
- Retry / backoff — SDK varsayılanı değil, Vulgr Agent’ın kendi politikası.
Bağlam ve önbellek
context/, donmuş bir sistem promptu ve bir ortam envanteri oluşturur; proje talimatlarını AGENTS.md, VULGR.md ya da CLAUDE.md dosyalarından yükler.
Dayanıklılık ve oturumlar
- Token optimizer — çalışma bağlamını yalın tutar.
- Connectivity — çevrimdışı kalmaya dayanır; uzun turlarda keep-alive.
- Sunucu tarafı temizlik — araç çıktısı temizleme ve compaction.
/resume— oturumlar JSONL olarak kaydedilir ve kaldığı yerden sürdürülebilir.