deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak GitHub Blog

GitHub, 800.000 satırlık Copilot runtime'ını Rust ile yeniden yazdı; işin çoğunu yapay zeka ajanları üstlendi

GitHub, Copilot agent runtime'ını TypeScript ve Node.js'den 800.000 satırı aşan production Rust koduna taşırken kodun büyük kısmının yapay zeka ajanları tarafından yazıldığını belirtiyor; çalışma, 128 adımlı kademeli pull request ile teslim edildi.

GitHub, 800.000 satırlık Copilot runtime'ını Rust ile yeniden yazdı; işin çoğunu yapay zeka ajanları üstlendi

Ajanların çoğunlukla yazdığı 800.000 satırlık yeniden yazım

GitHub, Copilot agent runtime'ını — Copilot CLI'nin, Copilot uygulamasının ve GitHub Copilot SDK'sının arkasındaki bileşeni — 800.000 satırı aşan production Rust koduna tamamen yeniden yazdı ve GitHub Blog'a göre kodun büyük kısmını yapay zeka ajanları yazdı. Çalışma, ana dala merge edilen ve tek bir geçiş tarihi beklenmeden kademeli olarak yayınlanan 128 pull request ile tamamlandı.

Runtime, bugünkü GitHub Copilot cloud agent (CCA) için geliştirilmiş olarak Node.js ve V8 motoru üzerinde TypeScript ile hayatına başladı ve sorumlulukları büyüdükçe bu yığında kaldı. GitHub, taşıma sırasında ortaya çıkan birkaç gerilemenin hızla yakalanıp düzeltildiğini ve runtime performansının bu süreçte katbekat arttığını söylüyor. Şirket, bu çabayı ajan öncesi dönemde bir ekibi bir-iki yıl meşgul edecek bir iş olarak tanımlıyor; oysa bu iş, ekibin geri kalanı runtime'ı büyütmeye devam ederken ağırlıklı olarak tek bir geliştirici tarafından birkaç ayda tamamlandı.

Eski mimari neden ölçeklenemedi

Runtime yalnızca CLI'nin motoru değil. Yazıda, genişleyen bir ürün setini desteklediği belirtiliyor — VS Code, Visual Studio, CCA, Copilot Code Review, Copilot Cowork, Copilot Studio ve Excel, Outlook, PowerPoint ve Word'deki Copilot özellikleri — ve bu ürünlerin çoğu başlangıçta kendi agent döngülerini uygulamış, ardından Copilot SDK'sını benimsemiş durumda; böylece tek bir yerdeki düzeltme hepsine ulaşıyor.

CLI, başlangıçta bir agent döngüsünün etrafına Ink ve React ile inşa edilmiş bir terminal arayüzüydü ve iki katman hiçbir zaman düzgün biçimde ayrılmamıştı. Bir SDK gerekli hale geldiğinde pratik kısayol, onu CLI'nin üzerine katmanlamaktı: SDK, CLI'yı headless bir alt süreç olarak başlatıyor ve çağrıları JSON-RPC üzerinden yönetiyordu.

Bu gerçek maliyetler getirdi. Her CopilotClient, Node ve V8 çalıştıran ikinci bir sürecin başlatılması anlamına geliyordu — JavaScript'i parse etmek, JIT katmanlarını ısıtmak ve V8'nin bellek ayak izini taşımak zorundaydı; bu da en azından kabaca 100 MB'lık bir working set demekti. Altı dil SDK'sının (C#, TypeScript, Python, Rust, Go ve Java) her biri, host uygulamasının başka hiçbir işine yaramayan ikinci bir dil runtime'ının bedelini ödedi. Her event, mesaj ve sanallaştırılmış filesystem işlemi bir süreç sınırını aşıyordu, bir Node çöküşü oturumu da birlikte götürüyordu ve operatörler iki süreci denetlemek zorunda kalıyordu.

Özellikle neden Rust

GitHub'ın yenileme için gereksinimleri titizdi: içine gömülü TUI olmamalı, en az bağımlılık ve overhead, süreç dışı çalıştırma yerine süreç içi gömme, güçlü performans ve güvenilirlik, altı SDK dili için temiz FFI birlikte çalışabilirliği ve daha küçük bir tedarik zinciri saldırı yüzeyine, daha güçlü derleme zamanı doğruluk garantilerine sahip bir araç zinciri.

Rust bu kısıtlamalara uydu, ancak yazı bunun TypeScript'e karşı genel bir hüküm olmadığını özenle belirtiyor. Belirleyici faktörler C-ABI ile gömme, düşük başlangıç ve kararlı durum overhead'i ve öngörülebilir kaynak kullanımıydı; doğru hedef dil uygulamaya göre değişiyor. Rust ayrıca zorluklar da getirdi: lifetime'ların ve paylaşılan durumun açıkça modellenmesi gerekti ve yazı, projedeki yaşam döngüsü gerilemelerine işaret ederek bunun pratikte neye mal olduğunun kanıtı olarak gösteriyor.

Taşıma nasıl yürütüldü

Dil değişiminin ötesinde, ekibin ilk yapısal görevi, TUI'ye özgü kodu runtime'dan ayırmaktı; böylece arayüz katmanları onunla iç içe geçmek yerine kesinlikle SDK'nın genel yüzeyinin üzerinde duruyor.

Teslim modeli belki de en öğretici kısım: 128 pull request ana dala girdi ve geldikçe yayınlandı; gerilemeler son bir geçişe ertelenmek yerine süreç içinde bulunup düzeltildi.

Neden önemli

Bu, yapay zeka ajanlarının fiilen tek bir geliştiricinin yönetiminde kodun büyük kısmını yazdığı, kamuya açık biçimde belgelenmiş en büyük production yeniden yazımlarından biri. GitHub'ın kendi çerçevesi, bu ölçekte bir yeniden yazımın ancak ajanlar varolduğunda karşılanabilir hale geldiği yönünde. Bu durum bu vitrin ötesinde de geçerliyse, yeniden yazma ile sürdürme arasındaki ekonomi birçok eski kod tabanı için değişir.

Teslim deseni en az araçing kadar önemli. Production'a kademeli gönderilen pull request'ler, uzun süre çalışan paralel bir branch'ten daha iyi sonuç verdi ve her değişiklik hâlâ küçükken gerilemeler ortaya çıktı.

Uyarılar geçerli: yazı aynı zamanda Copilot'un kendisi için bir vitrin ve ajanların gözetimsiz çalıştığı iddia edilmiyor — kodun çoğu, hepsi değil, ajanlar tarafından yazıldı ve bir insan geliştirici çabayı yönlendirdi. Ölçekte ajan destekli yeniden yazımlar için bir varlık kanıtı olarak ve bir SDK'nın altına Node ile V8 gömmenin çözülen asıl sorun olduğu yönündeki vaka çalışması olarak, mühendislerin sürekli atıf yapacağı bir veri noktası olacak.

  • #rust
  • #github-copilot
  • #ai-agents
  • #typescript
  • #developer-tools

İlgili yazılar