Come creare un agente AI su un VPS
Scopri come implementare un loop di ragionamento con tool e MCP su un VPS. Impara a integrare memoria e strumenti per trasformare un LLM in un agente.
Cos'è realmente un agente AI
Un agente AI è un loop che avvolge un modello linguistico. Il modello analizza la situazione, decide un'azione, il tuo codice esegue tale azione, il risultato torna al modello e il loop ricomincia finché il compito non è completato. Questo è il concetto fondamentale. Un semplice chatbot risponde una volta e si ferma. Un agente continua l'esecuzione, compiendo azioni reali tra un turno e l'altro, finché non raggiunge l'obiettivo assegnato.
L'azione è la parte cruciale. Un modello linguistico, da solo, produce solo testo. Non può leggere un file, chiamare un API o eseguire un comando. Un agente fornisce al modello un set di tool utilizzabili e un modo per richiederli. Quando il modello deve cercare sul web o scrivere un file, non esegue il lavoro direttamente. Emette una richiesta strutturata, il tuo codice esegue il tool e la risposta viene restituita come prossimo input per il modello. Il modello fornisce il giudizio; il tuo server fornisce le mani.
Non tutti i task richiedono un agente; utilizzare un agente per default è un errore comune. Se i passaggi sono noti in anticipo, uno script semplice è più semplice, veloce e affidabile. "Recupera questa pagina ogni ora e inviami il prezzo via email" è un job pianificato, non un agente. Costruisci un agente quando il percorso non è predefinito, ovvero quando il modello deve analizzare ciò che trova e decidere cosa fare successivamente. Il costo di un agente è l'imprevedibilità; usalo solo quando la flessibilità giustifica l'investimento.
Tool: come agisce un agente
Un tool è qualsiasi capacità che assegni al modello, descritta in modo sufficiente affinché esso sappia quando utilizzarla. Leggere un file, eseguire un comando shell, interrogare un database, inviare un messaggio: ognuno è un tool con un nome, una breve descrizione e un elenco di input. Tu definisci i tool; il modello decide quando chiamarli.
Il meccanismo è identico ovunque, indipendentemente dal modello utilizzato. Il modello restituisce una richiesta strutturata che specifica il tool e compila i relativi input. Il tuo codice riceve la richiesta, esegue la funzione corrispondente e invia il risultato nel turno successivo. Il modello legge il risultato e chiama un altro tool oppure scrive la risposta finale. Il function calling è l'infrastruttura di ogni agente, e il loop che lo guida è composto da poche righe di codice standard.
Questo è anche il punto in cui risiede il tuo controllo. Il modello può richiedere l'esecuzione di un comando, ma nulla viene eseguito finché il tuo codice non decide di farlo. In questo intervallo puoi inserire prompt di approvazione per azioni pericolose, limiti su ciò che un tool può toccare e un log di tutte le attività dell'agente. Un agente è sicuro solo quanto lo sono i tool che gli fornisci e i controlli che implementi.
MCP: uno standard per connettere i tool
Scrivere un'integrazione specifica per ogni servizio manualmente è inefficiente. Il Model Context Protocol, o MCP, è uno standard aperto che risolve questo problema. Invece di programmare un nuovo tool per i tuoi file, il tuo database e il tuo issue tracker, punti l'agente verso un server MCP che espone già tali elementi come tool. L'agente utilizza un unico protocollo; il server gestisce l'interazione con il sistema reale.
Il vantaggio è il riutilizzo. Un server MCP scritto da altri per un servizio che utilizzi diventa disponibile per il tuo agente senza nuovo codice di integrazione; allo stesso modo, un server scritto da te è utilizzabile da qualsiasi agente che parli il protocollo. Su un VPS questo è rilevante, poiché puoi eseguire i server MCP come servizi separati accanto all'agente, ognuno con i soli permessi necessari. Spiego la configurazione in running MCP servers on a VPS.
Memoria e recupero
Un modello linguistico non ha memoria propria tra una chiamata e l'altra. Tutto ciò che deve sapere sul task corrente deve essere fornito a ogni turno. Per lavori brevi questo è sufficiente, poiché l'intera conversazione rientra in una singola richiesta. Per compiti più lunghi devi gestire la memoria autonomamente; esistono due pattern principali.
Il primo è lo scratchpad. Fornisci all'agente un file che può leggere e scrivere, e istruiscilo a registrare ciò che apprende durante l'esecuzione. Al turno successivo, o alla sessione successiva, l'agente rilegge il file e riprende da dove aveva interrotto. Questa è memoria sotto forma di documento semplice, e funziona perché l'agente tratta il file come un normale tool.
Il secondo è il recupero (retrieval). Quando l'agente necessita di conoscenze da un vasto corpus di documenti che non rientrerebbero in una singola richiesta, memorizzi i documenti in forma ricercabile e estrai solo i frammenti rilevanti nel contesto del modello quando necessario. Questo pattern è chiamato retrieval-augmented generation, o RAG. L'agente pone una domanda, il tuo codice trova i passaggi corrispondenti e solo quelli vengono inviati al modello. Il database risiede sul tuo server, quindi i tuoi documenti privati non lasciano mai il server.
Molti agenti, un coordinatore
Un singolo agente con molti tool è sufficiente per la maggior parte dei task. Quando un lavoro è ampio o si divide naturalmente in parti, è utile una struttura diversa: un agente coordinatore che delega a sub-agenti specializzati. Il coordinatore suddivide l'obiettivo in parti, assegna ogni parte a un sub-agente costruito per quel tipo di lavoro e combina i risultati.
Il vantaggio è la focalizzazione. Un sub-agente con un compito ristretto e un set limitato di tool prende decisioni migliori rispetto a un generalista che gestisce tutto; inoltre, le parti indipendenti possono essere eseguite simultaneamente. Il costo è la coordinazione, che è reale; mantieni un singolo agente finché un task non richiede esplicitamente di più. Inizia in modo semplice e aggiungi agenti solo quando uno solo risulta chiaramente insufficiente.
Self-hosted o hosted: quale modello esegue il tuo agente
Il modello è l'unica parte di un agente che non devi eseguire personalmente; scegliere dove risiede è la decisione più importante. Un modello hosted, accessibile tramite API, offre il ragionamento più avanzato senza necessità di gestione operativa: invii testo e ricevi testo. Un modello self-hosted viene eseguito sul tuo server, garantendo la privacy di ogni richiesta, un costo fisso invece di un costo per token e l'indipendenza da servizi esterni. Il compromesso riguarda capacità e sforzo. I migliori modelli hosted sono superiori a quelli che puoi eseguire autonomamente, e gestire il proprio modello richiede memoria sufficiente per ospitarlo.
Quest'ultimo punto è il limite pratico. Un modello deve rientrare nella memoria del tuo server e, se utilizzi una GPU, nella sua memoria video. Un modello troppo grande per l'hardware non verrà caricato. Prima di pianificare un agente self-hosted, verifica se il modello desiderato è compatibile con la tua macchina:
Se i numeri non corrispondono, hai tre opzioni: scegli un modello più piccolo, utilizza una quantizzazione più aggressiva per ridurne le dimensioni, oppure usa un'API hosted per il ragionamento e mantieni sul server solo i tuoi tool e i tuoi dati. Molti agenti self-hosted iniziano con un modello locale tramite Ollama on a VPS e passano a un'API hosted per i passaggi più complessi.
Il server è la parte critica per la sicurezza
Un agente capace di eseguire comandi shell e scrivere file è potente, ed è esattamente questo che lo rende pericoloso. Il giudizio del modello è buono ma non perfetto; un'istruzione errata, un bug o un input malevolo possono trasformare un agente utile in uno che elimina dati errati o espone segreti. La sicurezza non è opzionale e, su un server, è la parte più importante.
Alcune abitudini garantiscono la maggior parte della sicurezza. Esegui l'agente come utente dedicato non privilegiato, mai come root, in modo che un errore abbia un impatto limitato; lo stesso principio è trattato in running services as an unprivileged user. Mantieni i segreti, come le chiavi API, fuori dal codice e leggibili solo da quell'utente. Inoltre, isola (sandbox) i tool che interagiscono con il sistema, in modo che l'agente possa accedere solo a ciò di cui ha realmente bisogno. Per un esempio pratico di hardening di un agente self-hosted, consulta running OpenClaw safely on a VPS. Se preferisci usare un modello hosted per l'intelligenza, la guida su building an agent with Claude on a VPS applica gli stessi concetti a un modello specifico.
Per un esempio completo, building an OpenClaw-style personal agent applica questi elementi; se preferisci eseguire una soluzione già pronta, parti da self-hosting Hermes Agent on a VPS o running Agent Zero on your own server, oppure consulta the best self-hosted AI agents in 2026 per un confronto tra tutte le opzioni pronte all'uso che copriamo.
FAQ
Qual è la differenza tra un agente AI e un chatbot?
Un chatbot risponde a un messaggio e si ferma. Un agente esegue un loop: il modello decide un'azione, il tuo codice la esegue, il risultato torna al modello e il processo si ripete finché il compito non è terminato. La differenza è che un agente compie azioni reali tra un turno e l'altro, chiamando tool per leggere file, eseguire comandi o interrogare servizi, invece di produrre solo testo.
Ho bisogno di una GPU per eseguire un agente AI su un VPS?
Solo se esegui il modello in modalità self-hosted. Il loop dell'agente, i tool e la memoria sono codice standard che funziona correttamente su un normale VPS senza GPU. La GPU è necessaria quando vuoi eseguire il modello linguistico sul tuo hardware, poiché il modello deve risiedere in memoria. Se utilizzi un modello hosted tramite API, il calcolo pesante avviene altrove e un VPS modesto è sufficiente.
Cos'è MCP e devo usarlo per costruire un agente?
MCP (Model Context Protocol) è uno standard aperto per connettere un agente a tool e fonti di dati. Non è strettamente necessario, poiché puoi scrivere ogni tool manualmente. MCP semplifica il lavoro permettendoti di riutilizzare server esistenti per servizi comuni ed esponendo i tuoi sistemi una sola volta per qualsiasi agente. È una comodità che diventa vantaggiosa all'aumentare delle integrazioni.
È sicuro dare a un agente AI l'accesso al mio server?
Può esserlo, se lo controlli. Un agente che esegue comandi è sicuro solo quanto lo sono l'account sotto cui opera e i tool che autorizzi. Eseguilo come utente non privilegiato, mantieni i segreti fuori portata, isola i tool che toccano il filesystem e richiedi l'approvazione per azioni difficili da annullare. Tratta l'agente come codice non affidabile che è semplicemente intelligente, e fornisci solo ciò di cui il task ha bisogno.