recovery: recuperation commit local orphelin (master jamais pousse) - OPENCODE-GO-MIGRATION.md
This commit is contained in:
parent
cb6565453e
commit
cdb4e4087d
|
|
@ -0,0 +1,59 @@
|
|||
# Migration OpenRouter → OpenCode Go — 2026-06-16
|
||||
|
||||
Objectif : basculer la stack LLM du NAS vers **OpenCode Go** (forfait Go, endpoint
|
||||
`https://opencode.ai/zen/go/v1`, auth `Authorization: Bearer <clé>` uniquement —
|
||||
pas de `x-bf-vk`, pas de `HTTP-Referer`/`X-Title`).
|
||||
|
||||
## Modèles OpenCode Go
|
||||
IDs **sans préfixe** (`glm-5.1`, `deepseek-v4-pro`…), PAS `openrouter/` ni `deepseek/`.
|
||||
Utilisables en **OpenAI-compat (oa-compat)** : `deepseek-v4-flash`, `deepseek-v4-pro`,
|
||||
`glm-5.1`, `qwen3.7-plus`, `kimi-k2.6`, `kimi-k2.7-code`, `minimax-m3`, `glm-5`,
|
||||
`qwen3.6-plus`, `mimo-v2.5-pro`…
|
||||
|
||||
⚠️ **NE FONCTIONNE PAS** :
|
||||
- `qwen3.7-max` → `Model not supported for format oa-compat` (dispo seulement en format Anthropic côté OpenCode Go). Tout consommateur OpenAI-compat (Bifrost custom provider, Open WebUI, family-help) doit utiliser `glm-5.1` à la place.
|
||||
- MiniMax M2.7 vision via OpenCode Go = `prompt_tokens:0` (vision cassée).
|
||||
|
||||
## Ce qui a été migré
|
||||
|
||||
| Cible | Avant | Après | Clé |
|
||||
|---|---|---|---|
|
||||
| **hermes-tt** (config.yaml) | deepseek-v4-flash | défaut `deepseek-v4-pro`, fallback `deepseek-v4-flash`, délégation (data-engineer) `deepseek-v4-pro` | HERMES_TT_OPENCODE_KEY (provider `opencode-go`) |
|
||||
| **hermes-nyora** | deepseek-v4-flash | défaut `glm-5.1`, fallback `qwen3.7-plus` | HERMES_NYORA_OPENCODE_KEY |
|
||||
| **hermes-perso** | deepseek-v4-flash | défaut `qwen3.7-plus`, fallback `deepseek-v4-flash` | HERMES_PERSO_OPENCODE_KEY |
|
||||
| **Bifrost** | — | provider `opencode` route `glm-5.1, deepseek-v4-pro, qwen3.7-plus, kimi-k2.6, minimax-m3` ; alias `claude-*→deepseek-v4-flash` (openrouter) conservé | BIFROST_OPENCODE_KEY |
|
||||
| **Open WebUI** | Bifrost seul | 2e connexion directe OpenCode Go (`OPENAI_API_BASE_URLS` pluriel) | BIFROST_OPENCODE_KEY |
|
||||
| **family-help** | OpenRouter (modèle unique) | routing par skill : medical/nutrition `glm-5.1`, homework `qwen3.7-plus`, legal_admin `deepseek-v4-pro`, tech/general `deepseek-v4-flash` ; fallback OpenRouter (web + erreur) | OPENCODE_API_KEY (=BIFROST_OPENCODE_KEY) |
|
||||
| **n8n actifs** | commentaires/refs OpenRouter | nettoyés (NABIL.md Quotidien, Monitoring sources IA, Ingest Opportunités) | — |
|
||||
|
||||
## Hermes — config.yaml
|
||||
Modèle défini dans `/volume1/docker/hermes-platform/hermes-{tt,nyora,perso}/data/config.yaml` :
|
||||
`model.default` + `model.provider: opencode-go`, `fallback_providers[0]`, `fallback_model`.
|
||||
Hermes **réécrit config.yaml au shutdown** → procédure : `docker stop` → éditer → `docker start`
|
||||
(éditer container arrêté pour éviter le clobber). Healthcheck port 8642, API OpenAI-compat
|
||||
(`/v1/chat/completions`, modèle proxy `hermes-agent`).
|
||||
|
||||
## Bifrost — PIÈGE MAJEUR (voir mémoire bifrost-keys-config-json)
|
||||
Bifrost v1.5.13 **ne recharge PAS les clés des providers au redémarrage** (elles ne vivaient
|
||||
qu'en mémoire). Fix durable = **`/volume1/docker/bifrost/data/config.json`** (providers + clés,
|
||||
chargé au boot) + `allow_all_keys=1` dans `governance_virtual_key_provider_configs`.
|
||||
- Providers dans config.json NE doivent PAS être aussi dans le store (`sqlite3 config.db "DELETE FROM config_providers; DELETE FROM config_keys;"`, bifrost stoppé).
|
||||
- `sqlite3 config.db "UPDATE governance_virtual_key_provider_configs SET allow_all_keys=1;"`.
|
||||
- ⚠️ éditer providers/clés/VK via l'UI Bifrost peut re-casser (reset allow_all_keys / conflit config.json).
|
||||
- Backup config.db pré-migration : `/tmp/config.db.backup-*` (NAS).
|
||||
|
||||
## n8n — workflows AO inactifs : NON migrés (à faire délibérément)
|
||||
Les 15 workflows AO/veille contenant encore OpenRouter sont **archivés** (`isArchived=true`) →
|
||||
l'API n8n refuse de les éditer (`Cannot update an archived workflow`). Le pipeline AO **actif**
|
||||
(`AO — Insertion Baserow FINAL`, hisVAANSYpixR4Si) est déjà propre.
|
||||
Pour réutiliser un workflow AO archivé : le désarchiver (UI), migrer son Code node
|
||||
(`openrouter.ai/api/v1/chat/completions` → `opencode.ai/zen/go/v1/chat/completions`, clé sk-or →
|
||||
OpenCode, retirer HTTP-Referer/X-Title, modèle → `deepseek-v4-pro`), re-tester, ré-archiver.
|
||||
Règle Code node n8n : `require('https')` + parsing manuel d'URL, jamais `fetch`/`new URL`/`$helpers`.
|
||||
Liste des archivés concernés : edFMGtI2HHWW72aT, JTwurk7XVBUXSHKn, BCgZYRJcxoHOMDhm, iuxVgZFfpKdYFNqG,
|
||||
xJtW4algsBcx6r1E, EEDr0xx9krRq2nwN, 7zWWJhP2aQbzQhZG, QALWT3NwMQjOuY6u, N3yQWk0XyhyS5wZX,
|
||||
hcOmozHadfBnHzri, nZiXRcwSAXsoj2M6, Mdl5SRcT9rYw48VZ, dPnpoHkc6hEXdsFF, wS3SzRFfcaDDD34g, xu4smQdEGrHFx1zK, RRKUk3GvnULj7edE.
|
||||
|
||||
## Hors scope (laissés sur OpenRouter, actifs/famille — à migrer sur décision)
|
||||
Workflows n8n actifs encore sur OpenRouter en direct (endpoint+clé) : `Mode-nedya`,
|
||||
`FAMILLE | Recettes Weekend`, `Labellisation Auto`.
|
||||
Loading…
Reference in New Issue