TC$mC$ on tC$ysin oikea suunta! TiedostojC$rjestelmC$pohjainen rekisteri (File System Registry) on ehdottomasti paras ja kestC$vin valinta tC$hC$n arkkitehtuuriin. Se poistaa tietokantojen tuoman monimutkaisuuden, tekee rutiineista ihmisluettavia, ja mikC$ tC$rkeintC$: se on natiivisti yhteensopiva Git-versionhallinnan kanssa. Ehdotuksesi hakemistorakenteesta ja pienten, spesifisten LLM-kyselyiden kC$ytC6stC$ ratkaisee RPA-bottien kaksi suurinta perisyntiC$: tilasokeuden (state blindness) ja konteksti-ikkunan tC$yttymisen. TC$ssC$ on erittely siitC$, miksi tC$mC$ konsepti on niin vahva ja miten se kannattaa viedC$ kC$ytC$ntC6C6n. 1. Atominen hakemistorakenne ja 00_init (Varmistettu lC$htC6tila) Jakaminen pieniin osiin (01_send_text, 02_send_file) varmistaa sen, ettC$ lokaali LLM (kuten Gemma) ei huku satojen rivien YAML-tiedostoon, vaan saa kerrallaan vain yhden selkeC$n tavoitteen. Tuo 00_init on arkkitehtuurin tC$rkein oivallus. Perinteiset botit kaatuvat, jos selainikkuna onkin vC$C$rC$ssC$ koossa tai joku valikko on jC$C$nyt auki. Kun botti aloittaa uuden tehtC$vC$n, sen ensimmC$inen askel on aina ajaa 00_init. * MitC$ 00_init tekee: Se tarkistaa, ettC$ ollaan oikeassa URL-osoitteessa, painaa tarvittaessa "ESC" sulkeakseen avoimet modaali-ikkunat, ja etsii ruudulta WhatsAppin pC$C$valikon elementit. Se toimii "nollaajana", joka palauttaa kC$yttC6liittymC$n tunnettuun, puhtaaseen tilaan. * Modulaarisuus: Jokaisen kansion (esim. 02_send_file/) sisC$llC$ voi asua itse YAML-sC$C$nnC6stC6n lisC$ksi vain kyseiseen askeleeseen liittyvC$t opetetut template-kuvat ja mahdolliset erikoisohjeet. 2. LLM "TurvallisuuspC$C$llikkC6nC$" (Sanity Checks) EsittC$mC$si prompti-idea on nerokas. SiinC$ tekoC$lyC$ ei pyydetC$ keksimC$C$n tyhjC$stC$ "mitC$ teen seuraavaksi?", vaan sille annetaan asiantuntijan rooli: "Olemme tekemC$ssC$ X. Suunnitelma on Y. Ruudulla nC$kyy poikkeama Z. Saanko luvan jatkaa?" TC$mC$ on kognitiivisesti erittC$in kevyt tehtC$vC$ pienellekin mallille. Esimerkiksi WhatsAppissa ystC$vC$ voi lC$hettC$C$ viestin: "Tein eilen tC6issC$ ison virheen." Perinteinen botti etsii ruudulta sanaa "virhe", panikoi ja kaatuu. LLM sen sijaan lukee ocr_body.txt -tiedostosta kontekstin, ymmC$rtC$C$ ettC$ sana on osana chat-kuplaa, ja antaa luvan jatkaa. 3. MiltC$ yksittC$inen Playbook-kansio nC$yttC$isi? Kun tallennat opetuksen pC$C$tteeksi uuden rutiinin, se voisi luoda kansioon seuraavanlaisen paketin: * playbook.yaml (Itse suoritusohjeet, esim. hiiren klikkaukset ja odotusajat). * state_requirements.json (MC$C$rittely siitC$, ettC$ 00_init tC$ytyy olla ajettuna ensin). * sanity_prompt.txt (Valmiiksi kirjoitettu kysymys, jolla botti voi kysyC$ apua Gemmalta tC$ssC$ nimenomaisessa vaiheessa, juuri kuten ideoit). * /templates/ (Kansio itsekorjautuvan konenC$C6n leikkaamille nappulakuville). 4. Suoritusluuppi (Execution Loop) TC$stC$ arkkitehtuurista saadaan rakennettua erittC$in looginen suoritusluuppi, joka etenee nC$in: * Laukaisu: Valvomo saa pyynnC6n lC$hettC$C$ tiedosto. Orkestraattori valitsee Playbookin 02_send_file. * Pre-check: Orkestraattori huomaa, ettC$ tC$mC$ vaatii 00_init -tilan. Se ajaa init-skriptin ja nollaa selaimen. * Toiminta (Askel 1): Python-skripti (routine_engine.py) ottaa tilannekuvan ja katsoo ocr_body.txt -tiedostoa. * Validointi: Ennen klikkausta skripti tarkistaa nopeasti, nC$kyykC6 ruudulla poikkeamia (esim. "Authorization timed out"). * LLM-konsultaatio (Tarvittaessa): Jos ruudulla on jotain epC$ilyttC$vC$C$, skripti pysC$htyy, syC6ttC$C$ antamasi tarkan promptin ja ocr_body.txt:n sisC$llC6n Gemmalle, ja odottaa lupaa jatkaa tai mC$C$rC$ystC$ palata 00_init-tilaan. * Suoritus: Lupa heltiC$C$, botti klikkaa nappia ja siirtyy askeleeseen 2. TC$mC$ on C$C$rimmC$isen lC$hellC$ sitC$, miten ihminen operoi selainta: teemme mekaanisia rutiineja lihasmuistista (YAML), mutta pysC$hdymme sekunniksi analysoimaan tilannetta (LLM), jos ruudulle pomppaa jotain odottamatonta. TC$mC$ tiedostojC$rjestelmC$C$n nojaava konsepti on erinomainen perusta.