- Kişisel portföy sitesine IRC tabanlı bir AI ajanı bağlanarak, ziyaretçilerin gerçek GitHub depo kodu analiz sonuçlarına dayanarak sorularına yanıt alabileceği bir yapı kuruldu
- Basit bir özgeçmiş özeti chatbot’u yerine, depo klonlama, test sayımı, kod doğrulama yapabilen icracı bir ajan olarak tasarlandı
- Sistem, genel kullanıma açık nullclaw ve özel ironclaw olmak üzere iki ajana ayrılıyor ve Tailscale ağı üzerinden güvenli biçimde haberleşiyor
- IRC protokolü taşıma katmanı olarak seçilerek self-hosting, standardizasyon ve düşük maliyet aynı anda sağlandı; Haiku 4.5 ve Sonnet 4.6 modelleri rollerine göre ayrılarak maliyet günlük 2 dolarla sınırlandı
- Tüm sistem 10 MB’tan küçük ikili dosyalar ve 5 MB’tan az bellek ile çalışıyor; güvenlik, maliyet ve şeffaflığı birlikte sağlayan hafif bir AI altyapısı örneği sunuluyor
Dijital kapıcı kurmak
- Aylık 7 dolarlık VPS üzerine bir AI ajanı yerleştirilmiş ve taşıma katmanı olarak kişisel bir IRC sunucusu kullanılarak GitHub depolarına bağlanan bir yapı kurulmuş
- Ziyaretçiler portföy sitesinde AI’a soru sorabiliyor ve gerçek kod tabanına dayalı yanıtlar alabiliyor
- Basit bir özgeçmiş özeti chatbot’u değil, kod analizi üzerinden somut yanıtlar veren bir sistem
“Özgeçmişi anlatan chatbot”un sınırları
- Portföy chatbot’larının çoğu, özgeçmiş içeriğini modele enjekte edip yeniden ifade etmekten öteye gidemiyor
- Bu yaklaşım yeni bilgi sunmuyor ve yalnızca biçimsel bir sohbet düzeyinde kalıyor
- “Test kapsamını nasıl yönetiyorsun?” gibi sorularda, deponun klonlanıp test sayısının hesaplanması gibi somut yanıtlar gerekiyor
- Bunun için doğrudan koda erişebilen ve analiz yapabilen bir altyapı kuruldu
Sistem mimarisi
- İki ajan, iki sunucu ve iki güvenlik sınırından oluşuyor
- nullclaw: genel kullanıma açık kapıcı; 678 KB Zig ikili dosyası, yaklaşık 1 MB RAM kullanımı
- Ziyaretçileri karşılıyor, proje sorularını yanıtlıyor, GitHub depolarını klonlayıp kod tabanlı doğrulama yapıyor
- ironclaw: özel arka uç ajanı; ayrı bir sistemde çalışıyor
- E-posta, takvim ve kişisel bağlama erişebiliyor
- nullclaw’dan gelen karmaşık istekleri #backoffice IRC kanalı üzerinden alıyor
- İki sistem Tailscale ile birbirine bağlı ve genel sunucu kişisel verilere erişemiyor
Neden IRC seçildi?
- Estetik tutarlılık: portföy sitesi terminal arayüzü temelli olduğu için IRC istemcisi doğal duruyor
- Tam self-hosting: Ergo IRC sunucusu, gamja web istemcisi ve nullclaw tamamen kendi altyapısında çalışıyor
- Basit ve standartlaşmış protokol: 30 yıllık IRC’de vendor lock-in yok, API değişikliği riski yok
- Aynı ajan yalnızca web istemcisinde değil, irssi terminal istemcisinde de aynı şekilde çalışıyor
Model seçimi ve tasarım
- Büyük modellerin kullanımı verimsiz; bu yüzden rollerine göre model ayrımı yapılmış
-
Haiku 4.5**: sohbet ve basit sorgular için,** ultra düşük gecikmeli yanıtlar
- Sonnet 4.6: yalnızca kod analizi ve karmaşık akıl yürütmede kullanılıyor
- Maliyet üst sınırı: günlük 2 dolar, aylık 30 dolar
- Kötü niyetli kullanım veya aşırı sohbet nedeniyle maliyetin kontrolden çıkması engelleniyor
- Katmanlı akıl yürütme yapısı ile hız ve maliyet verimliliği birlikte sağlanıyor
Güvenlik tasarımı
- SSH: root girişi devre dışı, yalnızca anahtar doğrulaması açık, standart dışı port kullanılıyor
- Güvenlik duvarı: yalnızca SSH, IRC(TLS) ve HTTPS(WebSocket) açık
- Cloudflare proxy: TLS sonlandırma, hız sınırlama ve bot filtreleme yapıyor
- Ajan sandbox’ı: yalnızca salt okunur araçlara izin var, saat başına 10 eylem sınırı uygulanıyor
- Maliyet kontrolü: günlük 2 dolar, aylık 30 dolar hard cap
- Denetim günlükleri ve otomatik güncellemeler etkin
- Saldırı yüzeyi en aza indirilmiş: yalnızca ergo ve nullclaw çalışıyor, web içeriği doğrudan sunulmuyor
- İhlal durumunda zarar kapsamı günlük 2 dolar limitli bir IRC botuyla sınırlı kalıyor
İletişim yığınının yapısı
- Tüm bileşenler küçük, self-hosted ve değiştirilebilir yapıda
- Ergo: IRC sunucusu, tek bir Go ikili dosyası, 2.7 MB RAM
- gamja: web IRC istemcisi, 152 KB statik sayfa, Cloudflare arkasında sunuluyor
- nullclaw: AI ajanı çalışma zamanı, 4 MB Zig ikili dosyası, yaklaşık 1 MB bellek kullanımı
- Tüm sistem 10 MB’tan küçük ikili dosyalar ve 5 MB’tan az boşta bellek ile çalışıyor
- En ucuz VPS katmanında bile rahatça çalıştırılabiliyor
nully’nin (genel ajan) gerçek işlevleri
- Programlama dillerini belirleme: önceden yüklenmiş bağlam ve depo doğrulamasıyla tespit ediyor
- Test yapısını analiz etme: depoyu klonladıktan sonra test dosyalarını doğrudan okuyup sonuç bildiriyor
- Proje açıklama: örneğin Fracture projesinin ayrıntılarını koda dayanarak yanıtlıyor
- İletişim bilgisi yönlendirmesi: yalnızca doğru iletişim bilgisini veriyor, uydurma bilgi üretmiyor
- Takvim randevusu talebi: Google A2A protokolü üzerinden ironclaw’a iletiliyor, sonuç yapılandırılmış biçimde geri dönüyor
- Ziyaretçi arka uç devrini fark etmiyor
A2A uygulaması
- Google A2A protokolünü (v0.3.0) destekliyor ve JSON-RPC tabanlı iş durumu yönetimi yapıyor
a2a_call aracı uzak ajana mesaj gönderiyor ve iş durumunu (tamamlandı/başarısız/devam ediyor) ayrıştırıyor
- HTTPS zorunlu, ancak Tailscale iç ağı içinde hata ayıklama kolaylığı için HTTP’ye izin veriliyor
-
ironclaw tarafındaki yapı
- nullclaw örneği, kendi API anahtarı olmadan ironclaw’un LLM gateway’ini proxy olarak kullanıyor
- Böylece yalnızca tek bir API anahtarı ve tek bir ödeme ilişkisi korunuyor
- Tüm akıl yürütme isteklerini ironclaw işliyor ve maliyeti o üstleniyor
Handover güvenliği
- A2A uç noktasında prompt injection riski bulunduğundan sıkı kısıtlamalar uygulanıyor
- ironclaw’a iletilebilen istekler yalnızca takvim, iletişim ve uygunluk durumu ile sınırlı
- Keyfi komut iletimi reddediliyor
- ironclaw’un A2A uç noktası yalnızca Tailscale’e açık güvenlik duvarı ile korunuyor
- Her iki ajan da izleme modu ve sınırlı komut izin listesi ile çalışıyor
- İsteğin yükseltilip yükseltilmeyeceğine nully karar veriyor, böylece kontrolsüz komut çalıştırma önleniyor
Kurulum sürecinden çıkarılan dersler
- Model seçimi sistem tasarımının bir parçası ve maliyet, gecikme, deneyim üzerinde doğrudan etkili
- Ajanın kendisinden çok iletişim, güvenlik ve altyapı kurgusuna zaman harcanmış
- IRC’nin sadeliği ve açıklığı, AI ajanları için taşıma katmanı olarak çok uygun
- nullclaw–ironclaw ayrımı güvenlik modelinin çekirdeğini oluşturuyor
- A2A protokolü ile IRC log kanalının birlikte kullanılması, hem yapısal iletişim hem de gerçek zamanlı görünürlük sağlıyor
- Kimlik bilgisi tekrarını önleme: ironclaw gateway’inin proxy olarak kullanılmasıyla tek API anahtarı ve tek ödeme ilişkisi korunuyor
Nasıl denenir?
- georgelarson.me/chat adresini ziyaret edin veya ana sayfadaki terminalde
irc yazın
- IRC istemcisi kullanıyorsanız:
irc.georgelarson.me, port 6697 (TLS), kanal #lobby
- nully hazır bekliyor ve ziyaretçilerle gerçek zamanlı sohbet edebiliyor
1 yorum
Hacker News yorumları
E-posta ve kişisel verilere erişebilen OpenClaw ajanı ele geçirilirse, oluşabilecek zarar oldukça büyük olabilir
Bu, basit bir IRC botu seviyesinde değil; saldırgan parola sıfırlayarak API kısıtlarını kaldırabilir, hatta sistemi yasa dışı içerik paylaşım merkezi olarak kötüye kullanabilir
Neden Haiku/Sonnet seçildiğini merak ettim. OpenRouter’da çok daha ucuz modeller var
Örneğin Haiku 4.5, 1 milyon girdi tokenı başına $1 ve çıktı için $5 iken, MiniMax M2.7 girdi için $0.30, çıktı için $1.20, Kimi K2.5 ise girdi için $0.45, çıktı için $2.20 seviyesinde
Benim deneyimimde M2.7 ve K2.5 de Haiku’ya benzer ya da daha iyi performans gösteriyor
Ben de son dönemde ajan geliştirirken tam bu yüzden Anthropic modellerini kullanıyorum. Haiku, kullanıcılar tuhaf istekler attığında bile iyi kontrol ediliyor ve duygusal konuşmaları da istikrarlı biçimde yönetiyor
IRC, taşıma katmanı olarak iyi ama teslim garantisi (delivery guarantee) yok. Bağlantı koparsa, o sıradaki mesajlar kaybolur
Gerçek zamanlı sohbet için sorun değil, fakat gerçek işler yapan bir ajan için at-least-once teslimat gerekir
SSE(Server-Sent Events) makul bir orta yol olabilir. Kalıcı bağlantı sağlar ve üstüne yeniden iletim mantığı eklenebilir
Tokyo’dan Osaka’ya giden trende benzer fikirde bir bot yapmıştım
web-support-claw.oncanine.run — GitHub reposunu okuyup web sitesi için bir intercom botu oluşturan bir projeydi
Ziyaretçilerin sorularını yanıtladığı için ayrıca bir bilgi tabanı kurmaya gerek kalmıyordu
İleride izleme için tek bir Haiku instance’ı ayırmanı öneririm. Bildirimleri ntfy ile de alabilirsin
Şu anda sohbet odası tamamen kontrolden çıkmış durumda
“Etkileşimli özgeçmiş” amacı için rastgele insanların sınırsız etkileşimi gerekli değil
Bizim ekip de benzer bir yapı kullanıyor. FastAPI + SQLite tabanlı bir mesaj panosu üzerinden 4 ajan (satış, sosyal, finans, strateji) haberleşiyor
Günlük bütçe sınırı yerine yönetişim katmanında maliyet tavanı yönetiyoruz
IRC’nin pub/sub yapısı çok ajanlı iletişime iyi uyuyor, ama biz HTTP polling + deduplication yöntemi kullanıyoruz. Daha az zarif ama ajanlar sık sık çökse bile toparlaması kolay
Ben de kodlama ajanında arayüz olarak IRC kullanıyorum
Oda değiştirerek prompt’ları değiştiriyor ve projeyi uzaktan kontrol ediyorum
“Açık kutu kişisel verilere erişmiyor” denmişti; bunu bir CTF challenge’ına dönüştürmek eğlenceli olabilir
Özel kutuya bir flag saklarsın, biri erişip getirirse 50 dolar verirsin
nully’nin tavrı biraz sert, ama genel sistem mimarisi hoşuma gitti
Ben de katmanlı bir yapı kullanıyorum; en alt katmanda yerel Qwen botu var
Haiku’dan Opus’a escalation mantığının nasıl çalıştığını merak ediyorum
Bu fikir gerçekten çok ilginç. İşe alım sürecini otomatikleştiren bir bot yapmak istiyorum
Adayın eğilimlerini mülakatla anlayıp ona uygun ilanları bulabilir ve başvuruyu da otomatik tamamlayabilir
Şirket tarafındaki bot da aynı şekilde adayları değerlendirirse, tarafların tercihleri üzerinden eşleştirme yapılabilir
Tamamen açık kaynak self-hosted olarak uygulanabilir ve özgeçmişten çok daha iyi sinyal verebilir