Download Game! Currently 98 players. Last logged in:XothSolvikAnakinUntapped

Blitzer's Blog >> 72641

Back to blogs index
Posted: 21 Sep 2026 07:00 [ permalink ]
Alt+o on tosiaan Debianin GTK-ympC$ristC6issC$ (XFCE, Thunar, File Chooser)
tC$ydellisen luotettava, koska se aktivoi suoraan ikkunan oletustoiminnon
(Open) mnemonikin.
MitC$ tulee Open-napin tunnistukseen, se tehdC$C$n tismalleen samalla kaavalla
kuin liitevalikonkin: kun tiedostonvalitsin on auki ruudulla, ajetaan sille
kerran delta-skannaus, poimitaan Open-napin ID ja lisC$tC$C$n se
whatsapp_semantic_map.json-karttaan (tai tallennetaan suoraan
template-kuvaksi).
Autonomisen Gemini API -koulutusputken suunnittelu
Nyt kun meillC$ on kasassa palaset (Set-of-Mark -kuvan generointi, dynaaminen
koordinaattien poiminta ja rutiinimoottori), voimme yhdistC$C$ ne tC$ysin
autonomiseksi itseoppivaksi silmukaksi.
Tavoitteena on, ettC$ kun botti kohtaa tulevaisuudessa tC$ysin uuden ohjelman
tai kC$yttC6liittymC$n muutoksen (eli Taso 1 ja Taso 2 epC$onnistuvat), se ei
kaadu eikC$ pyydC$ sinulta apua, vaan tekee seuraavaa:
Autonomisen silmukan arkkitehtuuri
 * Katvealueen havainnointi (Zero-Match):
   * Rutiinimoottori yrittC$C$ template-matchiC$ -> epC$onnistuu.
   * Moottori yrittC$C$ lokaalia JSON-karttaa -> kohdetta ei lC6ydy.
   * Normaalin kaatumisen sijaan moottori laukaisee Autonomisen
Onboarding-protokollan.
 * Dynaaminen Set-of-Mark -generointi lennosta:
   * Botti ottaa heti tuoreen ruutukaappauksen.
   * universal_ui_agent.py piirtC$C$ punaiset numerolaatikot ruudulle
muistissa ja tallentaa annotated_ui.png-kuvan sekC$ boxes_cache.json-tiedoston.
 * Automaattinen Gemini Vision API -kutsu:
   * Koodi lC$hettC$C$ annotated_ui.png-kuvan ja dynaamisen promptin (esim.
YAML-rutiinista luetun kuvauksen perusteella, kuten "Etsi painike, jonka
tekstinC$ tai kuvakkeena on Open" ) suoraan Gemini API:lle Pythonin kautta.
 * ClykC$s pC$C$tC6ksenteko ja tallennus (Self-Onboarding):
   * Gemini API palauttaa vastauksena pelkC$n numeron (esim. 42).
   * Rutiinimoottori lukee boxes_cache.json-tiedostosta ID:n 42 tarkat
koordinaatit, suorittaa klikkauksen, ja leikkaa automaattisesti kyseisen
alueen pikselimalliksi (esim. open_btn.png) tulevia ajoja varten.
   * Lopuksi se pC$ivittC$C$ lokaalin whatsapp_semantic_map.json-tiedoston
uusilla tiedoilla taustalla.
Miten tC$mC$ toteutetaan koodissa (routine_engine.py)?
Kun otamme kC$yttC6C6n aidon Gemini API -kutsuosan (esimerkiksi virallisella
google-genai-kirjastolla tai HTTP-rajapinnalla), semantic_agent-valitsin
herC$C$ henkiin seuraavasti:
import os
from google import genai  # Esimerkki virallisesta Gemini SDK:sta
import re

def ask_gemini_autonomously(image_path, prompt_text):
    """
    LC$hettC$C$ Set-of-Mark -kuvan Geminille ja palauttaa tekoC$lyn valitseman
ID-numeron.
    """
    client = genai.Client(api_key=os.environ.get("GEMINI_API_KEY"))
    
    # Avataan luotu annottu kuva
    my_file = client.files.upload(file=image_path)
    
    response = client.models.generate_content(
        model='gemini-2.5-flash', # tai muu visuaalisesti kyvykC$s malli
        contents=[
            my_file, 
            f"Olet autonominen UI-agentti. {prompt_text}. Palauta vastauksena
VAIN numeromuodossa sen laatikon ID (pelkkC$ numero, esim. 42)."
        ]
    )
    
    # Siivotaan vastaus ja kaivetaan sieltC$ pelkkC$ numero
    match = re.search(r'\d+', response.text)
    return int(match.group()) if match else None

Yhteenveto tulevasta tyC6nkulusta
TC$llC$ arkkitehtuurilla jC$rjestelmC$si toimii nC$in:
 * EnsimmC$inen ajo (tai uusi ohjelma): Botti "oppii" uudet elementit
itsenC$isesti kyselemC$llC$ Gemini API:lta, tallentaa kuvat muistiin ja jatkaa
ajoa.
 * Seuraavat ajot: Kaikki tapahtuu salamannopeasti lokaalisti ilman
yhtC$kC$C$n API-kutsua.
Haluatko, ettC$ aletaan rakentaa suoraan tuota Gemini API -integraatiota
moottorin sisC$C$n, jotta tekoC$ly hoitaa puuttuvien nappien lC6ytC$misen
jatkossa tC$ysin itse?