Files
IdeA/.ideai/tickets/99/issue.md
Blomios dae07d35bb feat: implémentation et QA ticket99 - agent model configuration v2
- backend A-C: VO Codex/Claude, renderers/projecteurs modèle, SecretRef/env, catalogues/use cases/Tauri commands
- frontend D: profils Codex/Claude provider->model->secret, validations, conservation SecretRef
- fix: app-tauri embedded_server isolant IDEA_WEB_ROOT

QA: backend 57/57 tests, frontend 74/74 tests OK
2026-07-26 11:56:25 +02:00

54 lines
2.4 KiB
Markdown

---
id: "45733f3f-5ef5-4f33-96e7-25afddcd1ce6"
number: 99
title: "Modèle par agent contrôlable pour Codex & Claude (headless + TUI) — égaler le pattern OpenCode"
status: "qa"
priority: "high"
sprint: null
links: [{"target":"#98","kind":"relatesTo"}]
agentRefs: []
createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
createdAt: 1784987973464
updatedAt: 1785059758742
version: 3
---
## Problème
Aujourd'hui IdeA **ne contrôle pas le modèle** pour les moteurs **Codex** et **Claude** :
le modèle utilisé par le headless inter-agent (`codex exec` / `claude -p`) **et** par la TUI
interactive est le **défaut du binaire CLI installé**, indépendamment du profil AI de l'agent.
- Aucun flag `--model` n'est passé au spawn (`codex.rs:215-239`, `claude.rs:273-284`).
- `codex_config_toml` (`lifecycle.rs:2941-2955`) **n'écrit jamais de clé `model`**.
- `AgentProfile.model` (`profile.rs:1008`) existe mais est du **code mort** (jamais consommé).
- Le `/model` tapé dans la TUI ne se propage **pas** au headless : ce sont deux processus OS
séparés (PTY vs `codex exec`/`claude -p`) avec des threads distincts. Le `CODEX_HOME`/cwd est
partagé mais rien n'écrit le modèle sur disque côté IdeA.
**Contraste** : pour **OpenCode**, le modèle du profil (`OpenCodeConfig.model` /
`OpenCodeProviderConfig.model`) **est** celui utilisé par le headless, via le `opencode.json`
isolé pointé par `OPENCODE_CONFIG` (`lifecycle.rs:2686-2689`). Un profil IdeA = un
(provider, modèle, clé scellée).
## Objectif produit
Qu'il existe un **modèle par défaut par agent**, défini dans le **profil AI**, qui soit :
1. utilisé par le **headless inter-agent** (`idea_ask_agent`) ;
2. **exposé par la TUI au lancement** (valeur initiale du modèle dans la CLI) ;
pour les **trois** moteurs — OpenCode (déjà OK), Codex et Claude (à égaler).
## Périmètre
- **Backend** : nouveau VO domaine miroir d'`OpenCodeProviderConfig`, renderers de config
écrivant le modèle, use cases de persistance.
- **UI** : duplication / création de profils Codex et Claude comme OpenCode (catalogue de
providers, sélection du modèle, clé scellée via SecretRef).
## Lié à
- **#98** (relatesTo) : même famille « contrôle du modèle au spawn » (côté OpenCode, résolveur
zai/glm-5.2). Indépendant mais cohérent.