Met à jour les carnets/issues existants et ajoute les tickets #108, #109, #111, #112 créés durant le cycle. État runtime sans rapport avec le lot de code #82, isolé dans son propre commit. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
54 lines
2.3 KiB
Markdown
54 lines
2.3 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: "closed"
|
|
priority: "high"
|
|
sprint: null
|
|
links: [{"target":"#98","kind":"relatesTo"}]
|
|
agentRefs: []
|
|
createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
|
|
updatedBy: {"kind":"user"}
|
|
createdAt: 1784987973464
|
|
updatedAt: 1785271085627
|
|
version: 4
|
|
---
|
|
## 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.
|