
Sakin yazılım: titreyen bir anahtarı öldürmek ve sohbete hangi modda olduğunu söylemeyi öğretmek
İki küçük GeekBye sürümü, dikkat çeken özellikler yok — sadece titremeyi bırakan bir ayar anahtarı ve sana nihayet toplantı modunda mı yoksa kod modunda mı yanıt verdiğini söyleyen bir sohbet asistanı. "Sakin yazılımın" gerçekte neye mal olduğu, her seferinde bir ayrıntı.
Her sürüm bir savaş hikâyesi değildir. Bazıları sadece sessizce yanlış olan küçük, neredeyse görünmez şeylerin bir listesidir — hiçbir şeyi çökertmeyen ama bir uygulamayı biraz güvenilmez, biraz sinirli, biraz da sana-ait-değilmiş gibi hissettiren türden şeyler. GeekBye v2.0.3 ve v2.0.5 bunlardan ikisiydi. Yeni özellik yok. Sadece sakinlik.
"Sakin yazılım" bir ruh hali gibi geliyor. Aslında bir yığın somut karardır. İşte bunlardan üçü.
Kararını veremeyen bir anahtar
Bir ayar anahtarı vardı — ses kurtarmayı kontrol eden — tıkladığında titreyen. Açmak için dokun, ve bir saniyenin çok küçük bir bölümü için açık gösterir, sonra tekrar kapalı'ya sıçrar, sonra da yerine oturur. Minik bir görsel takılma, ama gözün onu yakalar, ve bu uygulama ne yaptığından emin değil gibi okunur.
Sebebi, optimistik güncelleme denen klasik bir arayüz yarışıdır. Bir anahtara tıkladığında uygulamanın iki seçeneği vardır: ayarın gerçekten kaydedilmesini bekleyip sonra anahtarı güncellemek (doğru ama yavaş hissettirir) veya anahtarı hemen çevirip arka planda kaydetmek (anlık hissettirir). GeekBye ikincisini yapıyordu — hemen çevir — ama geri geldiğinde kaydedilmiş değeri de yeniden okuyordu. Yani sıra şöyleydi: tıklarsın, anahtar optimistik olarak açılır, gerçek kaydedilmiş değer bir an sonra gelir, ve bir kare boyunca ikisi anlaşmazlığa düşer ve anahtar gözle görülür şekilde zıplar.
Çözüm, optimistik değer ile onaylanmış değeri temiz bir şekilde uyumlu hale getirmektir — anahtar senin seçtiğin duruma bağlanır ve kayıt onaylandığında kendini sorgulamayı bırakır. Bunun yanında v2.0.3 gösterişsiz bir metin geçişi yaptı: ses kurtarma açıklaması kardeş satırlarla hizalanmak için kısaltıldı ve ayarların ifadesi insanileştirildi. Bunların hiçbiri bir özellik değil. Hepsi, mühendislikle yapılmış gibi hissettiren bir ayarlar paneli ile üzerine titrenmiş gibi hissettiren biri arasındaki farktır.
Gitmek bilmeyen bir tur
Yeni kullanıcı turları tam olarak bir kez yararlıdır. Sorun bu bir-kez-lik: onu gördükten sonra, kapatamadığın bir katılım katmanı bu uygulama hâlâ yeni olduğunu düşünüyor sinyali veren bir karmaşaya dönüşür. v2.0.3 bunun iki ucunu da düzeltti — ürün turu artık gizlenebilir, ve gerçekten geri istiyorsan bir Turu Tekrar Oynat düğmesi var. Yardımcı olduğunda göster, olmadığında yoldan çekil, ve kullanıcının onu kendi şartlarında çağırmasına izin ver. Kullanıcının artık yeni olmadığına saygı duymak, kendi başına küçük bir sakinlik biçimidir.
Nasıl düşündüğünü söylemek istemeyen asistan
Asıl önemli olan buydu ve bu, peşinde olduğumuz daha derin bir sorunla bağlantılı.
GeekBye'nin asistanı bağlama göre farklı yanıt verir. Bir toplantıda "sen bunun hakkında ne düşünüyorsun?" sohbet havasında, toplantıya duyarlı bir yanıt almalı. Bir kodlama oturumunda aynı sözcükler teknik bir yanıt almalı. Bu yüzden backend soruyu doğru çerçeveden geçirir — buna toplantı modu ya da kod modu de — ve bu çerçeve aldığın yanıtı gerçekten değiştirir.
Sorun: uygulama sana hangi modun yanıt verdiğini hiç söylemedi. Yani asistan sohbet havasındaki bir soruya kod tadında bir yanıt verdiğinde — ya da bir kod sorusunu sohbet ediyormuşsun gibi yanıtladığında — sanki yapay zeka sadece yanlış'mış gibi görünüyordu. Yanlış değildi; diğer moddaydı ve senin bunu görmenin bir yolu yoktu. Gizli bir durum, doğru davranışı bozukmuş gibi gösteriyordu. (Mod mantığının kendisi daha büyük bir iş parçası — bir kodlama oturumu sırasında kod dışı soruları nasıl yanıtlayacağına karar veren orkestratör — ama verdiği kararı göremiyorsan bunların hiçbiri sana bir işe yaramaz.)
v2.0.5 sohbete salt okunur bir mod rozeti ekledi: asistanın toplantı modunda mı yoksa kod modunda mı yanıt verdiğini gösteren küçük bir etiket. Salt okunur olması işin tüm can alıcı noktası — ayarladığın bir kontrol değil, sistemin zaten verdiği bir karara açılan bir penceredir. Bir yanıtın neden tuhaf hissettirdiğini tahmin etmeyi bırakırsın; geldiği çerçeveyi görebilirsin.
Rozeti dürüst kılan ayrıntı
İşte aktarılmaya değer mühendislik kararı, çünkü bu, üstüne cıvatalanmış bir göstergeyi güvenilir olandan ayıran türden bir şeydir.
Mod bilgisi backend'den, akış halindeki yanıtın bir parçası olarak gelir — sunucu tarafından gönderilen olay akışında küçük bir mode karesi. Ama bu özellikten önce gelen daha eski bir istemci mode karesinin ne olduğunu bilmezdi; en iyi ihtimalle onu görmezden gelir, en kötü ihtimalle bozuk bir şey oluşturur. Bu yüzden istemci yeteneğini duyurur: bir mod rozetini nasıl göstereceğimi biliyorum diyen bir istek başlığı gönderir, ve backend mode karesini yalnızca onu gönderen istemcilere yayınlar. Eski istemciler asla başa çıkamayacakları bir sinyal almaz; yeni istemciler tam olarak istedikleri kareyi alır.
Bu tek başlıklı bir el sıkışmadır ve "bir özellik ekledik" ile "henüz güncellememiş kimseyi bozmadan bir özellik ekledik" arasındaki farktır. Aynı inceleme geçişi davranışın geri kalanını da sıkılaştırdı: rozet, sıfırlamada ve konuşma bağlamı değiştiğinde kendini temizler (eski bir mod etiketi kendi başına küçük bir yalandır) ve yalnızca ait olduğu sohbet görünümünde gösterilir.
İki "özelliksiz" sürüm bize ne öğretti
- Takılma bir güven sinyalidir. Titreyen bir anahtar, zıplayan bir düğme, bir kare fazla oyalanan bir etiket — hiçbiri çökme anlamında hata değildir, ama her biri bu uygulama tam olarak kontrolde değil diye fısıldar. Sakinlik, o fısıltıların yokluğudur ve onu her seferinde bir yarış koşulu düzelterek kazanırsın.
- Gizli bir mod, doğru davranışı bir hata gibi gösterir. Asistan doğru olanı yapıyor ve bunun için suçlanıyordu, sırf kullanıcı çerçeveyi göremediği için. Sistemin çıktıyı değiştiren görünmez bir karar verdiğinde, kararı göster — salt okunur bir rozet çoğu zaman çözümün tamamıdır.
- Yeni özellikler, onları kullanamayan istemciler için görünmez olmalı. Yetenek başlığı el sıkışması, mod sinyalinin yalnızca onu oluşturabilen istemcilere ulaşması anlamına gelir. Geriye dönük uyumluluk sonradan cıvatalanan bir sürüm kontrolü değildir; ne anladığını söyleyen bir istemci ve yanıta saygı gösteren bir sunucudur.
Bunlar hakkında kimsenin changelog başlığı yazmadığı sürümlerdir ve GeekBye v2'nin hissettirdiği gibi hissettirmesinin büyük bir parçasıdır. Bu sakinliğin üzerine inşa edildiği sürüm için bkz. bir versiyon 2 gerçekte neye mal olur (v2.0.0). Yanındaki güvenilirlik çalışması için, uygulamamızın kendini DDoS'ladığı gün (v2.0.1) ve yapay zeka not alıcın neden toplantının ortasında kaydı durdurur (v2.0.9).