Multica Docs

Görevler

Tek bir agent görevinin nasıl kuyruğa alındığı, çalıştırıldığı, durdurulduğu ve yeniden denendiği.

Bir agent çalışmaya her başladığında, Multica bir görev oluşturur. Çalışmayı neyin tetiklediğini, hangi agent'a gittiğini, ne kadar ilerlediğini ve sonunda başarılı olup olmadığını kaydeder.

İşler ve görevler

Bir iş, bir çalışmanın hedefini, tartışmasını, atananını ve nihai durumunu tutar; bir görev ise o çalışma üzerinde yapılan tek bir agent çalıştırmasını kaydeder.

İşGörev
Ne kaydederİlerleyen bir çalışma parçasıTek bir agent çalıştırması
Ne kadar sürerTekrar tekrar tartışılabilir, değiştirilebilir ve yeniden atanabilirTetiklenmesinden tamamlanmasına, başarısız olmasına veya iptaline kadar
Sayısal ilişkiBir iş birçok görev içerebilirHer çalıştırma kendi kaydını alır

Aynı iş sırayla farklı agent'lara devredilebilir veya bir başarısızlıktan sonra yeniden çalıştırılabilir. Her çalıştırma yeni bir görev kaydı üretir; önceki kayıtların üzerine asla yazılmaz.

Tetikleyici kaynaklar

Aşağıdakilerden herhangi biri bir görevi tetikleyebilir:

  • Bir işi bir agent'a veya bir Ekip'e atamak.
  • Bir yorumda bir agent'tan @ ile bahsetmek.
  • Sohbette bir agent'a mesaj göndermek.
  • Bir Otopilot'un zamanlanmış olarak veya harici bir olaydan tetiklenmesi.

Farklı giriş noktaları farklı bağlam sağlar, ama çalıştırma aynı şekilde işler: Multica bir görev oluşturur, bir runtime onu üstlenir ve runtime, agent'ın yapılandırıldığı yapay zekâ kodlama aracını çağırır.

Çalıştırma yaşam döngüsü

Bir görev tipik olarak şu durumlardan geçer:

DurumAnlamı
deferredDaha sonra tetiklenmek üzere zamanlanmış; belirlenen zamanda kuyruğa girer
queuedBir runtime'ın üstlenmesini bekliyor
dispatchedBir runtime onu üstlendi ve yapay zekâ kodlama aracını başlatıyor
waiting_local_directoryHedef yerel dizin başka bir görev tarafından tutuluyor; dizin kilidinin serbest kalmasını bekliyor
runningYapay zekâ kodlama aracı çalışıyor
completedGörev normal şekilde bitti
failedGörev hata verdi veya kesintiye uğradı
cancelledGörev elle durduruldu

Runtime çevrimiçiyken yeni bir görev genellikle hızlıca başlar; görev kuyruğa girdikten sonra runtime çevrimdışı olursa, görev runtime kurtarılana kadar kuyrukta kalır. Kuyrukta bekleyen iş, uzun süre beklediği için zaman aşımına uğramaz — kalp atışı göndermeye devam eden bir runtime meşguldür, kaybolmuş değildir; bu yüzden kuyruğun istediği kadar uzun sürede erimesine izin verilir. Kuyruktaki bir görev yalnızca her ikisi de doğruysa başarısız olur: runtime'ı yeniden bağlanma toleransını aşacak kadar sessiz kalmışsa ve görevin kendisi de o kadar süredir kuyrukta bekliyorsa. İkinci koşul, işi zaten uykuda olan bir makineye atadığınızda önem kazanır — görev, hemen başarısız olmak yerine onu geri getirmeniz için tam bir tolerans süresi daha alır.

Sistem, tetiklenmeden önce hedef runtime'ın zaten çevrimdışı olduğunu biliyorsa, bazı anlık eylemler kimsenin üstlenemeyeceği bir görev oluşturmak yerine görevin şu anda başlatılamayacağını bildirir.

Sağlıklı bir kalp atışına sahip bir runtime uzun görevleri çalıştırabilir; sunucu, sadece uzun süredir çalışıyor diye bir görevi asla zorla bitirmez. Runtime, sürecin takılıp kalıp kalmadığına gerçek etkinliğe bakarak karar verir; ilgili ayarlar için bkz. Ortam değişkenleri.

Görev geçmişini görüntüleme

Bir işin ürettiği her görev, işin sağ kenar çubuğundaki Çalıştırma günlüğü bölümünde listelenir — ayrı bir sayfada veya sekmede değil. Bölüm varsayılan olarak açıktır: etkin görevler en üstte sabit kalır, bitmiş olanlar ise Geçmiş görevleri göster (N) ifadesinin arkasında durur. Her satır tetikleyici kaynağı, çalıştıran agent'ı, durumu ve zamanlamayı gösterir. Bölümü görmüyorsanız, iş başlığındaki panel düğmesiyle kenar çubuğunu açın; dar ekranlarda kenar çubuğu kapalı başlar.

Günlük, sayfa açık kaldığı sürece gerçek zamanlı bağlantı üzerinden güncellenir — yeni görevler, durum değişiklikleri ve agent'ın yorumları elle yenilemeye gerek kalmadan görünür.

Bir agent çalışırken, iş başlığında "Engineer çalışıyor" gibi canlı bir etiket de görünür. Üzerine gelmek aynı etkin görevleri gösterir, böylece sayfadan ayrılmadan ilerlemeyi kontrol edebilirsiniz.

Buradan şunları yapabilirsiniz:

  • Agent'ın mesajlarını, araç çağrılarını ve hata çıktısını görmek için bir satırda Dökümü görüntüle'ye tıklayın. Hâlâ devam eden bir görev için, iletişim kutusu açık kaldığı sürece döküm akmaya devam eder ve bir En yeniler önce anahtarı olay sırasını tersine çevirir.
  • Ertelenmiş, kuyrukta, başlıyor, yerel dizin bekliyor veya çalışıyor durumundaki görevleri durdurun.
  • Başarısız veya iptal edilmiş bir görevi yeniden deneyin.

İş kenar çubuğundaki çalıştırma günlüğü: etkin görevler geçmiş görevlerin üzerinde

Görev kaydı: durum zaman çizelgesi, agent özeti ve tek tek araç çağrıları

Bir işin atananını veya durumunu değiştirmek, zaten başlamış bir görevi durdurmaz. Bir görevi kesmek için çalıştırma günlüğünde ilgili görevi durdurun. Etkin görevler yalnızca iş silindiğinde işle birlikte iptal edilir.

Başarısızlıklar ve otomatik yeniden denemeler

Geçici arızalar — bir runtime'ın kısa süreliğine çevrimdışı olması, bir daemon yeniden başlatması, bir çalıştırma zaman aşımı veya yapay zekâ kodlama aracındaki bir ağ kesintisi — otomatik bir yeniden denemeyi tetikleyebilir. Normal bir görev varsayılan olarak en fazla iki kez çalıştırılır; araç ağ kesintileri üç denemeye kadar hak kazanır.

Agent'ın kendisinin döndürdüğü hatalar genellikle otomatik olarak yeniden denenmez. Süresi dolmuş kimlik bilgileri, tükenmiş kota, yanlış yapılandırma veya isteği tamamlayamayan bir model — hepsi önce nedenin giderilmesini, ardından elle yeniden denemeyi gerektirir.

Bir Otopilot'un yalnızca çalıştır modu, bir sonraki zamanlanmış çalıştırmayla çakışmamak için otomatik olarak yeniden denemez. İş oluştur modu normal iş görevleri ürettiğinden, altyapı kaynaklı başarısızlıklar yukarıdaki kurallara göre yine yeniden denenir. Her iki mod da nihai sonucunu Otopilot çalıştırma geçmişinde gösterir.

Bir işin başka etkin bir görevi ve çalışmayı bekleyen yeni bir yeniden denemesi yoksa, bir başarısızlık in_progress durumundaki işi todo'ya geri döndürür.

Başarısızlık nedeni referansı

Çalıştırma günlüğünde ve kullanım istatistiklerinde gösterilen başarısızlık nedenleri iki gruba ayrılır: önek taşımayan neden kodları platform tarafından kaydedilir; agent_error.* kodları ise yapay zekâ kodlama aracının kendi hatalarından sınıflandırılır.

Platform tarafı

NedenAnlamıNe yapmalı
runtime_offlineGörev sırasında runtime çevrimdışı olduRuntime'ı geri getirin ve yeniden deneyin; bkz. Daemon ve runtime'lar
queued_expiredRuntime, yeniden bağlanma toleransından daha uzun süre kalp atışı göndermedi ve görev de o kadar süredir kuyruktaydıRuntime'ın çevrimiçi olduğunu doğrulayın, sonra yeniden deneyin
runtime_recoveryDaemon, yeniden başladıktan sonra kesintiye uğramış bir görevi geri aldıDoğrudan yeniden deneyin
environment_prepare_failedDaemon, bu görev için çalıştırma ortamını kuramadı — çalışma dizinini veya içine yazılan yerel runtime yapılandırmasınıHangi adımın başarısız olduğunu görmek için ham hatayı okuyun, sonra o makineyi kontrol edin: disk alanı, izinler, hâlâ kullanımda olan bir dizin veya yapay zekâ kodlama aracının yerel yapılandırması
cancelledElle durduruldu veya bir arşivleme ya da silme ile birlikte iptal edildiYapılacak bir şey yok
timeoutDaemon'ın yapılandırılmış çalıştırma süresi sınırını aştıİşin kapsamını daraltın veya daemon'ın agent_timeout ayarını değiştirin
iteration_limitBir görev için yineleme sınırına ulaşıldıİşin kapsamını daraltın
agent_blockedAgent devam edemeyeceğini bildirdiYorumunda istediğini sağlayın
api_invalid_requestPlatform API'si geçersiz bir isteği reddettiYeniden deneyin; tekrarlarsa sorunu bildirin
codex_semantic_inactivityCodex uzun süre anlamlı bir çıktı üretmedi ve takılı kaldığına karar verildiYeniden deneyin veya Codex hareketsizlik zaman aşımını ayarlayın

Araç tarafı (agent_error.*, önek olmadan)

NedenAnlamıNe yapmalı
provider_auth_or_accessModel sağlayıcısı kimlik doğrulaması başarısız oldu veya erişim reddedildi (401/403)O yapay zekâ kodlama aracında yeniden giriş yapın veya API anahtarını kontrol edin
provider_quota_limitKota veya bakiye tükendi (402)Bakiye yükleyin veya hesap değiştirin
provider_capacity_or_rate_limitHız sınırına takıldı veya kapasite yetersiz (429/529)Daha sonra yeniden deneyin
provider_server_errorModel sağlayıcısı sunucu hatası (5xx)Daha sonra yeniden deneyin
provider_networkModel sağlayıcısına ulaşırken ağ hatasıOtomatik olarak yeniden dener; devam ederse çalıştırılan makinenin ağını kontrol edin
model_not_found_or_unavailableModel mevcut değil veya şu anda kullanılamıyorAgent ayarlarında kullanılabilir bir model seçin
context_overflowBağlam, model penceresini aştıİşin kapsamını daraltın veya girdiyi azaltın
missing_configAPI anahtarı gibi gerekli bir yapılandırma eksikAgent'ın ortam değişkenlerini veya araç yapılandırmasını doldurun
runtime_missing_executableYapay zekâ kodlama aracının çalıştırılabilir dosyası bulunamadıAracı yeniden kurun; bkz. Yapay zekâ kodlama araçlarını kurma
runtime_version_unsupportedYapay zekâ kodlama aracının sürümü çok eskiAracı güncelleyin
process_failureAraç süreci anormal şekilde sonlandıNedeni bulmak için görev kaydını kontrol edin, sonra yeniden deneyin
empty_or_unparseable_outputAraç hiç çıktı üretmedi veya ayrıştırılamayan bir çıktı ürettiYeniden deneyin; tekrarlarsa araç kurulumunu kontrol edin
agent_timeoutAraç, uzun süre yanıt vermediği için sonlandırıldıYeniden deneyin veya işin kapsamını daraltın
unknownSınıflandırılamamış başarısızlıkGörev kaydındaki ham hataya bakın

Elle yeniden deneme

Çalıştırma günlüğündeki bir satırda yeniden deneme düğmesine tıklamak o görevi o sırada üstlenen agent'ı çağırır. İş o zamandan beri yeniden atanmış olsa bile, yeniden deneme yeni atanana geçmez.

Bir yeniden deneme, mümkün olduğunda önceki görevin yerel dizine zaten yazdığı dosyaları korur. Orijinal oturum hâlâ güvenliyse ve yeniden denemeyi aynı runtime üstlenirse, önceki oturuma da devam eder. Bağlam taşması veya geçersiz istekler gibi oturumu zehirleyen hatalar, bunun yerine orijinal çalışma dizini üzerinde yeni bir oturum başlatır. Orijinal dizin artık mevcut değilse, taze bir çalışma dizini kullanılır.

İşi CLI'dan da yeniden çalıştırabilirsiniz:

multica issue rerun <issue-id>

Bu biçim belirli bir geçmiş göreve işaret etmez, bu yüzden işin geçerli agent atananını kullanır ve taze bir oturum ile çalışma diziniyle başlar.

Görev tamamlanması ve iş tamamlanması

completed, yalnızca bu belirli görevin normal şekilde bittiği anlamına gelir — işin hedefine ulaşıldığını doğrulamaz. Sonucu yine de inceleyebilir, tartışmaya devam edebilir, gereksinim ekleyebilir veya agent'ı tekrar tetikleyebilirsiniz.

Bir işin bitip bitmediği, işin gerçek ilerlemesine ve durumuna bakılarak değerlendirilir.

Durum ve zaman aşımı hızlı referansı

Aşağıdaki sayılar, sorun giderirken hızlıca çapraz kontrol yapabilmeniz için sunucunun varsayılan yapılandırmasını yansıtır.

DurumAnlamıZaman aşımı ve sonucu
deferredDaha sonra tetiklenmek üzere zamanlanmışZamanlanan anda queued'a girer, ardından aşağıdaki kurallar uygulanır
queuedBir runtime'ın üstlenmesini bekliyorRuntime'ı kalp atışı gönderdiği sürece bekler; her durumda kuyruğa girdikten sonra en az bir yeniden bağlanma toleransı kadar bekler; yalnızca her iki pencere de dolduğunda başarısız olur ve otomatik olarak yeniden denenmez
dispatchedÜstlenildi; araç başlıyorBu durumda 5 dakikadan fazla kalırsa başarısız sayılır
waiting_local_directoryYerel dizin kilidinin serbest kalmasını bekliyorKendine ait bir zaman aşımı yok; dizin serbest kalır kalmaz başlangıç akışına döner
runningYapay zekâ kodlama aracı çalışıyorSabit bir süre sınırı yok; canlılık runtime kalp atışını izler — her 15 saniyede bir; kalp atışını kaybeden bir runtime en geç yaklaşık 3 dakika içinde çevrimdışı işaretlenir ve görevleri de onunla birlikte başarısız olur

Otomatik yeniden deneme yalnızca aşağıdaki geçici arızaları kapsar ve yalnızca bir işe veya sohbete bağlı görevler için geçerlidir (Otopilot'un yalnızca çalıştır modu hariç):

Otomatik yeniden denenebilir başarısızlık nedeniDeneme tavanı
Runtime çevrimdışıVarsayılan olarak 2 (ilk çalıştırma + 1 yeniden deneme)
Bir daemon yeniden başlatmasından sonra geri alınmışVarsayılan olarak 2
Platformun karar verdiği çalıştırma zaman aşımıVarsayılan olarak 2
Codex anlamlı çıktı olmadan takıldıVarsayılan olarak 2
Skill paketi indirme hatasıVarsayılan olarak 2 (bu noktada agent süreci henüz başlamamıştır; zaten indirilmiş paketler yerel önbellekten gelir)
Araç ağ kesintisi3'e kadar; son deneme yaklaşık 5 saniyelik bir gecikmeden sonra başlar

Diğer tüm başarısızlık nedenleri (kimlik doğrulama, kota, yapılandırma, model ve benzerleri) hiçbir zaman otomatik olarak yeniden denenmez; önce nedeni giderin, sonra elle yeniden deneyin.

Sırada