DeepSeek Harness, Claude Code o Omnigent: confronto
Confronto tra DeepSeek Harness, Claude Code e Omnigent: architettura, modelli supportati, licenza, maturità e requisiti per eseguirli su un VPS.
DeepSeek Harness vs Claude Code vs Omnigent: quale ti serve
DeepSeek Harness, Claude Code e Omnigent sono tutti definiti harness per agenti, ma risolvono parti diverse del problema. DeepSeek Harness è un runtime per plugin con un'interfaccia web (user interface) in cui fornisci il modello. Claude Code è un programma da terminale di Anthropic che esegue modelli Anthropic. Omnigent è un orchestratore di Databricks che gestisce altri harness, incluso Claude Code, invece di implementare un proprio ciclo dell'agente. Nessuno dei tre sostituisce direttamente gli altri; la domanda corretta è quale livello ti manca.
Le differenze effettive riguardano architettura, dipendenza dal modello, interfaccia, maturità e licenza. Tutte le versioni e le date riportate di seguito sono state verificate il 18 agosto 2026. Due dei tre progetti evolvono abbastanza rapidamente da rendere opportuno un nuovo controllo prima di sceglierne uno.
Che cos'è DeepSeek Harness e quali vantaggi offre il modello a plugin?
DeepSeek ha pubblicato DeepSeek Harness, o dsh, all'indirizzo github.com/deepseek-ai/deepseek-harness nell'agosto 2026. La descrizione del repository riassume l'intero design in quattro parole: tutto è un plugin. L'adattatore del modello, il registro degli strumenti, il log della sessione, la sandbox e lo stesso ciclo dell'agente sono tutti plugin, caricati da un runtime basato su Cordis. L'adozione è stata insolitamente rapida e il repository ha superato 150,000 stelle pochi giorni dopo la pubblicazione (verificato il 18 agosto 2026).
DeepSeek Harness è attualmente in anteprima per sviluppatori e viene aggiornato rapidamente. SONO PREVISTE MODIFICHE CHE POTREBBERO INTERROMPERE LA COMPATIBILITÀ.
Questo è l'avviso riportato nel README ed è la frase più importante di questo confronto. Qualsiasi codice scritto oggi usando la plugin API (interfaccia di programmazione dell'applicazione) deve essere considerato soggetto a riscrittura.
Avvialo con npx, che richiede l'installazione di Node.js:
npx @deepseek-ai/dsh webIl comando stampa il relativo URL. Per impostazione predefinita, l'interfaccia web è disponibile all'indirizzo http://127.0.0.1:3080. Per compilare dai sorgenti si usa invece pnpm:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh webdsh web è una forma abbreviata di dsh --profile web. Un profilo è una directory all'interno di $DSH_HOME/profiles/ e il launcher avvia quello specificato. Questo è importante perché è disponibile anche un profilo headless: dsh --profile headless "job" esegue una sessione persistente, stampa il risultato e termina. È il comportamento adatto a un cron job o a una fase di build. I flag del launcher, come --profile e --patch, devono precedere gli argomenti dell'applicazione, perché il launcher interrompe l'analisi degli argomenti al momento del passaggio di controllo. Un flag come --port appartiene al profilo avviato, non al launcher, quindi la sua posizione è importante. I plugin vengono gestiti inoltrando gli argomenti a pnpm, come in dsh plugin --profile web add <package>.
Che cos'è Claude Code e perché è un programma da terminale?
Claude Code è l'agente CLI (interfaccia della riga di comando) proprietario di Anthropic. Il prodotto non include un'interfaccia web. Viene eseguito nel terminale, nella directory su cui deve operare. Per questo si adatta bene alle sessioni su server. L'installazione richiede un solo comando su macOS, Linux e WSL:
curl -fsSL https://claude.ai/install.sh | bash
claude --versionUn'installazione corretta visualizza una versione e il nome del prodotto, ad esempio 2.1.211 (Claude Code). Se il comando non riesce, claude doctor visualizza la diagnostica di sola lettura relativa all'installazione e alle impostazioni, senza avviare una sessione. È disponibile anche un pacchetto npm, npm install -g @anthropic-ai/claude-code, che a partire da v2.1.198 richiede Node.js 22 o versioni successive. Il pacchetto installa lo stesso binario nativo. Di conseguenza, claude non usa Node.js durante l'esecuzione. Anthropic pubblica inoltre repository apt, dnf e apk firmati per Debian, Ubuntu, Fedora, RHEL e Alpine. Su un server gestito con strumenti di gestione della configurazione, questa è in genere la scelta migliore, perché gli aggiornamenti arrivano tramite il normale flusso di aggiornamento.
Claude Code richiede un account Pro, Max, Team, Enterprise o Console. Il piano gratuito Claude.ai non include l'accesso. La scelta tra un abbonamento Claude e la fatturazione tramite API incide sui costi molto più di qualsiasi impostazione interna allo strumento.
Che cos'è Omnigent e che cosa orchestra un meta-harness?
Databricks ha annunciato Omnigent a giugno 2026 e lo ha rilasciato con licenza Apache 2.0. Il progetto si definisce un meta-harness. Non implementa un ciclo agente. Gestisce quelli già esistenti: Claude, Codex, Cursor, OpenCode, Hermes, Pi e l'SDK (kit di sviluppo software) degli agenti di OpenAI. Nel relativo elenco, diversi agenti compaiono due volte: una volta nella variante che comunica con l'SDK del fornitore e una volta nella variante nativa che avvolge il programma terminale reale del fornitore.
Un agente è un file YAML, dove YAML è un formato di configurazione in testo semplice:
name: my_agent
prompt: You are a helpful data analyst.
executor:
harness: claude-sdk
tools:
word_count:
type: function
callable: mypackage.mymodule.word_count
docs:
type: mcp
url: https://example.com/mcp
researcher:
type: agent
prompt: Search for relevant information.La riga executor.harness è il punto centrale del progetto. Sostituisci claude-sdk con codex e lo stesso prompt, con gli stessi strumenti, viene eseguito usando un fornitore diverso. Uno strumento è una funzione Python, un server MCP (model context protocol) oppure un altro agente. Quest'ultimo caso è il modo in cui si esprime il lavoro multi-agente: un sottoagente è semplicemente uno strumento. Se non hai ancora stabilito dove collocare skill, server MCP e file delle regole, vale la pena leggere prima la differenza tra skill degli agenti, MCP e file delle regole, perché Omnigent eredita gli elementi supportati dall'harness sottostante.
L'esempio incluso rende concreto il concetto. Polly è un orchestratore per la programmazione che non scrive direttamente codice. Pianifica il lavoro, lo assegna in parallelo a sottoagenti di programmazione in worktree git separati, quindi inoltra ogni diff a un revisore che usa il modello di un fornitore diverso.
Installalo con lo script pubblicato:
curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | shIn alternativa, puoi installarlo manualmente; sono necessari Python 3.12 o versioni successive:
uv tool install omnigent
omnigent setup
omnigent startFunziona anche pip install "omnigent" e gli extra si selezionano nel modo consueto con uv tool install "omnigent[databricks,modal]". omnigent setup raccoglie le credenziali e i valori predefiniti. omnigent start avvia il server, registra la macchina come host e pubblica un'interfaccia web su http://localhost:6767. omnigent server status e omnigent stop sono gli altri due comandi che userai ogni giorno. Un semplice omnigent apre una sessione interattiva senza avviare il server.
L'elenco delle dipendenze è più lungo di quanto lasci intendere l'installer composto da una sola riga: Python 3.12 o versioni successive, git, Node.js 22 LTS (supporto a lungo termine) o versioni successive con npm e pnpm, tmux per i wrapper dei terminali nativi e bubblewrap (bwrap) per la sandbox Linux. Questo deriva direttamente dalla progettazione. Omnigent deve installare e supervisionare autonomamente le CLI dei fornitori. Di conseguenza, è un software Python il cui compito è eseguire software Node.js.
Chi fornisce il modello e chi lo paga?
Questo è l’asse con le conseguenze pratiche più rilevanti, e le tre risposte sono sostanzialmente diverse.
DeepSeek Harness segue il modello bring-your-own. Il catalogo dei provider installati include Anthropic, OpenAI, Bedrock, Vertex, Azure e Codex. Una voce di provider personalizzata richiede un ID del provider in minuscolo, un nome visualizzato, un URL di base, un protocollo API, una credenziale e almeno un modello. In questo modo puoi indirizzarla verso un gateway aziendale o un server self-hosted. Le chiavi vengono scritte in $DSH_HOME/.credentials.yaml, mentre $DSH_HOME/settings.yaml conserva soltanto un riferimento alle chiavi. Il file delle impostazioni può quindi essere condiviso, mentre il file delle credenziali no. Una voce del gateway può indicare invece una variabile d’ambiente, con una riga come apiKeyEnv: GATEWAY_API_KEY. Nonostante il nome del progetto, nulla ti obbliga a usare i modelli proprietari di DeepSeek.
Claude Code è associato a un unico fornitore per scelta progettuale. Accedi con un account a pagamento oppure imposti ANTHROPIC_API_KEY. In questo caso Claude Code chiede una sola volta di approvare la chiave, senza aprire un browser. Questo è il percorso adatto a un server headless. Le organizzazioni che acquistano già capacità altrove possono usare Amazon Bedrock, Agent Platform di Google Cloud o Microsoft Foundry.
Omnigent richiede ciò che serve all’harness sottostante, raccolto tramite omnigent setup. Accetta chiavi API, abbonamenti CLI esistenti, gateway compatibili con OpenAI o Anthropic e workspace Databricks. Questo è il costo reale di un meta-harness: una macchina finisce per conservare le credenziali di ogni fornitore. Prima di connettere quella macchina a Internet pubblico, leggi come impedire a un agente AI di accedere ai secret.
Quanto è maturo ciascuno di questi strumenti ad agosto 2026?
Claude Code è generalmente disponibile dal 2025 e, ad agosto 2026, appartiene alla linea 2.1.x. Si aggiorna automaticamente in background, offre i canali di rilascio latest e stable, pubblica manifest di rilascio firmati con GPG e documenta un pin minimumVersion per le organizzazioni che devono imporre una versione minima. Questo è il profilo di un prodotto già utilizzato in ambienti di produzione.
Omnigent è disponibile pubblicamente da giugno 2026, è ancora nella serie 0.x e il relativo README lo descrive come alpha. È prevedibile che sia l’elenco degli harness sia lo schema YAML continuino a cambiare. Lo strumento è utilizzabile, ma non è ancora stabile.
DeepSeek Harness è di gran lunga il più recente. È stato pubblicato ad agosto 2026, pochi giorni prima della redazione di questo confronto, e il relativo README preannuncia modifiche che possono interrompere la compatibilità. Un numero molto elevato di stelle indica che molte persone lo stanno osservando. Non indica che l’API dei plugin sia ormai stabile.
Quale licenza utilizza ciascuno?
DeepSeek Harness è distribuito con licenza MIT; le licenze di terze parti sono indicate in THIRD_PARTY_NOTICES.md. Omnigent è distribuito con licenza Apache 2.0. Claude Code non è open source: è un prodotto commerciale di Anthropic e per eseguirlo è necessario un account a pagamento oppure l'accesso a un'API con addebito. Se il requisito è poter leggere e modificare ogni riga di codice, Claude Code è escluso prima ancora di confrontare le funzionalità. Se invece il requisito è che lo strumento continui a funzionare il mese prossimo senza interventi, la conclusione è opposta.
Cosa serve per eseguire ciascuno di questi strumenti su un VPS?
Claude Code è il più semplice dei tre. Installalo, accedi ed eseguilo all’interno di tmux, così la sessione sopravvive alla disconnessione SSH (secure shell). La documentazione di Anthropic indica 4 GB di RAM (random access memory) o più e un processore x64 o ARM64, su Ubuntu 20.04 o versioni successive, Debian 10 o versioni successive oppure Alpine 3.19 o versioni successive. Su Alpine devi installare prima anche bash, curl, libgcc, libstdc++ e ripgrep, perché senza questi componenti il comando di installazione termina con un errore not found. Eseguire Claude Code su un VPS all’interno di tmux descrive in dettaglio la gestione della sessione.
DeepSeek Harness richiede Node.js e un browser configurato per accedere alla relativa interfaccia web. Il README richiede Node.js senza indicare una versione minima. Node 22 LTS è quindi la scelta più sicura, perché è la versione utilizzata dall’ecosistema circostante. Non pubblicare la porta 3080. Lascia il server in ascolto su 127.0.0.1 e inoltra la porta dal laptop:
ssh -N -L 3080:127.0.0.1:3080 you@your-vpsQuindi apri http://127.0.0.1:3080 in locale. Installare completamente DeepSeek Harness su un VPS descrive la struttura dei profili e i comandi dei plugin.
Omnigent è il più impegnativo, perché installa e supervisiona le CLI di altri progetti. Richiede Python 3.12, Node.js 22, npm, pnpm, tmux e bubblewrap sullo stesso server. Inoltre scarica ogni CLI dei fornitori che abiliti. Inoltra la relativa porta nello stesso modo:
ssh -N -L 6767:127.0.0.1:6767 you@your-vpsPer un server utilizzato da più persone, il metodo supportato è il deployment Docker in deploy/, che abilita per impostazione predefinita gli account multiutente. Lo stesso comportamento è disponibile su un server avviato manualmente impostando OMNIGENT_AUTH_ENABLED=1. L’accesso OIDC (OpenID Connect) funziona con Google, GitHub, Okta e Microsoft. Guida all’harness multi-agente di Omnigent descrive i provider sandbox, che diventano importanti non appena gli agenti scrivono sul disco.
Perché l'interfaccia web è vuota sull'indirizzo IP pubblico del server?
Entrambi gli strumenti web ascoltano sull'interfaccia di loopback per impostazione predefinita. La scelta più ovvia è associarli a 0.0.0.0 e aprire la porta. Tuttavia, si verificano due problemi distinti. Il primo riguarda la sicurezza: nella modalità locale predefinita, nessuno dei due include l'autenticazione. Una porta aperta equivale quindi a una shell esposta sul VPS. Il secondo è una regola del browser che spesso sorprende. crypto.randomUUID() è definito soltanto in un contesto sicuro, cioè HTTPS (hypertext transfer protocol secure), localhost o 127.0.0.1. Se si carica la stessa interfaccia tramite un indirizzo non sicuro come http://203.0.113.10:3080, la console del browser mostra:
TypeError: crypto.randomUUID is not a functionLa pagina viene quindi visualizzata solo parzialmente oppure non viene visualizzata affatto, perché la creazione della sessione non riesce prima che possa essere eseguito il rendering. Sul server non c'è alcun malfunzionamento e i log mostrano una richiesta normale. L'origine non è considerata attendibile dal browser, quindi una funzione da cui dipende il front end non è mai stata definita. Un tunnel SSH risolve il problema senza certificato, perché 127.0.0.1 è considerato un contesto sicuro. Anche un reverse proxy con un certificato TLS (transport layer security) valido risolve il problema; in questo caso è necessario aggiungere autonomamente l'autenticazione.
Quale soluzione fa per te?
Scegli Claude Code se vuoi un agente di coding già utilizzabile, sei disposto a pagare Anthropic e lavori già nel terminale. È l’unico dei tre a essere un prodotto commerciale completo, non un’anteprima.
Scegli DeepSeek Harness se il modello a plugin è l’aspetto principale: vuoi sostituire l’adapter del modello, la sandbox o il ciclo dell’agente e accetti che l’interfaccia su cui sviluppi possa cambiare. Il catalogo dei provider include Anthropic e OpenAI, quindi sceglierlo significa puntare sul runtime, non sui modelli di DeepSeek.
Scegli Omnigent se esegui già più di una CLI per agenti e il tuo problema reale è il coordinamento: policy, sandboxing, revisione tramite il modello di un secondo vendor e una sessione condivisa che altre persone possano osservare. Aggiunge un livello al tuo stack, e un livello non necessario è un livello che può rompersi. Se il tuo problema di coordinamento è più semplice, due sessioni di Claude Code sullo stesso computer possono inviarsi messaggi senza un orchestratore intermedio.
Se stai ancora valutando le opzioni, l’agente di coding Mimo Code AI appartiene alla stessa categoria degli agenti da terminale di Claude Code, mentre vale la pena leggere eseguire agenti di coding in una VM usa e getta indipendentemente dalla soluzione scelta, perché nessuno di questi tre rende sicuro da solo un rm -rf eseguito senza attenzione. Nessuno dei tre stabilisce neppure quanto deve essere grande il diff proposto dall’agente: è una scelta a livello di prompt. Per questo vale la pena aggiungere una skill che spinga l’agente verso la modifica minima funzionante alla soluzione scelta.
FAQ
Devo sottoscrivere un piano Anthropic a pagamento per usare Claude Code?
Sì. Claude Code richiede un account Pro, Max, Team, Enterprise o Console; il piano gratuito Claude.ai non include l'accesso. Su un VPS headless, imposta ANTHROPIC_API_KEY prima del primo avvio: Claude Code chiederà quindi una sola volta di approvare quella chiave, invece di tentare di aprire un browser. Le organizzazioni che dispongono di capacità altrove possono indirizzarlo ad Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry.
DeepSeek Harness può eseguire modelli Claude o OpenAI?
Sì. Il catalogo dei provider installato include Anthropic, OpenAI, Bedrock, Vertex, Azure e Codex. Aggiungi una chiave per ogni provider in Settings, quindi Models. Tutto ciò che non rientra nel catalogo va aggiunto come provider personalizzato, che richiede un id del provider in minuscolo, un URL di base, un protocollo API, una credenziale e almeno un modello. Le chiavi vengono memorizzate in $DSH_HOME/.credentials.yaml, mentre $DSH_HOME/settings.yaml contiene soltanto un riferimento. Esegui quindi il backup separato del file delle credenziali e tienilo fuori dal controllo versione.
Omnigent sostituisce Claude Code?
No. Omnigent esegue Claude Code. L'elenco degli harness include Claude, Codex, Cursor, OpenCode, Hermes e Pi. Un agente ne seleziona uno con una singola riga harness: nel relativo file YAML. Devi comunque installare e autenticare autonomamente la CLI sottostante. Omnigent aggiunge orchestrazione, policy e sandboxing sopra questi strumenti. Le sue dipendenze sono quindi giustificate solo quando esegui più di un agente o utilizzi più di un vendor.
Perché la web UI di DeepSeek Harness è vuota sull'indirizzo IP pubblico del mio server?
Perché un'origine HTTP semplice non è un contesto sicuro, crypto.randomUUID() non è definito in quel contesto e la console del browser segnala TypeError: crypto.randomUUID is not a function. La creazione della sessione non riesce. La pagina viene quindi visualizzata solo parzialmente o non viene visualizzata affatto, mentre i log del server sembrano normali. Inoltra la porta tramite SSH con ssh -N -L 3080:127.0.0.1:3080 you@your-vps e apri http://127.0.0.1:3080, perché il loopback viene considerato un contesto sicuro. Funziona anche un reverse proxy con un certificato TLS valido; in questo caso devi aggiungere autonomamente l'autenticazione.
Quanta RAM richiede un VPS per questi harness?
Anthropic indica 4 GB o più per Claude Code. Né DeepSeek Harness né Omnigent pubblicano un valore, quindi misura invece di procedere per supposizioni. In tutti e tre i casi il modello viene eseguito in remoto. L'harness si occupa quindi della supervisione dei processi e della gestione dei file, non dell'inferenza. A determinare realmente le dimensioni della macchina sono le attività che l'agente esegue su di essa, ad esempio una build e una suite di test. Omnigent richiede più risorse, perché Python, Node.js, tmux e ogni CLI dei vendor abilitata vengono eseguiti sulla stessa macchina.