blog·5 min lezen

Auto-modus zonder brokken: hoe wij goedkeuringen afhandelen

Een assistent die alles mag, is snel en onzichtbaar. Een assistent die alles vraagt, is veilig en vermoeiend. Hoe we daar in onze eigen interface tussenin zijn gaan zitten, en welke regels na een half jaar bouwen zijn overgebleven.

Zet op de contactpagina het telefoonnummer onder het formulier en maak de
knop donkerblauw. Laat me eerst zien wat je verandert.

Bij het bouwen van een assistent die echt op een server werkt, kom je snel bij de vraag die alles bepaalt: wat mag hij zelf doen?

Alles vragen is de veilige keuze. Je krijgt bij elke stap een kaart te zien en je klikt op toestaan. Dat werkt precies één dag. Daarna klik je op alles ja, zonder te lezen, en is je goedkeuring een klikoefening geworden. Niets vragen is de andere kant: snel, en je ziet achteraf niet wat er is gebeurd.

Wij zitten er nu tussenin, en dat is niet in één keer zo ontstaan. Dit is wat ervan over is na een half jaar bouwen en een aantal keren de verkeerde kant kiezen. De praktische handleiding staat in wijzigingen goedkeuren, auto-modus en ongedaan maken; dit gaat over de keuzes erachter.

Drie standen, niet twee

De eerste versie had twee standen: vragen of niet vragen. Dat bleek de verkeerde indeling. In de praktijk wil je vaak wel dat bestandswijzigingen doorgaan, maar níet dat er een commando wordt uitgevoerd dat iets anders doet.

Daarom zijn het er drie geworden: vragen bij elke wijziging, bestandswijzigingen automatisch maar de rest met een vraag, en de auto-modus waarin de assistent zelf beoordeelt of een stap veilig is. Die middelste stand is de stand die mensen uiteindelijk het meest gebruiken. Niet omdat hij een compromis is, maar omdat hij overeenkomt met hoe je over je eigen site denkt: aan tekst en opmaak mag gesleuteld worden, aan de rest niet zonder overleg.

Lezen vraagt nooit toestemming

Een regel die klein lijkt en veel uitmaakt. Bestanden lezen, zoeken en kijken wat er staat, gebeurt altijd zonder vraag.

Dat is niet alleen gemak. Een assistent die voor elke leesactie moet vragen, gaat minder kijken en meer aannemen. Je wilt dat hij eerst je bestanden bekijkt en dan voorstelt, niet dat hij gokt omdat kijken moeite kost. De goedkeuring hoort op het moment van veranderen, niet op het moment van begrijpen.

Het probleem van de auto-modus: je ziet niets meer

Hier liepen we tegen iets aan dat niet in de documentatie staat. In de auto-modus beoordeelt een classifier of een stap veilig is, en stappen die worden goedgekeurd komen niet meer langs het punt waar wij onze goedkeurkaart maken. Gevolg: de wijziging gebeurt wel, maar er is geen kaart, dus in de interface gebeurt er niets zichtbaars.

Dat is precies het tegenovergestelde van wat je wilt. Je gaf de assistent meer vrijheid en je kreeg minder inzicht.

De oplossing zit nu in twee haken. Eén die vóór elke wijziging de oude inhoud van het bestand bewaart, en één die ná elke uitgevoerde wijziging meldt wat er is gebeurd. Samen leveren ze alsnog het verschil in rood en groen, alleen achteraf in plaats van vooraf. Snelheid van de auto-modus, zichtbaarheid van de vraagmodus.

De techniek erachter staat in onze lessen over de Agent SDK.

Eén ding vraagt altijd toestemming

In elke modus, ook in de auto-modus, is er een handeling die blijft vragen: een backup terugzetten.

De reden is simpel. Alles wat de assistent aan bestanden doet, kun je met één knop terugdraaien, want vóór elke opdracht wordt er een momentopname gemaakt. Maar een backup terugzetten draait de klok terug op een manier die je niet met diezelfde knop ongedaan maakt. Een handeling die de weg terug afsnijdt, hoort nooit automatisch te gebeuren, hoe veilig een classifier hem ook vindt.

Dat is de regel die we uit dit hele traject het nuttigst vinden: onderscheid niet tussen gevaarlijk en veilig, maar tussen omkeerbaar en niet omkeerbaar. Dat eerste is een inschatting. Dat tweede is een feit.

De les die we niet hadden bedacht: half afgemaakt werk

In een van onze eigen bouwruns ging een opdracht mis op een manier waar geen goedkeuring tegen helpt. De assistent besloot het zware deel van de taak naar de achtergrond te schuiven en antwoordde met de mededeling dat hij het zou laten weten zodra het klaar was. Dat antwoord was voor ons systeem het einde van de opdracht. Het werk kwam nooit aan, en de volgende twee opdrachten begonnen op een halve site.

Niemand had iets fout goedgekeurd. De vraag was nooit gesteld.

Wat we eraan veranderd hebben: achtergrondwerk kan niet meer, en in de opdracht staat nu expliciet dat hij af moet maken voordat hij antwoordt. Daarnaast worden grote bulkwijzigingen samengevat in plaats van bestand voor bestand getoond, want honderden losse meldingen laten de weergave vastlopen. Beide staan in wat er nieuw is.

De bredere les: goedkeuringen beschermen je tegen de verkeerde wijziging. Ze beschermen je niet tegen een opdracht die niet is uitgevoerd. Daar heb je een andere controle voor, namelijk nagaan of het resultaat er ook echt is.

Waarom een instellingswissel soms even wacht

Nog een kleine, uit dezelfde hoek. Wissel je de kennispakketten van je website terwijl er een gesprek loopt, dan kan dat de koppeling in de weg zitten. Dat is nu geblokkeerd: zo'n wissel wacht tot je sessie klaar is.

Het is een voorbeeld van iets dat je pas ziet als mensen je product echt gebruiken. In de documentatie is een sessie een ding dat begint en eindigt. In de praktijk zit iemand ergens halverwege en klikt in een ander tabblad iets om.

Wat we zouden aanraden als je dit zelf bouwt

Drie dingen, in deze volgorde.

Laat lezen altijd zonder vraag gebeuren en vraag alleen bij veranderen. Niet andersom.

Zorg dat automatisch goedgekeurde stappen alsnog zichtbaar worden. Vrijheid geven mag, inzicht opgeven niet.

En zet een harde grens bij handelingen die niet omkeerbaar zijn. Die lijst is korter dan je denkt, en juist daarom goed te overzien.

Veelgemaakte fouten

Een modus kiezen en nooit meer wisselen. De modus hoort bij de opdracht, niet bij de persoon. Een nieuwe pagina laten bouwen vraagt iets anders dan een prijs aanpassen in een live webshop.

Alles toestaan voor deze taak gebruiken als standaardknop. Hij is er voor een opdracht waarvan je het plan hebt gezien. Niet voor de eerste kaart die je tegenkomt.

Denken dat ongedaan maken alles terugdraait. Bestanden wel, inhoud in je database niet. Voor dat tweede is er een backup, en die vraagt altijd toestemming.

Een goedkeuring zien als een controle op het resultaat. Je keurt een stap goed, niet een uitkomst. Kijk na een grote opdracht of het resultaat er echt is.

MK
Maarten Keizer

Oprichter van Invoker. Ruim twintig jaar hosting, systeembeheer en webdevelopment; bouwt de Claude-hosting zelf en test alles eerst op de eigen servers.

over maarten