Tarayıcı sarmalayıcılarından kısıtlı bilgisayar kullanımına

Daha yetenekli ajanlar, soyutlamaya daha az dayanan tarayıcı otomasyonu ve daha dikkatle kısıtlanmış yürütme ortamları gerektirir.

Yönetici özeti

  • Bilgisayar kullanımı nedir ve neden önemlidir? Bilgisayar kullanımı, geniş kapsamlı sonuçları olan basit bir fikirdir: modellerden soruları yanıtlamalarını istemek yerine; web sitelerinde gezinerek, formları doldurarak, iş akışlarında ilerleyerek ve görevleri baştan sona özerk biçimde tamamlayarak yazılımları kullanmalarını isteriz.

  • Bu yaklaşım; uçtan uca rezervasyonlar, e-ticaret ödeme süreçleri, çok adımlı seyahat planlama ve doğrudan bir API karşılığı bulunmayan arka ofis iş akışları gibi, bugün farklı arayüzlere dağılmış çok sayıda gerçek dünya görevinin önünü açar. Bunlar yeni sorunlar değildir. Yeni olan, bu sorunları genel amaçlı modellerle çözmenin artık mümkün olmasıdır.

  • Anthropic ve OpenAI'ın son sistemleri; yalnızca harekete geçmekle kalmayıp durum hakkında akıl yürüten, hataları telafi eden ve göreve özel çözümleri anında oluşturan ajanların mümkün olduğunu gösterdi. Bu, tarayıcıyı ajanlar için genel bir yürütme ortamına dönüştürürken acil bir tasarım sorusunu da gündeme getirir: Bu ortamın ne kadarını modele açmalıyız?

  • İlk sistemler bu soruyu, tarayıcıyı güvenli ve önceden tanımlanmış sabit bir eylem kümesiyle sarmalayarak yanıtladı. Bu yazıda savunacağımız üzere, söz konusu yaklaşım sınırlarına ulaşmaya başladı.

Yönetici özetini gösteren şema.

Tarayıcı ajanları geliştirirken sık rastlanan bir içgüdü vardır: modele fazla güvenmemek.

Bu nedenle tarayıcıyı sarmalarız. click, type, scroll, select ve read_text gibi önceden tanımlanmış araçları kullanıma açarız. Belge Nesne Modeli'ni (DOM) basitleştiririz. Eylem alanını daraltırız. Tasarladığımız soyutlamalarla davranışı anlaşılır ve denetlenebilir hâle getirmeye çalışırız.

Bu, makul bir başlangıç noktasıdır. Ancak giderek daha belirgin biçimde uzun vadede yanlış mimari olduğu da görülüyor.

En üst seviye modeller geliştikçe sorun artık yalnızca modelin araçlardan yoksun olması değildir. Asıl sorun, modeli temel sistemin fazlasıyla büyük bir bölümünü görünmez kılan soyutlamalar üzerinden çalışmaya zorlamamızdır. Karmaşık ve dinamik bir ortamı sabit bir eylem arayüzüne sıkıştırıyor, ardından modelden bu bilgi kaybına rağmen iyi performans göstermesini istiyoruz.

Bu ödünleşim giderek cazibesini yitiriyor.

İncelediğimiz dönüşümü anlatmak kolay olsa da sonuçları oldukça önemlidir. Ajanı önceden tanımlanmış eylemler arasından seçim yapan bir sistem olarak görmek yerine, kısıtlı bir çalışma zamanı içinde çalışan program sentezleyicisi olarak ele alıyoruz.

Modeller artık gerçekten çok iyi ve soyutlanmış koruyucu sınırlarınıza ihtiyaç duymuyorlar. Hedeflerine ulaşana kadar görevi tasarlamak, yürütmek ve yinelemek için eksiksiz eylem alanına ihtiyaç duyuyorlar.

Bu yazı, yoğun soyutlamalı tarayıcı otomasyonundan kısıtlı bilgisayar kullanımına geçişi ve sistemleri bu şekilde tasarladığınızda nelerin değiştiğini ele alıyor.

Soyutlamalar neden yetersiz kalır?

Sorun, sabit eylem arayüzlerinin kavramsal olarak yanlış olması değildir. Sorun, web'in bu arayüzlerle uyumlu çalışmamasıdır.

Soyutlamaların neden yetersiz kaldığını gösteren şema.

Modern arayüzler; eşzamansız durum güncellemeleri, sentetik olay sistemleri ve kendi yaşam döngülerine sahip, farklı kaynaklı iframe'lerde çalışan gömülü üçüncü taraf bileşenleriyle React, Vue ve Angular üzerine kuruludur. “Bu giriş alanına yaz” diyen bir sarmalayıcı, yalnızca sayfanın sizin yazma tanımınızla aynı fikirde olması hâlinde doğru çalışır. Birçok sayfa aynı fikirde değildir. Bir değeri doğrudan ayarlamak, çoğu zaman çatının değişiklik algılama mekanizmasını tamamen atlar. Giriş alanı doldurulmuş görünür. Doğrulama hiç tetiklenmez. Form çalışmaz durumda kalır.

Bunu yamayabilirsiniz. React girişleri için özel durumlar ekleyebilir, odaklanmanın ardından blur olayları gönderebilir ve durumu okumadan önce ağın boşta kalmasını bekleyebilirsiniz. Her yama kendi bağlamında doğrudur. Ancak bu yamalar bir araya geldiğinde, bakımı giderek zorlaşan ve daha önce gördüğünüz sitelere giderek daha bağımlı hâle gelen bir sistem oluşturur.

Daha temel sorun, etkileşimlerin nasıl çalışması gerektiğine ilişkin varsayımları soyutlama katmanına kodlamanız ve ardından web'in farklı varsayımları olduğunu keşfetmenizdir.

Soyutlama gerçek bir akışla karşılaştığında ne olur?

Farklı kaynaklı bir iframe içinde Stripe veya Adyen aracılığıyla gömülmüş bir ödeme formunu düşünün. Sarmalayıcınız, form ayrı bir kaynakta bulunduğu için ona doğrudan erişemez. read_text aracınız formun iç durumunu gözlemleyemez. type aracınız formun giriş alanlarına erişemez. Sarmalayıcı tabanlı bir ajan burada çıkmaza girer. Soyutlama, ana belge için tasarlanmıştır. Asıl görev ise soyutlamanın göremediği bir yerdedir.

Benzer uyumsuzluklar, daha az belirgin akışlarda da görülür. Bir çatının denetlediği açılır menü, görünür öğe gerçek denetim olmadığı için doğrudan tıklamalara hiç yanıt vermeyebilir. Temeldeki durum geçişini tetiklemek için bir dizi klavye olayı gerekebilir. Dışarıdan bakıldığında kullanıcı arayüzü tıklanabilir görünür. Soyutlama “tıkla” der. Hiçbir şey olmaz.

Ya da görünür DOM güncellemelerinin iç durum değişikliklerinin gerisinde kaldığı çok adımlı bir iletişim kutusu akışını düşünün. Bir sonraki doğru eylem, sarmalayıcınızın görebildiği öğelere henüz yansımamış bir durum geçişine bağlıdır. Sarmalayıcı tabanlı ajan, sistemi eksik bir görünüm üzerinden değerlendirdiği için sonunda ya çok erken harekete geçer ya da güncelliğini yitirmiş durumu okur.

Her durumda soyutlama, ajanın gerçekten ihtiyaç duyduğu sinyalleri gizler.

Daha alt düzeyde çalışan bir model; canlı DOM'u inceleyerek, çerçeve sınırları hakkında akıl yürüterek ve ilgili yüzeye özel etkileşim dizisini sentezleyerek bu durumların üstesinden gelebilir. Bunun nedeni modelin doğası gereği daha akıllı olması değildir. Nedeni, daha önce ayıklanmış bilgilere erişebilmesidir.

Mimari dönüşüm

Üzerinde çalıştığımız değişikliği anlatmak kolaydır: Modelden önceden tanımlanmış eylemleri seçmesini istemek yerine ona daha alt düzey bir yürütme yüzeyi sunuyor ve bu yüzeyi soyutlama tasarımıyla değil, çalışma zamanı politikasıyla kısıtlıyoruz.

Bu tasarım tercihi, sektörde başlayan daha geniş bir dönüşümden kaynaklanıyor. Bu dönüşüm; dayanıklı olsa da modelin farklı ortamlara uyum sağlama becerisini ortadan kaldıran, özel amaçlı ve koda sabitlenmiş araçlar yerine ajanın çalışma zamanında düzeltme yapma ve yüksek kaliteli kod üretme konusundaki doğal yeteneğinden yararlanan daha alt düzey temel araçları öne çıkarıyor.

Claude Code'un birçok geliştiricinin araç setinde başlıca tercihlerden biri olmasını ve sektörün genelinde terminal tabanlı ajanlara yönelimi düşünün. Claude Code'un en büyük avantajı modelin kendisi değil, daha alt düzey düzeneğidir. Modele daha az sayıda, daha modüler ve daha alt düzey araçlar, yani terminal sunmak, araç çağırma performansını iyileştirir. Bunun başlıca nedeni, ajanın bağlam kapasitesini dolduran genel amaçlı araçları kullanmaya çalışmak yerine eldeki görev hakkında akıl yürütebilmesi ve özel betikler oluşturabilmesidir.

Tarayıcı otomasyonu kullanım senaryosunda bu, modelin her şeyi önceden oluşturulmuş sabit bir eylem kümesine eşlemek yerine canlı sayfa durumunu doğrudan inceleyebilmesi, çerçeveler arasında geçiş yapabilmesi ve mevcut arayüze özel etkileşim kodu oluşturabilmesi anlamına gelir.

Model, seçim yapan bir sistemden çok çalışma zamanı kodunun yazarı gibi davranır. Mevcut durumu inceler, arayüz hakkında akıl yürütür ve o duruma özel etkileşim mantığını sentezler. Çok adımlı diziler oluşturabilir, sıra dışı akışlara uyum sağlayabilir ve devam etmeden önce sonuçları doğrulayabilir. Bir eylem başarısız olduğunda model temeldeki hatayı görür ve kendini düzeltir. Bu yaklaşım daha güçlü ve daha risklidir; ancak sorunun gerçek yapısına çok daha yakındır.

Daha da önemlisi, soyutlama katmanını kaldırmak sistemi daha az disiplinli hâle getirmez. Yalnızca disiplinin uygulandığı yeri değiştirir.

Daha önce sarmalayıcı tasarımı ve uç durumların işlenmesi kapsamında yapılan işler üç alana taşınır: bir operasyonel eğitim biçimine dönüşen prompt; gezinme kapsamı, hassas eylemler ve yeniden deneme davranışı gibi sınırları uygulayan çalışma zamanı ve yalnızca görevin başarıya ulaşıp ulaşmadığını değil, ara adımların doğru olup olmadığını da değerlendiren değerlendirme katmanı. Daha az kırılgan soyutlama. Daha güçlü çevre sistemleri.

Şaşırtıcı sonuç: daha basit ürün kodu, daha geniş genelleme

Bu dönüşümün sonuçlarından biri, sistemin geneli daha yetenekli hâle gelirken ürün kodunun çoğu zaman basitleşmesidir. Ajan, etkileşim kalıplarını yeniden kullanılabilir sarmalayıcılara kodlamak yerine çalışma zamanında davranış sentezler. Giderek genişleyen özel araçlar ve uç durum mantığı yerine, az sayıda güçlü temel bileşeni ve kısıtlı bir yürütme ortamını sürdürürsünüz.

Bu, sistemin genelleme biçimini de değiştirir. Sarmalayıcı tabanlı bir ajan, daha önce oluşturduğunuz sarmalayıcılara benzeyen görevlerde iyi genelleme yapar. Kısıtlı bir çalışma zamanı ajanı, görünür arayüz farklı olsa bile ortak bir yürütme altyapısını paylaşan görevlere genelleme yapar.

Örneğin bir arama formu, rezervasyon akışı veya ayarlar sayfasıyla etkileşim kurmak, kullanıcı arayüzü düzeyinde tamamen farklı görünebilir. Ancak temelde aynı kalıpları paylaşırlar: durumu okuma, olayları tetikleme, sonuçları doğrulama ve eşzamansız güncellemeleri işleme. Bu düzeyde çalışan bir sistem, farklı görevler arasında daha doğal biçimde aktarım sağlar.

Yeniden kullanılabilir bileşen, eylem listesi değildir. Modelin durumu inceleme, güvenli şekilde hareket etme ve sonuçları doğrulama becerisidir.

Fazla yardımcı olmayın, kısıtlayın

Fazla yardımcı olmak yerine kısıtlamayı gösteren şema.

Bu çalışmadan çıkarılacak en açık ders, güvenilirliğin modele daha fazla yardımcı işlev sunmaktan kaynaklanmadığıdır. Güvenilirlik çoğu zaman modele daha az sayıda ama daha güçlü temel bileşenler sunmaktan ve bunları doğru biçimde kısıtlamaktan gelir. Aşırı yardım, bir görevin nasıl yapılması gerektiğine ilişkin varsayımları koda sabitler. Kısıtlamalar güvenli çalışma sınırlarını belirler ve modelin yerel olarak daha iyi çözümler keşfetmesini sağlar.

Daha güçlü bir yürütme yüzeyi, daha hassas bir güvenlik modeli de gerektirir. Ajan artık önceden tanımlanmış az sayıdaki eylemle sınırlı olmadığında, fiilen doğrudan gerçek yazılımlar üzerinde çalışır. Bu da risk profilini anında değiştirir.

Tasarımda dikkate alınması gereken dört konu vardır:

Verilerin açığa çıkması. Ajan gerçek arayüzlerle etkileşim kuruyorsa sık sık hassas bilgilerle karşılaşır. Bu nedenle maskeleme ve erişim denetimine disiplinli bir yaklaşım gerekir. Veriler yalnızca yürütme için gerekli olduğunda gösterilmeli; gözlemlenebilirliğin sistemin en hassas bölümüne dönüşmemesi için günlükler ve izler dikkatle işlenmelidir.

Yürütme kapsamı. Güçlü bir ajan dilediği gibi çalışamamalıdır. Uygulamada bu; nereye gidebileceğinin, hangi alan adlarına erişebileceğinin ve hangi sistemlerle etkileşim kurmasına izin verildiğinin kısıtlanması anlamına gelir. Bu kısıtlamalar, prompt içinde uyulması beklenen kurallar olarak bırakılmamalı; çalışma zamanı düzeyinde uygulanmalıdır.

Ortama duyulan güven. Modern arayüzlerde yanıltıcı veya etkin biçimde kötü niyetli talimatlar, içerikler ya da akışlar bulunabilir. Sayfa içeriği yoluyla prompt enjeksiyonu gerçek bir saldırı yüzeyidir. Ajanın amaçlanmayan yönlendirmeleri izlememesi için sistemde açık bir talimat hiyerarşisi, doğrulama kontrolleri ve sonlandırma koşulları bulunmalıdır.

Özerklik yelpazesi. Her eylem tamamen özerk olmamalıdır. Birçok üretim ortamında özerkliği bir yelpaze olarak ele almak önemlidir. Sistem keşif ve yürütme biçiminde son derece ajan odaklı olabilir, ancak belirli eylem kategorileri için yine de onay gerektirebilir.

Temel ilke basittir: modele daha fazla güç vermek, onu çevreleyen sistemi de güçlendirmeyi gerektirir. Politikasız özerklik, üretime hazır değildir.

Düşünce biçimimizi değiştiren yeni çerçeve

Şu soruyu sormayı bıraktık: Hangi tarayıcı eylemlerini kullanıma açmalıyız?

Şunu sormaya başladık: Modele eksiksiz bir eylem alanı sunmak için ne yapabiliriz ve bunun çevresinde güvenliği koruyacak çalışma zamanı politikalarını nasıl oluşturabiliriz?

Soruyu böyle yeniden çerçevelemek, önem verdiğiniz noktaları değiştirir. Eylem sınıflandırmaları ve sarmalayıcıların eksiksizliği daha az önem taşır. Çalışma zamanı politikası, gözlemlenebilirlik ve adım düzeyinde değerlendirme daha fazla önem taşır. Model yetenekleri ile sistem tasarımı birbirinin yerine geçmez. Modeller geliştikçe sistemin üstlendiği iş azalmaz, daha da önem kazanır.

Demolarda çalışan tarayıcı ajanları, genellikle görevin dar kapsamlı ve ortamın uyumlu olması sayesinde başarılıdır. Üretim sistemleri ise farklı özellikler gerektirir: kısıtlı yürütme, ölçümlenebilir davranış ve doğru bir sonucu şans eseri elde edilmiş bir sonuçtan ayırabilen değerlendirme.

Son söz

Daha az sarmalayıcı tasarımı. Daha fazla sistem mühendisliği.

Tarayıcı ajanlarına odaklanmış olsak da bu yaklaşım, bilgisayar kullanımını bir sistem disiplini olarak ele alan daha geniş bir düşünce biçimine işaret ediyor.

Yazar

Yuxi Huan, Yuliyan Stefanov Savchev, Sheah Wen Liaw