Gönderiler
Retrospektifler için neden yerel bir MCP sunucusu geliştirdik

Kelly Lewandowski
Son güncelleme 19/05/20267 dk okuma
"Yerel" demek "farklı kod" demek değil
/api/v1/ uç noktalarının üzerine ince bir katmandır. Aynı işleyiciler, aynı Zod şemaları, aynı yetki kontrolleri. Birinde bir kural değişirse diğeri de onunla birlikte değişir.Karar 1: çift yerine geçiş düğmesi olan, daha az araç
retro_create_reaction ve bir retro_delete_reaction verirdi; REST rotalarımızın oluşturmayı silmeden ayırdığı gibi. Her emoji tepkisi başına iki araç. Bunu öğelerle ve yorumlarla çarp; model henüz faydalı bir şey yapmadan gerçek tokenleri gürültüye harcıyor olursun.retro_toggle_reaction, çağıranın daha önce tepki verip vermediğine göre bir emojiyi açan ya da kapatan tek bir araçtır. Yanıtta "added" veya "removed" döner; böylece model, yalnızca silmek için ihtiyaç duyacağı tepki kimliklerini saklamak zorunda kalmadan ne olduğunu anlatabilir.Karar 2: ipuçlarını dokümanlara değil, açıklamalara yaz
userId ve bir kudoType kabul ediyor ve alanda olmayan birini geçtiğinde nazik bir hata döndürüyordu. Modeller sürekli bir kullanıcı kimliği uyduruyor, hatayla karşılaşıyor, özür diliyor ve kullanıcıdan doğru kimliği yapıştırmasını istiyordu. Faydasız.retro_create_item ile bir tane oluştur). Alıcı,
retrospektifin alanının bir üyesi olmalıdır — kullanıcı kimliğini isme göre
bulmak için organization_list_users kullan (arama filtresini
destekler).organization_list_users'ı çağırıyor, kimliği alıyor ve takdiri tek seferde veriyor. İşleyici değişmedi. İpucu değişti.
retro_update, açıklama içinde bir sütunu silmenin içindeki tüm öğeleri de sildiği konusunda uyarıyor. retro_cast_item_vote, pano başına ve sütun başına oy üst sınırından açıkça bahsediyor; böylece model, 400'e yakalanmadan önce kullanıcıyı uyarabiliyor. "Beni doğru çağırmak için bilmen gereken her şey" aracın içine giriyor, kimsenin okumadığı ayrı bir kılavuza değil.Karar 3: bir liste-ve-filtrele zinciri değil, anlamsal bir arama aracı
retro_list'i çağırması, sonra her sonuç için retro_list_items'ı çağırması ve hepsini bağlama okumasıdır. Bu, kullanıcıya para harcatan ve grep'ten daha kötü bir cevap üreten bir araç-çağrısı fırtınasıdır.search aracı geliştirdik. Sorguya karşı kosinüs benzerliğine göre sıralanmış ve türe göre gruplanmış retrospektif öğelerini, yorumları, aksiyon öğelerini, standup cevaplarını, anket yanıtlarını, buz kırıcı cevaplarını ve notları döndürür. Model, yüzlerce kayıt arasında dağılmak yerine ilgili 20 sonucu tek bir çağrıda alır.Karar 4: OAuth aşamasında özellik bazında onay
Retrospektif panosunda bu ne anlama geliyor
Panoyu önceden doldur
"Bu sprintin retrospektifini aç ve bu iki haftada Linear'da yazdığımız postmortem'lerden öğeler ekle; her olay için bir tane, What Could Improve sütununa." Model öğeleri oluşturur, kaynak biletin anonim olduğu yerleri anonim olarak işaretler ve durur. Eski retrospektiflerden bağlam bul
"Daha önce CI dengesizliği hakkında konuşmuş muyduk?" Anlamsal arama, konunun geçtiği üç retrospektifi ve onlardan çıkan aksiyon öğelerini tek bir çağrıda döndürür. Tartışmayı aksiyon öğelerine dönüştür
"Panodaki en çok oy alan üç öğeden aksiyon öğeleri çıkar, her birini onu yazan kişiye ata, Cuma'ya teslim." retro_list_items, ardından birkaçaction_item_createçağrısı. Model atamayı öğe yazarına göre yapar.İsimle takdir ver
"Priya'ya migrasyonun önündeki engeli kaldırdığı için takdir ver." Model, organization_list_users'ı "Priya" araması ile çağırır, ardından takdiri ekler.
Yeniden yapacaklarımız, atlayacaklarımız
retro_get aracına otomatik özetler gömmeyi denedik. Modeller sonra özeti özetledi ve gecikme üçe katlandı. Sıkıcı olan kazandı. MCP aracı, REST uç noktasının döndürdüğü şekli döndürüyor. Bunun üzerine eklenecek AI, kullanıcının istem ile devreye alması içindir; bizim protokole gömmemiz için değil./api/v1/ işleyicileri üzerine ince
bir adaptör. İlginç iş araç tanımlarında: isimlendirme, gruplama, ipuçları
ve hangi eylemlerin tek bir geçiş düğmesine indirgendiği. Backend mantığı
paylaşılıyor.retro_create_item bir anonymous bayrağı
kabul eder, retro_create_item_comment de öyle. Ayarlandığında,
yanıt yazar kullanıcı kimliğini, UI'nin yaptığı gibi atlar. Anonimlik
açıklamada değil, işleyici düzeyinde uygulanır.retro_update için araç açıklaması, bir sütunu silmenin içindeki
tüm öğeleri de sildiği konusunda uyarır. Bunu çağırmadan önce modelin
kullanıcıya bildirmesine güveniyoruz; tıpkı dokümanları okuyan bir
geliştirenin uyarıyı fark etmesi gibi. Protokol içinde ayrı bir onay adımı
yok.