- Backend : clone_profile_from_seed généralisé (non OpenCode) - Backend : catalogue static Claude/Codex (3 modèles chacun, 1 recommandé) - Backend : commandes Tauri list_claude_models/list_codex_models - Frontend : ProfilesSettings refonte en onglets Codex/Claude + create/duplicate/edit/delete - Frontend : ModelSelect searchable partagé + fallback saisie manuelle - Frontend : assignation agent nom · modèle - Tests QA : 4 profils modèles distincts (2 Claude, 2 Codex) assignés à agents
3.0 KiB
3.0 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| multi-profile-codex-claude-model-catalogue-scoping | memory note multi-profile-codex-claude-model-catalogue-scoping |
|
Cadrage : profils multiples Codex/Claude + catalogue de modèles
Demande utilisateur : plusieurs profils Codex et Claude, chacun avec son modèle, assignables aux agents ; lister les modèles plutôt que saisie manuelle quand possible.
État vérifié de l'existant (2026-07-26)
Le backend est déjà générique multi-profils, contrairement à ce qu'on pourrait croire à la lecture seule des mémoires F35/F36 (qui documentaient le cas OpenCode) :
AgentProfile(crates/domain/src/profile.rs) porte déjàmodel: Option<String>(ticket #99, explicitement prévu pour Codex/Claude), etprofiles.json(FsProfileStore) est une liste indexée parid, pas un slot singleton par provider.- Commandes déjà câblées :
list_profiles,save_profile(upsert générique par id),delete_profile,reference_profiles,detect_profiles. - Ce qui existe seulement pour OpenCode :
clone_opencode_profile_from_seed(alloue un id frais via IdGenerator) etsave_opencode_provider_profile, plus un vrai catalogue de modèles (crates/application/src/agent/provider_catalogue.rs, lit le cache models.dev d'OpenCode avec repli statique). catalogue.rs: un seul profil de référence Claude et un seul Codex, aucun.with_model(...).- Frontend
ProfilesSettings.tsx: simple list+delete, pas de create/duplicate/edit inline ; toute édition rouvreFirstRunWizard.
Gaps identifiés (pas de migration de schéma nécessaire)
- Backend : généraliser le pattern
CloneOpenCodeProfileFromSeed(fresh_profile_id via IdGenerator) en un use caseCloneProfileFromSeednon spécifique à OpenCode, pour dupliquer un profil Claude/Codex avec un nom +modelen override. Ne PAS laisser le frontend miner l'id (romprait la discipline IdGenerator déjà en place). - Backend : catalogue de modèles Claude/Codex — aucune API fiable côté CLI, donc liste statique
curée (même esprit que
static_fallback_catalogue()d'OpenCode), exposée par commande Tauri infaillible (list_claude_models/list_codex_modelsou générique parstructuredAdapter). Le frontend garde toujours un champ de saisie manuelle en repli (liste jamais garantie exhaustive). - Frontend : refonte
ProfilesSettings.tsxen onglets Codex/Claude/OpenCode avec create/duplicate/edit/delete par onglet +ModelSelectsearchable partagé ; simplifierFirstRunWizardpour ne créer qu'un profil par défaut par provider détecté, avec renvoi vers Settings pour en ajouter d'autres.
Découpage de livraison
DevBackend (use case + catalogues + commandes, petit lot, zéro migration) → DevFrontend (refonte Settings + first-run simplifié) → QA (créer 2 profils Claude modèles différents + 2 Codex, assigner à des agents distincts, vérifier le bon modèle atteint la CLI au lancement, non-régression OpenCode) → Git (branche feature unique, lot petit et couplé).