Tahmin etmeyi bırakmayan bir AI agent'ıyla başladı. Onu küçük bir çoklu-servis demosunda bir servisi entegre etmesi için ayarlamıştım, ve uçlar uydurdu. Tutarlı, kibarca ve tam bir inançla uydurdu. 404'e işaret ettiğimde, bir seviye yukarıya yeniden uydurdu. Bağlamına OpenAPI spec'ini yapıştırdığımda, sessizce görmezden geldi ve eğitim verilerinden gelen favori desenlerine geri döndü. Spec'i okumaya zorladığımda, okudu, 200 token tuttu, ve sonra geri kaydı.
Bu bir hata anlamında model hatası değildir. Bu, makinelerin bugün API'leri diğer makinelerin metinlerde bıraktığı desenlere ters mühendislik yaparak keşfetmesinin doğal sonucudur. Bir agent'ın canlı sorgulayabileceği ve koşulsuz güvenebileceği kanonik bir kaynak yoktur. Var olan, eğitim verisi, dokümantasyon siteleri ve nadir vakalarda konumu ve güncelliği kendi başına bir bulmaca olan bir OpenAPI spec'idir.
Sorun agent değildir. Agent dürüsttür. Modellerin yaptığı şeyi yapar: bağlama göre en olası devamını üretir. Bağlam API formu için inanılır bir kaynak içermiyorsa, eğitim öncelikleri kazanır. Eksik olan, makine-yerli, HTML dokümantasyonu, Stack Overflow yanıtları ve Postman koleksiyonları aracılığıyla insan-aracılı olmayan bir keşif mekanizmasıdır.
Bunu daha önce yaptık. DNS, kimlik-IP noktasını çözdü, çünkü aksi halde her makine tahmin etmek zorundaydı. robots.txt, crawler nezaket noktasını çözdü, çünkü aksi halde her crawler tahmin etmek zorundaydı. Sitemap'ler arama motorları için keşfi çözdü, çünkü aksi halde her motor tahmin etmek zorundaydı. well-known, OAuth, OpenID, ACME ve bir düzine başka mekanizmayı çözdü, çünkü aksi halde her istemci uç noktanın nerede olduğunu tahmin etmek zorundaydı. On yıllardır makineler için işaret levhaları kuruyoruz. Bunu sadece API davranışı için hiç yapmadık.
TEKIR özünde basittir. Makineler tarafından keşfedilmek isteyen herhangi bir servis için /.well-known/tekir.json'da küçük, öngörülebilir bir dosya için bir spec'tir. Dosya şunu söyler: işte API'lerim. İşte OpenAPI şemam. Varsa, işte MCP uç noktam. İşte GraphQL, gRPC ve WebSocket yüzeylerim. İşte kimlik doğrulama yöntemleri. İşte rate-limit'ler. İşte bot operatörleri için iletişim noktası. Ve işte agent'ların bir şeyin yeni olduğunda haberdar olmaları için bir versiyon dizesi.
Düz bir JSON dosyasıdır. Sıkı anlamda bir keşif protokolü, hizmet ağı bağlantısı, ikili kodlanmış imza yoktur. robots.txt ile tam olarak aynı yaşam hissi: her web sunucusunun servis edebileceği, her istemcinin okuyabileceği ve insan tarafından okunabilir kalan bir dosya.
Onu makine-uygun yapan format değil, konum garantisidir. Bir URL'ye karşılaşan bir agent, /.well-known/tekir.json'a tek bir GET yapabilir ve ya tüm API envanterini ya da temiz bir 404 öğrenir. Arama, sezgisel veya HTML ayrıştırma yoktur. Dosya oradaysa, kanonik. Yoksa, agent eski yöntemlere geri dönmesi gerektiğini bilir.
Spec kasıtlı olarak robots.txt ve sitemap.xml'e yaslanır. Bilinen yol. Öngörülebilir MIME tipi. Sunucu tarafı durum gerektirmez. Cloudflare isterse onu bir kenar varlığı olarak önbelleğe alabilir. Bir konteyner imajı isterse, public dizinde bir statik dosya olabilir. Bir platformun yeni bir araç inşa etmesi gereken bir şey olmamalı.
robots.txt ile çakışmaz. robots.txt, crawler'ların yapamayacağını söyler. tekir.json, makine istemcilerinin yapabileceğini ve hangi yüzeylere konuşmaları gerektiğini söyler. İki dosya farklı kitlelerle yan yana yaşayabilir.
OpenAPI, MCP veya diğer yüzey spec'lerinin yerini almaz. Onlara işaret eden bir dosyadır. Henüz OpenAPI spec'i olmayan birinin şimdi birini yazması için bir nedeni de yoktur. Olan kişi tekir.json'a bir referans ekler ve agent'lar tahmin etmeden bulurlar.
Keşif davranışı üç adımlıdır. Birincisi: agent servisin bir URL'sini bilir. İkincisi: agent {origin}/.well-known/tekir.json'u sorgular. Üçüncüsü: dosya oradaysa, agent ayrıntılı spec'lere işaretçiler dahil tüm envantere sahip olur. Yoksa, agent mevcut sezgilere geri döner.
Bu kadar. Dördüncü aşama yok. Özyinelemeli bir crawl, hizmet keşfi müzakeresi veya DNS hilesi yok. Öngörülebilir bir yolda düz bir dosyadır.
Dürüst bir endişe: mevcut standartların benimsenme dalgası zaten yerel olarak gerçekleşmek zorundaysa, neden başka bir dosyaya ihtiyacımız var? Cevap, dosyanın kendisinin benimseme yolu olduğudur. Sunucunuzda hiçbir şeyi yeniden yazmanız gerekmez. Statik bir JSON dosyası bırakırsınız. Statik dosya dağıtmak, web alanındaki en düşük benimseme engelidir.
Servis sağlayıcılar onu CDN'de bir alan adının /.well-known/tekir.json'una koyabilir. Konteyner imajları onu imaja derleyebilir. CI pipeline'ları mevcut OpenAPI kaynaklarından üretebilir. Bunun için kurulması gereken bir yazılım yığını, içe aktarılması gereken bir kütüphane yoktur.
TEKIR Türkçe'de tekir bir ev kedisinin adıdır. Aynı zamanda Anadolu'da sakin, sabırlı bir ev kedisi anlamında kullanılan bir kelimedir. Bu bir keşif protokolü için doğru ruh halidir. Avlanmaz. Orada oturur, etiketlidir, ve ne yapabileceğini bilmek isteyen makineler onu okuyabilir.
İsmi ayrıca seçtim çünkü çoğu internet standardı kuru kısaltmalardır. Discovery via Well-Known Resource Endpoints for Multi-Modal API Inventories kimsenin iki kez söylediği bir şey değildir. tekir'i her Türk her gün söyler. Protokol hayatta kalırsa, insanların dişlerini sıkmadan telaffuz edebileceği bir ismi olmalı.
Her şeyin başladığı agent, ona tekir.json okuyucu aracı verdiğim ve dosyayı doğru yere yerleştirdiğim servisi sunduğum anda uç uydurmayı bıraktı. Bir kez sordu, okudu ve sonraki 200 çağrı doğruydu. Bu küçük demo ölçeği, ama "agent tahmin ediyor" - "agent doğru çağırıyor" oranı, keşif deterministik hale gelir gelmez utanç verici bir değerden neredeyse sıfıra düştü.
Bu benim için sorunun keşif tarafında olduğunun, model tarafında olmadığının kanıtıydı. Doğru kanonik bir yol verilen modeller buna uyar. Tahmin etmek zorunda kalan modeller tahmin etmeye devam eder. Bu araç hakkında bir ifadedir, model hakkında değil.
