From 836b514828446e4b639d4e736fae42256cb1a8c6 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 11 Sep 2026 12:20:03 +0000 Subject: [PATCH] docs: chantier Urgence - selection LLM gratuits multi-source par assistant + bug Bifrost/OpenRouter decouvert --- _INDEX.md | 1 + .../urgence-llm-gratuits-fallback-20260911.md | 139 ++++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 common/urgence-llm-gratuits-fallback-20260911.md diff --git a/_INDEX.md b/_INDEX.md index 8efd187..d20ffac 100644 --- a/_INDEX.md +++ b/_INDEX.md @@ -284,3 +284,4 @@ - [common/rapport-gemini-phase-a-pilote-botmode-20260825.md](common/rapport-gemini-phase-a-pilote-botmode-20260825.md) -- Phase A bascule hermes-nyora v2026.8.19 (0.20.5) : backup pre-upgrade (81Mo), bascule image unique sur nyora, continuite 100% validee (Telegram, Cron, MCP Context-Hub, Veille, Notes, SMTP), verrou reseau 8642 etanche (perso/tt bloques, 401 local), Gate 1 reussi (interception deny rules + safe root), Gate 2 documente (roster actif si ui_meta[\x27hermes-bots\x27] dans profile.yaml, injection sur titre \x27Bot Chat\x27, messagerie headless via hermes chat -Q), Browser Use mode teste (uvx 0.1.9, fallback natif auto), VPS Contabo verifie sans 8642 publie (25/08/2026) - [common/piege-virtual-key-nabil-key-bifrost-hermes-20260904.md](common/piege-virtual-key-nabil-key-bifrost-hermes-20260904.md) -- Piège clé virtuelle Nabil-Key (bfk-0cd1fb...) vs clés dédiées Hermes : fuite budgétaire 8 $/mois, audit exhaustif de la flotte NAS (perso/tt/nyora), détection et correction chirurgicale de la fuite résiduelle vision perso (ligne 134 config.yaml), et validation par inférences réelles de bout en bout (04/09/2026) +- [common/urgence-llm-gratuits-fallback-20260911.md](common/urgence-llm-gratuits-fallback-20260911.md) -- Chantier "Urgence" (forfait OpenCode Go a 99.6%) : selection de LLM gratuits multi-source par assistant, taguee -OC (OpenCode Zen keyless, mimo-v2.5-free) / -OR (OpenRouter, nex-agi/nex-n2.5-pro:free) / -GQ (Groq, openai/gpt-oss-120b) / -NV (NVIDIA NIM, nemotron-3-super-120b-a12b). Deploye sur les 4 Hermes (fallback corrige, pointait vers le meme forfait epuise), DSH, openclaw-perso, opencode natif VPS. Decouverte : ~moitie des modeles gratuits deja whitelistes etaient morts (catalogues OR/Groq tournent vite). BUG NON CORRIGE decouvert au passage : Bifrost -> OpenRouter casse pour tout modele (fasthttp small read buffer), impacte aussi la vision en prod (openrouter/google/gemini-2.5-flash, OCR gsparc-mezzouna/nyora-convert-api) (11/09/2026) diff --git a/common/urgence-llm-gratuits-fallback-20260911.md b/common/urgence-llm-gratuits-fallback-20260911.md new file mode 100644 index 0000000..6239063 --- /dev/null +++ b/common/urgence-llm-gratuits-fallback-20260911.md @@ -0,0 +1,139 @@ +# Chantier "Urgence" — sélection de LLM gratuits multi-source (11/09/2026) + +## Contexte +Forfait OpenCode Go de Nabil à 99.6% d'usage le 11/09/2026 (reset dans 1j13h). +Demande : ajouter, au niveau de tous les assistants, un provider "Urgence" — une +sélection de LLM gratuits à utiliser en cas d'épuisement du forfait payant, tagués +-OC / -OR / -GQ / -NV selon la source. + +## Convention de tag +- **-OC** : OpenCode Zen, tier gratuit **keyless** (`https://opencode.ai/zen/v1`, + header `x-opencode-session` requis — une valeur statique suffit, testée deux fois + de suite avec la même valeur sans problème). Modèle retenu : `mimo-v2.5-free` + (mêmes poids que le cerveau principal Mimo V2.5, coût 0, **totalement indépendant** + du forfait OpenCode Go payant épuisé). C'est le pick prioritaire partout. +- **-OR** : OpenRouter, modèle `nex-agi/nex-n2.5-pro:free`. Clé `OPENROUTER_API_KEY` + déjà native chez Hermes et DSH (pas besoin d'en ajouter). **ATTENTION : routage via + Bifrost actuellement cassé, voir section bug plus bas** — fonctionne seulement en + appel direct (hors Bifrost). +- **-GQ** : Groq, modèle `openai/gpt-oss-120b`. Clé `GROQ_API_KEY` déjà native chez + Hermes/DSH, et fonctionne aussi via Bifrost (`groq/openai/gpt-oss-120b`). +- **-NV** : NVIDIA NIM, modèle `nvidia/nemotron-3-super-120b-a12b`. Clé + `NVIDIA_API_KEY` déjà native chez Hermes/DSH, fonctionne aussi via Bifrost + (`nvidia_nim/nvidia/nemotron-3-super-120b-a12b`). + +Tous les modèles ci-dessus ont été **testés en direct le 11/09/2026** (appel réel, +réponse vérifiée) avant d'être retenus — voir "catalogues périmés" plus bas. + +## Déploiement par assistant + +**Hermes (tt / nyora / perso / nabil)** — `/opt/data/config.yaml` (NAS) ou +`/data/config.yaml` (VPS pour nabil) : +- `fallback_providers` pointait vers `opencode-go` (= le même forfait payant + épuisé — filet de sécurité inutile en cas d'épuisement réel). Remplacé par + `opencode-free` / `mimo-v2.5-free`. +- `fallback_model` pointait vers un modèle payant (deepseek/deepseek-v4-flash) ou + un slug OpenRouter mort (qwen/qwen3-next-80b-a3b-instruct:free). Remplacé par + `openrouter` / `nex-agi/nex-n2.5-pro:free`. +- hermes-nabil n'avait aucun des deux blocs configurés — ajouté (fallback_model + seulement, fallback_providers n'existe pas dans son schéma). +- Backups : `config.yaml.bak-20260911-urgence` sur chaque instance. Les 4 + redémarrées, confirmées saines. + +**DSH (dsh-vps)** — `/home/dsh-agent/.dsh/settings.yaml` : +- Bloc `openrouter` : 2 modèles morts (z-ai/glm-5.2:free, minimax/minimax-m2.7:free) + remplacés par nex-agi/nex-n2.5-pro:free et nvidia/nemotron-3-ultra-550b-a55b:free. + Renommé en "OpenRouter (Urgence -OR)". +- Nouveau provider `opencode-free` ajouté (keyless, `mimo-v2.5-free`, header + `x-opencode-session` statique). Le schéma settings.yaml de DSH accepte un provider + sans `apiKeyEnv` (champ optionnel côté code — `resolveApiKey` retourne + `undefined` proprement si absent, pas d'erreur de validation). +- Backup : `settings.yaml.bak-20260911-urgence`. Redémarré, sain. + +**openclaw-perso** — `/home/openclaw/.openclaw/openclaw.json` : +- Ajout de `groq/openai/gpt-oss-120b` (-GQ) dans les models du provider `bifrost` + existant, et d'un nouveau provider `opencode-free` (-OC). +- **Piège rencontré** : nommer un modèle avec le préfixe `groq/` à l'intérieur du + provider `bifrost` déclenche côté OpenClaw une détection automatique de plugin + dédié (`@openclaw/groq-provider`, distinct du simple passage par Bifrost). Au + premier redémarrage : "plugin migration inputs changed... refusing to report + ready", healthcheck en échec (port 18789 injoignable). **Résolu tout seul** au + redémarrage suivant (le message l'annonçait : "Restart OpenClaw so state + migrations run"). Pas d'intervention nécessaire au-delà d'attendre/relancer une + fois — mais **à savoir pour la prochaine fois** : un modèle préfixé par le nom + d'un provider "connu" d'OpenClaw (groq, openai, anthropic...) peut déclencher ce + cycle, même si on ne voulait que router via Bifrost. +- Backup : `openclaw.json.bak-20260911-urgence`. Healthy après le second boot. + +**OpenCode natif VPS** (conteneur `opencode`, CLI open-source, distinct du +"OpenCode Zen" — source de -OC) — `/home/gemini-ops/opencode/config/opencode.json` : +- Fichier monté **read-only** dans le conteneur (`/config/opencode.json`) — toute + édition doit se faire côté hôte, à `/home/gemini-ops/opencode/config/opencode.json`. +- Découverte : ce conteneur utilise en réalité la VK `vk-dsh-vps` (partagée avec + l'agent DSH), pas de VK dédiée. Cette VK n'avait que le provider `opencode` + (payant) en whitelist Bifrost — aucune alternative gratuite possible via Bifrost + avant intervention. +- Ligne `groq` ajoutée à `vk-dsh-vps` en base Bifrost (`allowed_models: + ["openai/gpt-oss-120b"]`, `allow_all_keys=1`), Bifrost redémarré. Modèle + `groq/openai/gpt-oss-120b` ajouté au provider `bifrost` existant dans + opencode.json. Backup : `opencode.json.bak-20260911-urgence`. Redémarré, vérifié + via `curl localhost:4090/config` que le modèle est bien chargé. + +## Whitelist Bifrost rafraîchie +VK `vk-openclaw-perso` : ajout de `nex-agi/nex-n2.5-pro:free` et +`nvidia/nemotron-3-ultra-550b-a55b:free` (provider openrouter, id 117) et de +`nvidia/nemotron-3-super-120b-a12b` (provider nvidia_nim, id 115). VK +`vk-dsh-vps` : nouvelle ligne `groq` (id généré, `allowed_models: +["openai/gpt-oss-120b"]`). Bifrost redémarré à chaque fois (pas de hot-reload des +whitelists, connu). Backups config.db pris avant chaque modification +(`config.db.bak-20260911-urgence-openclaw`, `config.db.bak-20260911-urgence-dsh-vk`). + +## Catalogues gratuits périmés (découverte au passage) +Environ la moitié des modèles déjà whitelistés en base Bifrost et dans le +settings.yaml de DSH étaient **morts** au moment du test (11/09/2026) : les +catalogues gratuits OpenRouter et Groq tournent vite. Exemples confirmés morts : +`z-ai/glm-4.5-air:free`, `openai/gpt-oss-120b:free` (variante OpenRouter, la +variante Groq sans `:free` est vivante), `qwen/qwen3-coder:free`, +`llama-3.3-70b-versatile` (retiré du catalogue Groq), `meta/llama-3.3-70b-instruct` +(NVIDIA NIM, end-of-life 26/08/2026). **Leçon : toujours revalider un modèle +gratuit en direct avant de le réutiliser depuis une whitelist existante**, ne pas +faire confiance à une liste ancienne même si elle a été testée à l'époque. + +## BUG DÉCOUVERT : Bifrost -> OpenRouter cassé (non corrigé) +Indépendamment du chantier Urgence : **tout** routage Bifrost vers OpenRouter +échoue actuellement, quel que soit le modèle demandé (testé sur 3 modèles +différents, même erreur à chaque fois) : +``` +error when reading response headers: small read buffer. Increase ReadBufferSize. +Buffer size=4096, contents: "HTTP/1.1 404 Not Found... " +``` +Hypothèse : openrouter.ai renvoie une page d'erreur 404 avec des en-têtes +`Content-Security-Policy` trop volumineux pour le buffer de lecture par défaut +(4096 octets) du client HTTP sortant de Bifrost (fasthttp côté client provider, +**distinct** du `server.read_buffer_size` documenté — celui-là ne couvre que les +requêtes entrantes vers Bifrost, défaut 65536). Le 404 lui-même suggère aussi +qu'OpenRouter bloque peut-être Bifrost (User-Agent / Cloudflare bot-protection) — +pas confirmé. + +**Impact réel en production** : `openrouter/google/gemini-2.5-flash` (vision_model +documenté dans context-hub, utilisé par gsparc-mezzouna et nyora-convert-api pour +l'OCR) est probablement **cassé en ce moment** pour tout consommateur passant par +Bifrost. À vérifier/tester par la prochaine session qui touche à la vision. + +Groq et NVIDIA NIM via Bifrost ne sont **pas** affectés (Groq testé et confirmé +fonctionnel à travers Bifrost). Non corrigé dans cette session — creuser le +réglage buffer sortant côté client provider de Bifrost (pas trouvé de champ +documenté pour ça spécifiquement, `concurrency_and_buffer_size` concerne la +taille de la file d'attente de requêtes, pas le buffer de lecture TCP des +réponses). + +## Documentation centrale +Règles `urgence_gratuit` et `bifrost_openrouter_bug` ajoutées au scope `llm` de +context-hub (PATCH /api/rules/llm) — visibles par Claude et Gemini (scope llm +accessible aux deux). + +## Reste à faire +- Diagnostiquer/corriger le bug Bifrost -> OpenRouter (ticket séparé recommandé). +- Revalider `openrouter/google/gemini-2.5-flash` (vision) une fois le bug traité. +- Envisager une VK dédiée pour le conteneur `opencode` natif VPS plutôt que le + partage actuel avec `vk-dsh-vps` (pas bloquant, note pour plus tard).