Yazılım geliştirme alışkanlıklarımız son bir iki yılda akıl almaz bir hızla değişti. Eskiden masa başında saatlerce iki büklüm oturup satır satır kod yazarken, bugün otonom yapay zeka ajanlarıyla mimari tartışıyor, refactoring yaptırıyor ve testleri koşturuyoruz.
Hele ki Google Antigravity IDE’nin son güncellemelerinden biri hayatımıza öyle bir konfor soktu ki sormayın: Web Browser Üzerinden Uzaktan Erişim.
Bilgisayarınızda veya sunucunuzda Antigravity’yi açık bırakıyorsunuz; ister salondaki koltukta uzanırken cep telefonunuzdan, ister balkonda çay içerken tabletten tarayıcıyı açıp ajana görevler veriyorsunuz. “Şu servisin unit testlerini yaz”, “API endpoint’ini .NET 10’a migrate et”… Masaya çakılı kalma devri bitti sanıyorsunuz.
Ta ki o meşhur duvara toslayana kadar.
Büyük İkilem (The Remote Catch-22)
Gece yarısı telefonun ekranından heyecanla projeyi ilerletiyorsunuz. Ajan döktürüyor, dosyalar güncelleniyor. Derken ekranda o soğuk bildirim beliriyor:
“You have reached your quota limit.” (Model kotanız doldu.)
Normal şartlarda bilgisayarın başındaysanız ne yaparsınız? Ayarlar’a girer, hesaptan çıkış yapar ve yedekteki diğer Google hesabınızla giriş yaparsınız. 1-2 dakika sürer ama katlanılır.
Fakat uzaktan, yani web browser üzerinden bağlıysanız korkunç bir gerçekle yüzleşiyorsunuz:
- “Sign Out” Butonu Kilitli: Ayarlar menüsüne giriyorsunuz, çıkış yapıp diğer hesaba geçeceksiniz ama buton inaktif (soluk gri ve tıklanamaz)!
- Neden Kilitli? Google mühendisleri haklı olarak şöyle düşünmüş: “Kullanıcı uzaktan web tarayıcısıyla bağlı. Eğer buradan çıkış yapmasına izin verirsek uzaktaki oturum anahtarını da yok eder ve kullanıcı makineye bir daha asla geri bağlanamaz.”
- Sonuç? Tam bir kilitlenme: Bilgisayar başka odada (veya uzak bir sunucuda), siz koltuktaki telefondasınız. Yedekte dopdolu 4 tane daha hesabınız var ama arayüzden çıkış yapamıyorsunuz. Bütün iş akışı bıçak gibi kesiliyor.
İşte tam o kriz anında kendime şu soruyu sordum:
“Madem bilgisayarın başına gitmek istemiyorum ve arayüz beni kilitledi; o zaman bu yapay zeka ajanına kendi kimliğini değiştirtip kendini baştan başlatmayı neden öğretmeyeyim?”
Kaputun Altı: Antigravity Kimlikleri Nerede Saklıyor?
Fikir basitti: Sohbette ajana “2. hesaba geç” diyecektim, ajan arka planda işletim sistemindeki dosyaları değiştirecek ve IDE’yi yeni hesapla baştan açacaktı.
Ama önce Antigravity’nin kimlik doğrulama mimarisini çözmemiz gerekiyordu. ~/.gemini/ klasörünün altına indik ve üç kritik parça bulduk:
oauth_creds.json: Access ve refresh token’lar burada gibi duruyor, ancak ilginç şekilde hesap değiştirilse bile bu dosya güncellenmiyor; statik kalıyor.google_accounts.json: Yalnızca aktif hesabın e-postasını tutan küçük bir bayrak dosyası.- Windows Credential Manager (
gemini:antigravity): Asıl cevher buradaydı. Antigravity, o anki aktif canlı oturumunu Windows’un yerel Kasa (Credential Manager) sisteminde saklıyordu.
İşin en güzel sürprizi ise şuydu: Bu kayıt şifreli bir DPAPI bloğu değil, doğrudan okunup yazılabilen düz bir UTF-8 JSON metniydi! Yani Windows’un yerel Advapi32.dll (CredWriteW) kütüphanesini çağırarak bu anahtarları saniyeler içinde takas edebilirdik.
En Zor Kısım: Ajan Kendi Bindiği Dalı Nasıl Kesecek?
Kimlik dosyalarını takas etmek işin kolay kısmıydı. Asıl kabus, Antigravity açıkken kendini nasıl kapatıp yeni kimlikle yeniden açacağıydı.
Antigravity bir Electron uygulaması ve sandbox korumaları var. Doğrudan bir PowerShell veya cmd süreciyle “beni kapat, sonra tekrar aç” dediğiniz anda, ana süreç kapandığı için başlattığı alt süreç de onunla birlikte ölüyordu.
Birçok deneme çöpe gitti:
Start-Process powershell -WindowStyle Hidden➔ Sandbox anında kesti.- Arka plan batch (
.bat) scriptleri ➔ Bloke oldu. - Saniye bazlı zamanlayıcılar ➔ Yarış durumuna (race condition) düşüp IDE’yi açamadı.
Sonunda çalışan kusursuz formülü bulduk:
Windows Task Scheduler (Görev Zamanlayıcı) + Sessiz VBScript!
Ajan hesabı değiştirdiği anda, Windows Görev Zamanlayıcı’ya 3 dakika sonraya tek seferlik sessiz bir VBScript görevi yazıyor (schtasks /SC ONCE). Ardından Antigravity temiz bir şekilde kapanıyor. 3 dakika sonra Windows arkada wscript.exe ile Antigravity.exeyi masaüstünde sessizce yeniden açıyor.
Siz koltuğunuzda telefonunuzun tarayıcısını yenilediğinizde, tüm konuşma geçmişi ve projeleriniz yerli yerinde, ancak kotanız %100 dolu olarak sizi karşılıyor!
Ve agyhop Doğdu
Tüm bu tersine mühendislik çalışmasını, hata kontrollerini ve geçiş mantığını 280 satırlık, sıfır harici kütüphane gerektiren hafif bir Python betiğinde topladım ve adını AgyHop koydum:
agy: Google Antigravity’nin resmi CLI öneki.hop: Hesaplar arasında zahmetsizce sıçramak.
İşin Doğasına Uygun: Kurulumu Bile Ajana Yaptırmak
Antigravity kullanan birine “terminal aç, git clone yap” demek bu çağın ruhuna aykırı olurdu. O yüzden kurulumu da ajanın otonom doğasına bıraktım.
Eğer siz de bu dertten muzdaripseniz, terminale hiç dokunmadan doğrudan Antigravity sohbetine şu promptu yapıştırmanız yetiyor:
"Antigravity ajanı,
https://github.com/mrblackman/AgyHop adresine bağlan, README belgesini incele. Gerekli dosyaları (`agyhop.py` ve `agy_restart.vbs`) yerel makinemdeki `~/.gemini/scripts/` dizini altına oluştur. Ardından şu an açık olan aktif Google hesabımı ilk profil olarak kaydet ve bundan sonra uzaktan bağlandığımda sohbetten sana hangi komutla hesap değiştirebileceğimi bana açıkla."
Ajan gidip dosyaları çekiyor, profili kaydediyor ve sistemi sizin yerinize hazır hale getiriyor. Sonrasında koltuğunuza yaslanıp sadece “2. hesaba geç” demeniz yeterli.
Bilahare…
Bazen en faydalı açık kaynak araçlar, büyük kurumsal vizyonlardan değil; gece yarısı rahatını bozup bilgisayarın başına gitmek istemeyen bir yazılımcının inatçı tembelliğinden doğuyor.
agyhop da tam olarak böyle bir ihtiyacın, tersine mühendisliğin ve sistem optimizasyonunun meyvesi oldu.
Projeyi MIT lisansıyla tamamen açık kaynak olarak GitHub’da paylaştım:
👉 github.com/mrblackman/AgyHop
Eğer bu araç gecenin bir yarısı sizin de kotanızı açıp işinizi kurtarırsa, bana oradan bir sanal kahve ısmarlamayı unutmayın:
☕ buymeacoffee.com/mrblackman
Bilahare görüşmek üzere.

