Sezioni dell'archivio conoscenza ▾

Navigazione

▸ Inizia qui Per ruolo

Categorie

Strumenti 52
Glossario 12

Strumenti

OpenHands + JoinGonka Gateway: agente sul proprio endpoint

OpenHands è una piattaforma aperta per lo sviluppo autonomo: l'agente legge il repository, esegue comandi, modifica file e porta a termine i compiti, mentre tu definisci gli obiettivi e ne verifichi i risultati. Nel 2026, la sua interfaccia principale è Agent Canvas, una console basata su browser da cui avviare conversazioni con l'agente e automazioni sulla propria macchina, in Docker, su un server o nel cloud di OpenHands. Il codice è open source sotto licenza MIT.

Il modello non è imposto da OpenHands: l'intero livello di lavoro con gli LLM è costruito su LiteLLM, quindi qualsiasi endpoint compatibile con OpenAI è adatto all'agente. Per JoinGonka Gateway si tratta di tre campi nelle impostazioni: Custom Model — openai/deepseek-ai/DeepSeek-V4-Flash-0731, Base URL — https://gate.joingonka.ai/v1, API Key — la tua chiave jg-…. Non è necessario un installer separato: tutto si fa nell'interfaccia in pochi minuti.

L'agente autonomo è il consumatore di token più vorace: ogni passaggio comporta un system prompt, lo storico e i risultati degli strumenti, e ci sono decine di passaggi in un task. La documentazione di OpenHands avverte esplicitamente: l'agente invia molte richieste al modello, monitora il consumo. Attraverso il gateway, un milione di token in ingresso costa $0.0069 — lo stesso per DeepSeek V4 Flash, GLM-5.3 Flash e MiniMax M2.7 — quindi le esecuzioni lunghe smettono di incidere sul budget. Dopo aver confermato l'indirizzo, riceverai 3M di token gratuiti: basteranno per testare l'agente su un compito reale e vedere il proprio consumo.

Quale OpenHands stai usando: quattro interfacce e la chiave

Il progetto oggi ha diverse interfacce, e a seconda di quella che hai avviato, dipende dove cercare le impostazioni del modello. I valori sono identici ovunque, cambia solo il percorso per accedervi.

InterfacciaCome si avviaDove si imposta il modelloStato a settembre 2026
Agent Canvasnpx @openhands/agent-canvas o npm install -g @openhands/agent-canvas e comando agent-canvas; si apre su http://localhost:8000Settings > LLM, scheda Advancedinterfaccia principale del progetto
OpenHands CLIuv tool install openhands --python 3.12, poi openhandswizard di primo avvio, Ctrl+P → Settings, file ~/.openhands/agent_settings.jsonfunzionante, ma nel README è segnato come progetto non più attivamente sviluppato
Precedente web-interface in Dockeropenhands serve o docker run dalla documentazione; porta 3000Settings → scheda LLM → interruttore Advancednella documentazione è chiamato Local GUI (Legacy)
OpenHands Cloudcloud gestito dal progettola stessa pagina delle impostazioni LLMsecondo la documentazione l'LLM si imposta allo stesso modo; non abbiamo testato questo percorso

Per Agent Canvas sono necessari Node.js e uv, su cui gira il server locale dell'agente (dettagli nelle istruzioni di installazione). Le istruzioni menzionano Node.js 22.12 o superiore, ma il pacchetto stesso a partire dalla versione 1.17 richiede Node.js 24 o superiore: installa la 24 per evitare avvisi di incompatibilità. Esiste anche un'opzione in container: l'immagine ghcr.io/openhands/agent-canvas espone l'interfaccia su http://localhost:8000/canvas e vede solo le directory che hai montato.

Chiave JoinGonka. Registrati su gate.joingonka.ai/register, conferma l'indirizzo e crea una chiave con prefisso jg- nella sezione "API Keys". Una chiave e un saldo sono validi per tutti i modelli della rete. Nell'elenco degli strumenti dell'installer @joingonka/setup OpenHands non c'è, e non è una dimenticanza: le sue impostazioni vivono nell'interfaccia e nell'archiviazione protetta del backend, non in un file di configurazione testuale che si può modificare facilmente dall'esterno.

Connessione in Agent Canvas: tre campi nella scheda Advanced

Passaggio 1. Avvia Agent Canvas e apri Settings > LLM. La procedura di configurazione iniziale propone il provider proprietario di OpenHands: questo passaggio può essere saltato, è facile tornare alle impostazioni in un secondo momento.

Passaggio 2. Fai clic su Add LLM Profile e vai alla scheda Advanced: la scheda Basic offre solo i provider e i modelli presenti nell'elenco integrato.

Passaggio 3. Compila i tre campi:

CampoValore
Custom Modelopenai/deepseek-ai/DeepSeek-V4-Flash-0731
Base URLhttps://gate.joingonka.ai/v1
API Keyla tua chiave jg-…

Passaggio 4. Salva il profilo. Prima di salvare, Canvas verifica la configurazione con una richiesta dal backend: se la chiave viene rifiutata o il modello non è disponibile, il profilo non verrà salvato e vedrai un messaggio di errore.

Passaggio 5. Inizia una nuova conversazione e invia un breve messaggio. Le conversazioni già aperte continuano a funzionare con il modello con cui sono iniziate.

Perché openai/. LiteLLM identifica il provider tramite il prefisso del modello. Il prefisso openai/ non significa "modello di OpenAI", ma "comunicare con il server tramite il protocollo OpenAI Chat Completions". Viene tagliato solo il primo segmento, quindi al gateway arriva l'identificatore reale: deepseek-ai/DeepSeek-V4-Flash-0731. Nella documentazione di OpenHands lo stesso schema è mostrato con l'esempio openai/qwen/qwen3.6-35b-a3b. Senza il prefisso, LiteLLM si rifiuterà di funzionare con il messaggio LLM Provider NOT provided.

Perché solo /v1. LiteLLM contatta il server tramite il client ufficiale OpenAI, che aggiunge automaticamente /chat/completions. Pertanto l'indirizzo deve terminare necessariamente con /v1: senza il suffisso, la richiesta non raggiungerà l'API; con un suffisso in più, punterebbe a un percorso inesistente. Un altro requisito di Canvas: l'indirizzo deve essere raggiungibile dal backend, non solo dal browser. Il gateway è un indirizzo HTTPS pubblico, visibile dal container Docker esattamente come dall'host; soluzioni come host.docker.internal sono necessarie solo per i modelli in esecuzione sulla tua macchina.

Profili per tutti e tre i modelli. Crea un profilo per ogni modello di rete e assegna loro nomi brevi, ad esempio deepseek, glm e minimax (la documentazione indica un limite di dieci profili). È possibile passare da uno all'altro direttamente nella conversazione senza perdere il contesto: tramite il pulsante di selezione del profilo nel campo di input o con il comando /model glm; /model senza argomenti mostrerà l'elenco. Per evitare di inserire la chiave in ogni profilo, puoi salvarla una volta nel blocco Provider Connections, accessibile dal backend locale.

Interfaccia precedente in Docker. I campi sono gli stessi: Settings → scheda LLM → attiva Advanced → Custom Model, Base URL, API Key → Save Changes.

Terminale e automazione: CLI, variabili d'ambiente, SDK

La CLI si installa con un solo comando tramite uv e al primo avvio ti guida da sé nella configurazione del modello; in seguito ci si torna con Ctrl+P → Settings:

uv tool install openhands --python 3.12
openhands

Per gli script sono più comode le variabili d'ambiente. Dettaglio importante: per impostazione predefinita la CLI le ignora e le applica solo con il flag --override-with-envs — per una singola esecuzione, senza salvare nulla:

export LLM_MODEL="openai/deepseek-ai/DeepSeek-V4-Flash-0731"
export LLM_BASE_URL="https://gate.joingonka.ai/v1"
export LLM_API_KEY="jg-your-key"

openhands --override-with-envs

Lo stesso set funziona senza interfaccia — per CI e attività in batch:

openhands --headless --override-with-envs -t "Read calc.py and tell me in one sentence whether it has a bug."

In modalità headless l'agente agisce sempre con approvazione automatica, quindi avvialo dove può fare tutto: in una directory separata o in un container. Il flag --json trasforma l'output in un flusso di eventi JSONL — comodo da elaborare in una pipeline. È esattamente così che abbiamo verificato il collegamento il 21 settembre 2026 su CLI 1.16.0: nell'intestazione la CLI stampa Agent initialized with model: openai/deepseek-ai/DeepSeek-V4-Flash-0731, poi l'agente legge il file e risponde nel merito.

MetodoDove ha effettoViene salvato
Settings > LLM in Agent Canvastutte le nuove conversazioni su questo backendsì, nello storage del backend (~/.openhands)
Procedura guidata e Ctrl+P → Settings nella CLItutte le esecuzioni della CLIsì, in ~/.openhands/agent_settings.json
LLM_MODEL, LLM_BASE_URL, LLM_API_KEY con il flag --override-with-envsuna singola esecuzione della CLIno
config.tomlla precedente linea V0 e la modalità svilupponella documentazione è classificato come Legacy; in Agent Canvas e nella CLI 1.x le impostazioni si configurano con i metodi sopra

Le impostazioni salvate della CLI si trovano in ~/.openhands/agent_settings.json: il modello si cambia modificando tre campi del blocco llm — model, api_key e base_url. Non conviene creare il file da zero: la procedura guidata del primo avvio vi scrive anche le altre impostazioni dell'agente, tra cui la compressione della cronologia, senza la quale una conversazione lunga sbatte contro la finestra di contesto.

Se integri l'agente nel tuo codice, gli stessi tre valori li accetta l'OpenHands SDK:

from pydantic import SecretStr
from openhands.sdk import LLM

llm = LLM(
    model="openai/deepseek-ai/DeepSeek-V4-Flash-0731",
    base_url="https://gate.joingonka.ai/v1",
    api_key=SecretStr("jg-your-key"),
)

Quale modello scegliere per esecuzioni autonome prolungate

Il prezzo dei modelli nella rete è lo stesso, quindi la scelta dipende dal comportamento. Per un Autonomous agent, due cifre sono fondamentali. Finestra di contesto: a ogni passaggio la cronologia viene reinviata, quindi più lunga è la finestra, più a lungo l'agente lavora senza perdite. Limite di risposta: il passaggio in cui l'agente scrive un intero file di grandi dimensioni deve rientrare in un'unica risposta. Nella tabella sono riportati i risultati del nostro test sullo stesso compito (leggere un file e trovare l'errore) tramite OpenHands CLI 1.16.0 con SDK 1.21.0.

ModelloCustom Model per OpenHandsContestoLimite di rispostaComportamento in OpenHands
DeepSeek V4 Flashopenai/deepseek-ai/DeepSeek-V4-Flash-0731380K32768Ha letto il file e ha risposto al punto, senza testo superfluo. Con un contesto lungo e il limite di risposta più alto della rete, è la scelta predefinita per attività di molte ore.
GLM-5.3 Flashopenai/zai-org/GLM-5.3-Flash390K8192Ragiona prima di rispondere; ha completato il ciclo con gli strumenti in modo pulito. Un profilo per la pianificazione e l'analisi di logiche complesse, tenendo conto che una parte della risposta viene dedicata al ragionamento.
MiniMax M2.7openai/MiniMaxAI/MiniMax-M2.7200K8192Ha risolto il compito, ma nel messaggio finale ha mostrato ad alta voce il processo di ragionamento. Il modello ha la capacità più grande della rete: un profilo di riserva per le ore di punta e per i titoli delle conversazioni.

Lo schema di lavoro per un compito a lungo termine segue il consiglio della documentazione di OpenHands: pianificare con un modello ed eseguire con un altro. Iniziate la conversazione sul profilo glm e chiedete un piano senza modificare i file; dopodiché inviate /model deepseek e date il comando di esecuzione. La cronologia, i file e lo stato del compito vengono conservati durante il passaggio. Tenete il profilo minimax come terzo: è comodo passarvi quando gli altri due sono saturi nelle ore di punta, e nella sezione Settings > Application è possibile affidare a lui la generazione dei titoli delle conversazioni.

Compressione della cronologia. Anche una finestra di centinaia di migliaia di token è finita in un compito che dura molte ore. In OpenHands se ne occupa il condensatore: comprime gli eventi passati in un breve riassunto, il che, secondo la documentazione, riduce la latenza e il consumo di token nelle conversazioni lunghe. In Agent Canvas si configura nella sezione Settings > Condenser; nel nostro test, il CLI l'ha attivato da solo con una soglia di 80 eventi.

Limiti del modello. OpenHands trae la finestra di contesto e il limite di risposta dal database di LiteLLM, ma gli identificatori della rete Gonka non vi sono presenti (abbiamo verificato su LiteLLM 1.81), quindi l'agente non ha valori propri per questi modelli. Ciò non interferisce con il funzionamento: il gateway applica il limite di risposta autonomamente, secondo la tabella sopra. Se desiderate impostare i limiti esplicitamente, nell'SDK si utilizzano i campi max_input_tokens e max_output_tokens, mentre in Canvas la scheda All apre l'elenco completo dei campi del profilo. Dettagli sul modello predefinito sono disponibili nella panoramica di DeepSeek V4 Flash.

Verifica ed errori comuni

È possibile verificare se le richieste passano effettivamente attraverso il gateway da due punti. Dal lato OpenHands: avvia una nuova conversazione e assegna un compito breve come "leggi il README e riassumilo in una frase": l'agente dovrebbe richiamare lo strumento e rispondere. Dal lato del gateway: vai nel pannello di controllo, sezione "Utilizzo": la richiesta apparirà nella suddivisione "Per modelli", mentre nel blocco "Per chiavi" verrà aggiornato l'orario dell'ultima richiesta. Se è vuoto, significa che la conversazione sta avvenendo su un altro profilo: controlla quale di essi è contrassegnato come attivo.

Cosa si vedeCosa significaCosa fare
LLM Provider NOT providedManca il prefisso del provider nel campo del modelloInserisci openai/ prima dell'identificativo: openai/deepseek-ai/DeepSeek-V4-Flash-0731
Il profilo non viene salvato, Canvas mostra un errore di backendCanvas ha verificato la configurazione con una richiesta in tempo reale ed è stato rifiutatoIl testo dell'errore è una delle righe sottostanti: correggi la chiave, l'indirizzo o il modello e salva di nuovo
AuthenticationError … Invalid API keyIl gateway ha risposto 401: la chiave non è stata accettataIncolla l'intera chiave, senza spazi ai bordi; verifica nel pannello che non sia stata revocata
405 Not Allowed e pagina HTML di nginxNella Base URL manca il suffisso /v1L'indirizzo deve essere esattamente https://gate.joingonka.ai/v1
404 … Invalid URL (POST /v1/v1/chat/completions)Nella Base URL c'è una parte in più: un secondo /v1 o l'intero percorso /chat/completionsLascia solo /v1 — LiteLLM aggiunge il percorso automaticamente
400 … Model "…" not found. Available: …L'identificativo dopo openai/ non corrisponde a nessun modello della reteIl gateway elenca autonomamente quelli disponibili; l'elenco completo è GET https://gate.joingonka.ai/v1/models
429La chiave ha esaurito il limite di richieste al minuto oppure il modello ha terminato la capacità nelle ore di puntaOpenHands riprova automaticamente la richiesta con una pausa crescente. Se la situazione persiste, cambia profilo con il comando /model; lo stato della rete è visibile sulla pagina di stato
402Il saldo è esauritoRicarica il conto nella sezione "Fatturazione"; la chiave rimane comunque operativa
L'agente risponde come un chatbot: non tocca i file, si confonde nelle chiamate agli strumentiIl modello non riesce a gestire il ciclo dell'agente; la documentazione di OpenHands suggerisce in tal caso di cambiare modelloPassa al profilo DeepSeek V4 Flash: nei nostri test ha completato il ciclo dell'agente senza problemi

Secondo la documentazione di OpenHands, il numero di tentativi e le pause tra essi in caso di errore 429 si configurano tramite le variabili LLM_NUM_RETRIES, LLM_RETRY_MIN_WAIT e LLM_RETRY_MAX_WAIT. I valori predefiniti nella documentazione e nell'SDK divergono, quindi fai riferimento a quelli effettivi: nello stato della conversazione CLI 1.16.0 abbiamo osservato 5 tentativi con pause da 8 a 64 secondi.

Quanto costa e cosa considerare durante il lavoro

Attraverso il JoinGonka Gateway, i token costano $0.0069 per milione in ingresso e $0.021 per milione in uscita; il prezzo è uguale per tutti i modelli della rete e viene aggiornato in questa pagina da una fonte in tempo reale.

ScenarioConsumoTramite Gateway
Attività una tantum: capire un file, apportare una modificadecine di migliaia di tokenfrazioni di centesimo
Sviluppo autonomo di una funzionalità20-50M di tokendecine di centesimi
24 ore di automazioni in background~150M di tokencirca un dollaro

Le stime nella colonna di destra si riferiscono ai prezzi di settembre 2026; il funzionamento dell'economia degli agenti è analizzato in dettaglio nell'articolo sull'API più economica per AI-agent.

Limite di spesa. OpenHands consiglia di impostare limiti di spesa; il gateway ha questa funzione integrata nel modello di pagamento: il saldo è prepagato e l'agente non spenderà più di quanto presente sul conto. Il saldo residuo e il consumo giornaliero sono visibili nel pannello. Per CI e automazioni in background, crea una chiave separata in modo che il loro consumo non si mescoli con il tuo; le chiavi secondarie con limite giornaliero sono descritte nell'articolo sui Management Keys.

Confini della fiducia. Agent Canvas, eseguito tramite npm, lavora con i privilegi del tuo utente e vede l'intero file system. Per codice altrui, utilizza la versione in Docker: l'agente vedrà solo la directory montata. Questa è una proprietà di OpenHands e non dipende dal provider del modello.

La corrispondenza rimane a te. OpenHands conserva la cronologia della conversazione localmente, in ~/.openhands, e la invia al modello ad ogni passaggio; il gateway non conserva la corrispondenza: i tuoi prompt e il codice non rimangono memorizzati dopo la risposta.

Se l'attività include immagini (screenshot dell'interfaccia, schemi), crea per essa un profilo separato con un modello vision: i modelli della rete Gonka sono testuali. Per codice, comandi e file questa non è una limitazione.

OpenHands si connette al JoinGonka Gateway tramite tre campi: Custom Model openai/deepseek-ai/DeepSeek-V4-Flash-0731, Base URL https://gate.joingonka.ai/v1 e la chiave jg-…. In Agent Canvas è la scheda Advanced sotto Settings > LLM, nel CLI è la procedura guidata di configurazione o le variabili d'ambiente LLM_MODEL, LLM_BASE_URL e LLM_API_KEY con il flag --override-with-envs; config.toml rimane nella serie precedente. Il prefisso openai/ seleziona il protocollo, non il fornitore, il suffisso /v1 è obbligatorio. Un test dal vivo ha confermato il ciclo dell'agente su tutti e tre i modelli della rete: di default utilizzare DeepSeek V4 Flash con contesto 380K e risposta fino a 32768 token, GLM-5.3 Flash per la pianificazione, MiniMax M2.7 come profilo di riserva per le ore di punta.

Vuoi saperne di più?

Esplora altre sezioni o inizia a guadagnare GNK subito.

Ottieni chiave e token gratuiti →