OpenCode Quickstart: Installazione, configurazione e utilizzo dell'agente AI per la codifica nel terminale
Come installare, configurare e utilizzare OpenCode
OpenCode è un agente di programmazione AI open source che puoi eseguire nel terminale (TUI + CLI) con superfici desktop e IDE opzionali. Questa è la Guida rapida OpenCode: installazione, verifica, connessione a un modello/fornitore ed esecuzione di flussi di lavoro reali (CLI + API).
Nota sulla versione: OpenCode viene aggiornato rapidamente. I comandi “più recenti” qui sono stabili, ma l’output e i valori predefiniti possono cambiare: controlla sempre la documentazione ufficiale della CLI e il changelog (linkati qui sotto).
Questo articolo fa parte della Strumenti per sviluppatori AI: La guida completa allo sviluppo potenziato dall’AI.
Cos’è OpenCode (e dove si inserisce)
OpenCode è progettato per il coding agenziale basato sul terminale, mantenendosi flessibile rispetto al fornitore/modello. Nella pratica, è uno strato di flusso di lavoro che può:
- avviare un’interfaccia a riga di comando quando esegui
opencode - eseguire prompt “one-shot” non interattivi tramite
opencode run(script/automazione) - esporre un server HTTP headless tramite
opencode serve(e un’interfaccia web tramiteopencode web) - essere controllato programmaticamente tramite l’SDK ufficiale JS/TS
@opencode-ai/sdk
Se desideri confrontarlo con un altro assistente agenziale open source in grado di eseguire piani multi-step in un ambiente sandbox, vedi Guida rapida OpenHands Coding Assistant.
Per l’agente basato sul terminale di Anthropic con la stessa narrazione “modello locale via HTTP” (Ollama o llama.cpp, autorizzazioni, prezzi), vedi Installazione e configurazione di Claude Code per Ollama, llama.cpp, prezzi.

Prerequisiti
Avrai bisogno di:
- Un emulatore di terminale moderno (importante per l’esperienza TUI).
- Accesso almeno a un modello/fornitore (chiavi API o autenticazione tramite abbonamento, a seconda del fornitore). Le opzioni locali come Ollama o llama.cpp funzionano senza chiavi API quando esegui un server compatibile localmente.
Installa OpenCode (copia-incolla)
Script di installazione ufficiale (Linux/macOS/WSL):
curl -fsSL https://opencode.ai/install | bash
Opzioni di gestione dei pacchetti (esempi ufficiali):
# Installazione globale Node.js
npm install -g opencode-ai
# Homebrew (consigliato da OpenCode per le versioni più aggiornate)
brew install anomalyco/tap/opencode
# Arch Linux (stable)
sudo pacman -S opencode
# Arch Linux (ultima versione da AUR)
paru -S opencode-bin
Note per Windows (la guida ufficiale consiglia comunemente WSL per la migliore compatibilità). Le alternative includono Scoop/Chocolatey o npm.
# chocoloatey (Windows)
choco install opencode
# scoop (Windows)
scoop install opencode
Docker (utile per una prova rapida):
docker run -it --rm ghcr.io/anomalyco/opencode
Verifica l’installazione
opencode --version
opencode --help
Output atteso (varierà in base alla versione):
# Esempio:
# <stampa un numero di versione, ad es. vX.Y.Z>
# <stampa l'aiuto con i comandi/sottocomandi disponibili>
Connessione a un fornitore (due percorsi pratici)
Percorso A: TUI /connect (interattivo)
Avvia OpenCode:
opencode
Poi esegui:
/connect
Segui i passaggi dell’interfaccia per selezionare un fornitore e autenticarti (alcuni flussi aprono un browser/login del dispositivo).
Percorso B: CLI opencode auth login (chiavi del fornitore)
OpenCode supporta la configurazione dei fornitori tramite:
opencode auth login
Note:
- Le credenziali vengono archiviate in
~/.local/share/opencode/auth.json. - OpenCode può anche caricare le chiavi dalle variabili d’ambiente o da un file
.envnel tuo progetto.
Hosting locale LLM (Ollama, llama.cpp)
OpenCode funziona con qualsiasi API compatibile con OpenAI. Per lo sviluppo locale, molti utenti eseguono Ollama e puntano OpenCode verso di esso. Recentemente ho avuto un’ottima esperienza nella configurazione e nell’esecuzione di OpenCode con llama.cpp invece: llama-server espone endpoint compatibili con OpenAI, quindi puoi usare modelli GGUF con lo stesso flusso di lavoro. Se preferisci un controllo più granulare su memoria e runtime, o vuoi uno stack più leggero senza Python (tra l’altro, ollama è implementato in Go), llama.cpp vale la pena provarlo. Mi è piaciuto molto l’opportunità di configurare gli strati offloadati, la facilità d’uso dei modelli in formato GGUF e una compatibilità implementata molto migliore/veloce con i nuovi modelli, come Qwen3.5. Se vuoi sapere quali modelli funzionano effettivamente bene all’interno di OpenCode — per compiti di coding e accuratezza dell’output strutturato — vedi il mio confronto LLM hands-on per OpenCode.
Avvia correttamente un progetto (esecuzione iniziale consigliata)
Dal tuo repository:
cd /path/to/your/repo
opencode
Poi inizializza:
/init
Questo analizza il tuo progetto e crea un file AGENTS.md nella radice del progetto. Vale tipicamente la pena commitare questo file in modo che OpenCode (e i membri del team) condividano un contesto di progetto coerente.
Flussi di lavoro CLI principali (esempi copia-incolla)
OpenCode supporta esecuzioni non interattive:
opencode run "Spiega come funzionano le closure in JavaScript"
Flusso di lavoro: genera codice (CLI)
Obiettivo: generare una funzione piccola e testabile con un contesto minimo.
opencode run "Scrivi una funzione Go ParsePort(envVar string, defaultPort int) (int, error). Dovrebbe leggere la variabile d'ambiente, parsare un int, validare 1-65535 e restituire defaultPort se vuoto. Includi 3 test guidati da tabella."
Output atteso:
- Una spiegazione più blocchi di codice (funzione + test). Il codice esatto varia in base al modello/fornitore e al prompt.
Flusso di lavoro: refactoring di un file in sicurezza (CLI + Agente Plan)
Obiettivo: refactoring senza modifiche accidentali usando un agente più restrittivo.
opencode run --agent plan --file ./src/auth.ts \
"Refattorizza questo file per ridurre la complessità. Output: (1) un breve piano, (2) un patch unified diff, (3) rischi/casi limite da testare. Non eseguire comandi."
Output atteso:
- Una sezione piano + un blocco patch
diff --git ...+ una checklist di test. - Il contenuto varia. Se non produce un diff, riprompta: “Restituisci solo un unified diff” o “Usa il formato
diff --git”.
Flusso di lavoro: fai domande sul repo (CLI)
Obiettivo: localizzare rapidamente i dettagli dell’implementazione.
opencode run --agent explore \
"In questo repository, dove viene convalidata l'autenticazione per le richieste API? Elenca i file probabili e spiega il flusso. Se non sei sicuro, dì cosa hai controllato."
Output atteso:
- Una breve mappa dei percorsi dei file + descrizione del flusso.
- L’output dipende dalle dimensioni del repository e dagli strumenti di contesto del modello/fornitore.
Flusso di lavoro: accelera le esecuzioni CLI ripetute con un server persistente
Se stai scriptando o eseguendo più chiamate opencode run, puoi avviare un server headless una volta:
Terminale 1:
opencode serve --port 4096 --hostname 127.0.0.1
Terminale 2:
opencode run --attach http://localhost:4096 "Riassumi la struttura del repo e i punti di ingresso principali."
opencode run --attach http://localhost:4096 "Ora proponi 3 refactoring ad alto impatto e il perché."
Output atteso:
- Lo stesso di
opencode run, ma solitamente con meno sovraccarico di avvio ripetuto.
Utilizzo programmatico (SDK ufficiale JS/TS)
OpenCode espone un server HTTP (OpenAPI) e fornisce un client JS/TS type-safe.
Installazione:
npm install @opencode-ai/sdk
Esempio: avvia server + client, poi fai un prompt
Crea scripts/opencode-sdk-demo.mjs:
import { createOpencode } from "@opencode-ai/sdk";
const opencode = await createOpencode({
hostname: "127.0.0.1",
port: 4096,
config: {
// Il formato della stringa del modello è provider/model (solo un esempio)
// model: "anthropic/claude-3-5-sonnet-20241022",
},
});
console.log(`Server in esecuzione su: ${opencode.server.url}`);
// Controllo di salute/versione di base
const health = await opencode.client.global.health();
console.log("Salute:", health.data.healthy, "Versione:", health.data.version);
// Crea una sessione e fai un prompt
const session = await opencode.client.session.create({ body: { title: "Demo avvio rapido SDK" } });
const result = await opencode.client.session.prompt({
path: { id: session.data.id },
body: {
parts: [{ type: "text", text: "Genera una piccola sezione README che descriva questo repo." }],
},
});
console.log(result.data);
// Chiudi il server quando hai finito
opencode.server.close();
Esegui:
node scripts/opencode-sdk-demo.mjs
Output atteso:
- “Server in esecuzione su …”
- Una risposta di salute che include una stringa di versione
- Un oggetto di risposta del prompt di sessione (la struttura esatta dipende da
responseStylee dalla versione dell’SDK)
Configurazione OpenCode minima da copiare
OpenCode supporta configurazioni JSON e JSONC. Questo è un punto di partenza ragionevole per una configurazione locale al progetto.
Crea opencode.jsonc nella radice del tuo repo:
{
"$schema": "https://opencode.ai/config.json",
// Scegli un modello predefinito (provider/model). Mantieni questo allineato con ciò che mostra `opencode models`.
"model": "provider/model",
// Opzionale: un modello "piccolo" più economico per compiti leggeri (titoli, ecc.)
"small_model": "provider/small-model",
// Opzionale: valori predefiniti del server OpenCode (usati da serve/web)
"server": {
"port": 4096,
"hostname": "127.0.0.1"
},
// Opzionale sicurezza: richiedi conferma prima di modifiche/comandi
"permission": {
"edit": "ask",
"bash": "ask"
}
}
Breve cheatsheet (riferimento rapido)
Comandi che userai quotidianamente
opencode # avvia TUI
opencode run "..." # esecuzione non interattiva (automazione)
opencode run --file path "..." # allega file al prompt
opencode models --refresh # aggiorna l'elenco dei modelli
opencode auth login # configura le credenziali del fornitore
opencode serve # server HTTP headless (OpenAPI)
opencode web # server headless + interfaccia web
opencode session list # elenca le sessioni
opencode stats # statistiche token/costo
Comandi TUI da memorizzare
/connect # connetti un fornitore
/init # analizza il repo, genera AGENTS.md
/share # condividi una sessione (se abilitato)
/undo # annulla una modifica
/redo # ripeti una modifica
/help # aiuto/scorciatoie
Concetto di “tasto leader” predefinito (TUI)
OpenCode usa un tasto “leader” configurabile (comunemente ctrl+x) per evitare conflitti nel terminale. Molte scorciatoie sono “Leader + tasto”.
Tabella del cheatsheet OpenCode stampabile in una pagina
Questa versione è intenzionalmente densa e “a prova di stampa”. (Puoi incollarla in una pagina dedicata /ai-devtools/opencode/cheatsheet/ più tardi.)
| Compito | Comando / scorciatoia | Note |
|---|---|---|
| Avvia TUI | opencode |
Il comportamento predefinito è lanciare l’interfaccia del terminale |
| Esegui prompt one-shot | opencode run "..." |
Modalità non interattiva per scripting/automazione |
| Allega file al prompt | opencode run --file path/to/file "..." |
Usa più flag --file per più file |
| Scegli modello per un’ecuzione | opencode run --model provider/model "..." |
Le stringhe del modello sono provider/model |
| Scegli agente | opencode run --agent plan "..." |
Plan è progettato per lavori più sicuri “senza modifiche” (con restrizioni di permesso) |
| Elenca modelli | opencode models [provider] |
Usa --refresh per aggiornare l’elenco cache |
| Configura credenziali del fornitore | opencode auth login |
Archivia le credenziali in ~/.local/share/opencode/auth.json |
| Elenca fornitori autenticati | opencode auth list / opencode auth ls |
Conferma ciò che OpenCode vede |
| Avvia server headless | opencode serve --port 4096 --hostname 127.0.0.1 |
Spec OpenAPI su http://host:port/doc |
| Collega esecuzioni al server | opencode run --attach http://localhost:4096 "..." |
Utile per evitare ripetuti avversi freddi |
| Abilita autenticazione di base | OPENCODE_SERVER_PASSWORD=... opencode serve |
L’username predefinito è opencode a meno che non venga sovrascritto |
| Modalità interfaccia web | opencode web |
Avvia il server e apre il browser |
| Esporta una sessione | opencode export [sessionID] |
Utile per archiviazione o condivisione del contesto |
| Importa una sessione | opencode import session.json |
Può anche importare da un URL di condivisione |
| Visualizza flag globali CLI | opencode --help / opencode --version |
--print-logs + --log-level per il debug |
| Concetto di tasto leader TUI | tasto leader predefinito spesso ctrl+x |
Personalizzabile in tui.json |
Oh My Opencode — porta OpenCode oltre con l’orchestrazione multi-agente
Una volta che OpenCode è in esecuzione, il passo successivo naturale è Oh My Opencode — un plugin della comunità che racchiude OpenCode in un’impalcatura multi-agente. L’idea principale: digita ultrawork (o ulw) in una sessione e un orchestratore (Sisyphus) prende il controllo, delegando sotto-compiti ad agenti specialisti che eseguono in parallelo, ciascuno sulla famiglia di modelli per cui i suoi prompt sono tarati.
Tre articoli lo coprono in profondità:
-
Guida rapida Oh My Opencode
Installa tramitebunx oh-my-opencode install, configura i fornitori ed esegui il tuo primo compito ultrawork in meno di dieci minuti. -
Approfondimento sugli Agenti Specializzati
Tutti e 11 gli agenti spiegati — Sisyphus, Hephaestus, Oracle, Prometheus, Librarian e altri — con instradamento dei modelli, catene di fallback e guida pratica per modelli self-hosted. -
Esperienza Oh My Opencode: Risultati Onesti e Rischi di Fatturazione
Benchmark reali, un incidente di loop infinito Gemini da $350 e un verdetto chiaro su quando OMO guadagna il suo sovraccarico.
Fonti (prima ufficiale)
Ufficiale:
- Documentazione OpenCode (Intro, CLI, Config, Server, SDK): https://opencode.ai/docs/
- Changelog OpenCode: https://opencode.ai/changelog
- Repository GitHub ufficiale: https://github.com/anomalyco/opencode
- Release: https://github.com/anomalyco/opencode/releases
Riferimento autorevole sull’integrazione:
- Changelog GitHub (Copilot supporta OpenCode): https://github.blog/changelog/2026-01-16-github-copilot-now-supports-opencode/
Confronti/tutorial affidabili:
- DataCamp: OpenCode vs Claude Code (2026): https://www.datacamp.com/blog/opencode-vs-claude-code
- Builder.io: OpenCode vs Claude Code (2026): https://www.builder.io/blog/opencode-vs-claude-code
- freeCodeCamp: Integra l’AI nel tuo terminale usando OpenCode: https://www.freecodecamp.org/news/integrate-ai-into-your-terminal-using-opencode/