Présentation du projet

Le dépôt Nexus-CLI propose un utilitaire en ligne de commande écrit en Go pur (requérant Go 1.20+) qui agit comme proxy local pour les modèles DeepSeek R1 (reasoner) et V3 (chat). Il permet d’accéder à ces modèles via le compte gratuit de chat.deepseek.com sans clé d’API officielle, en reproduisant les appels OpenAI, Anthropic et Ollama.

Le projet se base sur une analyse détaillée des implémentations Node.js (FreeDeepseekAPI‑EN) et Python (deepseek_bridge) et supprime toutes les dépendances d’exécution, y compris CGO, WASM ou bibliothèques Python.

Architecture et mécanismes techniques

Le cœur du système repose sur un solveur de Proof‑of‑Work implémenté en Go, qui calcule le défi DeepSeekHashV1 – une variante de Keccak‑f[1600] exécutant 1 à 23 tours de SHA3‑256. Le solveur exploite le parallélisme natif des cœurs CPU et résout des défis d’une difficulté de 144 000 en environ 40 ms à 50 ms, ce qui élimine le besoin d’appels externes pour le calcul.

Le serveur proxy expose plusieurs points d’entrée : POST /v1/chat/completions (format OpenAI avec streaming SSE), POST /v1/messages (compatible Anthropic/Claude Code), ainsi que les routes Ollama (/api/tags, /api/chat, /api/generate). Chaque endpoint renvoie des réponses JSON conformes aux spécifications respectives, y compris la prise en charge du champ response_format pour forcer un objet JSON.

curl http://localhost:9655/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-reasoner",
    "messages": [{"role": "user", "content": "Hello!"}],
    "stream": true
  }'

Le mode REPL interactif propose un affichage ANSI avec des prompts colorés, un spinner de chargement et la diffusion en temps réel du champ reasoning_content du modèle R1, stylisé en italique cyan. Des commandes slash intégrées (/help, /new, /model, /thinking, /search, /whoami, /clear, /exit) permettent de piloter la session sans quitter le terminal.

Intégrations et cas d’usage

Grâce à la compatibilité OpenAI/Anthropic, Nexus‑CLI se connecte directement à des interfaces tierces telles qu’Open WebUI, Continue.dev, Cursor, Cline ou tout client supportant les API OpenAI. L’émulation Ollama ouvre la porte à des outils comme Dify, AnythingLLM ou les SDK officiels Ollama, qui peuvent pointer vers http://localhost:9655 sans modification.

Le lanceur universel (nexus launch) démarre automatiquement le proxy en arrière‑plan et injecte la configuration adaptée pour des agents de code comme Claude Code, DeepSeek Harness, Codex, OpenCode, Goose ou Aider. Cette automatisation réduit le nombre de lignes de configuration nécessaires pour chaque outil.

Analyse des performances et limites

Le solveur PoW montre une latence de 40–50 ms pour la difficulté maximale observée, ce qui représente un overhead négligeable comparé aux temps de réponse réseau typiques des modèles hébergés. Cependant, la performance dépend fortement du nombre de cœurs disponibles ; sur une machine mono‑cœur, le temps de résolution augmente proportionnellement.

Le mécanisme de rotation d’identifiants (« multi‑account pool ») utilise un algorithme round‑robin pour éviter les réponses HTTP 429 du serveur DeepSeek. Cette approche nécessite la gestion manuelle de plusieurs tokens, ce qui peut compliquer la maintenance si les comptes expirent ou sont révoqués.

Le diagnostic intégré (nexus doctor) vérifie la validité du token, la connectivité au serveur DeepSeek et les performances du solveur PoW, offrant ainsi un point de contrôle rapide. L’absence de chiffrement côté client pour le token (stocké en clair dans le fichier .env) constitue une faiblesse de sécurité potentielle si le système est partagé.