Sign in

Erkan Doğan

@erkan.erkandogan.tr.ap.brid.gy
2 followers 0 following 7 posts

Düşünceler, hikayeler ve fikirler. 🌉 bridged from ⁂ erkandogan.tr, follow @ap.brid.gy to interact

PostsRepliesMedia
Erkan Doğan @erkan.erkandogan.tr.ap.brid.gy · 08/09/2026
Zig ile sıfırdan yazılan, yapay zeka ve otomasyon odaklı headless tarayıcı Lightpanda'nın mimarisi, benchmark sonuçları, CDP ve MCP entegrasyonları, ayrıca Puppeteer, Playwright, Selenium ve Splash ile kıyası bu yazıda.
erkandogan.tr
Lightpanda Browser Nedir, Rakiplerinden Farkı Ne?
Web kazıma, test otomasyonu ve yapay zeka ajanları için sunucuda tarayıcı koşturmak standart bir ihtiyaç. Standart çözüm de belli: headless Chrome. Chrome yüzlerce sekme açtığınızda sunucuyu ciddi yoruyor; RAM ve CPU maliyeti hızla büyüyor. Lightpanda tam bu noktada duruyor: Chromium fork'u değil, Zig ile sıfırdan yazılmış, AI ve otomasyon odaklı yeni bir headless tarayıcı. ## Lightpanda Browser Nedir? Lightpanda, yapay zeka ajanları ve otomasyon için tasarlanmış açık kaynak bir headless tarayıcı. Chromium tabanlı değil, Blink veya WebKit üzerine bir yama da değil. Zig diliyle sıfırdan yazılmış. İçindeki bileşenler tanıdık: HTML ayrıştırma için Servo projesinden html5ever, JavaScript için V8, HTTP için libcurl. Grafiksel render motoru yok; kaynaklar tamamen sayfa yükleme ve DOM işlemlerine kalıyor. Kaynak kodu GitHub'da, lisans AGPL-3.0. Proje beta aşamasında; birçok site çalışıyor ama hatayla ya da crash ile karşılaşabilirsiniz. Web API kapsamı sürekli genişliyor ve resmi Web Platform Tests koşusu her gün yayınlanıyor. ## Rakamlarla Performans Lightpanda ekibi, AWS EC2 m5.large üzerinde 933 gerçek web sayfasını ağ üzerinden isteyerek Headless Chrome ile kıyaslamış. Sonuçlar iddialı: * Bellek (100 sayfa, tepe kullanım): 123 MB'a karşı 2 GB. Yaklaşık 16 kat fark. * Çalışma süresi (100 sayfa): 5 saniyeye karşı 46 saniye. Yaklaşık 9 kat fark. Bu Lightpanda'nın kendi benchmark'ı; detaylar repoda. Senaryonuza göre sonuç değişir ama tablo fikir veriyor: instance sayısı arttıkça Chrome'un maliyeti katlanıyor, Lightpanda'nınki yerinde sayıyor. ## Kurulum ve Kullanım Kurulumun en pratik yolu Docker. CDP sunucusu 9222 portunda ayağa kalkıyor: docker run -d --name lightpanda -p 127.0.0.1:9222:9222 lightpanda/browser:nightly Tek bir sayfayı çekmek için CDP sunucusuna bile gerek yok. fetch komutu tek seferde çalışıyor; çıktıyı html, markdown, png ya da pdf olarak alabiliyorsunuz: ./lightpanda fetch --obey-robots --dump html https://demo-browser.lightpanda.io/campfire-commerce/ Sayfanın hazır olmasını bekletmek için `--wait-selector`, `--wait-ms` ve `--wait-script` seçenekleri var. `robots.txt` kuralına uymak için `--obey-robots`. Asıl önemli taraf CDP desteği. Puppeteer veya Playwright betiğinizde yalnızca bağlantı adresini değiştiriyorsunuz, gerisi aynı: import puppeteer from 'puppeteer-core'; const browser = await puppeteer.connect({ browserWSEndpoint: "ws://127.0.0.1:9222", }); const page = await browser.newPage(); await page.goto('https://demo-browser.lightpanda.io/amiibo/', { waitUntil: "networkidle0", }); Homebrew ve AUR paketleri de mevcut. Windows için native binary yok; WSL2 üzerinden çalıştırıyorsunuz. Alpine gibi musl tabanlı dağıtımlarda binary çalışmıyor, glibc tabanlı bir imaj seçmeniz gerekiyor. ## Yapay Zeka Tarafı: Agent Mode ve MCP `lightpanda agent` komutu tarayıcıyı doğal dille yönetiyor. Görevi yazıyorsunuz; ajan sayfayı geziyor, tıklıyor, formları doldurup yapılandırılmış veri çıkarıyor. Anthropic, OpenAI, Gemini, Mistral gibi sağlayıcılar ve Ollama ile yerel modeller destekleniyor. `--no-llm` ile LLM'siz bir REPL modu bile var. Dikkat çeken detay, oturumların PandaScript'e dönüşmesi. Kaydettiğinizde elinize içinde tarayıcı primitive'leri gömülü vanilla JavaScript geçiyor. Bu betikler deterministik ve token tüketmiyor. Yani prototipi LLM ile yapıp üretimde model olmadan koşabiliyorsunuz. MCP sunucusu gömülü: `lightpanda mcp` stdio üzerinden çalışıyor, `lightpanda mcp --port 9223` ile HTTP üzerinden servis veriyor. HTTP modunda her bağlantı kendi oturumunu açıyor; kendi sayfası, kendi çerezleri. İki ajan aynı sayfada çalışmak isterse aynı oturum kimliğini paylaşıyor, yani ajanlar birbirinin sayfasını bozamıyor. Yapılandırma tanıdık geliyor olmalı: { "mcpServers": { "lightpanda": { "command": "/path/to/lightpanda", "args": ["mcp"] } } } Küçük bir not: telemetry varsayılan olarak açık. `LIGHTPANDA_DISABLE_TELEMETRY=true` ile kapatabiliyorsunuz. ## Rakiplerle Kıyas Lightpanda boş bir alanda değil. Web otomasyonunun dört tanıdık ismiyle kıyaslamak en doğal başlangıç olur. * **Puppeteer (Headless Chrome)** : Standart çözüm. Web API kapsamında rakipsiz; her site, her framework çalışır. Bedeli kaynak: her instance yüzlerce MB RAM yer, ölçekle maliyet hızla büyür. Lightpanda aynı CDP arayüzünü konuşarak bu tabloyu hedefliyor. Uçtan uca uyumluluk şartsa Chrome hâlâ referans noktası. * **Playwright** : Microsoft'un test framework'ü. Chromium, Firefox ve WebKit'i tek API altında topluyor. Auto-wait, codegen ve trace viewer gibi araçlarla geliştirici deneyimi güçlü. Ama altta yine tam bir tarayıcı koşuyor; kaynak profili hafif sayılmaz. CDP desteği sayesinde Lightpanda, Playwright betiklerinin de bağlanabildiği bir arka uç olabiliyor. * **Selenium** : Sektörün en eski ismi, W3C WebDriver standardının temeli. Dil ve tarayıcı kapsamı en geniş seçenek. Bedeli hız; her işlem protokol üzerinden ağ çağrısına dönüşüyor. Kurumsal test grid'lerinde hâlâ güçlü ama kazıma ve ajan işleri için artık ilk tercih değil. * **Splash** : Zyte (eski adıyla Scrapinghub) ürünü. Python, Twisted ve QT5 üzerine kurulu, HTTP API'li bir render servisi. Lua betikleriyle sayfa kontrolü sağlıyor; scrapy-splash köprüsüyle Scrapy dünyasına doğal bağlanıyor. Hafif render fikrinin eski temsilcisi. Temelindeki WebKit yaşlanıyor; Lightpanda aynı fikri modern bir motor ve CDP/MCP entegrasyonlarıyla güncelliyor. ## Nerede Kullanmalı, Nerede Dikkat Etmeli? Net kazanç alanı: yüksek hacimli kazıma, içerik çekme ve ajan destekli otomasyon. Paralel iş sayısı arttıkça avantaj büyüyor. * Beta bir proje. Karşılaştığınız hata ve crash'leri issue olarak bildirmek gelişimi hızlandırıyor. * Web API kapsamı henüz Chromium seviyesinde değil. Görsel doğrulama ve canvas ağırlıklı senaryolarda Chrome daha güvenli. * Lisans AGPL-3.0. Kapalı kaynak bir ürüne gömmeyi düşünüyorsanız koşulları okuyun. * Telemetry açık geliyor. Sunucu kurulumlarında kapatın. ## Sonuç Lightpanda, headless tarayıcı denince Chrome'a mahkûm olduğumuz varsayımını sorgulatan bir proje. Zig ile sıfırdan yazılmış bir motoru CDP üzerinden konuşturuyor, MCP ile ajanlara doğrudan bağlanıyor, PandaScript oturumları tekrarlanabilir betiklere çeviriyor. Beta olduğu için yarın ana test hattınızı taşımayacaksınız. Ama yeni bir kazıma pipeline'ı ya da ajan altyapısı kuruyorsanız denemeye değer. 123 MB bellek ve 100 sayfada 5 saniye rakamları, başlangıç için yeterli gerekçe.
000
Erkan Doğan @erkan.erkandogan.tr.ap.brid.gy · 06/09/2026
Graphify, kod tabanınızı, dokümanları, SQL şemalarını ve PDF'leri sorgulanabilir bir bilgi grafiğine çeviren açık kaynak bir araç. Vektör veritabanı kullanmıyor, tree-sitter AST ile yerelde ayrıştırıyor. Kurulumu, sorgulama komutları ve graf yapısı bu yazıda.
erkandogan.tr
Graphify Nedir, Neden Kullanmalısınız?
Büyük bir projeye katıldığınız ilk gün ne yaparsınız? Çoğumuz README'yi açar, klasör yapısına bakar, sonra grep ile dosyaları taramaya başlarız. Bu işlem günler sürer ve sonuç genelde eksik kalır. Graphify, kod tabanınızı, dokümanları, SQL şemalarını ve hatta PDF'leri sorgulanabilir bir bilgi grafiğine dönüştürerek bu sorunu başka bir yöntemle çözüyor. ## Graphify Nedir? Graphify, kod tabanınızı, dokümanlarını ve diğer dosyalarınızı bir bilgi grafiğine (knowledge graph) dönüştüren açık kaynak bir araç. GitHub'da Graphify-Labs/graphify adresinde geliştiriliyor. AI asistanınıza `/graphify` yazdığınızda tüm projeyi tarıyor ve karşınıza üç dosya çıkarıyor: graphify-out/ ├── graph.html tarayıcıda açılır, tıklanabilir interaktif graf ├── GRAPH_REPORT.md önemli kavramlar, şaşırtıcı bağlantılar, önerilen sorular └── graph.json sorgulanabilir graf verisi Buradaki temel fikir şu: dosyaları tek tek okumak yerine, projeyi kavramlar ve bunlar arasındaki ilişkilerden oluşan bir graf olarak düşünmek. Bir düğüm (node) bir sınıf, fonksiyon, konfigürasyon ya da doküman parçası olabilir. Kenarlar (edge) ise bunların birbirini çağırma, içe aktarma ya da referans verme ilişkilerini taşır. ## Vektör Veritabanı Değil, Gerçek Graf Son iki yılda "kodu anlamak" için önerilen çözümlerin çoğu aynı yolu izliyor: dosyaları parçala, embedding üret, vektör veritabanına at, benzerlik araması yap. Graphify bu yola girmiyor. Embedding yok, vektör deposu yok. Bunun yerine tree-sitter ile AST düzeyinde deterministik bir ayrıştırma yapıyor ve gerçek bir graf üretiyor. Bu yaklaşımın pratik sonucu, sorgulamanın benzerlik değil geçiş (traversal) üzerinden yapılması: $ graphify explain "APIRouter" Node: APIRouter Source: routing.py L2210 Community: 2 Degree: 47 $ graphify path "FastAPI" "ModelField" Shortest path (3 hops): FastAPI --uses--> DefaultPlaceholder <--references-- get_request_handler() --references--> ModelField graphify explain size bir kavramın ne olduğunu, nerede tanımlandığını ve neye bağlı olduğunu söyler. graphify path ise iki kavram arasındaki en kısa yolu adım adım gösterir. "FastAPI'den ModelField'a nasıl gidilir?" sorusuna vektör aramasıyla tutarlı cevap veremezsiniz, graf geçişiyle verebilirsiniz. ## Her Kenar Açıklanıyor Graphify'nin dikkat çeken yanı, ürettiği her kenara bir güven etiketi koyması: * `EXTRACTED` , ilişki doğrudan kaynaktan okundu. Kodda açık bir çağrı, import ya da referans var. * `INFERRED` , ilişki çözümleme ile türetildi. Kaynakta doğrudan yazmıyor ama graf çözümlemesi bunu üretti. Bu ayrım önemli. AI asistanlarına güvenmek zorundaysak, en azından hangi bilginin dosyadan okunduğunu, hangisinin çıkarım olduğunu bilmek isteriz. Halüsinasyon riskini sıfırlamasa da "hangi bilgi ne kadar sağlam" sorusuna net bir çerçeve veriyor. ## Kod Yerelde Kalıyor Gizlilik tarafında Graphify'nin duruşu net: kod dosyaları tree-sitter ile tamamen yerelde ayrıştırılıyor. LLM çağrısı yok, hiçbir şey makinenizden çıkmıyor. Sadece kod içeren bir repo için API anahtarı bile gerekmiyor; `graphify extract` tamamen çevrimdışı çalışıyor. Dokümanlar, PDF'ler, görseller ve video/audio içinse semantik bir geçiş var. Bu geçiş asistanınızın modelini kullanıyor ya da yapılandırdığınız bir API anahtarını. Video/audio transkripsiyonu faster-whisper ile yine yerelde yapılıyor. Telemetri, kullanım takibi, analitik yok. ## Kurulum ve Kullanım Kurulum iki adım: uv tool install graphifyy # CLI'ı kur (alternatif: pipx install graphifyy) graphify install # skill'i AI asistanına kaydet Dikkat: PyPI paketi `graphifyy` (çift y). Diğer graphify* paketleri ilgili değil. CLI komutu yine graphify. Sonra asistanınızda /graphify yazmanız yeterli. Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot dahil 20+ platformda çalışıyor. Kurulumdan sonra grafik sorgulamak için: graphify query "auth ile veritabanı arasındaki bağ ne?" graphify path "UserService" "DatabasePool" graphify explain "RateLimiter" ## Graf Neler İçeriyor? * **God nodes** , en çok bağlantısı olan kavramlar. Her şeyin neden akışının üzerinden geçtiğini gösterir. * **Topluluklar (communities)** , Leiden algoritmasıyla graf alt sistemlere bölünür. Renk kodlu alt sistem haritası demek. * **Dosyalar arası bağlantılar** , `calls`, `imports`, `inherits`, `mixes_in` kenarları tree-sitter AST ile ~40 dilde çözümlenir. * **Gerekçe ve doküman referansları** , `# NOTE:` ve `# WHY:` yorumları, ADR'ler ve RFC'ler birer düğüm olarak koda bağlanır. * **Kodun ötesi** , dokümanlar, PDF'ler, görseller ve video/audio aynı grafa girer. ## Ekosistem Entegrasyonu Graphify sadece bir kez çalışan bir araç değil. Takım kurulumu için graf çıktısının git'e commitlenmesi öneriliyor; herkes hazır bir harita ile başlıyor. * Git hook kurulumu: commit ve branch değişimlerinde graf otomatik yeniden inşa edilir (AST yeniden ayrıştırma, API maliyeti sıfır). * MCP sunucusu: python -m graphify.serve ile graf, asistanınıza MCP aracı olarak sunulur. HTTP taşıyıcısıyla takımın tamamı tek bir adrese bağlanabilir. * graphify prs: PR'ları graf topluluklarına göre çakışma ve merge sırası riski açısından inceleyen bir pano. * .graphifyignore: .gitignore sözdizimiyle grafa girmeyecek dosyaları belirlersiniz. ## Kime Göre? Yeni katıldığınız büyük bir repo, dokümana dökülmemiş on yıllık bir monolit ya da "bu sistemde kim neyi etkiliyor" sorusunun cevabı olmayan bir mikroservis kümesi varsa Graphify tam sizin için. Küçük ve tanıdık projelerde ekstra katman gereksiz olabilir. Ama kod tabanı büyüdükçe, dosya okuma yerine graf sorgulama, anlama hızını gerçekten değiştiriyor. Açık kaynak, Apache-2.0 lisanslı. Repo: github.com/Graphify-Labs/graphify.
000
Erkan Doğan @erkan.erkandogan.tr.ap.brid.gy · 06/09/2026
PaaS kolaylığını kendi sunucunuza taşıyan açık kaynak platform Coolify: push ile dağıtım, tek tıkla veritabanı ve servis, otomatik SSL. Kurulumu, gereksinimleri ve Coolify Cloud seçeneği bu yazıda.
erkandogan.tr
Coolify Nedir, Neden Kullanmalısınız?
Birkaç ay önce bir VPS'e kurup küçük projelerimi taşımıştım. Faturanın gizli büyümesini izlemekten, "acaba bu ay da sınıra takılır mıyım" endişesinden kurtulmak iyi gelmişti. Ama her proje için sunucu yönetimi, SSL kurulumu, ters proxy ayarı derken iş yine dağınıklaşıyordu. Coolify tam bu noktada çözüm oldu: PaaS kolaylığını kendi sunucuma getirdi, kontrol de bende kaldı. ## Coolify Nedir? Coolify, kendi sunucunuzda çalıştırdığınız açık kaynak bir PaaS. Heroku, Netlify, Vercel, Railway gibi platformların kolaylığını VPS'inize, bare metal sunucunuza ya da evdeki Raspberry Pi'nize getiriyor. Kaynak kodu GitHub'da, lisans Apache 2.0. Andras Bacsai öncülüğünde geliştiriliyor, sponsorlarla finanse ediliyor. Ödeme duvarı arkasında özellik yok, her şey açık kaynak sürümde. Kurulum için SSH erişimli bir sunucu yeterli. Coolify kurulduktan sonra Docker üzerinden uygulama, veritabanı ve servis yönetimini tek panelden yapıyorsunuz. Yeni sunucu eklemek de aynı panelden geçiyor. ## Neden Kullanmalısınız? * **Vendor lock-in yok** : Tüm yapılandırma sizin sunucunuzda duruyor. Coolify'ı bıraksanız bile çalışan uygulamalarınız aynen kalır. Otomasyon kaybolur, işiniz kaybolmaz. * **Push ile dağıtım** : GitHub, GitLab ya da Bitbucket deposuna push edince otomatik derleyip yayına alıyor. Dockerfile, hazır image ve docker-compose dosyası da destekleniyor. * **Tek tıkla veritabanı ve servis** : PostgreSQL, MySQL, Redis, MongoDB gibi veritabanları ve Ghost, Plausible, UptimeKuma gibi hazır servisler tek tıkla açılıyor. * **Otomatik SSL** : Let's Encrypt sertifikaları otomatik alınıp yenileniyor. Traefik ters proxy kurulumu da dahil. * **Sınırsız dağıtım** : Kaç uygulama çalıştıracağınızı lisans değil, sunucunuzun RAM'i belirliyor. ## Kurulum Kurulum tek satır. Script Docker Engine'i kuruyor, gerekli dizinleri hazırlıyor, SSH anahtarlarını ayarlıyor ve paneli başlatıyor: curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash Gereksinimler mütevazı: 2 çekirdek CPU, 2 GB RAM, 30 GB boş disk. AMD64 ya da ARM64. Raspberry Pi OS 64-bit de destekleniyor. Debian, RedHat, SUSE, Arch, Alpine tabanlı dağıtımlar çalışıyor. Script root ile çalıştırılmalı; Ubuntu'da LTS sürüm gerekli, ara sürümlerde manuel kurulum yapılıyor. Kurulum bitince panel http://sunucu-ip:8000 adresinde açılıyor. Bir uyarı: panele ilk girişte admin hesabını hemen oluşturun. Kayıt sayfasına sizden önce ulaşan biri sunucunun tam kontrolünü ele geçirebilir. ## Neler Yayınlayabilirsiniz? Uygulama tarafında seçenek geniş: git deposundan derlenen projeler, hazır Docker image'ları, statik siteler. Veritabanı tarafında PostgreSQL, MySQL, Redis, MongoDB. Servis tarafında Ghost, Plausible, UptimeKuma gibi hazır şablonlar var. Somut bir ölçü: geliştiricinin kendi üretim sunucusu 3 Node.js uygulaması, 4 statik site, Plausible Analytics, Fider, UptimeKuma, Ghost, 3 Redis ve 2 PostgreSQL çalıştırıyor. Donanım 8 GB RAM, 4 çekirdek, 150 GB disk. Ortalama RAM kullanımı 3.5 GB civarı. Yani tek VPS hem panel hem onlarca proje için yetiyor. Build işlemleri de aynı sunucuda koşuyorsa kaynakları izlemek gerekiyor. Yoğun bir derleme sunucuyu kilitleyebiliyor. Swap açmak ya da build için ayrı bir sunucu tanımlamak işe yarıyor. ## Coolify Cloud Self-host uğraşı istemiyorsanız ücretli bir bulut sürümü de var. Önerilen mimari zaten Coolify için ayrı bir sunucu, uygulamalar için ayrı sunucu. Bulut sürümü Coolify sunucusunu yaklaşık 5 dolara yönetiyor. Karşılığında yüksek erişilebilirlik, ücretsiz e-posta bildirimleri, daha az bakım yükü ve daha iyi destek alıyorsunuz. Uygulamalarınız yine kendi sunucunuzda kalıyor, bulut tarafı sadece panel. ## Pratik İpuçları * **Temiz bir sunucuyla başlayın**. Coolify'ı üzerine kuracağınız makinede başka uygulamalar çalışmasın, çakışma riskini en baştan kaldırırsınız. * **Docker'ı snap ile kurmayın**. Resmi desteğe girmiyor. Script zaten Docker Engine 24+ kuruyor, ekstra bir şey yapmanız gerekmiyor. * **Kaynakları izleyin**. Build ve panel aynı makinedeyken RAM ve CPU dalgalanmasını takip edin. Sürüyen bir build paneli de yavaşlatır. * **Sunucu eklemek bedava**. Proje büyüyünce panelin içinden yeni sunucu tanımlayıp yükü dağıtabilirsiniz. Yeni lisans ya da limit ödemesi yok. ## Sonuç Coolify, PaaS kolaylığını fatura ve kilitlenmeden ayırıyor. Tek satır kurulum, push ile dağıtım, otomatik SSL, tek tıkla veritabanı ve servis. Küçük projeler için tek VPS yeter, büyüdükçe yeni sunucu ekleyip aynı panelden yönetmeye devam ediyorsunuz. Vercel faturası gözünüzü korkutuyorsa ya da verinizin başkasının diskinde durmasından rahatsızsanız, ilk sunucuda denemenizi öneririm.
010
Erkan Doğan @erkan.erkandogan.tr.ap.brid.gy · 06/09/2026
PR-Agent, pull request açıklaması üretme, kod inceleme ve iyileştirme önerisi sunan açık kaynak bir AI ajanı. Kurulumu ve kullanımını bu yazıda anlattım.
erkandogan.tr
PR-Agent Nedir? AI Destekli Kod İncelemesi
## PR-Agent Nedir? PR-Agent, pull request'ler için otomatik açıklama, inceleme ve iyileştirme önerisi üreten açık kaynak bir AI ajanı. Uzun süre Qodo (eski adıyla CodiumAI) tarafından geliştirildi, sonra topluluğa bağışlandı ve şu anda GitHub'da the-pr-agent organizasyonu altında, topluluk bakımında yaşıyor. Tasarımda dikkat çeken bir tercih var: her araç tek bir LLM çağrısıyla çalışıyor. Ajan bir PR'ı incelemek için onlarca istek atmıyor, tek istek atıyor. Yanıt yaklaşık 30 saniyede geliyor ve maliyet düşük kalıyor. Büyük PR'lar için de bir sıkıştırma stratejisi var; 40 dosyalık bir diff'i de makul biçimde özetleyebiliyor. ## Araçlar Ajan aslında tek bir araç değil, her biri ayrı komutla tetiklenen bir dizi araç. PR'a veya issue'ya yorum olarak komutu yazıyorsunuz, ajan orada yanıtlıyor: * `/describe` PR açıklaması üretir: başlık, özet, dosya bazlı anlatım ve etiket. * `/review` olası sorunları, güvenlik kaygılarını ve inceleme eforunu listeler. * `/improve` somut kod önerileri verir, satır içi yorum olarak. * `/ask` ile PR hakkında serbest soru sorabilirsiniz, "bu bölüm ne yapıyor?" gibi. * `/add_docs` eksik dokümantasyonu olan bileşenler için dokümantasyon yazar. * `/update_changelog` CHANGELOG.md dosyasını PR'a göre günceller. * `/generate_labels` ve `/similar_issue` gibi daha küçük işler yapan komutlar da var. `/help` hepsini listeler. ## Nasıl Çalışır? Çalışma prensibi basit. Ajan PR diff'ini alıyor, sıkıştırıp modele taşınabilir hale getiriyor ve tek çağrıyla istenen çıktıyı üretiyor. Model tarafında esneklik yüksek. OpenAI, Anthropic, Gemini, DeepSeek, Mistral kullanılabiliyor; LiteLLM üzerinden erişilen her model de olur, yani Azure OpenAI, Bedrock, Vertex AI ya da yerel Ollama da olur. Self-hosted çalıştırırsanız kodunuz yalnızca sizinle model sağlayıcınız arasında kalıyor. Araya üçüncü bir servis girmiyor. Kapalı kaynak SaaS araçlarında bu garantiyi vermek zaten mümkün değil. ## Kurulum En pratik yol GitHub Action. Depo köküne şu dosyayı koymanız yeterli: # .github/workflows/pr-agent.yml name: PR Agent on: pull_request: types: [opened, synchronize] jobs: pr_agent_job: runs-on: ubuntu-latest steps: - name: PR Agent action step uses: the-pr-agent/pr-agent@main env: OPENAI_KEY: ${{ secrets.OPENAI_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} {"children":[{"type":"paragraph","version":1,"children":[{"color":"","type":"extended-text","version":1,"styles":{},"textMode":"exact","text":"","format":0,"detail":0,"mode":"normal","style":""}],"direction":null,"format":"","textAlignment":"","indent":0}"} GitHub'ın kendi `GITHUB_TOKEN`'ını kullandığı için ek yetkilendirme gerekmiyor. Yapmanız gereken tek şey LLM sağlayıcınızın anahtarını secret'lara eklemek. Bundan sonra her açılan PR'da ajan otomatik çalışıyor. Tek seferlik bakmak için CLI da iş görüyor: pip install pr-agent export OPENAI_KEY=your_key_here pr-agent --pr_url https://github.com/owner/repo/pull/123 review {"children":[{"type":"paragraph","version":1,"children":[{"color":"","type":"extended-text","version":1,"styles":{},"textMode":"exact","text":"","format":0,"detail":0,"mode":"normal","style":""}],"direction":null,"format":"","textAlignment":"","indent":0}"} GitLab, Bitbucket, Azure DevOps ve Gitea için ayrı kurulum rehberleri mevcut. Docker ile self-hosted da mümkün. Bu arada not: 0.34.2'den itibaren image'lar `pragent/pr-agent` altında yayınlanıyor, eski `codiumai/pr-agent` arşiv olarak donduruldu. Yapılandırma TOML dosyasıyla yapılıyor, prompt'lar JSON üzerinden özelleştirilebiliyor. Projenizin kendi kurallarını da SKILL.md dosyalarıyla aktarabiliyorsunuz; ajan bunları incelemeye varsayılan olarak dahil ediyor. ## Pratik İpuçları Ekip olarak yeni başlıyorsanız `/review` ile başlayın. Etkisi en hızlı görülen bu; insan gözünden kaçan riskli yerleri öne çıkarıyor. `/describe` özellikle çok dosyalı PR'larda açıklama yazma işini neredeyse sıfırlıyor. Kodunuzu üçüncü bir servise göndermek istemiyorsanız self-hosted kurun ve kendi anahtarınızla çalıştırın. Prompt'lar `configuration.toml` dosyasında duruyor; inceleme kategorilerini ekibinizin ihtiyacına göre ayarlayın. ## Sonuç PR-Agent kod incelemesini tamamen ele almıyor, böyle bir iddiası da yok. Yaptığı iş ilk taramayı AI'ya yaptırıp insanın son karara odaklanmasını sağlamak. Kurulumu dakikalar sürüyor. Açık kaynak olduğu için prompt'tan modele kadar her şey sizde kalıyor. Bir sonraki açtığınız PR'da deneyip farkı kendiniz görün.
000
Erkan Doğan @erkan.erkandogan.tr.ap.brid.gy · 14/08/2026
Renovate, repolarınızdaki bağımlılıkları otomatik tarayıp güncel sürümler için pull request açan açık kaynak bir bot. Dependabot'tan farkları, kurulumu, örnek renovate.json yapılandırması ve self-hosted CI'da kullanımı bu yazıda.
erkandogan.tr
Renovate Bot Nedir, Neden Kullanmalısınız?
Bağımlılık güncellemeleri, çoğu geliştiricinin ihmal ettiği ama teknik borcun en hızlı biriktiği alanlardan biri. package.json, requirements.txt, Dockerfile, GitHub Actions workflow'ları... hepsi zamanla eskir ve bir gün kritik bir güvenlik açığıyla karşınıza çıkar. Renovate tam olarak bu sorunu çözmek için var. ## Renovate Nedir? Renovate, repolarınızdaki bağımlılıkları otomatik olarak tarayan, güncel sürümleri tespit eden ve her güncelleme için ayrı bir pull request açan açık kaynak bir bottur. Mend (eski adıyla WhiteSource) tarafından geliştirilir ve GitHub, GitLab, Bitbucket, Azure DevOps gibi platformlarda çalışır. Dependabot'a benzese de Renovate çok daha esnek bir yapılandırma sistemine sahiptir. npm, pip, Docker, Terraform, GitHub Actions, Cargo, Go modules dahil onlarca ekosistemi tek bir araçla yönetebilirsiniz. ## Neden Dependabot Değil de Renovate? * **Tek yapılandırma dosyası** — `renovate.json` ile tüm repo genelinde tutarlı kurallar tanımlanır. * **Gruplama desteği** — İlgili paketleri (örneğin tüm `eslint-*` paketlerini) tek bir PR'da toplayabilirsiniz, PR kalabalığı azalır. * **Zamanlama kontrolü** — Güncellemelerin sadece belirli saatlerde/günlerde açılmasını sağlayabilirsiniz (mesai dışı gece build'lerini tetiklememek gibi). * **Otomatik merge** — Minor/patch seviyesindeki düşük riskli güncellemeler için testler geçerse otomatik merge tanımlanabilir. * **Daha geniş ekosistem desteği** — Docker base image'ları, Helm chart'ları, Terraform provider'ları gibi Dependabot'ın zayıf kaldığı alanlarda daha güçlü. ## Kurulum GitHub üzerinde en pratik yol Renovate GitHub App'i kurmak: 1. github.com/apps/renovate adresinden uygulamayı yükleyin. 2. Erişim vermek istediğiniz repoları seçin. 3. Bot ilk taramadan sonra otomatik olarak bir "Configure Renovate" PR'ı açar; bu PR varsayılan `renovate.json` dosyasını içerir. Kendi altyapınızda (self-hosted GitLab, Gitea vb.) çalıştırmak isterseniz `renovate` npm paketini CLI olarak veya resmi Docker image'ı üzerinden CI pipeline'ında da çalıştırabilirsiniz. ## Örnek Yapılandırma json { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": ["config:recommended"], "timezone": "Europe/Istanbul", "schedule": ["after 22:00 every weekday", "every weekend"], "packageRules": [ { "matchUpdateTypes": ["minor", "patch"], "automerge": true }, { "matchPackagePatterns": ["^eslint"], "groupName": "eslint packages" } ], "vulnerabilityAlerts": { "enabled": true, "labels": ["security"] } } Bu örnekte: * Güncellemeler yalnızca mesai dışı saatlerde açılıyor. * Minor ve patch seviyesindeki güncellemeler testler geçerse otomatik birleşiyor. * ESLint ile ilgili paketler tek PR'da gruplanıyor. * Güvenlik açığı bulunan paketler için ayrı, etiketlenmiş uyarılar oluşturuluyor. ## Self-Hosted Ortamlarda Kullanım Proxmox/Docker tabanlı bir altyapıda çalışan projeler için Renovate'i bir cron job veya GitHub Actions scheduled workflow olarak tetiklemek yaygın bir pattern. Örneğin: yaml name: Renovate on: schedule: - cron: '0 3 * * *' workflow_dispatch: jobs: renovate: runs-on: ubuntu-latest steps: - uses: renovatebot/github-action@v40 with: configurationFile: renovate.json token: ${{ secrets.RENOVATE_TOKEN }} Bu, harici bir servise bağımlı olmadan kendi CI altyapınız üzerinden tam kontrol sağlar. ## Pratik İpuçları * **`config:recommended` ile başlayın** — Sıfırdan kural yazmak yerine önerilen preset üzerine küçük özelleştirmeler eklemek daha sürdürülebilir. * **Dashboard PR'ını kapatmayın** — Renovate, tüm bekleyen güncellemeleri listeleyen bir "Dependency Dashboard" issue'su açar; bu genel görünüm için değerlidir. * **Lock file maintenance'ı aktif edin** — `lockFileMaintenance` seçeneği, doğrudan versiyon değişikliği olmasa bile lock dosyasını düzenli tazeler. * **Major güncellemeleri ayrı tutun** — Major sürüm atlamaları genelde breaking change içerir; bunları otomerge dışında bırakıp manuel gözden geçirin. ## Sonuç Renovate, "bağımlılıkları güncel tutma" işini insan hafızasından çıkarıp sürece dönüştürüyor. İlk kurulumu birkaç dakika sürse de, uzun vadede güvenlik açıklarını erken yakalamak ve teknik borcu biriktirmemek açısından kazandırdığı zaman katbekat fazla. Küçük bir yapılandırma dosyasıyla başlayıp ihtiyaca göre kuralları genişletmek en sağlıklı yaklaşım.
011
Erkan Doğan @erkan.erkandogan.tr.ap.brid.gy · 28/06/2026
Hello Word!
000