Multica Docs

Daemon ve runtime'lar

Multica'nın bilgisayarları nasıl bağladığı, yapay zekâ kodlama araçlarını nasıl keşfettiği ve görevleri nasıl çalıştırdığı.

Multica çalışmayı kaydeder ve koordine eder; bağlı bilgisayarlar bunu yürütür. Bir bilgisayardaki daemon, görevleri üstlenir ve o makinede kurulu yapay zekâ kodlama araçlarını çağırır.

Daemon ve runtime farkı

  • Daemon, bir bilgisayarda çalışan Multica arka plan sürecidir. Sunucuya bağlanır, yerel araçları keşfeder, görevleri üstlenir ve sonuçları geri bildirir.
  • Runtime, bir çalışma alanının kullanabileceği somut bir çalıştırma ortamını temsil eder. Bir bilgisayar artı o bilgisayardaki bir yapay zekâ kodlama aracının — ya da bir özel runtime profilinin — karşılığıdır.

Örneğin bir bilgisayarda hem Claude Code hem Codex kurulu olsun ve bu bilgisayar iki çalışma alanına bağlı olsun. Daemon, her çalışma alanı için Claude Code ve Codex runtime'larını kaydeder. Daemon'ı yeniden başlatmak mevcut kayıtları günceller; aynı kombinasyon için tekrar tekrar yeni runtime oluşturmaz.

Çalıştırma konumu ve veri sınırları

Yerel bir runtime'ın çağırdığı yapay zekâ kodlama araçları, bu araçların kendi giriş kimlik bilgileri ve yerel kod dizinleriniz — hepsi bağlı bilgisayarda kalır. Multica sunucusu yerel araçlar adına komut çalıştırmaz ve tüm çalışma dizininizi otomatik olarak yüklemez.

Takımın birlikte çalışabilmesi için sunucu; işleri, yorumları, agent yapılandırmasını, görev bağlamını, görev kayıtlarını ve agent'ların geri yazdığı sonuçları saklar. Bu içerik, bir agent'ın okuyup yanıtlarına dahil ettiği kod parçacıklarını veya başka proje bağlamını içerebilir.

Bir agent'ın özel ortam değişkenleri sunucu tarafında saklanır ve çalıştırma anında runtime'a gönderilir. "Yerel çalıştırma"yı "her sır yalnızca bu makinede var" olarak okumayın: özel ortam değişkenleri ve MCP yapılandırması sunucuda tutulur ve görüntülenmeleri hassas değer kurallarıyla sınırlıdır.

Daemon'ı başlatma

Multica Desktop ile uygulama daemon'ı otomatik başlatır — ekstra bir komuta gerek yoktur.

Web'de, uzak bir bilgisayarda veya headless bir ortamda önce Multica CLI'ı kurun, ardından şunu çalıştırın:

multica daemon start

Daemon varsayılan olarak arka planda çalışır. Yaygın komutlar:

KomutAmaç
multica daemon statusDaemon ve bağlantı durumunu göster
multica daemon logs -fLogları takip et
multica daemon restartDaemon'ı yeniden başlat ve yerel araçları yeniden algıla
multica daemon stopDaemon'ı durdur
multica daemon start --foregroundHata ayıklama için mevcut terminalde çalıştır

Görev çalışma alanlarını başka bir diske yerleştirmek için, geçerli profil için multica config set workspaces_root <path> ile bir kök dizin kalıcı hale getirin, ya da daemon start veya daemon restart komutuna --workspaces-root <path> bayrağını geçin. Bu bayrak MULTICA_WORKSPACES_ROOT'u, o da profil yapılandırmasını geçersiz kılar. Kök değiştiğinde mevcut görev dizinleri taşınmaz.

Başlangıçta daemon, PATH üzerinde desteklenen yapay zekâ kodlama araçlarını algılar ve bağlanma izniniz olan çalışma alanları için runtime'lar kaydeder. Bir araç yeni kurulduysa veya yeni giriş yapıldıysa, tekrar algılaması için daemon'ı yeniden başlatın.

Daemon'ın başlayabilmesi için en az bir yerleşik desteklenen yapay zekâ kodlama aracının algılanması gerekir. Kurulum yöntemleri ve çalıştırılabilir dosya adları için bkz. Yapay zekâ kodlama araçlarını kurma.

Dağıtım ve çevrimiçi durum

Kaydolduktan sonra bir runtime kalıcı bir bağlantı sürdürür. Kuyruğa yeni bir görev girdiğinde sunucu ilgili daemon'ı bilgilendirir; daemon ayrıca bağlantı kesintilerinden sonra bir yedek olarak düzenli aralıklarla sorgulama yapar. Bu yüzden bir runtime çevrimiçi ve boş kapasitesi varken görevler genellikle hemen başlar.

Daemon her 15 saniyede bir kalp atışı gönderir. Sunucu, bir runtime'ın çevrimiçi olup olmadığına karar vermek için kalp atışlarını ve bağlantı durumunu birlikte kullanır; bir daemon beklenmedik şekilde kapandığında runtime genellikle en geç yaklaşık 3 dakika içinde çevrimdışı görünür.

Çevrimiçi bir bilgisayarın runtime detayları: aynı daemon 7 runtime kaydetmiş, algılanan her yapay zekâ kodlama aracı için bir satır, her biri çevrimiçi durumunu ve CLI sürümünü gösteriyor

Bir runtime çevrimdışı olduğunda:

  • Zaten kuyrukta olan görevler runtime'ın kurtarılmasını bekler. Yalnızca runtime, yeniden bağlanma süresinden daha uzun süredir kalp atışı göndermiyorsa ve görev de en az o kadar süredir kuyrukta bekliyorsa başarısız olurlar; böylece yalnızca meşgul olan bir runtime birikmiş işlerini korur, zaten çevrimdışı olan bir runtime'a atanan bir görev de beklemek için tam bir süre tanınmış olur.
  • Devam etmekte olan görevler başarısız olur; uygun iş veya sohbet görevleri otomatik olarak yeniden denenebilir.
  • Daemon yeniden başladığında runtime'larını tekrar kaydeder ve son seferinde temiz bitmemiş görevleri geri alır.
  • Kendisine bağlı hiçbir agent'ı olmayan (arşivlenmiş olanlar dahil) ve 7 günden uzun süredir çevrimdışı olan bir runtime otomatik olarak temizlenir.

Ayrıntılı durumlar ve yeniden deneme kuralları Görevler'de anlatılıyor.

Eşzamanlılık sınırları

Bir daemon varsayılan olarak aynı anda en fazla 20 görev çalıştırır; her agent ise en fazla 6. Geçerli eşzamanlılık bu ikisinden küçük olanıdır.

Bir sınıra ulaşıldığında yeni görevler kuyrukta beklemeye devam eder. Tek bir agent'ın eşzamanlılığını agent ayarlarından, makine genelindeki üst sınırı ise MULTICA_DAEMON_MAX_CONCURRENT_TASKS ile ayarlayabilirsiniz. Paralel görevler; makine kapasitesi, araç hesabı kotası ve aynı çalışma dizini için aynı anda birbiriyle yarışır.

Özel ve herkese açık runtime'lar

Yerel bir runtime varsayılan olarak özeldir: üzerinde yalnızca runtime sahibi agent oluşturabilir. Çalışma alanı sahipleri ve yöneticileri de bir istisna değildir — runtime başka birinin bilgisayarıdır ve orada bir agent çalıştırmak o kişinin makinesini ve araç kimlik bilgilerini kullanır.

Runtime'ı herkese açık yapabilecek tek kişi runtime sahibidir — çalışma alanı yöneticileri bir runtime'ı yeniden adlandırabilir veya silebilir, ama paylaşma kararı sahibine aittir. Herkese açık yapıldığında çalışma alanının diğer üyeleri de bu runtime'ı seçebilir; bu, altta yatan yapay zekâ kodlama aracının giriş kimlik bilgilerini paylaşmaz — yalnızca üyelerin agent'larının görevlerini bu bilgisayara yönlendirmesine izin verir.

Özel runtime profilleri

Takımınız dahili bir sarmalayıcı, sürümü sabitlenmiş bir çalıştırılabilir dosya kullanıyorsa veya uyumlu bir araç için sabit ek argümanlara ihtiyaç duyuyorsa bir özel runtime profili oluşturun.

Özel bir profil yeni bir iletişim protokolü eklemez. Yine de Multica'nın zaten desteklediği protokol ailelerinden birini seçersiniz (aracın entegrasyon protokolü türü; bkz. Yapay zekâ kodlama araçları karşılaştırması) ve komutun kendisi bu aileyle uyumlu olmalıdır.

Görev runtime ortamı

Daemon bir agent görevini başlattığında görev bağlamını runtime sürecine enjekte eder. Bu değerler daemon'a aittir: bir agent'ın özel ortamı hiçbir MULTICA_ değişkenini veya görev geçici dizin değişkenlerini geçersiz kılamaz.

Aşağıdaki tablo, özel runtime'ların bugün kullanabileceği değişkenleri listeler. Bilinçli olarak eksiksiz değildir ve sürümlenen bir API yüzeyi değildir. Entegrasyonlarınızı yalnızca entegrasyon sözleşmesi olarak işaretlenmiş beş değişken üzerine kurun; geri kalanını değişebilecek bilgilendirici ayrıntılar olarak değerlendirin.

DeğişkenGörevdeki değeriKararlılık
MULTICA_TOKENGöreve özel mat_ API kimlik bilgisiEntegrasyon sözleşmesi
MULTICA_TASK_IDAktif görevin ID'siEntegrasyon sözleşmesi
MULTICA_AGENT_IDAtanan agent'ın ID'siEntegrasyon sözleşmesi
MULTICA_WORKSPACE_IDGörevin çalışma alanının ID'siEntegrasyon sözleşmesi
MULTICA_SERVER_URLDaemon tarafından seçilen Multica sunucu URL'siEntegrasyon sözleşmesi
MULTICA_TASK_CONFIG_ROOTGöreve özel, gizli Multica CLI yapılandırma köküBilgilendirici
MULTICA_TASK_WORKSPACES_ROOTDaemon tarafından yönetilen görev çalışma alanlarının köküBilgilendirici
MULTICA_AGENT_NAMEAtanan agent'ın görünen adıBilgilendirici
MULTICA_DAEMON_PORTmultica repo checkout gibi yalnızca göreve özel komutların kullandığı yerel daemon sağlık/API portuBilgilendirici
MULTICA_TASK_SLOTDaemon genelindeki eşzamanlılık havuzunda slot; GPU gibi slot indeksli kaynaklar için kullanışlıdırBilgilendirici
TMPDIRAktif görev için gizli geçici dizin; çapraz platform araçlar için TMP ve TEMP olarak da sağlanırBilgilendirici

Sunucu, MULTICA_TOKEN ile yapılan isteklerin yazarını belirler; iş yorumları gibi yazma işlemleri atanan agent'a ve aktif göreve mal edilir. Token'ın tam bağlanması, izinleri, yazarlık ataması, en fazla 24 saatlik ömrü ve temizleme davranışı için bkz. Agent görevleri için geçici token'lar.

Bu değerler runtime sürecinin gerçek ortamında bulunur. Runtime'ın başlattığı her alt süreç, MULTICA_TOKEN dahil bunların tümünü varsayılan olarak devralır. Bir alt sürecin bu kimlik bilgisini tutmaması gerekiyorsa açıkça temizleyin; var olmayan bir süreç izolasyonuna güvenmeyin. İstisna tersine işler: kendi alt süreç ortamını filtreleyen araçlar açık bir izin verme kuralı gerektirebilir. Örneğin Codex'in shell aracı, adında TOKEN, KEY veya SECRET geçen değişkenleri düşürür; bu yüzden daemon, gerekli görev değişkenlerine izin veren yönetilen bir shell politikası kurar. Token'ı yalnızca süreç ortamlarında tutun — asla bir prompt'a, log'a, depo dosyasına veya kalıcı yapılandırmaya yazmayın. Bir alt süreç, üst görevin kimliğini ve izinlerini paylaşır; bağımsız, yeni bir kapsamlı kimlik almaz.

Profil oluşturma

Yalnızca çalışma alanı sahipleri ve yöneticileri özel runtime profilleri oluşturabilir, düzenleyebilir veya silebilir:

  1. Runtime'lar'ı açın ve komutun kurulu olduğu bir bilgisayara gidin.
  2. Özel runtime ekle'ye tıklayın.
  3. Komutun gerçekten uyumlu olduğu protokol ailesini seçin.
  4. Adı, komutu ve sabit argümanları girin, ardından kaydedin.

Profil, çalışma alanı genelinde paylaşılır. Bağlı her bilgisayar komutu kendi başına arar; yalnızca komutu PATH üzerinde çözebilen bilgisayarlar ilgili runtime'ı kaydeder. Bir profil oluşturmak komutu kurmaz ve diğer üyeleri araca giriş yaptırmaz.

Komut alanı bir shell betiği değil, bir çalıştırılabilir dosya ve argümanlar alır. Düz argümanlar, tırnaklar ve ters eğik çizgi kaçışları çalışır; borular, yönlendirmeler, &&, ;, ters tırnaklar ve ortam değişkeni genişletmesi çalışmaz. Bu davranışlara ihtiyacınız olduğunda bunları bir sarmalayıcı betiğe koyun ve komut olarak o betiği kullanın.

Argümanlarınız nasıl sıralanır

Komut alanına yazdığınız her şey, çalıştırılabilir dosyadan hemen sonra, Multica'nın eklediği argümanlardan önce yer alır:

<sizin komutunuz> <sizin sabit argümanlarınız> <Multica'nın protokol argümanları> <agent'ın özel argümanları>

Alt komut tarzı bir sarmalayıcının çalışmasını sağlayan da budur. Komutunuz ccms start q36 ise araç önce start q36'yı görür ve Multica'nın -p'si ve geri kalanı gelmeden önce alt komutunu seçebilir — böyle bir sarmalayıcının kabul ettiği tek sıralama budur.

Daha önce argümanlarınız bunun yerine en sona ekleniyordu. Çoğu flag tarzı komut her iki durumda da aynı şekilde ayrıştırılır, ama hepsi öyle değildir — global flag'leri alt komut flag'lerinden ayıran bir komut, bir flag'in nerede durduğuna önem verebilir. Sabit argümanlı bir profiliniz zaten varsa, yükseltmeden sonra onun üzerinde bir görev başlatarak hâlâ çalıştığını doğrulayın.

Bilinmesi gereken iki sonuç daha var:

  • Bir çakışmada Multica'nın kendi değerleri kazanır. Sabit argümanlarınız Multica'nın da ayarladığı bir flag'i ayarlarsa, Multica'nın değeri daha sonra gelir ve geçerli olur. En önemlisi, agent üzerinde seçilen bir model, profildeki sabitlenmiş bir --model'in önüne geçer. Bir modeli herkes için sabitlemek istiyorsanız agent'ların model alanını boş bırakın.
  • Protokol açısından kritik flag'ler yok sayılır. -p, --output-format, --input-format, --permission-mode ve diğer ailelerin karşılıkları sabit argümanlarınızdan çıkarılır; çünkü bunları geçersiz kılmak daemon'ın araçla bağlantısını bozar. Alt komutlar ve diğer konumsal argümanlar her zaman olduğu gibi geçer.

Desktop tarafından başlatılan bir daemon, terminalinizde çalıştırabildiğiniz bir komutu bulamıyorsa, geçerli bilgisayar için mutlak bir yol ayarlayın:

multica runtime profile set-path <profile-id> --path /absolute/path/to/command

Yol geçersiz kılmayı kaldırın:

multica runtime profile unset-path <profile-id>

Bir profili düzenlemek yalnızca bundan sonra üstlenilen görevleri etkiler. Bir profili silmeden önce, hâlâ onun runtime'larına bağlı olan aktif agent'ları halledin. Yalnızca bir bilgisayardaki runtime örneğini silmek profili silmez — çalışan bir daemon onu yeniden kaydeder.

Çevrimdışı bir runtime'ın sorununu giderme

Şu sırayla kontrol edin:

  1. Daemon'ın çalıştığını doğrulamak için multica daemon status çalıştırın.
  2. Giriş, ağ veya araç algılama hatalarını aramak için multica daemon logs -f çalıştırın.
  3. Daemon'ın aracı bulabildiğini doğrulamak için aynı ortamda command -v <araç-komutu> çalıştırın.
  4. Multica'nın Runtime'lar sayfasını açın ve hedef bilgisayarın ve ilgili yapay zekâ kodlama aracının çevrimiçi görünüp görünmediğini kontrol edin.
  5. Bir araç kurulumundan, yol değişikliğinden veya profil güncellemesinden sonra multica daemon restart çalıştırın.

Sorun devam ederse bkz. Sorun Giderme.

Sonraki adımlar