> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aihubmix.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DeepSeek Harness

> Configurer DeepSeek Harness avec AIHubMix : installation npm, fournisseur OpenAI compatible, modèles auto ou précis et test d'une requête Agent.

DeepSeek Harness (commande `dsh`) est le framework d'agent de programmation open source de DeepSeek. Il comprend des espaces de travail, un terminal, l'édition de fichiers, les Skills, la planification et une Web UI. Son interface compatible OpenAI Chat Completions permet de le connecter à AIHubMix.

<Info>
  Ce guide a été testé le 14 août 2026 avec DeepSeek Harness `0.1.0-rc.6`. Harness est encore en aperçu développeur, les champs ou l'interface peuvent évoluer.
</Info>

<h2 id="summary">
  Résumé
</h2>

L'intégration utilise quatre valeurs :

| Paramètre                    | Valeur                    |
| ---------------------------- | ------------------------- |
| Provider ID                  | `aihubmix`                |
| Base URL                     | `https://aihubmix.com/v1` |
| API protocol                 | `openai-completions`      |
| API key environment variable | `AIHUBMIX_API_KEY`        |

<Frame>
  <img src="https://mintcdn.com/aihubmix/pPBGbuf_Qo9bMEMd/public/en/deepseek-harness/01-models-aihubmix-configured.png?fit=max&auto=format&n=pPBGbuf_Qo9bMEMd&q=85&s=9a11531222d056d05d6ee6030eddb595" alt="AIHubMix configuré dans la page Models de DeepSeek Harness" width="1280" height="720" data-path="public/en/deepseek-harness/01-models-aihubmix-configured.png" />
</Frame>

<h2 id="requirements">
  Quels sont les prérequis ?
</h2>

* Une [clé API AIHubMix](https://console.aihubmix.com/token) active
* Node.js `22.19.0` ou une version ultérieure, y compris Node.js 24+
* Un accès réseau au registre npm et à `https://aihubmix.com`

```bash theme={null}
node --version
npm --version
```

<h2 id="install">
  Comment installer DeepSeek Harness ?
</h2>

Installez la version npm publiée, sans cloner le dépôt source :

```bash theme={null}
npm install -g @deepseek-ai/dsh
dsh --version
```

Si le terminal affiche `dsh: command not found`, exécutez `npm config get prefix` et vérifiez que le dossier `bin` correspondant figure dans `PATH`.

<h2 id="start-web-ui">
  Comment démarrer la Web UI ?
</h2>

Exécutez la commande depuis le dossier à utiliser comme espace de travail :

```bash theme={null}
dsh web --port 3080
```

Ouvrez `http://127.0.0.1:3080`, puis sélectionnez ou ajoutez un espace de travail lors de la première utilisation.

<h2 id="configure-provider">
  Comment configurer le fournisseur AIHubMix ?
</h2>

Ouvrez **Settings > Models > Add a custom provider**.

<Frame>
  <img src="https://mintcdn.com/aihubmix/pPBGbuf_Qo9bMEMd/public/en/deepseek-harness/03-add-custom-provider.png?fit=max&auto=format&n=pPBGbuf_Qo9bMEMd&q=85&s=e5f609447d3c979a65235ecc1b0382d0" alt="Formulaire de fournisseur personnalisé dans DeepSeek Harness" width="1280" height="720" data-path="public/en/deepseek-harness/03-add-custom-provider.png" />
</Frame>

| Champ        | Valeur recommandée        | Remarques                                                              |
| ------------ | ------------------------- | ---------------------------------------------------------------------- |
| Provider ID  | `aihubmix`                | Identifiant en minuscules, ou `aihubmix-gateway` s'il est déjà utilisé |
| Display name | `AIHubMix`                | Nom affiché dans le sélecteur de modèles                               |
| Base URL     | `https://aihubmix.com/v1` | Doit inclure `/v1`                                                     |
| API protocol | `openai-completions`      | Protocole compatible OpenAI Chat Completions                           |
| API key      | Votre clé API AIHubMix    | Harness l'enregistre comme identifiant et ne réaffiche pas sa valeur   |

Le point de terminaison final est `https://aihubmix.com/v1/chat/completions`.

<Warning>
  Ne saisissez pas le chemin complet `/chat/completions` dans Base URL.
</Warning>

<h2 id="add-models">
  Ajouter auto ou un autre modèle
</h2>

Après avoir saisi la Base URL et la clé API, sélectionnez **Fetch available models**. Harness appelle `GET https://aihubmix.com/v1/models` et affiche les identifiants de modèles disponibles.

<Frame>
  <img src="https://mintcdn.com/aihubmix/pPBGbuf_Qo9bMEMd/public/en/deepseek-harness/07-discover-models.png?fit=max&auto=format&n=pPBGbuf_Qo9bMEMd&q=85&s=7fdeeb8c4ba8400910bcabe1e7b50a78" alt="Modèles AIHubMix disponibles dans DeepSeek Harness" width="1280" height="720" data-path="public/en/deepseek-harness/07-discover-models.png" />
</Frame>

Pour le premier test, vous pouvez ajouter uniquement `auto` avec le nom `Auto`. Pour utiliser un modèle précis, sélectionnez-le dans la liste ou choisissez **Add model** et saisissez son identifiant exact. Le sélecteur graphique affiche uniquement les modèles enregistrés dans le catalogue du Provider actuel.

<Frame>
  <img src="https://mintcdn.com/aihubmix/pPBGbuf_Qo9bMEMd/public/en/deepseek-harness/04-add-auto-model.png?fit=max&auto=format&n=pPBGbuf_Qo9bMEMd&q=85&s=0c1e93d53cf9840d5c5885dc192b0d80" alt="Ajout manuel du modèle auto d'AIHubMix" width="1280" height="720" data-path="public/en/deepseek-harness/04-add-auto-model.png" />
</Frame>

Sélectionnez **Create provider** pour enregistrer.

<h2 id="auto-vs-specific-models">
  Comparaison entre auto et un modèle précis
</h2>

| Choix               | Cas d'utilisation                                               |
| ------------------- | --------------------------------------------------------------- |
| `auto`              | Premier test de connexion ou sélection automatique par AIHubMix |
| ID de modèle précis | Capacité, version ou résultat reproductible avec un modèle fixe |

Les deux choix utilisent le même Provider, la même Base URL et la même clé API. Changer de modèle ne demande pas de recréer le fournisseur.

<h2 id="environment-variables">
  Stocker la clé API dans une variable d'environnement
</h2>

Modifiez `$HOME/.dsh/settings.yaml` :

```yaml theme={null}
llm-pi-ai:
  providers:
    aihubmix:
      displayName: AIHubMix
      apiKeyEnv: AIHUBMIX_API_KEY
      api: openai-completions
      baseURL: https://aihubmix.com/v1
      models:
        - id: auto
          name: Auto
          contextWindow: 1000000
          maxTokens: 32768

agent-default-model:
  provider: aihubmix
  model: auto
```

```bash theme={null}
export AIHUBMIX_API_KEY='sk-***'
dsh web --port 3080
```

Lorsque la clé provient de l'environnement de lancement, la page de paramètres affiche un message en lecture seule sans révéler la valeur.

<Frame>
  <img src="https://mintcdn.com/aihubmix/pPBGbuf_Qo9bMEMd/public/en/deepseek-harness/02-aihubmix-provider-details.png?fit=max&auto=format&n=pPBGbuf_Qo9bMEMd&q=85&s=a18af7f6409268331dcb4ddfa7d78568" alt="Détails du fournisseur AIHubMix dans DeepSeek Harness" width="1280" height="720" data-path="public/en/deepseek-harness/02-aihubmix-provider-details.png" />
</Frame>

Redémarrez Harness après toute modification de la variable.

<h2 id="verify-chat">
  Sélectionner un modèle et tester une conversation
</h2>

Fermez Settings, ouvrez le sélecteur en bas à droite de la zone de saisie, puis choisissez **Auto** ou un modèle ajouté.

<Frame>
  <img src="https://mintcdn.com/aihubmix/pPBGbuf_Qo9bMEMd/public/en/deepseek-harness/05-select-auto-model.png?fit=max&auto=format&n=pPBGbuf_Qo9bMEMd&q=85&s=82577ac5295eebc0ef6e4945f75f5ffe" alt="Auto sélectionné dans DeepSeek Harness" width="1280" height="720" data-path="public/en/deepseek-harness/05-select-auto-model.png" />
</Frame>

```text theme={null}
Reply with exactly: AIHubMix connection successful
```

La réponse attendue confirme la connexion entre Harness, le point de terminaison compatible OpenAI Chat Completions et AIHubMix.

<Frame>
  <img src="https://mintcdn.com/aihubmix/pPBGbuf_Qo9bMEMd/public/en/deepseek-harness/06-live-chat-success.png?fit=max&auto=format&n=pPBGbuf_Qo9bMEMd&q=85&s=f5fe3902c1c2f57b84b34b739b258394" alt="Réponse AIHubMix réussie dans DeepSeek Harness" width="1280" height="720" data-path="public/en/deepseek-harness/06-live-chat-success.png" />
</Frame>

<h2 id="headless-test">
  Exécuter un test headless
</h2>

```bash theme={null}
export AIHUBMIX_API_KEY='sk-***'
dsh --profile headless \
  'Reply with exactly DSH_AIHUBMIX_OK and do not use tools.'
```

Une exécution réussie affiche `DSH_AIHUBMIX_OK`.

<h2 id="troubleshooting">
  Questions fréquentes
</h2>

<h3 id="missing-credential">
  Pourquoi MISSING\_CREDENTIAL s'affiche-t-il ?
</h3>

Harness n'a pas reçu `AIHUBMIX_API_KEY` dans son environnement de lancement. Définissez la variable et démarrez Harness depuis le même terminal.

<h3 id="models-401">
  Pourquoi la découverte des modèles renvoie-t-elle 401 ?
</h3>

Vérifiez que la clé API est valide et ne contient aucun espace ou saut de ligne supplémentaire. La requête utilise l'authentification Bearer.

<h3 id="only-auto">
  Pourquoi Auto est-il le seul modèle du sélecteur ?
</h3>

Le sélecteur affiche uniquement les modèles enregistrés dans le catalogue actuel. Ouvrez **Settings > Models > AIHubMix > Edit**, puis utilisez **Fetch available models** ou ajoutez l'identifiant exact manuellement.

<h3 id="unknown-model">
  Pourquoi Harness affiche-t-il UNKNOWN\_MODEL ?
</h3>

Le catalogue actuel ne contient pas cet identifiant. Les identifiants sont sensibles à la casse, utilisez la valeur exacte renvoyée par la découverte.

<h3 id="connection-timeout">
  Pourquoi la connexion expire-t-elle ?
</h3>

Vérifiez le DNS, le réseau de votre organisation et le proxy local. Si seul le navigateur utilise le proxy système, définissez `HTTP_PROXY`, `HTTPS_PROXY` et `NODE_USE_ENV_PROXY=1` dans le terminal qui lance `dsh`.

<h2 id="security">
  Consignes de sécurité
</h2>

* Ne placez pas de clé API dans Git, les captures d'écran ou les scripts partagés
* Utilisez le stockage d'identifiants de Harness ou `AIHUBMIX_API_KEY`
* N'affichez pas la clé API complète pendant le diagnostic
* Injectez les variables avec la gestion des secrets de votre plateforme CI

***

Dernière mise à jour : 2026-08-14
