Come mi sono fatto un assistente virtuale (con l’IA)

Io: metti domenica prossima evento pranzo dai nonni
Claude: Ho aggiunto «Pranzo dai nonni» a domenica 25 ottobre. Senza orario, perché non me l’hai detto: se vuoi lo aggiungo. Lo stesso giorno c’è anche «Prepara lezione». Ho caricato il file sul sito e controllato che la pagina funzioni.
Io: aggiungi importante tutti i venerdì giallo «oroscodino»
Claude: Fatto: «OROSCODINO» compare come avviso giallo ogni venerdì, a partire da venerdì 23. Gli avvisi gialli finora valevano solo per un periodo, quindi ho modificato la pagina perché possano ripetersi ogni settimana.

Ho un maggiordomo. Si chiama Jeeves, come il maggiordomo dei romanzi di Wodehouse, vive sul mio cellulare e ogni mattina mi dice cosa devo fare oggi: le mie lezioni, gli impegni, le scadenze, le cose da comprare. Non l’ho programmato io riga per riga: l’ho costruito chiacchierando con un’intelligenza artificiale (Claude Code), che fa da segretario. Io gli scrivo «domani stampa la verifica della 5ª» e lui aggiorna l’agenda. Ecco tutti i passi, nel caso vogliate avere anche voi il vostro assistente personale.

L'icona di Jeeves sulla schermata del telefono
Jeeves sul mio telefono, come se fosse un’app.

1. L’idea: un segretario, non un’app

Le app di calendario sono piene di bottoni. Io volevo una cosa diversa: parlare e basta. Il trucco è dividere il lavoro in due:

  • un file di dati (JSON) con tutti gli impegni;
  • una pagina PHP che legge quel file e mostra solo la giornata di oggi.

Il file lo modifica l’IA, la pagina la guardo io dal telefono. Nessun database, nessun programma da installare sul server: basta un hosting con PHP, come quello di un normale sito WordPress.

2. Dare in pasto le foto del calendario

Il primo giorno ho scaricato le foto dei miei calendari cartacei e ho detto: «prendi il calendario e preparati un file con gli eventi». L’IA ha trascritto tutto. Dove non era sicura di cosa ci fosse scritto ha messo un punto di domanda e me l’ha chiesto. Poi ho inserito anche altri appuntamenti, per esempio incollando il messaggio WhatsApp del dentista.

Il file ha poche sezioni, semplici:

  • giorni: gli impegni con data, con l’orario all’inizio («15:15 open day»);
  • ricorrenti: le cose settimanali (il nuoto del sabato, il ricevimento del lunedì) con le eccezioni per le vacanze;
  • importanti: avvisi gialli che restano in cima per un periodo («vai a prendere il cibo per i gatti, sennò mi divorano», «revisione auto» ogni due anni);
  • promemoria: le cose da fare senza data, normali o importanti (in rosso).

3. La pagina: un giorno alla volta

Dopo un po’ di prove abbiamo cambiato paradigma: la pagina mostra solo oggi. In alto il maggiordomo («Sono Jeeves.»), l’orologio e un bottoncino con il calendario per saltare a un altro giorno. Sul telefono si scorre col dito: verso sinistra il giorno dopo, verso destra quello prima. Poi, dall’alto in basso:

  • una tendina chiusa con i da fare importanti (si apre con un tocco);
  • gli avvisi gialli del periodo;
  • le mie lezioni del giorno;
  • i miei impegni, in ordine di orario;
  • se serve, una sezione per i familiari (figli, partner…) con i loro impegni, per organizzarsi;
  • in fondo un’altra tendina con i da fare normali.
Esempio della pagina di Jeeves sul telefono
Un esempio (con dati inventati: qui Jeeves lavora per uno che vive con tre gatti).

La pagina è protetta da login. E l’IA mi segnala i conflitti: una riunione alla stessa ora di una lezione, una lezione in un giorno di vacanza, un’uscita didattica che si sovrappone a tutto il resto.

La pagina potete abbellirla quanto volete: un calendarietto, lo swipe, la faccia del vostro maggiordomo preferito. Basta chiederlo.

4. Attenzione: i dati non devono essere pubblici

Qui abbiamo imparato una cosa a nostre spese.

  • Il mio server è nginx, che ignora i file .htaccess: il file degli impegni era leggibile da chiunque conoscesse l’indirizzo. Soluzione: chiamarlo eventi.json.php e metterci come prima riga <?php exit; ?>. Aperto dal browser restituisce una pagina vuota; la pagina di Jeeves invece toglie quella riga e legge il JSON.

5. Il caricamento automatico

All’inizio caricavo io i file sul sito, a mano. Poi l’IA ha scritto un piccolo script che li carica via FTP e subito dopo controlla da solo che la pagina funzioni: fa il login, verifica che compaia «Sono Jeeves.» e che il file degli impegni non sia leggibile da fuori. Le credenziali FTP stanno in un file sul mio computer, mai nel codice.

6. Dal cellulare, anche a PC spento: una piccola API

Volevo comandarlo anche dal telefono, senza tenere il PC sempre acceso. Quindi abbiamo aggiunto ad Jeeves un file api.php: con login e password (in POST) permette di leggere il file degli impegni e di riscriverlo tutto. Prima di scrivere controlla che il JSON sia valido e salva una copia della versione precedente, così un errore non distrugge l’agenda. A qualunque IA che sappia fare richieste web si danno poche regole: leggi, modifica solo quello che ti chiedo, riscrivi il file completo, controlla la risposta. E il segretario funziona anche a PC spento.

Per farlo serve Claude Code, in una sessione nel cloud: nelle impostazioni dell’ambiente bisogna permettergli l’accesso al proprio sito, altrimenti le sue richieste vengono bloccate. Poi lo si trova nell’app di Claude sul telefono, nella sezione Claude Code, quella con l’icona così:

</>
Claude Code

7. Il file CLAUDE.md: la memoria del segretario

L’IA non ricorda le conversazioni passate (a meno che non la faccia ripartire con --resume, ma a volte mi scordo). Per questo nella cartella del progetto c’è un file, CLAUDE.md, che lei legge ogni volta: com’è fatta la pagina, il formato dei dati, le regole («converti “domani” in una data», «non inventare orari o classi: chiedi», «segnala i conflitti»). Ogni volta che decidiamo qualcosa, lo aggiorna. È la parte più importante di tutto il progetto. Il tutto è anche in un repository git privato, così ogni modifica si può recuperare.

In sintesi, se volete farlo anche voi

Il modo più semplice? Passate questo articolo a Claude (Claude Code) e chiedetegli: «crea un maggiordomo anche per me, amico mio». Lo farà per voi. Per i curiosi, i pezzi sono questi:

  1. Un hosting con PHP e una cartella dedicata (protetta da login).
  2. Un file JSON con gli impegni, protetto con la riga <?php exit; ?>.
  3. Una pagina PHP che mostra un giorno alla volta (questa potete abbellirla quanto volete: un calendarietto, lo swipe, la faccia del vostro maggiordomo preferito).
  4. Un’IA che fa da segretario sul PC, con un file di regole (CLAUDE.md) sempre aggiornato.
  5. Una sessione Claude Code online, per essere indipendenti dal PC, che dialoga con una piccola API online.

Il bello è che non serve saper programmare tutto: serve sapere cosa si vuole e correggere l’IA quando sbaglia (la prima volta aveva messo in agenda dei gatti la mia riunione di dipartimento: Micia era convocata alle 15:00…). Jeeves adesso mi saluta ogni mattina. Il caffè, purtroppo, non lo fa ancora.

← Torna al Blog