← Blog

Tek router, üç ajan: support, admin ve pazarlama botlarımız nasıl aynı ucuz çıkarım üzerinde çalışıyor

June 22, 2026

Tek router, üç ajan: support, admin ve pazarlama botlarımız nasıl aynı ucuz çıkarım üzerinde yaşıyor

Spoiler: bunu 2-3 günde kurduk. Dahi olduğumuz için değil — çıkarım (inference) artık dökme demir bir köprü kadar pahalıya patlamayınca, ajanları kısmayı bırakıp basitçe… çoğaltmaya başlayabiliyorsun.

Selam, biz geliştirici ekibiyiz. Son birkaç akşam, bir kez AI ajan yayınlamış herkesin ezbere bildiği şekilde geçti: "hadi bir tane daha ekleyelim." Önce tek bir support botu vardı. Sonra ona bir "patron" gerekti. Sonra aynı altyapının pazarlama userbot'larını da gayet rahat taşıdığını fark ettik. Üç farklı ajan, üç rol — ama ortak bir beyin, ortak bir araç katmanı ve tek bir cüzdan.

Mimari üç katmanlı çıktı ve her katman bağımsız olarak değiştirilebiliyor: çıkarım → ajanlar → araçlar. Üçünü de gezelim.

Üç mimari katman: ajanlar, araçlar, çıkarım

Katman 1 — Çıkarım: OpenAI/Anthropic yerine kendi router'ımız

Tüm ajan zoo'su ne OpenAI ne de Anthropic üzerinden değil, merkeziyetsiz bir çıkarım ağının üzerinde duran kendi OpenAI uyumlu router'ımız router.mingles.ai üzerinden düşünür.

Ajan için bu hiç de sihir değil — sadece üç parametre:

  • URLrouter.mingles.ai
  • anahtar — API anahtarınız
  • model — çalıştırmak istediğiniz şey (bizimki: Kimi sınıfı bir birincil model + yedek olarak iki açık ağırlıklı model)

base URL'yi router'a çevirirsiniz ve hepsi bu — mevcut kod başka bir yere gitmeye ve çok daha azına mal olmaya başlar. Yeni SDK yok.

Ve bu "üç parametre" gösteriş için bir özellik değil. Tam olarak "bir pahalı ajanı" "marjını öldürmeyen bir ajan çiftliğine" dönüştüren şey bu. Canlı sohbetlerin ölçeğinde ana gider kalemi token'lardır ve router'ın kestiği tam da budur. Aşağıdaki her ajan bu aynı uç noktadan geçer.

Bonus — bir yedek zinciri (fallback chain): bir model ağ tarafında düşerse (503), çalışma zamanı şeffaf bir şekilde listedeki bir sonrakine geçer. Ajan bunu fark etmez bile.

Katman 2 — Ajanlar: ne üzerinde çalışıyorlar (Hermes)

Ajanların kendisi Hermes (nousresearch/hermes-agent) üzerinde çalışır — sohbet orkestrasyonunu sıfırdan yazmamak için temel olarak aldığımız bir çalışma zamanı.

Şema basit ve, anlaşıldığı üzere, çok kullanışlı: bir konteyner → birkaç "profil" → profil başına bir ağ geçidi (gateway), hepsi bir s6 denetim ağacı altında. Her profil tamamen izole — kendi config'i, kendi hafızası, kendi oturumları ve kendi Telegram botu (Hermes token'ın tek bir profile ait olmasını gerektirir). Profil başına bir gateway = küçük bir patlama yarıçapı: support beyni ile admin beyni, kendi izinleriyle, asla karışmaz.

Kısaca nasıl yapılandırdık:

  • Bir profil = bir YAML dosyası, istenen durumu içerir (model + yedek zinciri, hangi Telegram botu, hangi MCP sunucusu ve token'ının nerede durduğu). Sırlar git'te değil — senkronizasyon sırasında ortamdan enjekte edilir.
  • Kanallar. Her ajanın kendi Telegram botu var; özel ajanlar bir kullanıcı id'leri izin listesine kilitli, herkese açık olan (support) herkese açık. Support ek olarak dahili bir OpenAI uyumlu HTTP uç noktası sunar — web sitesi sohbet widget'ı bunun üzerinde çalışır.
  • Bize zaman kaybettiren tırmıklar: modelin sağlayıcısı openai değil custom olmalı (aksi halde ajan boş bir model gönderir ve her çağrı 422 verir); ve Telegram izin listesi config'den değil, profil başına .env'den okunur (aksi halde "tüm kullanıcılar reddedildi"). İkisi de artık senkronizasyon betiğimize gömülü, ki iki kez basmayalım.

Yani "bir ajan ekle" = yeni bir YAML profili bırak ve senkronize et. Sistemi yeniden yazmak değil.

Katman 3 — Araçlar: tüm güvenliğin yaşadığı yer (MCP)

En önemli mimari karar: tüm araçlar tek bir MCP sunucusunun arkasında yaşar ve bir ajanın ne yapmasına izin verildiğine LLM değil — sunucu karar verir.

Nasıl çalışır:

  • her ajan MCP sunucusuna bir bearer token ile kimlik doğrular;
  • her token bir role bağlıdır;
  • her rolün statik bir araç adı izin listesi vardır;
  • kapı (gate) sunucu tarafında, çağrı anında uygulanır — prompt'ta değil, modelde değil. Jailbreak yapılmış veya kafası karışmış bir model, rolünün vermediği bir aracı kelimenin tam anlamıyla çağıramaz;
  • her çağrı hız sınırlı ve denetlenir.

Aynı araç sunucusu — ajan başına tamamen farklı yetenekler:

AjanRolYapabilecekleri
Supportsupport_escalationhesap/kullanım/hataları oku, ticket aç, bir insana yükselt
Marketingmarketing_partnersalt okunur — büyüme analitiği + partner/referans verileri
Admin/Opsadmin_executorayrıcalıklı operasyonel yüzey — kapılı ve denetlenir

Bir yetenek ekle = bir rolün listesine bir araç adı ekle ve sunucuyu yeniden derle. Birini kaldır = bir satır sil. Kayıt defteri, hiçbir rolün talep etmediği bir aracı kaydetmeyi reddeder — böylece katalog ve kod sessizce ayrışamaz.

Ve ajan başına "süper güçler" sadece profile bağlanan başka bir MCP sunucusudur: ortak bir bilgi tabanı (vektör destekli, retain/recall), web araması (bir DuckDuckGo sidecar'ı), bir tarayıcı, ürün analitiği. Pazarlama ajanı dördünü de topladı, artı salt okunur bir dahili analitik rolü — gerçek sayıları çekebilir, web'de arama yapabilir ve bir açılış sayfasını kontrol edebilir, ama yapısal olarak faturalandırmaya dokunamaz.

MCP sunucusu: çağrı anında uygulanan rol kapısı

Yakından 3 No'lu Ajan — Pazarlama/Userbot çiftliği

Ucuz çıkarımına, profil izolasyonuna ve role kapılı araçlara sahip olduğunuzda, pazarlama ajanının dışa dönük aynı yapı seti olduğu ortaya çıkıyor.

Şu anda 3-5 userbot çalıştırıyoruz (kasıtlı olarak az — neyin işe yaradığını ve neyin yasaklandığını izlediğimiz aşama). Her userbot:

  • kendi proxy profiline sahip ayrı bir hesap — bir hesap = bir IP = ağda bir kimlik;
  • kendi persona'sı — karakter, ton, tarz; ajan tek bir hazır metni topa tutmak yerine doğal (native) bir sohbet yürütür;
  • gömülü limitler ve ısınma (warm-up) — "günde 5 ve yasaklanmazsın" halk bilgisi, ama sistem kurallarıyla uygulanır: rastgele zamanlama, sınırlı hacim, kademeli ısınma;
  • iki strateji — DM'ler ve grup sohbetleri, ki bunlar farklı hunilerdir.

Her şey bir mini-CRM'e akar: kim yanıt verdi, kim ısındı, kimi bir insana devretmeli. Ve botlar, doğal olarak, router.mingles.ai üzerinden düşünür — bu yüzden birkaç hesapta canlı günlük sohbetler bile bir gider kalemi değildir ve ölçeklemek bir "ne zaman" sorusudur, "buna paramız yeter mi" değil.

Bir userbot'un anatomisi ve mini-CRM'e akış

Ağ hijyeni (madem güvenlik konusundayız)

Ajan konteyneri veritabanı erişimine sahip değildir ve hiçbir host portu yayınlamaz — isteseydi bile DB'ye ulaşamaz. Giden yollar yalnızca üçtür: çıkarım router'ı, Telegram API'si ve MCP sunucusuna izole bir köprü. docker.sock yok, shell araçları yok — tüm yan etkiler denetlenen MCP çağrılarından geçer. Tüm tasarımın ana ilkesi fail closed (şüphede kapan): şüphe duyulduğunda sistem risk almaz, reddeder.

Özet

2-3 günde "bir bot" değil, üç değiştirilebilir katman üzerinde üç ajan türünden oluşan küçük bir ekosistem kurduk: kendi router'ımız üzerinden ucuz çıkarım, Hermes üzerinde izole ajanlar ve MCP üzerinde tek bir role kapılı araç katmanı. Support müşterilere yanıt verir, admin işleri gözetir ve insanları devreye sokar, pazarlama botları doğal sohbetler yürütür ve CRM'i doldurur.

AI ajanları kuran bir ajanssanız veya "token'ların yiyip bitireceği" bir fikri olan bir vibe-coder iseniz — çıkarım tek satır: URL'yi router.mingles.ai'ye yönlendirin, anahtarınızı ve bir modeli getirin — ve çıkarım faturasını değil, ajanların getirdiğini sayın.

Hâlâ erken aşamadayız, 3-5 hesapta çalışıp sayılar topluyoruz. Çalışan bir kurulumu oturttuğumuzda rakamları paylaşacağız. O zamana kadar — git, kendi çiftliğini vibe-code'la. Onun için beyin zaten burada.

← Tüm makalelere dön