
Nyugodt Szoftver: Egy Villódzó Kapcsoló Kiiktatása és a Chat Megtanítása Arra, Hogy Elárulja, Milyen Módban Van
Két apró GeekBye-kiadás, egyetlen főcímes funkció nélkül — csak egy beállításkapcsoló, ami abbahagyta a villódzást, és egy chat-asszisztens, ami végre elárulja, hogy értekezlet módban vagy kódolás módban válaszolt-e. Ennyibe kerül valójában a „nyugodt szoftver", részletről részletre.
Nem minden kiadás háborús történet. Néhány csak egy lista apró, szinte láthatatlan dolgokról, amelyek csendben rosszul működtek — az a fajta, ami semmit sem dönt össze, de attól hat egy alkalmazás enyhén megbízhatatlannak, enyhén idegesnek, enyhén nem-a-tiédnek. A GeekBye v2.0.3 és v2.0.5 ilyen kiadás volt. Semmi új funkció. Csak nyugalom.
A „nyugodt szoftver" hangulatnak hangzik. Valójában egy halom konkrét döntés. Íme három közülük.
Egy kapcsoló, ami nem tudta eldönteni
Volt egy beállításkapcsoló — az, amelyik a hang-helyreállítást vezérli —, ami villódzott, amikor rákattintottál. Kapcsold be, és egy pillanat töredékéig bekapcsoltnak mutatta magát, aztán visszaugrott kikapcsoltra, majd megállapodott. Apró vizuális rebbenés, de a szemed elkapja, és úgy olvassa, hogy az alkalmazás nem biztos abban, mit csinál.
Az ok egy klasszikus felületi versenyhelyzet, az úgynevezett optimista frissítés. Amikor rákattintasz egy kapcsolóra, az alkalmazásnak két választása van: megvárja, hogy a beállítás ténylegesen elmentődjön, majd frissíti a kapcsolót (helyes, de lassúnak hat), vagy azonnal átbillenti a kapcsolót, és a háttérben ment (azonnalinak hat). A GeekBye a másodikat csinálta — azonnal átbillent —, de emellett újra beolvasta az elmentett értéket, amikor az visszaérkezett. Így a sorrend ez volt: te kattintasz, a kapcsoló optimistán bekapcsol, a valódi elmentett érték egy pillanattal később megérkezik, és egy képkockányi ideig a kettő nem egyezett, a kapcsoló pedig láthatóan pattogott.
A javítás az, hogy az optimista érték és a megerősített érték tisztán egyezzenek — a kapcsoló elköteleződik az általad választott állapot mellett, és nem kételkedik önmagában, amikor a mentés megerősítést nyer. Emellett a v2.0.3 elvégzett egy dísztelen szövegcsiszolást: a hang-helyreállítás leírását megnyirbáltuk, hogy illeszkedjen a testvér-soraihoz, a beállítások megfogalmazását pedig emberibbé tettük. Ebből semmi sem funkció. De ez az egész a különbség egy olyan beállításpanel között, ami mérnökileg megcsináltnak hat, és egy olyan között, ami gondosan kimunkáltnak érződik.
Egy bemutató, ami nem akart távozni
Az új felhasználóknak szóló bemutatók pontosan egyszer hasznosak. A gond az egyszeriségük: miután láttad, egy eltüntethetetlen bevezető réteg zsúfoltsággá válik, ami azt jelzi, hogy ez az alkalmazás még mindig újoncnak gondol. A v2.0.3 mindkét végét megjavította — a termékbemutató most már elrejthető, és ha tényleg vissza akarod, ott egy Bemutató újrajátszása gomb. Mutasd meg, amikor segít, húzódj félre, amikor nem, és hagyd, hogy a felhasználó a saját feltételei szerint hívja elő. Tiszteletben tartani, hogy a felhasználó már nem újonc, önmagában a nyugalom egy apró formája.
Az asszisztens, ami nem árulta el, hogyan gondolkodik
Ez az, ami valóban számított, és egy mélyebb problémához kapcsolódik, amit régóta üldöztünk.
A GeekBye asszisztense a kontextustól függően másképp válaszol. Egy értekezleten a „mit gondolsz erről?" kérdésnek egy beszélgetős, értekezlet-tudatos választ kellene kapnia. Egy kódolási munkamenetben ugyanez a szó egy technikai választ. Így a backend a megfelelő kereten futtatja át a kérdést — nevezzük értekezlet módnak vagy kódolás módnak —, és ez a keretezés valóban megváltoztatja a választ, amit kapsz.
A baj: az alkalmazás sosem árulta el, melyik mód válaszolt. Így amikor az asszisztens egy kódolós ízű választ adott egy beszélgetős kérdésre — vagy úgy válaszolt egy kódkérdésre, mintha csevegnél —, úgy tűnt, mintha az AI egyszerűen tévedne. Nem tévedett; a másik módban volt, és neked nem volt módod ezt látni. Egy rejtett állapot elrontottnak láttatta a helyes viselkedést. (Maga a mód-logika egy nagyobb darab munka — az orkesztrátor, ami eldönti, hogyan válaszoljon a nem-kódolási kérdésekre egy kódolási munkamenet alatt —, de ennek semmi hasznát nem veszed, ha nem látod a döntést, amit hozott.)
A v2.0.5 hozzáadott egy csak-olvasható mód-címkét a chathez: egy kis feliratot, ami megmutatja, hogy az asszisztens értekezlet módban vagy kódolás módban válaszolt-e. A csak-olvasható a lényeg — ez nem egy vezérlő, amit beállítasz, hanem egy ablak egy döntésre, amit a rendszer már meghozott. Nem találgatod tovább, miért érződik furcsának egy válasz; látod a keretet, amiből származott.
A részlet, amitől a címke őszinte lesz
Íme a mérnöki döntés, amit érdemes továbbadni, mert ez az a fajta dolog, ami elválasztja egy odacsavarozott jelzőt egy megbízhatótól.
A mód-információ a backendtől érkezik a streamelt válasz részeként — egy kis mode képkocka a szerver által küldött eseményfolyamban. De egy régebbi kliens, ami megelőzi ezt a funkciót, nem tudná, mi az a mode képkocka; jó esetben figyelmen kívül hagyja, rossz esetben valami zagyvaságot jelenít meg. Ezért a kliens bejelenti a képességét: küld egy kérés-fejlécet, ami azt mondja, tudom, hogyan mutassak mód-címkét, és a backend csak azoknak a klienseknek küldi ki a mode képkockát, amelyek elküldték. A régi kliensek sosem kapnak egy jelzést, amit nem tudnak kezelni; az új kliensek pontosan azt a képkockát kapják, amit kértek.
Ez egy egyfejléces kézfogás, és ez a különbség aközött, hogy „hozzáadtunk egy funkciót" és „hozzáadtunk egy funkciót anélkül, hogy tönkretennénk bárkit, aki még nem frissített." Ugyanez az átvizsgálás megszorította a viselkedés többi részét is: a címke kitörli önmagát visszaállításkor és amikor a beszélgetés kontextusa megváltozik (egy elavult mód-felirat a maga kis hazugsága), és csak a chat-nézetben jelenik meg, ahová tartozik.
Mit tanított nekünk két „funkció nélküli" kiadás
- Az idegesség egy bizalmi jelzés. Egy villódzó kapcsoló, egy pattogó váltó, egy felirat, ami egy képkockával tovább időzik — egyik sem hiba az összeomlás értelmében, de mindegyik azt suttogja, hogy ez az alkalmazás nincs egészen ura a helyzetnek. A nyugalom ezeknek a suttogásoknak a hiánya, és versenyhelyzetről versenyhelyzetre érdemled ki.
- Egy rejtett mód hibának láttatja a helyes viselkedést. Az asszisztens a helyes dolgot tette, és emiatt hibáztatták, pusztán azért, mert a felhasználó nem látta a keretet. Amikor a rendszered egy láthatatlan döntést hoz, ami megváltoztatja a kimenetet, mutasd meg a döntést — egy csak-olvasható címke gyakran a teljes megoldás.
- Az új funkcióknak láthatatlannak kell lenniük azok számára a kliensek számára, amelyek nem tudják használni őket. A képesség-fejléces kézfogás azt jelenti, hogy a mód-jelzés csak azokat a klienseket éri el, amelyek meg tudják jeleníteni. A visszafelé kompatibilitás nem egy utólag odacsavarozott verzióellenőrzés; ez egy kliens, ami elmondja, mit ért, és egy szerver, ami tiszteletben tartja a választ.
Ezek azok a kiadások, amelyekről senki sem ír changelog-főcímeket, és nagyrészt ezért érződik a GeekBye v2 úgy, ahogy. Arról a kiadásról, amelyre ez a nyugalom épült, lásd mit igényel valójában egy második verzió (v2.0.0). A mellette futó megbízhatósági munkáról a nap, amikor az alkalmazásunk DDoS-olta önmagát (v2.0.1) és miért áll le az AI jegyzetelőd értekezlet közben (v2.0.9).