İçeriğe geç
ivralo
Bölümler

Dokümantasyon / Geliştirici modu

Instance'lar

Instance, tek bir iş için açılan, bir uzmanın sıfırdan bir kopyasıdır: bir brief alır, kendi context'inde çalışır ve bir rapor döndürür. Instance araçları, bir instance'ın neler yapabileceği, kaç tane ve ne kadar derine açılabileceğine dair sınırlar ve instance yerine bir ekip arkadaşına soru sormak bu sayfada.

Instance ne işe yarar

Ana ajan işin çoğunu kendisi yapar (Repo'da çalışmak). Temiz bir context ya da daha dar bir yetki işe yarayacaksa bir instance açar. Örneğin kendi context penceresini dolduracak bir araştırma, hiçbir şeyi değiştirmeyen bir ajana yaptırılan bir inceleme ya da aynı anda yürüyecek birkaç iş için. Uzmanlar da instance açabilir.

Bir instance bir preset'ten kurulur. Preset, bir uzmanın tanımıdır: yetkileri, ne işe yaradığını anlatan tek bir satır ve bir araç çağrısı sınırı. Instance, ekip üyesi nasıl kuruluyorsa tam olarak öyle kurulur: modeli, bütün skill rafı ve araçlarıyla. Brief'le ve kendisine gösterilen dosyalarla başlar, konuşmanın geri kalanından hiçbir şey almaz. Uzmanı model seçer ve brief'i de model yazar, ama araçları hiçbir zaman model seçmez.

Araçlar

run_instance(specialist, brief, paths=[], wait=True)
instance_report(handle, wait=True)
tell_instance(handle, text)
close_instance(handle)
AraçNe yapar
run_instanceKendi başına anlaşılır bir brief ve başlangıç için çalışma alanındaki paths ile bir specialist instance'ı açar (investigator gibi bir preset anahtarı). wait=True ile raporu döndürür. wait=False ile hemen bir handle döndürür ve instance arka planda çalışır
instance_reportRaporu alır ya da wait=False ile instance'ın o ana kadar ne yaptığını gösterir
tell_instanceInstance'a bir sonraki araç sonucuyla birlikte ulaşacak bir mesaj gönderir
close_instanceInstance'ı erken bitirir; o ana kadar yaptıklarının raporu saklanır

Örneğin ana ajan üç instance açabilir: "gece çalışan job'u hangi deploy bozdu, bul" diye bir Incident Investigator, "jobs/nightly.py'deki off-by-one hatasını düzelt ve bir test ekle" diye bir Code Engineer ve "değişikliği incele, neyi doğrulamadığını söyle" diye ikinci bir Investigator. Hepsini wait=False ile açar, sonra üç raporu bittikçe toplar. İnceleme için en uygun ajan Investigator'dır, çünkü hiçbir zaman düzenleme yapmaz.

Oturumda her instance'ın çağrıları, onu açan çağrının altında ve başında adıyla akar, örneğin Code Engineer instance 2 ›. Instance raporunu verince bunlar tek satıra katlanır. Ekip panelinde (Ctrl+T) her instance için bir satır bulunur.

Bir instance neler yapabilir

Yetkileri daralır. Bir instance, uzmanının yetkileriyle onu açanın yetkilerinin kesişimine sahiptir. Bu, hiçbir şey kurulmadan önce kodda kontrol edilir. Yalnızca okuma yapan bir ajanın instance'ları da, ne kadar derine inilirse inilsin, yalnızca okuma yapar. Git'e yazma yetkisi (git.commit, git.push) hiçbir derinlikte bir instance'a geçmez. Açan ajanın, uzmanın işi için gereken yetkilerden hiçbiri yoksa uzman, işini yapacak hiçbir şeyi olmadan açılmaz; açma isteği reddedilir ve ret mesajında neyin eksik olduğu yazar:

  • Incident Investigator bir Librarian açamaz, çünkü web erişimi yoktur. Yalnızca kod okuyan bir Code Engineer açabilir;
  • Code Engineer bir Investigator ya da Librarian açamaz. Araştırmaya ihtiyaç duyan bir coder bunu raporunda belirtir;
  • ana ajanın hiçbir hesabı okuma yetkisi yoktur. Bu yüzden açtığı bir Secretary (Google) ya da GitHub Clerk instance'ı önce size sorar, başında kimse yokken de reddedilir. Verdiğiniz onay o instance'a aktarılır ve raporda bu belirtilir.

Bu şekilde yetkisi daraltılan bir instance'a durum ilk mesajında söylenir. Raporunda da neyden yoksun olduğu yazar.

Değişiklikler için size sorar. Bir instance'ın düzenlemeleri, komutları ve Python'u, ekip üyelerininkiyle aynı diyaloğa düşer. Diyalogda kimin instance'ının kimin adına sorduğu ve brief yazar. ivralo ask, zamanlanmış bir görev ya da job gibi onay verecek kimsenin olmadığı yerlerde instance yalnızca okuma yapar ve raporunda neyi değiştireceğini yazar. Gönderimler her seferinde onay ister.

Bir Code Engineer instance'ı kendi worktree'sinde çalışır. Worktree, paralel coder'larınkilerin yanında, HEAD'den açılır: <home>/worktrees/<slug>-<hash>/instance-<hex>. Commit'lenmemiş değişiklikleriniz bu worktree'de yoktur ve instance'a bu söylenir. Instance rapor verdiğinde değişikliği, entegrasyon diyaloğundan geçen tek bir patch olarak geri gelir (Düzenleme ve onaylar). Düzenlemeler oturum boyunca kabul edildiyse ya da allow_tools'ta edit_file varsa diyalog çıkmaz. Patch'i reddederseniz worktree saklanır ve raporda nerede olduğu yazar. İşiniz bitince git worktree remove <path> ile silin. Çakışma olursa git'in işaretleri, çağıranın çözmesi için çalışma alanınızda kalır. Bir changeset açıkken düzenleme yapacak hiçbir Code Engineer instance'ı açılmaz.

Web okuyan çalışma kısıtlanır. Web'den bir şey okumuş bir çalışma (kendisi okumuş olsun, bir instance'ın raporu ya da bir ekip arkadaşının cevabı üzerinden olsun) artık yeni bir instance açamaz ve hiçbir ekip arkadaşına soru soramaz.

Rapor

Rapor, ivralo'nun yazdığı tek bir satırla başlar: kim olduğu, çalıştırması, çağrıları, reddedilen çağrılar, token'ları ve süresi. Ardından instance'ın cevabı, yaptığı her çağrı için bir satır ve neleri değiştirdiği gelir. Instance'ın çalışması ayrı bir oturum olarak saklanır ve konuşmalarınız arasında hiçbir zaman listelenmez. ivralo why bir iddiayı rapordan başlayıp bu oturumun içine kadar takip eder.

Ne kadar yaşar

Instance tura değil, oturuma aittir. Bir handle sonraki turda da çalışır. Instance şu durumlarda biter: raporu alındığında, kapatıldığında ya da oturum bittiğinde (çıkış, /new ya da bir ivralo ask çalışmasının sonu). Tur özeti hangisinin nasıl bittiğini gösterir. Bir tur sırasında Esc'e basarsanız çalışan instance'ların durdurulmasını mı yoksa devam etmesini mi istediğiniz sorulur.

/instances              açık instance'lar, çalışan ya da raporu hazır olan
/instances stop 2       birini ve açtığı her şeyi durdur
/instances stop all     hepsini durdur

Sınırlar

Instance'lar kendi instance'larını açabilir: bir araştırma instance'ı işi iki okuyucuya dağıtabilir, bir coder instance'ı da kendi inceleyicisini açabilir.

AyarVarsayılanNeyi sınırlar
IVRALO_INSTANCES24Çağıran ajan başına açık instance sayısı (ana ajanın ve her uzmanın kendi sayacı vardır); 0 run_instance'ı kaldırır
IVRALO_INSTANCE_DEPTH2Derinlik: ana ajanın ya da bir ekip üyesinin açtığı instance 1. derinliktedir ve başka instance açabilir; onların açtıkları açamaz
IVRALO_INSTANCES_PER_OPENER8Bir instance'ın aynı anda açık tutabileceği instance sayısı
IVRALO_INSTANCE_BUDGET10000001. derinlikteki bir instance'ın ve altındaki her şeyin ortak kullandığı token miktarı; bitince altında yeni bir şey açılmaz

Küçük bir modelin tek bir işi otuz ayrı context'e bölmesini engelleyen, bu derinlik ve bütçe sınırlarıdır. Her instance ayrı bir model stream'idir. Bir Code Engineer instance'ı ayrıca bir worktree ve bir worker süreci demektir. Makinenizin kapasitesini göz önünde bulundurun.

Bir coder instance'ının açtığı coder instance'ı, üst instance'ın checkout'undan açılır ve patch'i ikinci kez sorulmadan üst instance'ın worktree'sine uygulanır. Size yalnızca bir kez, üst instance'ın patch'i çalışma alanınıza geldiğinde sorulur.

Instance yerine bir ekip arkadaşına sormak

Bütün bir işe değil de tek bir cevaba ihtiyacı olan bir uzman, ask_member ile bir ekip arkadaşına soru sorabilir. Örneğin Code Engineer, Librarian'a bir kütüphanenin dokümantasyonunda ne yazdığını sorabilir. Ekip arkadaşı kendi çalışmasında cevabı hazırlar. Transcript bunu soran ajanın tek bir adımı olarak gösterir. Adımı açınca kimin cevap verdiği, cevap ve ekip arkadaşının yaptığı her araç çağrısı için bir satır görünür.

Çalışma alanını ya da web'i okuyan bir ekip arkadaşına sorulan soru diyalog açmaz. Bir hesabı okuyan birine (e-postanız için Secretary, GitHub Clerk) sorulan soru ise önce size sorulur. Ekip arkadaşının çalışması onay gerektiren bir çağrı yaparsa bu çağrı da aynı diyaloğa düşer. Diyaloğun başlığında kimin kime cevap verdiği yazar.

AyarVarsayılanEtkisi
IVRALO_ASK_MEMBERtruefalse soru sormayı kapatır
IVRALO_ASK_MEMBER_TIMEOUT300Bir sorunun, ekip arkadaşının çalışması iptal edilmeden önce sürebileceği saniye
IVRALO_ASK_MEMBER_LIMIT5Bir uzmanın tek bir çalışmada sorabileceği soru sayısı

Ana ajan ekip arkadaşlarına soru sormaz: ya iş devreder ya da instance açar. Hiçbir instance'ta da ask_member bulunmaz.