Sezioni dell'archivio conoscenza ▾

Navigazione

▸ Inizia qui Per ruolo

Categorie

Strumenti 52
Glossario 12

Strumenti

DeepSeek Harness: il tuo provider tramite JoinGonka Gateway

DeepSeek Harness (comando dsh) è un harness per agenti open source di DeepSeek AI: una shell in cui il modello legge e modifica i file del progetto, esegue comandi, delega sotto-attività e gestisce il piano, mentre tu monitori tutto dal browser e approvi i passaggi rischiosi. Il progetto è agli inizi: gli autori stessi lo definiscono developer preview e avvertono esplicitamente che potrebbero esserci cambiamenti incompatibili. Pertanto, tutto ciò che segue è legato a una versione specifica — 0.1.5-rc.2, con cui abbiamo completato la configurazione dalla prima schermata fino alla risposta dell'agente.

Al primo avvio, dsh richiede la chiave API ufficiale del fornitore, ma il layer del modello è aperto: nella pagina Settings → Models è possibile aggiungere qualsiasi provider che parli uno dei tre protocolli — OpenAI Chat Completions, OpenAI Responses o Anthropic Messages. JoinGonka Gateway supporta tutti e tre, quindi l'harness si collega alla rete decentralizzata Gonka tramite i mezzi standard, senza plugin o patch.

Un dettaglio significativo dalla pagina dell'applicazione nel catalogo OpenRouter: nella classifica dei modelli attraverso cui funziona DeepSeek Harness negli ultimi 30 giorni, al secondo posto si trova DeepSeek V4 Flash 0731, al terzo — GLM 5.3 Flash (dati al 21 settembre 2026; al primo posto c'è un modello di test anonimo). Entrambi i modelli aperti sono serviti dalla rete Gonka — insieme a MiniMax M2.7, — quindi il set abituale si sposta su un altro endpoint senza cambiare modello: cambiano solo l'indirizzo e il prezzo per token.

Cos'è DeepSeek Harness e come avviarlo

L'harness è tutto ciò che circonda il modello nel lavoro agentico: il ciclo «richiesta → chiamata allo strumento → risultato → passo successivo», gli strumenti per file e terminale, i permessi e le conferme, il log della sessione, la compressione del contesto. DeepSeek Harness lo compone dai plugin: l'architettura «everything is a plugin» è costruita sul framework Cordis, e qualsiasi nodo — dallo strumento all'adattatore del modello — si sostituisce senza toccare il core. Il codice è aperto con licenza MIT.

Non serve installare nulla: basta Node.js (la serie 22 dalla 22.19 in poi oppure la 24 e successive):

npx @deepseek-ai/dsh web

Il comando avvia la Web UI su http://127.0.0.1:3080 e la apre nel browser; se lanciato via SSH, l'indirizzo viene solo stampato nel terminale. Il flag --no-open avvia il server senza browser, --port cambia la porta. La directory da cui viene lanciato dsh diventa quella di lavoro predefinita, ma l'interfaccia avvierà una sessione solo dopo la scelta esplicita del workspace.

ModalitàComandoA cosa serve
Web UIdsh webInterfaccia principale: sessioni, impostazioni, conferme delle operazioni
Task singolodsh --profile headless "task"Script e CI: risposta su stdout, ragionamento su stderr
ACPdsh --profile acpEditor e client con supporto all'Agent Client Protocol
SDKdsh --profile sdkClient via JSON-RPC, incluso il Python SDK

Il layer dei modelli è composto da due adattatori. Quello diretto va all'API ufficiale del vendor. Quello multi-provider — dsh-llm-pi-ai — è costruito sulla libreria pi-ai, la stessa che sta alla base dell'agente da terminale Pi; tramite esso si collegano sia i provider integrati nel catalogo sia qualsiasi endpoint proprio. Per questo i nomi dei campi nelle impostazioni — api, contextWindow, maxTokens — coincidono con quelli familiari da Pi.

Sulla maturità. Il README del progetto si apre con un avviso: developer preview, iterazioni rapide, breaking changes. Un documento separato, SAFETY.md, precisa che non è stato effettuato alcun audit di sicurezza e che l'agente esegue comandi generati dal modello. La conclusione pratica è semplice: lanciate dsh in un container, in una macchina virtuale o sotto un account separato, e tenete backup di tutto ciò che può raggiungere.

Connessione tramite Web UI: Settings → Models

Passo 1: la chiave. Registrati su gate.joingonka.ai/register: dopo la verifica dell'indirizzo sul conto arriveranno 3M token gratuiti. Nella dashboard apri la sezione «Chiavi API» e crea una chiave con il prefisso jg-. Conviene creare una chiave dedicata per l'harness: così il suo traffico sarà visibile nelle statistiche su una riga separata.

Passo 2: la prima schermata. Dopo la notifica sullo stato di test (pulsante Continue), dsh ti chiederà di inserire la chiave dell'API ufficiale («Add an API key to get started»). Non è obbligatoria: premi Configure later.

Passo 3: il provider. Apri Settings → Models e scegli Add a custom provider. I campi del modulo:

CampoValoreNota
Provider IDjoingonkaIn minuscolo con lettere latine, inizia con una lettera. L'identificatore è permanente: finisce nelle richieste, nelle sessioni salvate e nel nome del riferimento alla chiave. Non si può rinominare: puoi solo creare un nuovo provider ed eliminare il vecchio
Display nameJoinGonka GatewayQualsiasi etichetta per gli elenchi
Base URLhttps://gate.joingonka.ai/v1Con il suffisso /v1
API protocolopenai-completionsCome scegliere il protocollo: vedi la tabella qui sotto
API keyjg-your-keyCampo di sola scrittura: dopo il salvataggio la pagina riceve un descrittore mascherato, non la chiave stessa

Passo 4: i modelli. Nel blocco Models premi Fetch available models: dsh chiederà al gateway l'elenco e aprirà la finestra «Choose models to add». Nella nostra prova conteneva tutti e tre i modelli della rete — MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731 e zai-org/GLM-5.3-Flash — e dopo Add selected l'harness ha assegnato automaticamente a ciascuno la finestra di contesto e il limite di risposta, in base ai dati del gateway. Non resta che premere Create provider.

Passo 5: la scelta del modello. Chiudi le impostazioni, premi Choose workspace e aggiungi la cartella del progetto. I modelli del nuovo provider compariranno nel selettore; quello scelto diventa il modello predefinito per le nuove sessioni.

dsh conserva la chiave separatamente dalle impostazioni: nel file ~/.dsh/.credentials.yaml con permessi di accesso riservati al proprietario. In settings.yaml resta solo il nome del riferimento ad essa — nella nostra prova JOINGONKA_API_KEY, in base all'identificatore del provider.

Quale protocollo scegliere. Il gateway parla tutti e tre; cambiano l'indirizzo di base e i vantaggi collaterali:

API protocolBase URLQuando sceglierlo
openai-completionshttps://gate.joingonka.ai/v1L'opzione principale: il percorso canonico del gateway, l'elenco dei modelli si carica con un pulsante, il flusso di ragionamento dei reasoning model arriva su un canale separato
openai-responseshttps://gate.joingonka.ai/v1Se i tuoi plugin o i tuoi scenari sono pensati per la Responses API
anthropic-messageshttps://gate.joingonka.aiFormato Anthropic Messages; il percorso /v1/messages lo aggiunge il client da sé

In dsh un provider parla un solo protocollo, quindi il secondo protocollo richiede un secondo provider con un Provider ID diverso. Per l'uso quotidiano basta la prima opzione; nella nostra prova il ciclo agentico con chiamata degli strumenti ha funzionato su tutti e tre.

Configurazione tramite file: settings.yaml

Il modulo Models scrive in un normale documento YAML — $DSH_HOME/settings.yaml, per impostazione predefinita ~/.dsh/settings.yaml. Puoi modificarlo direttamente: il pulsante Open configuration file in cima alle impostazioni apre il file, e gli adattatori lo rileggono alla richiesta successiva — non serve riavviare. Ecco la versione completa per la rete Gonka:

# ~/.dsh/settings.yaml
llm-pi-ai:
  providers:
    joingonka:
      displayName: JoinGonka Gateway
      apiKeyEnv: JOINGONKA_API_KEY
      api: openai-completions
      baseURL: https://gate.joingonka.ai/v1
      models:
        - id: deepseek-ai/DeepSeek-V4-Flash-0731
          name: DeepSeek V4 Flash
          contextWindow: 380000
          maxTokens: 32768
        - id: zai-org/GLM-5.3-Flash
          name: GLM-5.3 Flash
          contextWindow: 390000
          maxTokens: 8192
          reasoningEfforts:
            off: low
            high: high
        - id: MiniMaxAI/MiniMax-M2.7
          name: MiniMax M2.7
          contextWindow: 200000
          maxTokens: 8192
agent-default-model:
  provider: joingonka
  model: deepseek-ai/DeepSeek-V4-Flash-0731

Ecco cosa conta davvero:

  • apiKeyEnv non è la chiave, ma il nome del riferimento ad essa. dsh cerca il valore in quest'ordine: la variabile d'ambiente al momento dell'avvio, poi .credentials.yaml (dove scrive il modulo), poi .env nella directory di avvio, infine ~/.dsh/.env. Se configuri l'harness senza browser, ti basta una riga JOINGONKA_API_KEY=jg-your-key in ~/.dsh/.env con permessi 600. Una variabile esportata dopo l'avvio non sarà visibile al processo già in esecuzione.
  • Specifica sempre contextWindow e maxTokens. Per un modello che dsh non conosce, vengono assegnati 262.144 e 32.768 token — valori che non corrispondono ai limiti reali. Il maxTokens impostato diventa anche il limite di risposta predefinito per ogni richiesta.
  • reasoningEfforts sono i livelli di ragionamento per il menu Effort. Un modello inserito manualmente non ha livelli, e il menu non compare. Per GLM-5.3 Flash l'interruttore è binario: il valore low disattiva il ragionamento, qualsiasi altro lo mantiene completo. Per questo al livello off è associato low, mentre high passa così com'è. Nel nostro test con off non c'erano affatto blocchi di ragionamento, con high sono tornati.
  • agent-default-model è il modello per i nuovi agenti, inclusa la modalità headless. Lo stesso effetto si ottiene scegliendo il modello nell'interfaccia; qui puoi anche aggiungere reasoningEffort.

Gli interruttori compat che la documentazione di dsh consiglia per i gateway rigidi (supportsDeveloperRole: false, maxTokensField: max_tokens) qui non servono: JoinGonka Gateway accetta sia il ruolo developer sia il campo max_completion_tokens.

L'installer npx @joingonka/setup non configura questo harness: tutta la connessione si riduce al modulo della sezione precedente o al frammento YAML qui sopra.

Verifica ed errori comuni

Il modo più rapido per verificare l'integrazione è una singola esecuzione dalla directory con il codice. Metti accanto un piccolo file con un errore evidente e chiedi di trovarlo:

cd /path/to/project
npx @deepseek-ai/dsh --profile headless "Read calc.py and tell me in one sentence whether it has a bug."

La risposta finale viene stampata su stdout, il ragionamento su stderr con il tag dsh: reasoning:. L'agente deve invocare da sé lo strumento di lettura del file e rispondere nel merito: nella nostra esecuzione ciascuno dei tre modelli della rete ha indicato la riga errata. Significa che il ciclo completo «richiesta → invocazione strumento → risultato → risposta» attraverso il gateway si compone correttamente.

La seconda metà della verifica è lato gateway. Nella dashboard apri «Utilizzo»: lì si vedono le richieste per ore e giorni, la ripartizione per modello e per chiave. È comparsa una riga con la chiave dell'harness e un timestamp recente dell'ultima richiesta — il traffico passa davvero attraverso il gateway.

Se qualcosa è andato storto, la diagnosi di solito si legge direttamente dal messaggio:

Cosa si vedeCosa significaCosa fare
AUTH: 401: … Invalid API keyIl gateway non ha accettato la chiaveReinserisci la chiave nella pagina Models oppure correggi la variabile a cui fa riferimento apiKeyEnv
MISSING_CREDENTIAL: … no credential for provider route "joingonka"Al link indicato da apiKeyEnv non corrisponde nullaSalva la chiave nel form oppure imposta la variabile prima di avviare dsh: l'ambiente viene letto una sola volta, all'avvio
UNKNOWN_MODELIl modello non è nella lista models del providerAggiungilo al form o al file, oppure scegli uno già configurato
400 … Model "…" not found. Available: …L'identificatore è scritto in modo impreciso, il più delle volte senza il prefisso del vendorCopia l'id dall'elenco che il gateway riporta nello stesso messaggio
429 … currently overloaded … (rate limit)Il modello ha esaurito la capacità disponibile nella reteSituazione normale sotto carico: dsh ripete da sé la richiesta. Se i tentativi sono esauriti, cambia modello o aspetta un minuto; lo stato è visibile sulla pagina di stato
Fetch available models risponde 401La lista è stata richiesta con una chiave errataControlla la chiave nel form; i modelli puoi inserirli anche manualmente — funzioneranno allo stesso modo
Il modello di reasoning non ha il menu EffortPer la voce del modello non sono dichiarati i livelliAggiungi reasoningEfforts in settings.yaml, come nell'esempio sopra
La risposta del modello di reasoning si interrompe o è vuotaIl ragionamento rientra nel limite di risposta e l'ha consumato del tuttoNon abbassare maxTokens; per attività brevi scegli il livello off
Nel campo di input c'è la scritta Select model, l'immissione è bloccataIl modello predefinito punta a un provider rimossoScegli un altro modello nel selettore

Quale modello scegliere

Il prezzo per tutti i modelli della rete è uguale, quindi la scelta riguarda il comportamento e non il budget. Di seguito sono riportati i limiti e il modo in cui i modelli si sono comportati nel nostro test dsh sullo stesso compito: leggere un file e trovarne l'errore.

ModelloIdentificativoContesto / rispostaComportamento in dsh
DeepSeek V4 Flashdeepseek-ai/DeepSeek-V4-Flash-0731380K / 32768Risposta pulita con indicazione della riga. Il limite di risposta più alto della rete: ideale per correzioni lunghe e file di grandi dimensioni in un solo passaggio
GLM-5.3 Flashzai-org/GLM-5.3-Flash390K / 8192Modello di ragionamento: dsh mostra il ragionamento in un flusso separato, la risposta rimane pulita. Il ragionamento rientra nel limite di risposta
MiniMax M2.7MiniMaxAI/MiniMax-M2.7200K / 8192Risolve il compito correttamente; il ragionamento arriva in un campo separato reasoning_content, nel testo della risposta c'è solo la risposta stessa

Il consiglio predefinito è DeepSeek V4 Flash: il lavoro degli agenti raggiunge rapidamente i limiti di contesto e la lunghezza della correzione, e qui c'è margine su entrambi i parametri. Quando il compito richiede di pensare a una logica complessa, passare a GLM-5.3 Flash e mantenere il livello di ragionamento high; per modifiche rapide lo stesso provider lo fornisce con il livello off. MiniMax M2.7 è un'opzione stabile per compiti brevi, quando il processo di ragionamento visibile non disturba. Il modello si cambia nel selettore dell'interfaccia o tramite la stringa model nel blocco agent-default-model.

La composizione della rete è determinata dal voto dei partecipanti e cambia nel tempo; l'elenco aggiornato con i limiti è sempre disponibile tramite GET https://gate.joingonka.ai/v1/models — lo stesso utilizzato dal pulsante Fetch available models.

Quanto costa e cosa considerare durante il lavoro

Gli strumenti agenti consumano token in modo diverso rispetto a una chat: a ogni tua frase l'harness aggiunge un prompt di sistema e le descrizioni di tutti gli strumenti, quindi conduce un dialogo a più passaggi con il modello. Nella nostra esecuzione, il compito "leggi il file e trova l'errore" ha richiesto da due a tre passaggi e tra 14 e 22 mila token, con quasi tutto questo in input: circa settemila token vengono utilizzati a ogni passaggio prima ancora della tua domanda. È il prezzo normale per l'autonomia, ed è proprio per questo che il prezzo per token è determinante.

Tramite JoinGonka Gateway, i token costano $0.0069 per milione in input e $0.021 per milione in output: il prezzo è uguale per tutti i modelli della rete e viene inserito in questa pagina da una fonte in tempo reale. Ordine di grandezza dei prezzi a settembre 2026:

ScenarioConsumoTramite Gateway
Attività singola (leggere file, trovare errore)14-22K tokenfrazioni di centesimo
Una giornata di lavoro attivo3-7M tokenpochi centesimi
Un mese di sviluppo attivo~150M tokencirca un dollaro

Il pagamento avviene in base al consumo effettivo, senza abbonamenti e senza quote sul numero di richieste; il saldo e il consumo giornaliero sono visibili nell'area riservata.

Versione. Finché il progetto è in stato di developer preview, dopo ogni aggiornamento verifica che il provider sia presente e, per la riproducibilità, fissa la versione direttamente nel comando: npx @deepseek-ai/[email protected] web.

Permessi. Le nuove sessioni funzionano per impostazione predefinita in modalità Workspace Write — scrittura all'interno della directory di lavoro; per le operazioni che superano la policy, l'interfaccia richiede una conferma. La modalità può essere modificata in Settings → General.

Riprova. In caso di singolo errore di rete, dsh ripete la richiesta autonomamente — fino a cinque volte, secondo la documentazione — quindi un breve picco di carico sulla rete solitamente passa inosservato.

Privacy. Il gateway non memorizza il contenuto dei prompt e delle risposte: nelle statistiche rimangono solo i dati aggregati del consumo. L'agente legge i file del progetto localmente, sulla tua macchina.

Se hai bisogno di lavorare con immagini — uno screenshot dell'interfaccia, uno schema in foto — configura accanto un secondo provider con un modello dotato di visione: dsh gestisce più provider simultaneamente, mentre i modelli della rete Gonka sono testuali.

DeepSeek Harness non è l'unico agente rilasciato dal laboratorio sviluppatore dei modelli: Z.ai, autori di GLM, ha l'ambiente ZCode, mentre MiniMax ha il terminale MiniMax Code. Entrambi si collegano allo stesso gateway con la stessa chiave.

DeepSeek Harness è un harness agente open source di DeepSeek AI in stato di developer preview: Web UI, esecuzioni singole, ACP e SDK su architettura a plugin. Il tuo endpoint si collega nativamente: Settings → Models → Add a custom provider, indirizzo https://gate.joingonka.ai/v1, protocollo openai-completions, chiave jg-…; il pulsante Fetch available models recupera automaticamente DeepSeek V4 Flash, GLM-5.3 Flash e MiniMax M2.7 insieme ai limiti. Lo stesso viene registrato come blocco llm-pi-ai in ~/.dsh/settings.yaml. Per GLM-5.3 Flash, dichiara i livelli off: low e high: high: il ragionamento diventerà commutabile. Esegui l'harness in un ambiente isolato e fissa la versione finché il formato non si stabilizza.

Vuoi saperne di più?

Esplora altre sezioni o inizia a guadagnare GNK subito.

Ottieni chiave e token gratuiti →