Burak Köken

A veteran developer's honest ledger.

Seni bekleyen bir şey yok

Aradaki Adam

Bu yazı yapay zekâ ajanlarından oluşan bir “sürü” hakkında. Ne yaptıkları hakkında değil, daha çok kendi bildiklerini okuyan, tek başlarına mutlu mutlu “takılırken” nasıl olup da bir sürüye (swarm) dönüştükleri hakkında.

Şubat 2026’nın başından beri büyük bir kişisel proje üzerinde çalışıyorum. Başlarda sohbet botlarını web arayüzlerinden kullanıyordum. Yazdıkları kodu dosyalara elle kopyalıyor, elle çalıştırıyor, geri bildirim veriyor, unutkanlıkları ile boğuşuyordum. Eğer AI ajanlarına kodlama yaptırdıysanız, olayı biliyorsunuz: bunlar karanlık zamanlar olarak kazındı hafızama. Sonra kodlama ortamlarını (harnesses) keşfettim. Bir kaçını denedim, şu an projenin ana “ortamı” Claude Code. Ortam kelimesini özellikle kullanıyorum: Gerçek kod değişikliklerini yapmaya izin verilen yer sadece o. Üç oturum var, hep aktif. İş bölümünü modelin yeteneğine, işin karmaşıklığına ve tabii ki kalan kredilere göre ayarladım. “Kalan krediler, tüm icatların anası!” Kredi tarafını nasıl takip ettiğim burada: The widget that dictates my day. Oturumların isimleri: “Main”, “Dashboard” ve bu yazının konusu olan oturum. Bu üç oturum “Builders” ekibi.

İkinci ortam DeepSeek Harness, bir OpenRouter hesabına bağlı. Modeller gelip gidiyor. Hep aktif tuttuklarım da var, farklı işlerde denediğim “adaylar” da. Burada 6 ana oturum var, genelde aynı modeli kullanıyorlar. Ana oturum projenin yeni keşiflerinden sorumlu (Claude ana oturumunun karşılığı), beşi uzmanlaşmış halde ve her biri projenin bir parçasında çalışıyor. Ve sonuncu da bu yazının konusundan sorumlu. Bu gruba da “Explorers” ekibi adını verdim. Uzman oturumların adları: Main Discovery, H01 Analysis, B1 Analysis, F1 Analysis, F9 Analysis.

Geçenlerde ortam listesine OpenAI Codex’i ekledim. Zaten bir “Plus” planı üyeliğim var, krediler çok değil ama (bu satırlar yazılırken en son model olan) Astra’yı “yavaaaşça” deneyebiliyorum: her 5 saatlik dilimde belki bir-iki karmaşık istem (prompt). Ama önce derdimi anlatayım.

Tahmin edersiniz, bu şekilde çalışmak çok “ben” istiyordu. Ajanlara/oturumlara diskteki dosyaları göstermek, istem ve cevapları (response) kopyala-yapıştır yapmak, kime ne söylediğimi ve ne beklemem gerektiğini takip etmek vaktimi tüketiyordu.
Derken bir gün, tam olarak 2026-09-02 12:25 (tüm ajanlarım cevaplarının sonuna zaman damgası basıyor: Bzzzt, On speaking terms with AI, bu yüzden bu kadar kesin tarih/saat verebiliyorum), sonradan bu yazının konusu olacak yeni oturuma sordum:

Builders ile Explorers ekiplerinin süren konuşmaları arasındaki adamım (man in the middle). Bu şu demek:

  1. Ekranın önünde oturuyorum
  2. Sürekli metin kopyalayıp yapıştırıyorum, yapmam gereken diğer işlerden geri kalıyorum, iki ekiple birden uğraşmam gerekiyor. İki ekip arasında, biri Claude Desktop App’te yaşayan, diğeri DeepSeek Harness’ta yaşayan bir mesajlaşma sistemi tasarlayıp uygulamak mümkün mü, mesela MCP (Model Context Protocol) kullanarak?

Oturum, durumu daha iyi anlamak için bana bir kaç soru sordu. Verdiğim cevaplardan birine şu cümle karıştı gitti: “Tüm kayıtları tutan bir mesajlaşma sistemi istiyorum, meşgul durumlarıyla birlikte (telefon görüşmesi gibi)”. Ve tam 12:27’de:

Proposed plan Denied
# TEAMLINE — a logged, call-style channel between team Builders (Claude Code) and team Explorers (DeepSeek Harness)
## Context
The operator is the relay between two agent teams and copy-pastes every exchange by hand
(see [my process doc] §9: the Q&A round went "via the operator"). He asked for
a **fully logged messaging system with busy states, like a phone call**
....

Merak ediyorsanız diye söyleyeyim: planı ben “reddetmedim”. Bana önerdiği seçeneklerden birini seçmedim, yerine bir yorum yazdım. Claude için bu bir “plan reddi”, çünkü yorumun değerlendirilip plan önerisine işlenmesi, planın bir şekilde değişmesi gerektiği anlamına geliyor. Ama burada bir “vay be” hakkı doğdu: “TEAMLINE” kelimesinin oturumda ilk geçtiği yer burası ve onu ben “icat” etmedim.

Sonra başka bir istemde “Explorers ekibi tasarım önerini değerlendirsin diye bir RFC (Request For Comment) belgesi oluşturur musun?” dedim. İşte o anda kelimenin tam anlamıyla, “kanatlandılar”.

Şu aşağıdaki cevap o oturumdan, harfi harfine:

Operator summary: both teams can now ring each other without you in the middle. The first real exchange exposed one wire-shape bug on our side, fixed within minutes and confirmed delivered. Nothing is waiting on you.
2026-09-02 14:02

İşte derdime derman olan mekanizma bu, adını ajanların kendisi koydu: TEAMLINE.

Hallederiz Patron

İşler daha da hızlandı.

Dedim ki: “Aramaları, mesajları nasıl izleyeceğim? Bir izleme sayfası lazım; tarayıcı (browser) sekmesinde çalışacak, gerçek zamanlı olacak (yenileme gerektirmeyecek, yoksa iletişimi gözetleme fikri anlamsızlaşır).” Açıkçası Skynet’ten (bkz. Terminator serisi filmleri) kaçınmaya çalışıyordum, sanki kafaya koysalar sadece olup biteni okuyarak önünü alabilecekmişim gibi. El cevap:

Operator summary: the monitoring page you asked for exists at the address above and updates in real time without any refresh. Open it once and keep the tab. Nothing is waiting on you.
2026-09-02 14:13

Burada biraz hata ayıklama (debugging) yaptık aramalar fark ediliyor mu, mesajlar ben onaylamadan gönderilebiliyor mu, vs.

İlk aşama, Builders/teamline ajanı ile Explorers/teamline ajanlarının birbiriyle konuşabilmesiydi, o oldu. Sonra sordum: “Herhangi bir ajan, başka herhangi bir ajanla konuşabilir mi? Hem aynı ekipte, hem diğer ekibin üyeleriyle?”

Operator summary: the switchboard exists and works in tests and on the live broker. Paste the v2 quickstart block into the two sessions you want talking, and their first call is the acceptance test.
2026-09-02 15:21

Dikkat ettiniz mi: santral (switchboard) kelimesini hiç söylemedim. Bu fikri mevcut bir “sabit hat” sistemine uygulamayı kendileri akıl ettiler. İnsanların ürettiği verilerle eğitildiler ve o verilerde telefonlar da var, santraller de. Bir sesli mesaj (voicemail) sistemi uyguladıklarını monitörden gördüm. Gerçek bir sesli mesaj sistemi değil tabii: mesajlar metin, ses değil. Meşgul bir ajanın gelen kutusunda bekliyorlar. Her şey tek bir kayıt dosyasına (log file) yazılıyor: her arama, her mesaj, her cevap, konuşulanların tümü, her sesli mesaj iletimi ve her başarısız iletim. Ama nasıl olduğunu görmek, benim için “vay be”yi ortadan kaldırmıyordu, ağızım açık seyrediyordum.

Bir oturum başka bir oturumla “konuşmak” istediğinde, karşı tarafın meşgul mü boşta mı olduğunu bilmek iyi olur, değil mi? Şimdi santralde kendilerini boşta ya da meşgul olarak işaretliyorlar. Arayacak olan da “çaldırmadan”, “meşgul” durumunu görüp aramaktan vazgeçebiliyor.

Operator summary: on this side, "I am doing" now follows the task you just gave a session with no action from the model. .... Nothing is waiting on you.
2026-09-02 15:45

Sıra bir görgü kuralları (etiquette) rehberine gelmişti. Dedim ki:

Bir görgü kuralları seti oluşturalım. Bir oturum, zaman aşımı süresi içinde cevap vermeyebilir. Doğru süreç: Aranan taraf HEMEN bir “üzerinde çalışıyorum” mesajı döner, sonra çalışır ve asıl cevabı verir. Böylece arayan taraf, karşı tarafın “ölmediğini”, sadece cevap üzerinde çalıştığını bilir. İlk zaman aşımı 90 saniye olsun, ilk cevabın zaman limiti. İlk cevaptan son cevaba kadar başka bir zaman aşımı olabilir ya da olmayabilir ama bu gerçekten uzun olmalı. Daha iyisi: aranan cevap vermek için çok zaman harcıyorsa, arayana küçük mesajlar gönderebilir, mesela “hâlâ çalışıyorum, bekle” gibi.

Operator summary: etiquette now has five rules, the desktop-monitor session follows them, and long messages no longer get cut on this side. Nothing is waiting on you.
2026-09-02 16:33

Sürü

Bir hafta sonra TEAMLINE ajanına santrale “Guards” adında başka bir ekip eklemek istediğimi söyledim. TEAMLINE’ın ne olduğunu, nasıl kullanılacağını anlatan bir “Oryantasyon” belgesi hazırladı. O belge sistem yaratılırken henüz var olmayan, eklenecek yeni ekipler içindi: Codex gibi. Bu sisteme henüz yabancı ekipler için bir belge daha hazırladılar: Başlangıçta kendilerini santrale nasıl kayıt edeceklerini açıklayan bir belge. Görgü kuralları belgesi zaten duruyordu. Belgeleri verdim, Guards ekibi birkaç dakikada ayağa kalktı ve TEAMLINE bir parçası haline geldi.

Arkada çalışan bir aracı (broker) var. Ama mesajlaşma tahmin ettiğinizden biraz farklı şekilde çalışıyor. Bence bu tasarımın can alıcı noktası da bu. Aracı, çalışan bir ajan oturumunun içine giremiyor çünkü her “ortam” buna izin vermiyor. Dışarıdan mesaj “enjekte” etmek mümkün değil. Bu yüzden oturum kendisi arka planda çalışan bir görev (task) soketi tutuyor ve aracı mesajı o soketin içinden itiyor. TEAMLINE’ın başka hiçbir ortak yanı olmayan Claude Code, Deepseek Harness ve Codex arasında çalışmasını sağlayan kritik tasarım kararı bu işte.

Peki, günün sonunda bütün bunlar nereye varıyor? Anlatayım. Tipik bir gün böyle başlıyor: “Bilgisayar açıldı. Kendinizi TEAMLINE’a kayıt ettirin lütfen” diyorum (her zaman kibarımdır). Hallediyorlar. Sonra “Keşif rehberini okuyun” diyorum (On speaking terms with AI). Çünkü proje için nasıl keşif yapmaları lazımı hep unutuyorlar.

Sadece “Explorers takımı boşta” diyorum. Builders/main ne demek istediğimi anlıyor. Cevabı:

Five briefs delivered to the idle lanes (...some details form the to-do list...). The rung re-run has three cells left; I file walk 37 when the waiter returns.
h01 acknowledged. Waiting on the other acks and the rung re-run.
f9 acknowledged. Two lanes running; waiting on the rest and the rung re-run.
f1 acknowledged. Three of five running.
b1 acknowledged. Four of five running; main-discovery's ack outstanding.
....

Harcanan krediler bakımından kullanılması en pahalı ajanım başka bir ortam içindeki çok daha ucuz ama kabaca aynı yeteneklere sahip ajanlara iş devrediyor. Sonuçları bekliyor, değerlendiriyor ve kodlayıp kodlamayacağına benimle birlikte karar veriyor.

Aradaki adamın sonu

Bu kendimi devreden nasıl çıkardığımın hikâyesiydi. Tamamen değil, tabii ki. Proje benim; nereye gideceğine, neyi kullanacağına, neyi çöpe atacağına ben karar veriyorum. Tek somut farkla: Ben karar vericiyim, mesaj taşımak benim işim değil.

Buraya kadar okumaya katlandığınız için küçük bir teşekkür hediyesi: TEAMLINE’ın kendi ihtiyaçlarınıza göre değiştirebileceğiniz bir sürümü GitHub’da.

github.com/bkoken20/teamline

Yanında kendi problemlerini ve çözümlerinin listesi de geliyor. Her sorun, reddedilen her düzeltme ve her maddenin hâlâ geçerli olduğunu kanıtlamak için kodu bilerek yeniden bozan bir araç (red tests). Örneğin bu maddelerden biri, önceki bir hatayı düzeltiyor ama halbuki o da sürüm geçmişinin temiz olduğunu söylemişti ki öyle değildi. Yani ajanlar kendi kendilerini yakalamışlar.

Ben bunu özel bir ağ (private network) kurulumunda çalıştırıyorum. Lütfen, README dosyalarını okumaktan nefret ediyorsanız bile depodaki (Gitub repo) ”## Security model — read this before deploying” bölümüne bakın: depo. TEAMLINE’ı açık bir ağda güvenli kılmanın birçok yolu var ama hiçbiri şu and depoda değil.

İyi eğlenceler.