Giuseppe Villella
← Tutti i progetti
SCHEDA AI · assistenteIn uso, in sviluppo · 959 test

J.A.R.V.I.S.

Pubblicato

Cos'è
Un sistema IA ibrido, locale e cloud, per la domotica e la produttività personale, costruito da zero in Python. È nato su un portatile con 4 GB di RAM e una CPU integrata; oggi gira su un Ryzen 5 3600 con una RTX 2060.
Come ragiona
Ogni richiesta passa prima da un instradamento deterministico: comandi domotici, app, promemoria e documenti hanno ciascuno il proprio percorso. Solo ciò che resta arriva a un modello linguistico, quello locale (Qwen2.5 7B) o, se la domanda è complessa, il cloud.
Principi
Locale di default, cloud solo quando serve. I dati personali non lasciano mai il PC. Ogni servizio esterno può mancare senza far crollare il resto.

Sei strade per ogni richiesta

Prima di disturbare un modello linguistico, J.A.R.V.I.S. prova sei percorsi in ordine fisso: domotica, apertura di app e controllo audio, promemoria, documenti personali, modello locale, cloud. Se il cloud non risponde torna da solo al locale, avvisando con una battuta sarcastica invece che con un errore.

Una memoria che ricorda davvero

In background riassume le conversazioni, sempre in locale, così a “cosa mi avevi consigliato per la tesi?” sa rispondere. Se il PC resta spento per giorni, al riavvio recupera tutto l’arretrato. Le etichette di tempo come “ieri” o “3 giorni fa” le calcola il codice, non il modello: prima il modello raccontava come “ieri” un ricordo di tre minuti prima.

Proattivo, non solo reattivo

Consegna i promemoria senza che glieli si chieda e incrocia scadenze e previsioni meteo (“domani ha una scadenza e pioverà, vuole che glielo ricordi prima?”). La decisione sul meteo è deterministica, senza IA. Avvisa anche quando il disco si riempie, quando il modello locale smette di rispondere e quando la quota gratuita del cloud arriva all’80%.

Privacy per architettura

Documenti e memoria vengono elaborati solo in locale, mai in cloud. Chi lo usa da ospite non vede i dati dell’account Admin. Alle richieste di password di altri siti risponde sempre con un rifiuto chiaro.

Una voce e un volto

La voce passa da una catena di effetti audio (filtro, compressore, riverbero, un semitono più in basso, un chorus leggero) che la avvicina a quella del film. Si interrompe con una scorciatoia da tastiera: la prima versione usava la parola di attivazione, ma il microfono captava la voce di J.A.R.V.I.S. stesso e lui si interrompeva da solo. L’HUD, con anelli “arc reactor” e un archivio di ologrammi 3D, reagisce alla voce in tempo reale; i modelli 3D li genera un writer STL scritto a mano o li scarica da Thingiverse.

Scelte misurate, non a intuito

Qwen2.5 3B era più veloce, ma perdeva il “lei” e la fluidità dell’italiano: scartato. Qwen3 4B scriveva il proprio ragionamento in inglese dentro la risposta; Qwen3 8B era il 13% più lento. Ho valutato anche la risposta in streaming e la generazione 3D con IA, e le ho scartate con i numeri alla mano.

Il bug che mi ha spento il PC

Durante lo sviluppo del comando “spegni il pc”, un test ha spento la macchina per davvero, nonostante le funzioni risultassero simulate. La causa era una tabella di funzioni costruita all’avvio, che i test non riuscivano a sostituire. Riavvio e spegnimento sono stati tolti; la lezione è stata imparata.

Screenshot

Scelte corrette in corsa

Come lavoro con l'IA →
CASO 01

Il tasto batte la voce

All'inizio
Interrompevo J.A.R.V.I.S. mentre parlava dicendo la parola di attivazione, con lo stesso modello di "Hey Jarvis".
Ho notato
Senza cancellazione dell'eco, il microfono captava la voce di J.A.R.V.I.S. stesso e lui si interrompeva da solo. Non era una soglia da regolare: era un limite del canale audio.
Ho deciso
Ho sostituito l'interruzione vocale con una scorciatoia da tastiera. Una pressione fisica del tasto non si può confondere con l'eco.
CASO 02

"Ieri", tre minuti fa

All'inizio
Passavo al modello i ricordi delle conversazioni passate senza dire quando erano avvenute.
Ho notato
Il modello inventava la data: un ricordo di tre minuti prima veniva raccontato come "ieri".
Ho deciso
Ho fatto calcolare al codice un'etichetta di tempo relativo per ogni ricordo ("pochi istanti fa", "3 giorni fa") e l'ho aggiunta al contesto. Il modello non deve più indovinare.
CASO 03

Una conferma che non confermava

All'inizio
La lista delle cose da fare riconosceva solo la frase "aggiungi X alla lista".
Ho notato
Con "aggiungi X alle cose da fare" la richiesta finiva al modello, che rispondeva di averlo fatto senza aggiungere niente. È l'errore più insidioso, perché non sembra un errore.
Ho deciso
Ho esteso i comandi a tutti i sinonimi già usati altrove nel progetto e ho impedito che frasi con un comando dedicato finiscano al modello generico.

Scorciatoie, per chi usa la tastiera (cioè tu)

g p
Progetti
g m
Come lavoro
g c
Contatti
t
Cambia tema
l
Cambia lingua
?
Questo pannello

Il codice è del 1986. Il camion è mio.

J.A.R.V.I.S.

Salve. Sono J.A.R.V.I.S., l'assistente del signor Villella. Chiedimi pure dei suoi progetti.

Le domande non vengono salvate.