Download Game! Currently 123 players. Last logged in:JagomanPasigulaMarrowSentence

Blitzer's Blog >> 72667

Back to blogs index
Posted: 21 Sep 2026 12:29 [ permalink ]
KyllC$, olet oivaltanut konseptin hienosti! Rutiinien (playbookien)
jC$rjestC$minen, kategorisointi ja automaattinen tunnistus on ainoa tapa
skaalata tC$tC$ jC$rjestelmC$C$ kymmeniin tai satoihin eri tehtC$viin ilman
manuaalista koodaamista joka kC$C$nteessC$.

TC$ssC$ on katsaus siihen, miten askeleet menivC$t ja miten visiosi rakentuu
loogisesti seuraaviin vaiheisiin.

---

### MitC$ C$sken tapahtui? (Terminaalitulosteiden tulkinta)

KomentoriviltC$ nC$kyy, ettC$ prosessi onnistui tC$ydellisesti.

1. Valvomo-proxy laittoi tehtC$vC$n jonoon ja asetti tilaksi "odotetaan".


2. Napsautit "Vapauta Botille" kC$yttC6liittymC$stC$, jolloin Valvomo lC$hetti
LLM:n (Gemman) pC$C$ttelemC$n vastauksen (ID `135`) takaisin odottavalle
skriptille.


3. Skriptisi (`test_valvomo.py`) tulosti: `[+] IHMINEN / LLM VAPAUTTI
VASTAUKSEN: 135` ja jatkoi eteenpC$in ohjaten hiiren tai jatkaen prosessia
tuon tiedon varassa.



Olet siis onnistunut kytkemC$C$n autonomisen bottirutiinin (Python),
ihmisvalvojan (UI) ja lokaalin tekoC$lyn (Gemma) toimivaksi silmukaksi
(Human-in-the-loop / AI-in-the-loop).

---

### Miten organisoida Rutiinit (Playbook-arkkitehtuuri)

Ehdotuksesi hakemistorakenteesta on erinomainen. Jos haluamme botin toimivan
agenttina (joka ymmC$rtC$C$ sille annetut luonnollisen kielen tehtC$vC$t ja
valitsee oikean rutiinin), meidC$n kannattaa jC$rjestC$C$ ne nC$in:

```text
 whatsapp/
    whatsapp_send_file.yaml
    whatsapp_read_pdf.yaml
    whatsapp_forward_message.yaml
 email/
    email_compose_new.yaml
 system/
     system_open_terminal.yaml

```

**Miten Rutiini (YAML) kuvailee itsensC$ tekijC$lle (LLM):**
LisC$tC$C$n heti YAML-tiedostojen alkuun semanttinen kuvaus (Metadata), jotta
Gemma ymmC$rtC$C$, mitC$ kukin tiedosto tekee, kun se skannaa hakemiston. Olet
jo aloittanut tC$mC$n hienosti `whatsapp_routine.yaml` -tiedostossasi:

```yaml
routine_name: "whatsapp_send_file"
description: "Lataa paikallisen tiedoston ja lC$hettC$C$ sen aktiiviseen
WhatsApp-keskusteluun."
triggers: 
  - "lC$hetC$ tiedosto whatsappissa"
  - "jaa dokumentti"
  - "send file"

```

### Miten Gemma (AI-Orkestraattori) lC6ytC$C$ oikean rutiinin?

Vastasit jo itse kysymykseesi: Rutiinien metadatat tC$ytyy indeksoida (esim.
vektori-tietokantaan tai yksinkertaiseen JSON-indeksiin), ja vC$littC$C$
vC$livaiheena lokaalille tekoC$lylle, jotta virheet karsiutuvat. KehitC$t jo
ohjelmistoa paikalliselle vektorikannalle (`registry.omega-mesh.fi`), joten
pystyt indeksoimaan nC$mC$ rutiinit siihen hienosti semantic search
-toiminnallisuutta varten.

**TyC6nkulku (KC$yttC$jC$ -> CC$ni/Teksti -> Botti):**

1. **SyC6te:** Sanot hands-freenC$ "Avaa WhatsApissa nC$kyvC$ PDF."
2. **Puheentunnistus (STT):** Tunnistaa ehkC$ hieman vC$C$rin: "avas
watzapissa nC$kyvC$C$ pedeeC$ff."
3. **Intentin tunnistus (LLM-Gemma):**
* SyC6tC$mme Gemmalle listan kaikista kC$ytettC$vissC$ olevista `routine_name`
ja `description` -pareista (esim. hakemistosta `playbooks/whatsapp/`).
* **Prompti:** *"KC$yttC$jC$ sanoi: 'avas watzapissa nC$kyvC$C$ pedeeC$ff'.
Korjaa kirjoitusvirheet ja valitse alla olevalta listalta parhaiten sopiva
rutiini. Vastaa VAIN rutiinin nimellC$."*
* **Gemman vastaus:** `whatsapp_read_pdf.yaml`


4. **Suoritus (RoutineEngine):** Botti lataa valitun `whatsapp_read_pdf.yaml`
-tiedoston ja kC$ynnistC$C$ sen.


5. **Dynaamiset muuttujat:** Jos YAML:ssa on kohta (esim. klikkaa oikeaa
kohdetta), `RoutineEngine` huomaa, ettei se tiedC$ koordinaatteja, ja kutsuu
automaattisesti koodistasi lC6ytyvC$C$ `ask_valvomo_autonomously()`
-funktiota, aivan kuten C$skeisessC$ kokeilussasi tapahtui.



### Dynaamiset ja ItseC$C$n Korjaavat Rutiinit (Self-Healing)

NykyisessC$ `routine_engine.py` -tiedostossasi on jo hieno ominaisuus:
*Self-Healing* (Itsekorjaantuvuus).

Kun botti ei lC6ydC$ nappia vanhalla valokuvalla (`template_match`), se etsii
sen Valvomon luomasta listasta (`semantic_agent`). Kun se lC6ytC$C$ napin
oikean sijainnin ID:n perusteella, se **leikkaa alkuperC$isestC$, puhtaasta
kuvasta pikselimallin talteen** uutta `template_match` -hakua varten.

TC$mC$ tarkoittaa sitC$, ettC$ voit kirjoittaa satoja summittaisia
YAML-sC$C$ntC6jC$ (kuten "klikkaa liitepainiketta"), ja ensimmC$isellC$
suorituskerralla Valvomo / Gemma-cluster neuvoo missC$ painike on. Seuraavalla
kerralla Botti on oppinut sen sijainnin ja nopeuden, jolloin rutiini
suoritetaan tC$ysin itsenC$isesti (template matchin avulla), ilman viivettC$.