nas-runbooks/common/opencode-go-migration.md

4.3 KiB

Migration provider → OpenCode Go (consolidé)

Date : 2026-07-09 (fusionne migration-provider-opencode-go.md 14/06 + OPENCODE-GO-MIGRATION.md 16/06 ; état mis à jour) Tags : infra, opencode, hermes, family-help, bifrost, fallback

État actuel des modèles (09/07/2026)

Instance model.default Fallback
hermes-tt deepseek-v4-flash (opencode-go) opencode-go/deepseek-v4-flash
hermes-nyora mimo-v2.5 (verdict pilote 08/07 : GARDER — voir hermes-nyora/verdict-pilote-mimo-v25.md) opencode-go/deepseek-v4-flash
hermes-perso deepseek-v4-flash (opencode-go) opencode-go/deepseek-v4-flash

⚠️ Depuis le 06/07, les fallbacks pointent vers opencode-go (forfait) et non plus openrouter (payant) — voir common/bifrost-vk-incidents.md.

Source de vérité compose : /volume1/docker/hermes-platform/docker-compose.yml (top-level), confirmé par le fix DNS du 09/07 (recreate des 3 agents). Les compose per-instance sont en .disabled ; les mentions historiques « stacks Portainer 291/292/294, top-level obsolète » ne sont plus valables.

Endpoint & modèles OpenCode Go

Provider built-in opencode-go : base_url https://opencode.ai/zen/go/v1, auth Authorization: Bearer <clé> uniquement (pas de x-bf-vk, pas de HTTP-Referer/X-Title). IDs sans préfixe (deepseek-v4-flash, glm-5.1, mimo-v2.5…), jamais openrouter/ ni deepseek/. Utilisables en OpenAI-compat : deepseek-v4-flash/pro, glm-5/5.1, qwen3.6/3.7-plus, kimi-k2.6, kimi-k2.7-code, minimax-m3, mimo-v2.5(-pro).

NE FONCTIONNE PAS :

  • qwen3.7-maxModel not supported for format oa-compat (dispo seulement format Anthropic). Consommateurs OpenAI-compat → glm-5.1.
  • MiniMax M2.7 vision = prompt_tokens:0 (vision cassée). Vision/OCR → Gemini via Bifrost.

config.yaml Hermes

/volume1/docker/hermes-platform/hermes-{tt,nyora,perso}/data/config.yaml :

model:
  default: <modele>
  provider: opencode-go
fallback_providers:
- provider: opencode-go
  model: deepseek-v4-flash
  key_env: OPENCODE_GO_API_KEY   # nom réel injecté par le compose top-level (PAS OPENCODE_API_KEY)

Hermes réécrit config.yaml au shutdown → toujours docker stop → éditer → docker start (jamais éditer à chaud). Healthcheck port 8642, API /v1/chat/completions, modèle proxy hermes-agent. ⚠️ data/ en 0700 uid 1026 : illisible depuis mcp-nas post-hardening — édition via Mac ou canal autorisé.

family-help

medical_service.py → helper _llm_complete() (OpenCode primaire, OpenRouter fallback web/erreur), routing par skill : medical/nutrition glm-5.1, homework qwen3.7-plus, legal_admin deepseek-v4-pro, tech/general deepseek-v4-flash. max_tokens ≥ 2048 obligatoire (modèles de raisonnement : le reasoning mange le budget avant le content → finish_reason=length, content vide). Même piège vu sur mimo-v2.5 (fix : max_tokens 8192 sur hermes-nyora).

Bifrost (rappel)

Bifrost ne recharge PAS les clés provider au restart → config.json chargé au boot + allow_all_keys=1 en DB. Providers dans config.json ≠ store (DELETE FROM config_providers/config_keys, bifrost stoppé). Éditer via l'UI peut re-casser. Détails : common/bifrost-access.md et common/bifrost-vk-incidents.md.

n8n

  • Code nodes LLM → Bifrost obligatoire (common/runbook-n8n-llm-bifrost.md). require('https') + parsing manuel, jamais fetch/new URL/$helpers.
  • 15 workflows AO/veille archivés contiennent encore OpenRouter : l'API n8n refuse d'éditer un archivé. Pour réutiliser : désarchiver (UI) → migrer le Code node (endpoint zen/go/v1, clé OpenCode, retirer HTTP-Referer/X-Title) → re-tester → ré-archiver.
  • Restent volontairement sur OpenRouter direct : Mode-nedya, FAMILLE | Recettes Weekend, Labellisation Auto.

Pièges DSM/NAS

  • docker hors PATH SSH → /usr/local/bin/docker (Best0f groupe docker, sans sudo).
  • hermes model / hermes fallback add en SSH → « requires an interactive terminal » → éditer le YAML.
  • Vérif : docker exec hermes-agent-<i> hermes fallback ls + test curl localhost:8642/v1/chat/completions.

Références

  • https://opencode.ai/docs/zen · hermes-agent.nousresearch.com/docs (fallback-providers)
  • hermes-nyora/verdict-pilote-mimo-v25.md · common/bifrost-vk-incidents.md