Akademik e-posta kutuları tam anlamıyla birer entropi kuyusudur.
YÖK denetim ve veri giriş takvimleri, bölüm webmaster duyuru talepleri, BUVES kurumsal entegrasyon teslimleri, öğrenci not itirazları ve hiç bitmeyen yemekhane menüsü ile seminer duyurusu seli arasında, bir akademik araştırmacının gelen kutusu bir iletişim kanalı olmaktan çıkıp biçimlendirilmemiş ve önceliklendirilmemiş yükümlülüklerin oluşturduğu kaotik bir yığına dönüşür.
Bu gece TanriZarAtmaz sunucumuzda make-me-work projesinin canlı dağıtımını tamamladık: Boğaziçi Üniversitesi e-posta akışını (imap.bogazici.edu.tr) kesintisiz olarak dinleyen, eyleme dönüştürülebilir teslim tarihlerini çıkaran, hassas kişisel verileri (KVKK/PII) yerelde maskeleyen, görevleri doğrudan Obsidian kasasına (ejdertasimsi) işleyen ve kalıcı Hermes ajanı üzerinden Telegram’a gerçek zamanlı görev kartları ileten sıfır veri saklamalı (Zero Data Retention) otonom bir e-posta ayrıştırma motoru.
İşte bu sistemin nasıl kurgulandığı, Google Cloud Vertex AI ADC mimarisinin kurumsal gizlilik kısıtlarımızı nasıl çözdüğü ve tüm bu hattın günde sadece 16 sente nasıl çalıştığının teknik hikayesi.
1. Tehdit Modeli: Akademik Gizlilik ve Sıfır Veri Saklama
Üniversite e-posta akışlarında dikkatsizce kurgulanan LLM entegrasyonları tam bir uyumluluk felaketidir. Gelen e-postalar düzenli olarak T.C. Kimlik Numaraları (TCKN), öğrenci numaraları, cep telefonları, sınav anahtarları ve öğretim üyelerinin banka IBAN bilgilerini barındırır. Bu veri akışını doğrudan tüketiciye yönelik genel yapay zeka uç noktalarına (Google AI Studio ücretsiz katmanı gibi) beslemek hem kurumsal politikaları hem de KVKK / GDPR veri güvenliği yönetmeliklerini doğrudan ihlal eder.
Katı sıfır veri saklama (ZDR) garantisi sağlamak adına iki aşamalı bir mimari kurduk:
- Yerel Deterministik PII Temizleyici: Ham RFC 822 e-posta gövdesi veya konusu herhangi bir LLM istemine (prompt) girmeden önce
make_me_work.extraction.sanitizerkatmanından geçer. Derlenmiş regex kuralları şu verileri yerel işlemcide anında maskeler:- TCKN (Modulo-10 sağlama algoritmasını doğrulayan 11 haneli kimlikler) ->
[TCKN_REDACTED] - Boğaziçi Öğrenci Numaraları (8 ila 10 haneli kayıt kodları) ->
[STUDENT_ID_REDACTED] - GSM ve E.164 telefon numaraları ->
[PHONE_REDACTED] - Türkiye IBAN tanımlayıcıları ->
[IBAN_REDACTED]
- TCKN (Modulo-10 sağlama algoritmasını doğrulayan 11 haneli kimlikler) ->
- Kurumsal Sözleşme İzolasyonu: Tüketici uç noktalarını tamamen kapatarak model çağrılarımızı Google Cloud Vertex AI kurumsal CDPA (Customer Data Processing Addendum) kapsamına bağladık. Vertex AI üzerindeki müşteri girdileri kesinlikle model eğitimi için kullanılmaz, istek sınırları dışında diske kaydedilmez ve Google Cloud Enterprise VPC sınırları içerisinde korunur.
2. Kimlik Doğrulama Topolojisi: ADC ve Özel API Anahtarları
Bu dağıtımın en öğretici sistem mühendisliği detaylarından biri, otonom ajan ekosistemimiz genelindeki kimlik doğrulama topolojisini haritalandırmaktı.
┌────────────────────────────────────────┐
│ TanriZarAtmaz Sunucu Ortamı │
└──────────────────┬─────────────────────┘
│
┌────────────────────────────────┴────────────────────────────────┐
▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐
│ Hermes Agent Gateway │ │ make-me-work Daemon │
│ (systemd servisi) │ │ (systemd user servisi)│
└────────────┬────────────┘ └────────────┬────────────┘
│ │
google.auth.default() X-Goog-Api-Key: AQ.Ab8RN6I...
~/.config/gcloud/adc.json (~/.secret.keys dosyasından)
│ │
▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐
│ Proje: all-api-506817 │ │ Proje: 186704731674 │
│ Endpoint: global │ │ Endpoint: us-central1 │
└─────────────────────────┘ └─────────────────────────┘
Farklı süreçler arasında tek bir kimlik bilgisini paylaşmak yerine hata alanlarını (failure domains) birbirinden tamamen yalıttık:
- Hermes Gateway:
google.auth.default()üzerinden Application Default Credentials (ADC) mekanizmasını kullanır.~/.config/gcloud/application_default_credentials.jsonüzerindenall-api-506817projesine yönelik kısa ömürlü OAuth2 bearer token’larını otomatik olarak yeniler. - make-me-work Daemon:
186704731674numaralı Vertex AI projesine yönelikX-Goog-Api-Keybaşlığıyla iletilen özelyusufakcakayaAPI anahtarını (AQ.Ab8RN6I...) kullanır. - Pi Harness:
auth.jsondosyasında her iki profil için de ayrı tanımlara sahiptir; böylece ihtiyaç anında tek bir komutla ADC ve API anahtarı kotaları arasında geçiş yapabilir.
3. Hızlı Yol Ön-Filtresi: Token Tüketimini %20 Azaltmak
Otonom ajan tasarımında en temel mimari değişmez (invariant), deterministik mantığın yettiği yerde asla LLM çağırmamaktır.
Gelen her e-posta öncelikle derlenmiş regex kurallarından oluşan hızlı yol ön-filtresine (rules.py) tabi tutulur. Toplu duyuru göndericileri (duyuru-noreply@bogazici.edu.tr, etkinlik-noreply@, bounhaber@, postmaster@) ve otomatik konu başlıkları (Spammail report:, Haftalık Yemek Listesi, Seminer Duyurusu) anında kampüs gürültüsü olarak etiketlenir ve skipped_noise durumuna alınır:
# 0.1 milisaniyeden kısa sürede sıfır token maliyetiyle çalışır:
def pre_filter_email(email_data: dict[str, Any]) -> PreFilterResult:
sender = (email_data.get("sender") or "").strip()
subject = (email_data.get("subject") or "").strip()
for pat in _NOISE_SENDER_PATTERNS:
if pat.search(sender):
return PreFilterResult(is_noise=True, reason="Toplu duyuru göndericisi")
for pat in _NOISE_SUBJECT_PATTERNS:
if pat.search(subject):
return PreFilterResult(is_noise=True, reason="Toplu duyuru konusu")
return PreFilterResult(is_noise=False)
SQLite veritabanımızdaki (data/state.db) 488 e-postalık geçmiş ayna üzerinde yapılan analizde, bu tek fonksiyon 99 e-postayı (%20.3) tamamen 0 token ve $0.00 maliyetle eledi. Böylece LLM bütçemiz yalnızca gerçek insanların yazdığı akademik ve idari yazışmalara ayrıldı.
4. 25.000 Tokenlik Durum Kurtarma: “Yazıyor…” Takılmasının Anatomisi
Canlı dağıtım sırasında hermes-gateway.service servisini, bir Telegram turu henüz yanıt aşamasındayken yeniden başlattık. Yeniden başlatmanın hemen ardından Telegram arayüzünde Hermes’in bir dakikadan uzun süre kesintisiz “yazıyor…” durumunda kaldığı görüldü.
Yüzeysel bir hata ayıklama yaklaşımı sürecin kilitlendiğini varsayıp işlemi sonlandırabilirdi. Biz ise ss -tie ile soket telemetrisini inceledik:
ESTAB 0 0 [2a01:4f8:1c1c:5cf2::1]:39798 [2a00:1450:4001:c21::5f]:443
cubic cwnd:89 bytes_sent:112232 bytes_received:11240 lastrcv:56ms
Soket kilitlenmemişti; tam tersine, Google sunucularından yoğun bir veri akışı alıyordu.
Ağ geçidi yeniden başladığında, Hermes yarım kalan oturum durumunu sessions.json dosyasından geri yüklemiş, otomatik bir kurtarma mesajı enjekte etmiş ve konuşmanın tüm geçmişini Vertex AI uç noktasına göndermişti: tam 25.577 istem tokeni.
2026-09-15 05:08:45 INFO agent.turn_context: conversation turn: session=20260915_044335_270fbee5
2026-09-15 05:09:52 INFO agent.conversation_loop: API call #1: model=google/gemini-3.8-flash
in=25577 out=816 total=26393 latency=66.5s cache=21460/25577 (84%)
2026-09-15 05:09:52 INFO gateway.run: response ready: time=105.1s response=3719 chars
25.5k tokenlik devasa bağlam nedeniyle Vertex AI’ın istemi işlemesi ve 816 tokenlik (3.719 karakter) yanıtı üretmesi 66.5 saniye sürdü. Bu süre boyunca Telegram istemcisinin zaman aşımına uğramaması için Telegram bağdaştırıcısı her 4.5 saniyede bir sendChatAction(action="typing") sinyali gönderdi. Buradaki en kritik detay ise %84’lük bağlam önbellekleme oranıdır (cache=21460/25577): Vertex AI’ın önbellekleme yeteneği, devasa bağlamın maliyetini ciddi oranda düşürdü.
5. Maliyet Analizi: Günde 100 E-posta Sadece 16 Sent
Peki, Gemini 3.8 Flash kullanarak 7/24 kesintisiz çalışan otonom bir akademik e-posta ayrıştırma hattını çalıştırmanın gerçek maliyeti nedir?
Google Vertex AI Güncel Fiyatlandırması (31 Aralık 2026’ya Kadar Tanıtım Tarifesi):
- Girdi (İstem): $0.75 / 1.000.000 token ($0.00075 / 1k)
- Çıktı (Yanıt): $3.75 / 1.000.000 token ($0.00375 / 1k)
Günlük Operasyon Metrikleri (Günde 100 Gelen E-posta):
- Hızlı yol filtresi: 20 e-posta $0.00 maliyetle elenir (0 token)
- LLM çağrısı yapılan e-postalar: 80 adet
- Ortalama İstem Tokeni: ~1.500 token (temizlenmiş başlıklar + gövde + JSON şeması)
- Ortalama Yanıt Tokeni: ~250 token (yapılandırılmış JSON görevleri ve yönetici özeti)
$$\text{Günlük Girdi Maliyeti} = 80 \times 1.500 \text{ token} \times \frac{$0.75}{1.000.000} = $0.090$$
$$\text{Günlük Çıktı Maliyeti} = 80 \times 250 \text{ token} \times \frac{$3.75}{1.000.000} = $0.075$$
$$\text{Toplam Günlük İşletim Maliyeti} = $0.090 + $0.075 = \mathbf{$0.165 / \text{gün}}$$
$$\text{Aylık İşletim Maliyeti (30 Gün)} = 30 \times $0.165 = \mathbf{$4.95 / \text{ay}}$$
Üniversite yemekhanesindeki tek bir öğle yemeği bedelinden daha az bir bütçeyle sistem günde 24 saat çalışarak gürültüyü eliyor, idari görevleri ayrıştırıyor, bölüm işleri ile doktora araştırmalarını birbirinden ayırıyor ve teslim tarihlerini Obsidian’a işliyor.
6. Döngüyü Tamamlamak: Gerçek Zamanlı IDLE ve Telegram Kartları
make-me-work, periyodik ve gürültülü cron sorgulamaları yerine IMAP IDLE push dinleyicisi (BounIdleListener) kullanır.
Bağlantı, imap.bogazici.edu.tr:993 sunucusu üzerinde son derece düşük kaynak tüketen bir soket beklemesinde durur. Yeni bir e-posta geldiğinde sunucu * <N> EXISTS sinyali üretir. Daemon anında IDLE modundan çıkar, ham iletiyi indirir, MIME yapısını SQLite’a kaydeder, ön-filtreyi ve Gemini Flash çıkarım kaskadını çalıştırır, sunucu bayraklarını günceller (\Flagged, todo), görevleri ilgili Obsidian dosyasına (MISWebMaster.md, BUVES.md veya MIS612-Statistics-2026.md) yazar ve Telegram’daki Hermes oturumuna HTML biçimli bir görev kartı fırlatır:
⚡ <b>MIS WebMaster Görevi Ayrıştırıldı</b>
<b>Kimden:</b> Bölüm Başkanlığı <mis@boun.edu.tr>
<b>Konu:</b> Bahar 2027 Ders Dağılımı Web Güncellemesi
<b>Hedef:</b> <code>life/university/RND/MISWebMaster.md</code>
• <b>Eylem:</b> İlgili öğretim üyelerinin profil sayfalarını güncelle
• <b>Öncelik:</b> ⚡ Yüksek Öncelik
• <b>Teslim Tarihi:</b> 2026-09-22
<i>Hermes Ajanına talimat vermek için bu mesaja doğrudan yanıt verin.</i>
Telegram’da bu karta yanıt verdiğiniz anda Hermes bağlamı yakalar, kabuk (shell) veya web görevini yürütür ve döngüyü kapatır.
Otonom yapay zeka sistemlerinin devasa akıl yürütme modelleriyle yüzlerce dolar tüketen dip kuyular olmasına gerek yoktur. Disiplinli bir Unix daemon mimarisi, yerel deterministik veri temizliği, IMAP IDLE push soketleri ve Gemini 3.8 Flash’ın yüksek hızı bir araya getirildiğinde; ayda sadece beş dolara sessiz, güvenli ve kurumsal düzeyde bir otonom idari kokpit inşa etmek mümkündür.