Files
nas-runbooks/hermes-perso/ox-alpha-free-deprecated-model-override.md

3.5 KiB

hermes-perso — model_override deprecie sur la session Telegram (ox-alpha-free)

Instance auteur : hermes-perso Date : 2026-09-02 Tags : hermes-perso, telegram, opencode, model_override Statut : valide


Probleme

La session Telegram DM de Nabil (agent:main:telegram:dm:2084513684 dans /opt/data/sessions/sessions.json) avait un model_override fige sur ox-alpha-free (provider opencode-go). Ce modele est marque "status": "deprecated" dans le registre models_dev_cache.json et l'API opencode.ai/zen/go/v1/chat/completions renvoie 401 "Model ox-alpha-free is not supported" en confirmation directe. Tous les messages Telegram envoyes sous ce override echouaient silencieusement.

Contexte et contraintes

/opt/data/ du conteneur hermes-agent-perso est en 0700 (uid 1026), illisible en SSH direct meme depuis un compte scope comme claude-ops. Acces uniquement via docker exec (qui tourne root dans le conteneur, contourne le mur de permissions cote host).

Ce qui NE fonctionne PAS

Tentative Erreur obtenue Raison de l'echec
Lecture directe via SSH claude-ops (cat /opt/data/...) Permission denied data/ en 0700 uid 1026, claude-ops non proprietaire
Edition via ssh nas-host directement sur les fichiers .env/docker-compose.yml.disabled du dossier hermes-perso Aucune trace du model_override actif Config statique ; le choix de modele reel vit dans sessions.json, pas dans les fichiers de config au repos

Solution validee

# 1. Backup avant toute ecriture
docker exec hermes-agent-perso cp /opt/data/sessions/sessions.json \
  /opt/data/sessions/sessions.json.bak-fix-ox-alpha-$(date +%Y%m%d-%H%M%S)

# 2. Edition cible via script Python transfere en base64 (docker cp) puis execute root dans le conteneur
#    -> modifie uniquement sessions[key].model_override.model, rien d'autre
docker cp fix_model.py hermes-agent-perso:/tmp/fix_model.py
docker exec hermes-agent-perso python3 /tmp/fix_model.py

Bascule effectuee : ox-alpha-freehy3 (meme provider opencode-go, meme base_url, changement minimal).

Verification

docker exec hermes-agent-perso python3 -c "import json; d=json.load(open('/opt/data/sessions/sessions.json')); print(d['agent:main:telegram:dm:2084513684']['model_override'])"
# Attendu : {'model': 'hy3', 'provider': 'opencode-go', 'base_url': 'https://opencode.ai/zen/go/v1'}

JSON valide (json.load sans exception) confirme apres ecriture.

Pieges specifiques

  • Ne jamais editer sessions.json a la main sans backup — c'est un fichier d'etat vivant, reecrit en continu par le process gateway actif (active_turn_token doit etre null avant d'editer, sinon risque de race condition avec une conversation en cours).
  • Le mecanisme exact par lequel le Telegram bot laisse choisir un modele "directement" (mentionne par Nabil) n'a pas ete localise dans cette session (pas de endpoint /docs ou /openapi.json trouve sur l'API server interne, port 8642) — probablement une commande bot (/model <nom>) qui ecrit dans ce meme model_override. A confirmer.
  • Toujours verifier le statut d'un modele OpenCode dans models_dev_cache.json (du conteneur hermes-agent concerne) avant de l'assigner en dur quelque part — voir common/opencode-go-migration.md pour la distinction des deux catalogues opencode.

References

  • common/opencode-go-migration.md
  • common/bifrost-vk-incidents.md (incident du meme jour, cause differente mais meme famille de symptome : modele non fonctionnel silencieusement)