Ricevi la newsletter
Tool, prompt e workflow AI. Una volta a settimana, gratis.
Sei dentro. Da questa settimana ricevi la newsletter.
DeepSeek ha aperto Harness con licenza MIT: l'infrastruttura per costruire agenti AI che lavorano da soli. Cosa fa davvero, quali modelli supporta e cosa non funziona ancora.

109.000 stelle su GitHub in due giorni. Una crescita così si era vista solo con OpenClaw.
Il 13 agosto 2026 DeepSeek ha aperto il codice di DeepSeek Harness, licenza MIT, lo stesso giorno in cui ha dichiarato V4-Pro generalmente disponibile. Su LinkedIn e X è partito il solito giro di post che contano le stelle.
La notizia non è il numero. È cosa hanno deciso di regalare: non un modello, ma l’impalcatura che gli sta attorno. Quella che finora era il vantaggio competitivo di Claude Code e Codex.
Ho letto tutta la documentazione ufficiale per capire cosa c’è davvero sotto, se ci si può costruire un ufficio agentico sopra, e dove sta la fregatura. Ecco cosa ho trovato.
DeepSeek Harness (comando dsh) è un agent harness open source con licenza MIT: il livello software che trasforma un modello linguistico in un agente capace di leggere file, eseguire comandi, usare strumenti esterni e portare avanti un compito in più passaggi senza supervisione continua.
La formula che DeepSeek mette in cima al sito è Agent = Model + Harness. Il modello è il cervello. L’harness è tutto il resto: definizione dei tool, accesso a filesystem e shell, gestione della memoria e del contesto, orchestrazione dei sotto-agenti, permessi, e soprattutto la regola su quando fermarsi.
Non è un assistente per programmare pronto all’uso. È il pezzo sotto: quello con cui te lo costruisci.
L’architettura poggia su Cordis, un kernel a plugin il cui design è descritto nel paper A Programming Paradigm for Spatiotemporal Composability.
Il principio è che non esiste un nucleo intoccabile. Sono plugin:
In pratica: cambi un pezzo da configurazione, senza forkare il progetto. Se il loop predefinito non ti piace, ne monti un altro. Se vuoi salvare le sessioni su un database tuo, sostituisci il plugin dello storage.
C’è un secondo principio, meno appariscente ma più utile nel lavoro quotidiano: ogni esecuzione è tracciabile. Tutto ciò che il modello vede finisce in un log append-only, inclusi i prompt di sistema, il ragionamento, le chiamate ai tool con i relativi risultati, lo scheduling dei sotto-agenti e ogni iniezione di contesto. Da quel singolo flusso di eventi puoi riprendere una sessione, forkarla, cercarci dentro o rigiocarla.
Chi ha passato ore a capire perché un agente si è impuntato al quinto passaggio sa quanto vale.
Ricevi una guida pratica ogni settimana. AI, tool e automazioni.
DSH non ha una configurazione unica: parte in quattro modalità diverse.
| Modalità | Cosa fa | Quando usarla |
|---|---|---|
| Standard | Toolset completo: editing file, shell, ricerca file e web, skill, planning, sotto-agenti, workflow | Uso normale, agente di coding completo |
| Code | Tutti i tool di Standard esposti via Code Mode SDK: il modello scrive un programma TypeScript che li orchestra | Operazioni multi-step complesse, meno round-trip |
| Minimal | Solo due strumenti: bash persistente e str_replace_editor | Benchmark dei modelli in ambiente pulito |
| Creator | Standard più ispezione del runtime ed esperimenti sui plugin | Creare preset e configurazioni personalizzate |
La modalità Minimal merita una nota: è di fatto l’harness da benchmark, quello che isola le capacità del modello dal contorno. È anche la composizione usata nell’esempio del SDK Python.
Qui sta il punto che interessa di più a chi è attento al lock-in: il modello lo scegli tu.
Le opzioni sono tre:
api-version, Codex con OAuthQuest’ultima è la strada per i modelli locali. Ollama, LM Studio o vLLM entrano come provider custom: gli dai un Provider ID minuscolo, la base URL (http://localhost:11434/v1 nel caso di Ollama), il protocollo API e almeno un modello. Lo stesso meccanismo che uso per collegare Claude Code a Ollama, qui è nativo.
Le chiavi sono write-only: vengono salvate in $DSH_HOME/.credentials.yaml e l’interfaccia riceve solo un descrittore oscurato, mai il segreto in chiaro.
Un dettaglio che fa perdere tempo se non lo sai: un modello inserito a mano viene trattato come solo testo finché non dichiari esplicitamente il contrario. Se usi un modello di visione su un provider custom, devi aggiungere una riga nel settings.yaml:
llm-pi-ai:
providers:
my-gateway:
apiKeyEnv: GATEWAY_API_KEY
api: openai-completions
baseURL: https://gateway.example/v1
models:
- id: vision-preview
input: [text, image]
Senza quella riga, l’immagine viene rifiutata prima ancora di partire.
Serve solo Node.js:
npx @deepseek-ai/dsh web
Il comando avvia la Web UI su http://127.0.0.1:3080. Da lì apri Settings → Models, inserisci la chiave del provider e salvi: la modifica vale dalla richiesta successiva, senza riavviare il server.
Poi clicca Choose workspace e seleziona la cartella del progetto. Finché non lo fai, il campo per scrivere resta bloccato.
Chi preferisce partire dal sorgente:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
C’è anche un SDK Python (pip install deepseek-harness-sdk, Python 3.10 o superiore) che porta con sé un runtime già compilato: non serve Node.js di sistema. Funziona su Linux x64, Linux arm64 e macOS 14 o superiore su arm64. Su Windows no, almeno per la composizione che usa il PTY persistente.
Prima di costruirci sopra qualcosa, lancia questo:
dsh --profile web --dump-config
Ti stampa l’albero dei plugin realmente montati all’avvio. È più affidabile che dare per scontato che ogni pacchetto presente nel repository sia attivo nel profilo distribuito.
Il confronto più citato è con Claude Code, ma non sono la stessa categoria di prodotto.
| DeepSeek Harness | Claude Code / Codex | OpenCode | LangGraph | |
|---|---|---|---|---|
| Cos’è | Framework per comporre l’harness | Agente pronto all’uso | Agente pronto, model-agnostic | Libreria di orchestrazione |
| Licenza | MIT | Proprietaria | MIT | MIT |
| Modelli | Qualsiasi, anche locali | Legati al proprio provider | Oltre 75 provider | Qualsiasi |
| Interfaccia | Web UI + SDK Python | CLI e IDE | TUI da terminale | Nessuna |
| Chi decide il percorso | Il modello | Il modello | Il modello | Lo scrivi tu, nodo per nodo |
| Maturità | Developer preview | Produzione | Produzione | Produzione |
La differenza con LangGraph è quella che conta di più se hai già automazioni in piedi: con LangGraph disegni tu il grafo passo per passo e il flusso è deterministico. Con DSH dai un obiettivo e i passaggi li decide il modello. Non è un sostituto: sono due strumenti per problemi diversi. I flussi dove serve determinismo, come compliance o output strutturato, restano meglio su LangGraph.
Con OpenCode la sovrapposizione è molto più alta: stessa filosofia model-agnostic, stessa licenza. La differenza sta nella profondità del sistema a plugin. In OpenCode i plugin sono agganci prima e dopo le chiamate ai tool, attorno a un nucleo fisso. In DSH il nucleo stesso è fatto di plugin. In compenso OpenCode è molto più maturo e già usato in produzione.
Un aspetto che rende DSH più interessante del previsto: legge AGENTS.md e CLAUDE.md, fa da client MCP, monta i bridge per gli hook di Claude Code e Codex eseguendo il tuo hooks.json esistente, e può delegare il lavoro ai binari di Claude Code o Codex già installati sulla macchina, funzione disattivata di default.
Quello che hai già configurato non lo butti.
Attenzione però, e qui il condizionale è d’obbligo su tutto.
È una developer preview dichiarata. Il README avvisa in maiuscolo che ci saranno modifiche che rompono la compatibilità. Il pacchetto pubblicato è ancora una release candidate. Quello che costruisci oggi potrebbe non funzionare tra un mese.
Zero benchmark pubblicati. Nel repository c’è un file BENCHMARK.md, ma dentro ci sono tre righe che rimandano alla guida del SDK Python. Nessun numero, nessun confronto, nonostante la modalità Minimal sia progettata esattamente per quello.
La configurazione MCP è ancora da sviluppatori. Le capacità di client MCP ci sono nel sorgente, ma non è la casella da spuntare che trovi in Claude Code. Vanno trattate come lavoro su plugin versionati.
L’esempio del SDK Python gira in danger-full-access. Bash ed editor possono modificare qualsiasi percorso visibile al processo. Va eseguito solo dentro un container o un checkout usa e getta, mai sulla macchina di lavoro.
E poi c’è la domanda che nessuno sta facendo ad alta voce. 109.000 stelle in 48 ore, su un progetto in preview, senza benchmark e senza release taggata: quanto è organico quel numero?
Torniamo alla domanda dell’inizio. Ci si può costruire sopra un ufficio agentico?
I pezzi ci sono tutti: sotto-agenti, skill, scheduling, sandbox, sessioni persistenti, client MCP, login OAuth per Codex, e la libertà di far girare i modelli dove vuoi, server tuo compreso. Sulla carta è più completo di quanto ci si aspetti da una v0.1.
Ti serve se: vuoi capire come è fatto dentro un agent harness, hai bisogno di sostituire il ciclo dell’agente o l’interfaccia, o stai valutando quanto costa davvero uscire dal recinto di un singolo fornitore.
Non ti serve se: devi consegnare qualcosa la settimana prossima. Per quello ci sono OpenCode e Claude Code, che funzionano oggi.
Il mio piano è provarlo al rientro dalle vacanze su un flusso reale del mio ufficio agentico, che oggi gira su LangGraph. Sceglierò un processo dove il grafo è diventato rigido e pieno di rami: è lì che un agente autonomo può fare la differenza. Quando avrò i numeri li scrivo.
Non è il rivale di Claude Code. È il pannello di controllo che ci sta sopra, e adesso è gratis.
Un dettaglio finale che dice più di mille analisi: nella radice del repository ci sono un file CLAUDE.md e una cartella .claude/. L’hanno costruito usando Claude Code.
È il livello software attorno al modello: definizione dei tool, accesso a shell e filesystem, gestione del contesto, orchestrazione dei sotto-agenti e regole su quando fermarsi. Il modello genera testo, l’harness lo trasforma in un agente che agisce sull’ambiente reale.
Sì, il software è open source con licenza MIT e si scarica liberamente. Quello che paghi sono i modelli: se usi le API di DeepSeek, Anthropic o OpenAI paghi a consumo. Se colleghi un modello locale via Ollama o vLLM, il costo dei token è zero.
Sì. Basta aggiungerlo come provider personalizzato indicando la base URL dell’endpoint compatibile con l’API OpenAI. Per Ollama è http://localhost:11434/v1. Puoi anche mischiare: modello locale per il lavoro ripetitivo e provider a pagamento solo per i compiti difficili.
Per Codex è previsto il login OAuth, quindi entri con l’account. Anthropic nel catalogo ufficiale richiede una chiave API. In alternativa DSH può delegare i compiti al binario di Claude Code già installato sulla tua macchina, che usa la tua autenticazione ufficiale.
No, non ancora. È una developer preview dichiarata e il README avvisa esplicitamente che ci saranno modifiche che rompono la compatibilità. Va bene per test ed esperimenti, non per costruirci sopra qualcosa che deve reggere nel tempo.
Stessa filosofia model-agnostic e stessa licenza MIT, ma OpenCode è un agente pronto all’uso e molto più maturo, con interfaccia da terminale. In DSH il nucleo stesso è composto da plugin, quindi puoi sostituire anche il ciclo dell’agente. Oggi OpenCode è la scelta pratica, DSH la scommessa architetturale.
La Web UI parte ovunque ci sia Node.js. La composizione del SDK Python con PTY persistente no: richiede un terminale POSIX, quindi Linux x64, Linux arm64 o macOS 14 e superiori su arm64. Su Windows serve WSL o un container.
Per la stesura dell’articolo sono state consultate la documentazione ufficiale, il repository e la pagina prodotto di DeepSeek Harness.
Repository ufficiale con README, licenza MIT, comandi di avvio da npm e da sorgente, e l’avviso sulle modifiche che rompono la compatibilità.
Apri fontePagina ufficiale utile per verificare il posizionamento Agent = Model + Harness, le quattro modalità runtime e il funzionamento del log tracciabile.
Apri fonteDocumentazione tecnica su provider di catalogo, provider personalizzati, autenticazione OAuth per Codex, gestione delle credenziali e dichiarazione delle modalità di input.
Apri fonteRiferimento per installazione, requisiti di piattaforma, gestione delle sessioni e avvertenze sul profilo di permessi danger-full-access.
Apri fonteDocumentazione sul modello a plugin di Cordis, la funzione apply, la dichiarazione delle dipendenze e la gestione automatica delle risorse.
Apri fonteSe vuoi i risultati del test appena lo provo sul serio, iscriviti alla newsletter settimanale su francescogruner.it. Se invece lo installi prima di me e qualcosa non parte, scrivimi nella community Facebook: lo guardiamo insieme.