Vercel Labs, bir yapay zekâ ajanına masaüstünde el veren agent-desktop'u yayımladı: araç, ekran görüntülerine bakmak yerine işletim sisteminin erişilebilirlik ağacını okuyor. Apache-2.0 lisanslı araç Ekim sonunda kamuya açıldı ve bugün 2.243 yıldızla GitHub'da en hızlı yükselen geliştirici deposu oldu.
Piksele karşı argüman
Çoğu "computer use" ajanı, elinde ekran görüntüsü olan bir insan gibi çalışır: ekranı yakala, modele düğmenin nerede olduğunu sor, o koordinatlara tıkla. Geneldir ama kırılgandır — bir modal, bir kaydırma, bir tema değişikliği, farklı bir ekran ölçeklemesi ve koordinatlar hiçbir yeri işaret etmez. agent-desktop diğer yolu seçiyor. İşletim sistemine ekranda gerçekte ne olduğunu soruyor — ekran okuyucuların kullandığı yapısal ağacın aynısını — ve ajana ad, rol ve her öğe için bir referans içeren liste veriyor.
``` agent-desktop snapshot --app Finder -i agent-desktop click @s8f3k2p9:e8 agent-desktop snapshot --app Finder -i ```
Döngü bilinçli: gözle, bir referans üzerinde işlem yap, doğrulamak için yeniden gözle. Referanslar anlık görüntüye bağlıdır; eski bir referans sessizce o konuma gelen yeni öğeye tıklamak yerine `STALE_REF` ile reddedilir — koordinat tabanlı otomasyonu, üzerinde gerçek iş olan bir makinede tehlikeli yapan tam olarak bu hata modu.
Kutuda ne var
npm üzerinden dağıtılan bir Rust ikili dosyası (`npm install -g agent-desktop`), x64 ve ARM64 için yerel derlemeler, ayrıca `libagent_desktop_ffi` adlı bir C kütüphanesi; böylece bir program her işlem için CLI başlatmak yerine aracı kendi süreci içinde çağırabiliyor. Altmış komut adı, 56'sı çalışır durumda: anlık görüntüler, arama, tıklama, yazma, değer atama, pencere yönetimi, bildirimler, pano, bekleme, oturumlar, izler. macOS'ta Erişilebilirlik izni gerekiyor; Windows'ta terminalin bütünlük düzeyindeki uygulamalar için izin gerekmiyor; Linux'ta `at-spi2-core` ile grafik oturum istiyor.
Varsayılan olarak ekransız çalışıyor: referans eylemleri imleci oynatmadan ve odağı çalmadan erişilebilirlik API'si üzerinden gidiyor; fiziksel girdi istenirse `--headed` bayrağı var. Dört komut (`key-down`, `key-up`, `mouse-down`, `mouse-up`), bir servis tutulu tuşu ya da düğmeyi güvenilir biçimde bırakabilene kadar çalışmayı reddediyor — bir ajanın jestin ortasında ölmesi durumunda ne olacağını birinin düşündüğünü gösteren türden bir ayrıntı.
Keskin kenarlar
Erişilebilirlik ağaçları eşit değil. Bir tarayıcı zengin bir ağaç sunar; kendi çizimini yapan bir oyun motoru neredeyse hiçbir şey sunmaz; Electron uygulamaları arada bir yerde durur ve çatı sürümüne göre değişir. README'nin kendi önerisi — yoğun bir uygulamayı önce `snapshot --skeleton` ile haritala, sonra tek bir bölgeye in — tam bir ağacın kullanışlı olamayacak kadar büyüyebildiğinin itirafı.
Bir de projenin kendi belgelerinde açıkça yazılan gizlilik yüzeyi var. Anlık görüntüler, pano okumaları, ekran görüntüleri ve komut çıktıları özel masaüstü içeriği barındırabilir; günlüklere ve yüklemelere girmemeli. JEV adlı isteğe bağlı yardımcı, ekran açıklamalarını yapılandırılmış bir model sağlayıcısına gönderiyor — yerel CLI'den ayrı, ama "ajan ekranınızı görebiliyor" cümlesinin sonuçları olduğunu hatırlatan bir ayrıntı.
Neden önemli
İlginç olan, bir ajanın daha fazla düğmeye basabilmesi değil; yapısal arayüzün, model ile makine arasındaki arayüz olarak işlenmiş pikselleri yeneceği bahsi. Bu tutarsa aynı ilkel, eski bir ERP istemcisi, bir elektronik tablo ve bir ayarlar penceresi için de çalışır — döngüde görüntü modeli olmadan ve uygulama başına entegrasyon olmadan. Vercel bu bahsi yapan tek şirket değil, ama aracı CLI, C ABI ve ajan beceri dosyası olarak açık biçimde yayımlamak, konuyu bugüne kadar soyut düzlemde tartışan herkesin önüne somut bir uygulama koyuyor.




