52 KiB
🗺️ ROADMAP agent-manager — vers le « super outil »
Version du document : 3.1 · Statut : phases 0 à 3 livrées (v0.3.0 → v1.0.1), maintenance v1.0.2 → v1.1.5
🧭 Bilan du 2026-08-23 : tout le périmètre versionné (J0 → J3, v0.7.0, épique v1.1.0) est livré — 0 issue ouverte sur Gitea. Il reste : 1 bug prioritaire (hang de
cargo test/am doctor, §15.4), 3 fonctionnalités P1 jamais découpées en issues (§15.2), des activités de release (§15.3) et des idées neuves proposées (§16). Base : analyse du code v0.2.7 (Rust, 45+ tests, zéro dépendance runtime)✅ Phase 0 livrée en v0.3.0 (2026-08-17) : issues #2 à #16 clôturées, 157 tests, release publiée sur Gitea. Les découpages des phases 1 à 3 sont en place sur Gitea (issues #25 à #80) : v0.4.0, v0.5.0, v1.0.
✅ Phase 1 livrée en v0.4.1 (2026-08-17) : 17/17 issues clôturées (#26–#42), 240+ tests. v0.4.0 a livré 13/17 (#26–#32, #34–#38) ; v0.4.1 complète avec le dashboard TUI (#33), les favoris/notes/tags (#39), les profils d'environnement (#40), les complétions dynamiques + man pages (#41) et le packaging officiel + CI (#42). Binaires Windows/Linux publiés sur Gitea — am self-update et les installateurs servent la v0.4.1.
✅ Phase 2 livrée en v0.6.0 (2026-08-19) : 28/28 issues clôturées (#47–#75), 250+ tests. am web, i18n, services, schedule, lab, sync, migrate, models, plugins d'événements… Binaires publiés sur Gitea.
✅ Phase v0.7.0 livrée (2026-08-19) : 5/5 issues clôturées (#88–#92) — registre de providers LLM (am providers), secrets partagés par provider, flags --provider/--model/--no-config à l'install, configuration post-install (bloc config:).
✅ Phase 3 livrée en v1.0.0 (2026-08-20) : 5/5 issues clôturées (#76–#80) — télémétrie opt-in, am registry, am ask, profils sandbox, am serve (API HTTP + WebSocket). v1.0.1 : self-update décompresse les archives, prompt REPL avec shell actif.
🔧 Maintenance v1.0.3 (2026-08-20) : commandes REPL ask/serve/registry routées vers am (v1.0.2) ; détection externe corrigée — champ
detect(sonde PATH explicite) pour les lanceurs interpréteurs (npx/python), plus de faux « external » ; docs alignées.🔧 Maintenance v1.0.4 (2026-08-20) : catalogue enrichi — 5 agents shell-ai ajoutés (issues #94 #95) : AIChat (alias
ai, binaire GitHub Release), ShellGPT (pip), Fabric (go), Shell AI (npm/Ollama), AI CLI (binaire, politique de sécurité risk/certainty). Catalogue : 77 agents.🔧 Maintenance v1.0.5 (2026-08-20) : commande
am ailivrée (issues #96 #97) — langage naturel → action shell via AIChat : mode conversationnel (aichat -f ), mode --exec avec pipeline de sécurité (génération aichat --dry-run, classification safe/risky + certainité, politique dry-run par défaut configurable settings.shell_ai, confirmation y/N pour les commandes risky, exécution via le shell de l'utilisateur), flags --files/--provider/--model/--yes, alias CLIam shell, événementsshell_aijournalisés. Épique Axe 13 (#93) clôturée.🔧 Maintenance v1.0.6 (2026-08-20) : installateur Windows corrigé —
install.ps1n'acceptait que l'entréeam.exedans l'archive de release (la CI et les archives manuelles utilisentam-windows-x86_64.exe) → repli systématique surcargo installau lieu du binaire précompilé. Le script accepte désormais les deux noms ; archives v1.0.6 publiées avec les deux entrées pour la compatibilité maximale. Chemin du message cargo install corrigé (.cargo\bin\am.exe).🚀 Épique v1.1.0 (2026-08-20) : Onboarding, Copilot & Rôles aichat (Axe 14) —
am setup(wizard provider + token keyring + modèle + ping), installation automatique d'aichat (wizard +am ai+ installateurs), 6 rôles copilot générés pour aichat (am-copilot, am-operator, am-dev, am-do, am-analyst, am-orchestrator),am ai --role <nom>, tip d'onboarding dans le banner REPL et les commandes IA (non-bloquant).🔧 Maintenance v1.1.1 (2026-08-20) : fix
am setup— le wizard écrivaitproviders.<nom>au TOP-LEVEL de la config user (clé rejetée par le validateur : « unknown fieldproviders»). Le registre vivant soussettings.providers, le wizard écrit désormaissettings.providers.<nom>.base_url+.default_model(le schéma exige base_url quand un bloc provider est écrit). Test de régressionsetup_persists_under_settings_providers.🔧 Maintenance v1.1.2 (2026-08-20) :
am setup: openrouter ajouté au choix des providers (base URL, token via OPENROUTER_API_KEY, 6 modèles déclarés proposés) ; le choix du modèle liste les modèles disponibles du provider.am aisans--roleutilise am-copilot par défaut (régénération automatique des rôles si le fichier manque, dégradation douce).- Bug
am migrate --import: la config importée était écrite dans le répertoire config GLOBAL (user_config_dir) au lieu du config actif de l'app — l'import écrasait la config réelle de la machine (et la suite de tests détruisait la config utilisateur à chaquecargo test). L'import respecte désormaisapp.paths.config_dir(--config/isolated).🔧 Maintenance v1.1.3 (2026-08-21) : fix
resolve_exec— pour un agent INSTALLÉ avec un binaire enregistré, le premier token derun:(ex.picoclaw) n'était jamais consommé :am start <agent>lançait<bin> <token-run>(picoclaw rejetait son propre nom comme sous-commande inconnue ; aichat recevait « aichat » comme prompt one-shot). Le token est désormais consommé dans la branche « binaire enregistré existant » (les branches non-installé/binaire manquant étaient déjà correctes). Test de régressionresolve_exec_installed_agent_does_not_leak_run_token.🔧 Maintenance v1.1.4 (2026-08-21) : hints de configuration post-install — nouveau champ
setup_hintsdans la définition d'un agent (config.yaml) : commandes de configuration manuelle affichées après l'install quand l'agent gère sa propre config (ex. picoclaw onboard/model/auth), avec substitution des placeholders{model},{provider}et{base_url}depuis le provider résolu. picoclaw est le premier agent du catalogue à les déclarer.🔧 Maintenance v1.1.5 (2026-08-21) : fix
am ai/ rôles copilot avec aichat ≥ 0.30 — aichat a changé son format d'agents (le markdownagents/<name>.md≤ 0.29 est remplacé par une définitionfunctions/agents/<name>/index.yaml+ un registrefunctions/agents.txt).am setup/am setup --rolesécrivent désormais LES DEUX formats (compatibilité totale) etam aidétecte la définition nouvelle génération en premier (« Unknown agentam-copilot» corrigé). Bonus : le contexte par défaut (dossier courant) est filtré par am (.git,target,node_modules…, binaires non-UTF-8,.env*, > 64 KiB, budget 128 KiB) — aichat ne filtre rien et échoue sur.git/index. Génération--exec:--codeau lieu de--execute --dry-run(aichat ≥ 0.30 :--dry-runn'appelle plus l'API, il écho la requête).🔧 Maintenance v1.1.6 (2026-08-24) : correctifs de robustesse — timeout de 30 s sur les commandes capturées (doctor/runner ne pendent plus si un agent ne répond pas, pipes vidés dans des threads pour éviter les deadlocks),
is_runningWindows via l'API Win32 (OpenProcess / GetExitCodeProcess, plus fiable que tasklist), rejet des chemins unsafe (path traversal) dansam migrate --import, frames WebSocket RFC 6455 avec vraies longueurs > 125 octets, boucle de traduction i18n de la page web corrigée (plus de boucle infinie), index du trousseau (keyring) sérialisé en JSON (clés contenant des virgules).🔧 Maintenance v1.1.7 (2026-09-01) : Gemini CLI a cessé de servir les comptes Google gratuits/Pro/Ultra le 2026-06-18 — remplacé par Antigravity CLI (
agy, binaire Go fermé, même harnais qu'Antigravity 2.0). Nouveau catalogue : entréeantigravity-cli(release GitHub google-antigravity/antigravity-cli),gemini-climarqué déprécié (installable: false, clé API payante seulement), aliasgemini/agyredirigés, groupemainstreamet gabarit web mis à jour. Import des extensions/skills Gemini :agy plugin import gemini.🔧 Maintenance v1.1.8 (2026-09-01) : providers QwenCloud ajoutés au registre par défaut —
qwen-cloud(pay-as-you-go, Model Studio/DashScope, dashscope-intl…/compatible-mode/v1) etqwen-cloud-token-plan(abonnement Credits, token-plan.ap-southeast-1…/compatible-mode/v1, modèles restreints dont qwen3.8-max).qwen-codepointe sur qwen-cloud par défaut (env_map OpenAI-compatible OPENAI_API_KEY/BASE_URL/MODEL) avec hints pour basculer sur le Token Plan (--provider qwen-cloud-token-plan, clé dédiée viaam providers set-token).🐛 Maintenance v1.1.9 (2026-09-01) : l'assistant
am setuplistait ses providers dans une constante codée en dur — les QwenCloud ajoutés au registre n'y apparaissaient pas. La liste est maintenant construite depuis le registre fusionné (embarqué + config utilisateur), ollama et custom en plus, sans doublon. Test de non-régression ajouté. Bonus : le wizard ne boucle plus à l'infini sur stdin fermé (erreur claire + suggestion--yes).
📖 Sommaire
- Résumé exécutif
- Légende de lecture
- Quick wins — valeur immédiate
- État des lieux
- Vision & principes
- Socle technique : le modèle de données
- Les 12 axes
- Jalons versionnés
- Indicateurs de succès (KPI)
- Risques & garde-fous
- Par où commencer
- Bilan & reste à faire (2026-08-23)
- Idées neuves (post-v1.1.5)
1. 📌 Résumé exécutif
am est aujourd'hui un excellent gestionnaire d'agents : 77 agents au catalogue, 9 méthodes d'installation, dépendances résolues automatiquement, processus pilotés, REPL avec passerelle shell, sauvegarde export/import.
Mais il est aveugle : il ne retient ni ce qui a été fait, ni quand, ni par quel agent, ni dans quel projet, ni avec quel résultat. Les logs sont du texte libre non interrogeable, l'état ne contient que les installations et le PID courant, l'historique est un simple fichier plat.
Cette roadmap transforme am en cockpit de votre parc d'agents IA :
| Rôle | Promesse | Porté par |
|---|---|---|
| 📓 Journal de bord | tout est tracé, rien ne se perd | Axe 1 (journal d'événements) |
| 🔎 Rétroviseur | tout est cherchable en 2 secondes | Axes 2, 3, 4 |
| 📊 Tableau de bord | tout est mesuré | Axes 1, 5, 9 |
| 🤖 Copilote | il pilote à votre place | Axes 6, 7 |
Chiffres clés : 12 axes · ~55 fonctionnalités · 4 jalons (v0.3.0 → v1.0) · ~15 semaines de travail cumulé · 0 dépendance runtime ajoutée.
2. 📚 Légende de lecture
| Symbole | Signification |
|---|---|
| P0 | Fondations — à démarrer tout de suite (socle des autres axes) |
| P1 | Court terme — après la phase 0 |
| P2 | Moyen terme |
| P3 | Vision — long terme |
| ⭐ | Reprend une demande explicite de l'utilisateur |
| S | Effort : moins d'1 jour |
| M | Effort : 2 à 4 jours |
| L | Effort : 1 à 2 semaines |
| XL | Effort : plus de 2 semaines |
| ⬜ / 🔨 / ✅ | Proposé / En cours / Livré (rien n'est commencé aujourd'hui) |
3. ⚡ Quick wins — valeur immédiate
Tous en effort S, phase P0, sans dépendance sur le socle. Livrables en quelques jours, à caler avant ou pendant la construction du journal.
| Fonctionnalité | Commande | Apport |
|---|---|---|
| Voir les logs d'un agent | am logs claude-code (--follow) | tail des logs déjà écrits par process.rs |
| Filtres sur la liste | am list --running · --sort name,version,status | repérage instantané |
| Éditer la config sans éditeur | am config set key value | moins de friction YAML |
| Alias à la volée | am alias add cc claude-code | sans éditer le fichier |
| Historique propre | dédup + horodatage de history.txt | base saine pour l'axe 2 |
| Doctor scriptable | am doctor --json | CI et monitoring |
| Ouvrir l'installation | am open claude-code | explorer le répertoire de l'agent |
| Version scriptable | am version --json | introspection des scripts |
4. 🧭 État des lieux (points d'ancrage dans le code)
| Brique actuelle | Fichier | Limite aujourd'hui |
|---|---|---|
| Catalogue 77 agents, alias, groupes | src/catalog.rs, config.yaml | recherche = sous-chaîne stricte, pas de ranking |
| Installation (9 méthodes), dépendances OS | src/installers/, src/deps.rs, src/toolchain.rs | solide — rien à redire |
| État local | src/state.rs (state.json v1) | installations + PID courant uniquement, aucun historique |
| Détection externe + cache | src/probe.rs | excellent pattern de cache — à généraliser |
| Processus | src/process.rs | logs non structurés, pas de sessions, pas de métriques |
| Journal applicatif | src/output.rs | texte libre horodaté, non interrogeable |
| REPL + passerelle shell | src/repl.rs (history.txt, session_id()) | historique plat, pas de recherche ni de stats |
| Backup | src/commands/export_import.rs | manuel, pas de synchronisation |
5. 🎯 Vision & principes directeurs
Vision : le cockpit unique du parc d'agents — journal de bord, rétroviseur, tableau de bord et copilote.
Principes :
- Zéro dépendance runtime — tout est Rust pur et fichiers locaux (JSONL/JSON), jamais de base de données externe.
- Local par défaut, opt-in pour le distant — la télémétrie n'existe que si l'utilisateur l'active ; tout le reste est 100 % local.
- Contrats stables — les sorties --json sont la base des scripts et des futurs UI : champs ajoutés, jamais retirés.
- Performance — écriture en append (JSONL), lectures par fenêtres temporelles, index dérivés régénérables, caches sur le modèle de probe.rs.
- Livraison continue — chaque phase produit un binaire utilisable et testé ; la barre des 45+ tests monte à chaque jalon.
6. 🧱 Socle technique : le modèle de données
Tout dépend de ceci. À construire en premier, avant les commandes visibles.
state_dir/
state.json # v2 : + sessions_count, last_used (migration auto depuis v1)
events.jsonl # NOUVEAU — journal d'événements (source de vérité)
events-202608.jsonl # rotation mensuelle
sessions.json # NOUVEAU — registre des sessions (index dérivé)
history/
<session>.jsonl # NOUVEAU — historique structuré du REPL
projects.json # NOUVEAU — agrégats par projet (recalculable)
probe-cache.json # existant — pattern de cache à suivre
| Fichier | Rôle | Alimenté par | Reconstruction |
|---|---|---|---|
| events.jsonl | faits bruts (start, stop, run, install…) | process.rs, run_cmd.rs, install_cmd.rs, repl.rs, doctor_cmd.rs | source de vérité, jamais reconstruit |
| sessions.json | index des sessions | dérivé du journal | doctor --fix (rejoue le journal) |
| projects.json | agrégats par projet | dérivé du journal | doctor --fix |
| history/*.jsonl | commandes REPL | repl.rs | non (données primaires) |
| state.json v3 | installations + résumé + annotations (★, notes, tags) | state.rs | partiellement (compteurs depuis le journal) |
Règles : JSONL append-only pour les faits · JSON dérivés régénérables · migration additive (state v1 reste lisible partout) · doctor --fix répare tout ce qui peut l'être.
7. 🗂️ Les 12 axes
Axe 1 — 📊 Observabilité & statistiques d'utilisation ⭐
🎯 Savoir quoi a tourné, quand, combien de temps, avec quel taux de succès — et combien ça coûte.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| Journal d'événements events.jsonl (toutes les actions de am) | M | P0 |
| am stats + --period 7d/30d/90d + --json (tableaux et barres ASCII) | M | P0 |
| am top — classement des agents par utilisation | S | P1 |
| am log — filtres agent/type/date, --follow | S → M | P0 → P1 |
| am report — rapport hebdo/mensuel en markdown (top agents, échecs, changements) | M | P1 |
| Suivi des coûts — tokens/€ par session quand l'agent expose son usage (Claude Code --output-format json, Codex…) ✅ #49 | M | P2 |
| am monitor — TUI temps réel : CPU/mémoire par PID, uptime, alertes ✅ #50 | L | P2 |
| Télémétrie anonyme opt-in (compteurs agrégés uniquement, jamais de chemins) | M | P3 |
am stats # vue globale
am stats claude-code --period 30d
am top # qui tourne le plus
am report --last-week # digest markdown
Axe 2 — 💾 Historique des commandes ⭐
🎯 Gérer, rechercher et réutiliser tout ce qui a été tapé.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| Historique structuré : history/.jsonl (cmd, kind am/shell, cwd, durée, exit, agent) + migration de history.txt | M | P0 |
| am history — filtres --kind, --cwd, --search, --failed, --session | M | P0 |
| Ctrl-R + !! + !install + !42 + ^old^new dans le REPL | M | P1 |
| am history --rerun 42 (réexécution confirmée) | S | P1 |
| Playbooks : am history 12..25 --save deploy.yaml puis am playbook deploy.yaml ✅ #51 | L | P2 |
am history --search "install" --failed
am history --rerun 42
Axe 3 — 🧭 Projets & workspaces ⭐
🎯 Centraliser quel agent travaille sur quel projet — automatiquement.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| Contexte auto au lancement : racine + branche git, stack détectée (Cargo.toml, package.json…), mis en cache | S | P0 |
| am projects / am projects api — agents, sessions, durées, dernière activité | M | P1 |
| Profils de projet dans config : default_agent, env, hooks | M | P1 |
| am start (sans argument) = agent par défaut du dossier courant ; REPL contextuel | S | P1 |
| am init — génère un agent-manager.yaml selon la stack détectée | S → M | P0 |
| Templates : am init --template web | M | P2 |
am projects
am projects api
am init # dans un projet Node → config pré-remplie
Axe 4 — 🗂️ Sessions centralisées ⭐
🎯 Un registre unique de toutes les sessions de tous les agents — consultable, reprenable, archivable.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| sessions.json + session_id() partagé (repl.rs) ; fin de session avec exit code et durée | M | P0 |
| Réconciliation au démarrage : sessions interrompues (crash, reboot) marquées et datées | S | P0 |
| am sessions — filtres agent/projet/statut ; show = résumé + extrait de log | M | P0 |
| am timeline — vue chronologique unifiée de toute l'activité | M | P1 |
| am sessions resume — relance avec les mêmes args/env/cwd | M | P1 |
| am sessions export + rétention configurable (settings.sessions_retention_days) | M | P2 |
am sessions --status failed
am sessions show 20260815_143926_a1b2c3
am timeline --project api
Axe 5 — 🖥️ Tableau de bord
🎯 Voir l'état du parc d'un coup d'œil.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| am dashboard — TUI (ratatui/crossterm) : vue d'ensemble, activité en direct, stats, sessions, projets | L | P1 |
| am web — serveur local + API JSON + page HTML embarquée avec graphiques | XL | P2 |
Axe 6 — 🤖 Automatisation & orchestration
🎯 Laisser am superviser et piloter seul le parc.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| Hooks on_install / on_start / on_stop / on_update (agent, projet, global) — via le runner existant | M | P0 |
| am watch claude-code --restart-on-crash --notify | M | P1 |
| Services : unités systemd / plists launchd / tâches Windows, am service install claude-code --autostart ✅ #55 | L | P2 |
| Planification : am schedule add update --all --at 06:30 + check santé (cron / Task Scheduler) ✅ #56 | M | P2 |
| Orchestration de groupes : ordre, --parallel, attente de santé ✅ #57 | L | P2 |
| Conteneurs : profil docker/podman par agent (isolation à la demande) ✅ #58 | L | P2 |
| am doctor --watch — vérifications périodiques avec alertes ✅ #59 | M | P2 |
Axe 7 — 🧠 Intelligence & catalogue
🎯 Trouver le bon agent, suivre leurs sorties, et comparer.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| Recherche fuzzy dans am search (typos, scoring, « vouliez-vous dire ») | M | P1 |
| ⬜ am compare a b — tableau côte à côte (méthode, deps, catégorie, activité) — non livré, sans issue | S | P1 |
| ⬜ am news — dernières releases des agents installés (API GitHub/Gitea, cache) — non livré, sans issue | M | P1 |
| Catalogue distant : am catalog update / am catalog add | M | P2 |
| am suggest "un agent pour du Python" — tags + usage réel | M | P2 |
| am lab — benchmark : même tâche sur N agents, comparaison durée/résultat/coût | L | P2 |
| Registre communautaire : publier son catalogue (Gitea) + am registry | L | P3 |
| am ask "installe claude et lance-le" — langage naturel → commande am (fournisseur LLM configurable, optionnel) | L | P3 |
Axe 8 — 🔒 Sécurité & gouvernance
🎯 Protéger les secrets, tracer les changements, pouvoir revenir en arrière.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| am secret set OPENAI_KEY --agent claude-code (keyring OS) + injection --env automatique | M | P1 |
| am audit — qui a modifié quoi quand (checksums des configs, événements) | M | P2 |
| am update --rollback — backup automatique avant chaque mise à jour | M | P2 |
| Politiques : pin de version, settings.update_policy | S | P2 |
| Profils sandbox par agent (commandes/répertoires autorisés) | L | P3 |
Axe 9 — 🌐 Multi-machine & collaboration
🎯 Retrouver son cockpit partout, et le partager.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| Synchronisation git automatique : settings.sync_repo, am sync, push à la fermeture du REPL ✅ #66 | L | P2 |
| Partage de catalogue d'équipe : include par URL | S | P2 |
| am migrate — assistant de transfert machine A → B ✅ #68 | M | P2 |
| am serve --token — API HTTP + WebSocket pour piloter à distance | XL | P3 |
Axe 10 — 🧩 Confort & personnalisation
🎯 Adapter am à sa façon de travailler.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| Favoris : am favorite / am unfavorite + ⭐ dans am list | S | P1 |
| Notes : am note claude-code "utiliser pour …" | S | P1 |
| Tags personnels : am tag claude-code python | S | P1 |
| ⬜ Raccourcis de commandes : settings.shortcuts (i → install, s → start) — non livré, sans issue | S | P1 |
| Profils d'environnement : am profile dev / prod (env + args + agent par profil) | M | P1 |
| Thèmes couleurs du REPL | S | P2 |
Axe 11 — 🎛️ Modèles locaux
🎯 Étendre le cockpit aux modèles : ollama, llama.cpp, LM Studio.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| am models — inventaire : nom, taille disque, quantisation, dernière utilisation | M | P2 |
| Lien agent ↔ modèle : am run mon-agent --model llama3.1 | M | P2 |
| doctor vérifie ollama / llama-server comme n'importe quel outil | S | P2 |
| am models prune — purge des modèles inutilisés | S | P2 |
Axe 12 — 🛠️ Écosystème & expérience développeur
🎯 Rendre am disponible partout et contribuable.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| Fixtures d'événements rejouables + tests de bout en bout du journal | S | P0 |
| Packaging officiel : winget, scoop, deb/rpm, Homebrew + CI de release | M | P1 |
| Complétions dynamiques (agents installés, groupes personnalisés) | S | P1 |
| Man pages + documentation générée | S | P1 |
| i18n : messages EN/FR | L | P2 |
| Plugin scripts (hooks avancés, intégration CI) | M | P2 |
Axe 13 — ⚡ Shell AI & Action ⭐
🎯 Transformer une commande en langage naturel en une action shell exécutée par un agent léger, rapide et contextuel, sans démarrer un gros coding agent.
Contexte : am gère aujourd'hui ~77 agents IA, principalement des coding agents, des assistants et des outils SaaS. Les shell assistants sont maintenant au catalogue (AIChat, ShellGPT, Fabric, Shell AI, AI CLI — v1.0.4) : légers, rapides, conçus pour transformer une phrase en commande ou action sur le système de fichiers local (ex. "traite les fichiers JSON du dossier courant pour extraire les clés uniques").
13.1 Agents shell AI découverts (✅ tous ajoutés au catalogue — v1.0.4, issues #94 #95)
| Outil | Repo | Langage | Force | Maturité |
|---|---|---|---|---|
| ✅ AIChat | sigoden/aichat |
Rust | Shell assistant natif, RAG, agents, fichiers/répertoires, 20+ providers | 10.4k stars, très actif |
| ✅ ShellGPT | TheR1D/shell_gpt |
Python | Génère/exécute commandes shell, code, docs | Très connu, mature |
| ✅ Fabric | danielmiessler/fabric |
Go | Patterns AI (summarize, extract wisdom), CLI | Très populaire, orienté contenu/texte |
| ✅ Shell AI | nishant9083/shell-ai |
TypeScript | Agent ReAct local via Ollama, MCP, filesystem tools | Plus récent, prometteur mais jeune |
| ✅ AI CLI | kriserickson/ai-cli |
Go | Natural language → commandes shell avec safety policy (risk / certainty) |
Petit, simple, moins connu |
13.2 Recommandation : AIChat (sigoden/aichat)
Choix privilégié pour la fonction Shell AI.
| Avantage | Détails |
|---|---|
| Léger & rapide | Rust, binaire unique, cold start rapide, idéal pour RPi 4 |
| Shell Assistant natif | Génère et exécute des commandes shell à partir du langage naturel |
| Multi-provider | OpenAI, Claude, Gemini, DeepSeek, Groq, Ollama, OpenRouter… |
| Passage de contexte | aichat -f . injecte le dossier ou les fichiers dans le prompt |
| Mode exécution | aichat -e "..." exécute directement, mode conversationnel sinon |
| Facilité d'intégration | Release binaire GitHub, installable via binary dans le catalogue |
Exemples d'usage ciblés :
# Lister et traiter les fichiers JSON du dossier courant
aichat -f . -e "liste tous les fichiers JSON et extrait les clés uniques"
# Résumer un dossier de fichiers
aichat -f . "résume les données de ces fichiers JSON"
13.3 Fonctionnalités prévues
| Fonctionnalité | Description | Effort | Phase |
|---|---|---|---|
| ✅ Catalogue : ajouter AIChat | Définition AgentDef + alias ai → aichat — livré en v1.0.4 (issues #94 #95) |
S | P1 |
✅ Commande am ai <prompt> |
Lancer AIChat avec le dossier courant comme contexte — livré en v1.0.5 (issue #96) | S | P3 |
✅ Flag --exec / -e |
Active le mode exécution directe (aichat -e via aichat --dry-run + exécution sécurisée par am) — livré en v1.0.5 (issue #96) |
S | P3 |
✅ Flag --files <path> |
Passer fichiers/dossiers spécifiques en contexte — livré en v1.0.5 (issue #96) | S | P3 |
✅ Sécurité : --dry-run par défaut |
Simuler avant exécution ; classification safe/risky + confirmation — livré en v1.0.5 (issue #97, settings.shell_ai) | M | P3 |
| ✅ Provider configurable | Réutiliser le registre providers.rs (--provider/--model → env aichat + modèle) — livré en v1.0.5 (issue #96) |
M | P3 |
| ✅ Alias intégrés | am shell comme synonyme CLI de am ai — livré en v1.0.5 (issue #96) |
S | P3 |
| Extensions sœurs | am summarize, am explain, am fix (voir ci-dessous) |
M | P3 |
13.4 Risques & garde-fous
| Risque | Mitigation |
|---|---|
| Exécution automatique de commandes dangereuses | --dry-run par défaut, confirmation obligatoire avant toute commande risky |
| Coût API récurrent | Modèle cheap par défaut (gpt-4.1-mini, gemini-flash) ou Ollama local |
| Fuite de données sensibles | Support du mode local Ollama, pas d'envoi hors du provider configuré |
| Installation lente sur RPi | Utiliser l'installateur binary GitHub Releases plutôt que cargo |
13.5 Idées sœurs (à intégrer ou lier à d'autres axes)
| Commande | Description | Axe lié |
|---|---|---|
am summarize <fichier/dossier> |
Résume un fichier ou un dossier via AIChat/Fabric | Axe 13 |
am explain <commande> |
Explique une commande shell avant exécution | Axe 13 |
am commit |
Génère un message de commit depuis git diff |
Axe 13 / Axe 3 |
am review |
Review rapide d'un diff ou d'une PR | Axe 7 |
am translate <fichier> --to en |
Traduit un fichier markdown/doc | Axe 13 |
am ask-code "..." |
Pose une question sur le codebase sans lancer un gros agent | Axe 7 |
am doc <dossier> |
Génère un README/doc à partir du code | Axe 13 / Axe 7 |
am fix |
Corrige une commande shell qui a échoué | Axe 13 |
am note |
Extrait des action items d'un texte/réunion | Axe 10 |
am search-web "..." |
Recherche web rapide et réponse synthétisée | Axe 7 |
14. 🚀 Onboarding & Copilot aichat (épique v1.1.0)
Objectif : réduire le Time-To-First-Value à 0 — rendre
amopérationnel pour l'IA locale dès la première seconde, et faire d'aichat le copilot de agent-manager. Livré en v1.1.0 (2026-08-20).
| Fonctionnalité | Description | Statut |
|---|---|---|
✅ Wizard d'onboarding (am setup) |
Provider (anthropic, openai, deepseek, google, ollama, custom), token masqué → trousseau OS (keyring, jamais en clair), modèle par défaut, ping API non-bloquant. Déclenché par am ai/am ask/banner REPL quand aucun provider n'est configuré (message discret, jamais bloquant), ré-exécutable à la main (mode revoir) |
✅ v1.1.0 |
| ✅ Installation automatique d'aichat | Étape du wizard « Installer le moteur IA (aichat) ? [Y/n] » → am install aichat (catalogue) ; am ai sans aichat propose l'installation ; install.ps1/install.sh enchaînent sur am setup si stdin interactif |
✅ v1.1.0 |
| ✅ Rôles copilot aichat (am-*) | 6 agents générés dans ~/.config/aichat/agents/ (ou %APPDATA%\aichat\agents) : am-copilot (guide & catalogue), am-operator (shell sécurisé), am-dev (code & git), am-do (exécution pure pour --exec), am-analyst (coûts/logs/stats), am-orchestrator (groupes/lab). Prompts bilingues (FR par défaut), privilégient les contrats --json |
✅ v1.1.0 |
✅ am ai --role <nom> |
Rôle copilot passé à aichat (--agent) ; validation du fichier généré ; complétion REPL des rôles am-* ; config aichat créée (provider + modèle) seulement si absente |
✅ v1.1.0 |
| ✅ Settings dédiés | settings.shell_ai (default_safety dry-run/confirm/auto, risky_patterns) documenté dans config.yaml ; module src/setup.rs + src/roles.rs |
✅ v1.1.0 |
15. 🧭 Bilan & reste à faire (analyse du 2026-08-23)
Analyse complète du dépôt le 2026-08-23 : code (v1.1.5, commit
e637c06), historique git, tracker Gitea, artefacts de release.
15.1 ✅ Ce qui est livré
- Tout le périmètre versionné : J0/v0.3.0, J1/v0.4.1, J2/v0.6.0, v0.7.0 (providers), J3/v1.0.0, épique v1.1.0 (onboarding/copilot) et les maintenances v1.0.1 → v1.1.5.
- 0 issue ouverte sur le tracker Gitea (issues #1 → #97 clôturées).
mainsynchronisé avecorigin/main; Cargo.toml/Cargo.lock en v1.1.5 ; suite de tests : 455 tests passés, 0 échec le 2026-08-23 (23 suites, horsdoctor_testqui hang — §15.4).- Vérifié présent dans le code : favoris/notes/tags (#39), dashboard, monitor, web, serve, lab, sync, migrate, models, sandbox, registry, ask, ai, setup + rôles copilot, self-update, services, schedule, i18n, packaging, complétions, man pages.
15.2 ⬜ Fonctionnalités du roadmap NON livrées (jamais découpées en issues)
| Fonctionnalité | Axe | Effort | Constat dans le code |
|---|---|---|---|
am compare a b — tableau côte à côte |
Axe 7 | S | aucune commande Compare dans src/cli.rs |
am news — dernières releases des agents installés |
Axe 7 | M | aucun module, 0 occurrence dans src/ |
settings.shortcuts — raccourcis REPL (i → install…) |
Axe 10 | S | 0 occurrence de shortcuts dans src/ |
Extensions sœurs Axe 13 (am summarize, am explain, am fix, …) |
Axe 13 | M | absentes — voir §13.5 et l'idée N10 (§16) |
➡️ Suggestion : créer 3 issues Gitea (compare, news, shortcuts) en P1 — petits efforts à forte valeur, seuls restes des jalons « cockpit ».
15.3 📦 Activités de release / opérations
| Activité | Détail |
|---|---|
| Publier la release v1.1.5 | Le commit e637c06 (fix aichat ≥ 0.30) est sur main sans tag ni release Gitea → installateurs et am self-update servent encore la v1.1.4. Taguer v1.1.5 pour déclencher .gitea/workflows/release.yml. |
| Compléter les assets v1.1.4 | La release v1.1.4 publiée ne contient que am-windows-x86_64.zip : binaires Linux (x86_64/aarch64) et macOS absents → les installateurs Linux/macOS retombent sur cargo install --git. |
Artéfacts dist/ obsolètes |
Les archives de dist/ datent de l'ère v0.6.0 (2026-08-19) ; laisser la CI régénérer celles de v1.1.5. |
| Stash obsolète | stash@{0} « WIP issue #39 : favoris, notes, tags » (2026-08-17 09:12) — la fonctionnalité a été livrée autrement dans v0.4.1 (champs présents dans src/state.rs) ; à purger (git stash drop) après confirmation. |
15.4 🐛 Bug découvert pendant l'analyse (2026-08-23) — à corriger en priorité
cargo test se suspend sur doctor_test::report_contains_core_checks
sur cette machine (reproduit 3 fois, dont une exécution > 20 min), et le
même hang peut frapper l'utilisateur final via am doctor.
- Cause racine :
SystemRunner::run(src/runner.rs, branchecapture) attendCommand::output()sans timeout et sans protection contre l'héritage des pipes.am doctorsonde les outils du PATH (ollama ls,llama-server --version,git --version…) ; quand le processus fils engendre un petit-enfant qui conserve les handles stdout/stderr (cas réel observé :conhost.exealloué pourollama.exe lslancé sans console),output()attend l'EOF des pipes indéfiniment. - Reproduction :
target\debug\deps\doctor_test-*.exe --nocapture report_contains_core_checks→ hang > 40 s avec enfantsollama.exe lsconhost.exesous le processus de test ; l'ancien binaire de test du 2026-08-21 passait en 2,2 s (déclenchement du conhost non déterministe).
- Périmètre touché : tout ce qui passe par
SystemRunner::runavec capture —am doctordonc, et les sondes d'installation. (am models,am lab, les plugins et la sonde externe utilisent déjàwait_timeoutet sont immunisés.) - Correctif proposé : aligner
SystemRunner::runsur le pattern déjà éprouvé danssrc/models.rs/src/lab.rs/src/plugins.rs: spawnwait_timeout(30 s par défaut,settings.probe_timeout_secs) + drain des pipes avant l'attente + kill de l'arbre à l'expiration — les commentaires delab.rsetplugins.rsdocumentent exactement ce deadlock. À compléter par un test de régression (faux binaire qui engendre un enfant garde-fou).
- Contournement immédiat : lancer les suites une à une, sans
--test doctor_test.
16. 💡 Idées neuves (post-v1.1.5)
Ajoutées lors de l'analyse du 2026-08-23. Toutes ⬜ (proposées), non planifiées. Respectent l'ADN du projet : zéro dépendance runtime, local par défaut, contrats
--jsonstables.
| # | Idée | Description | Axe | Effort | Phase |
|---|---|---|---|---|---|
| N1 | ⬜ am mcp — serveur MCP |
Exposer am comme serveur Model Context Protocol : les agents (Claude Code, Codex, aichat…) découvrent et pilotent le parc via des outils MCP (am__list, am__stats, am__sessions, am__start…). am devient le hub de coopération entre agents. |
nouveau | L | P3 |
| N2 | ⬜ Budgets & alertes de coûts | Budget par agent/projet avec alertes à seuils (80 % / 100 %) et blocage doux, branché sur le suivi des coûts (#49). | Axe 1 | M | P2 |
| N3 | ⬜ Webhooks de notification | Alertes am watch / schedule / doctor --watch vers un webhook (Discord, Slack, n8n, Gotify) en plus du --notify local. |
Axe 6 | S | P2 |
| N4 | ⬜ am test <agent> — smoke test |
Vérification normalisée post-install/post-update : le binaire répond, ping provider, tâche minimale — généralise le ping de am setup à tout le catalogue. |
Axe 7 | M | P2 |
| N5 | ⬜ am diff — comparaison de configs |
Diff de config/état entre deux machines ou deux points de sync ; complète am sync (#66) et am migrate (#68) pour le multi-machine. |
Axe 9 | S | P2 |
| N6 | ⬜ Transcripts de session | am sessions transcript <id> : export Markdown lisible et partageable d'une session (commandes + sorties), complément de sessions export (#53). |
Axe 4 | S | P2 |
| N7 | ⬜ am doctor --report |
Rapport de diagnostic complet anonymisé (versions, doctor, événements récents) prêt à joindre à un bug report. | Axe 12 | S | P2 |
| N8 | ⬜ Catalogue air-gapped | am catalog snapshot : instantané hors-ligne complet du catalogue distant (définitions + binaires) pour machines sans internet. |
Axe 7 | M | P3 |
| N9 | ⬜ Export OpenTelemetry | Export opt-in du journal events.jsonl vers OTLP/Grafana pour les équipes qui ont déjà une pile d'observabilité. |
Axe 1 | M | P3 |
| N10 | ⬜ Épique « Boîte à outils IA » | Formaliser les commandes sœurs §13.5 sur les rôles copilot aichat (v1.1.0) : am commit, am review, am explain, am fix, am summarize, am doc, am translate, am ask-code, am search-web, am note. Une commande = un rôle + un raccourci de prompt, sécurité --exec héritée de am ai. |
Axe 13 | L | P2 → P3 |
| N11 | ⬜ Suite de tests 100 % hermétique | update_policy_test (> 60 s/test) appelle réellement l'API GitHub via installers::latest_version ; prévoir un mode hors-ligne des sondes de version (flag test/offline ou mock), pour une suite rapide et déterministe partout. |
Axe 12 | S | P1 |
8. 🚀 Jalons versionnés
| Jalon | Version | Contenu principal | Durée | Critère de sortie |
|---|---|---|---|---|
| J0 — Fondations | v0.3.0 | events.jsonl, sessions, am stats, am log, am history, am init, quick wins | ≈ 2 sem | 100 % des actions tracées · 100+ tests |
| J1 — Cockpit | v0.4.0 | recherche fuzzy, Ctrl-R, projects, timeline, dashboard TUI, hooks, secret, favoris, packaging | ≈ 3 sem | retrouver n'importe quelle action passée en < 2 s |
| J2 — Automatisation | v0.5.0 | watch, services, schedule, news/compare, catalogue distant, lab, models, sync | ≈ 4 sem | parc auto-supervisé (crash = redémarrage + alerte) |
| J3 — Plateforme | v1.0 | am web, am serve, am ask, registry, télémétrie opt-in, sandbox | ≈ 6 sem | dashboard web complet + API distante |
9. 📈 Indicateurs de succès (KPI)
| Indicateur | Cible |
|---|---|
| Part des actions tracées dans events.jsonl | 100 % dès la v0.3.0 |
| Temps pour retrouver une commande ou session passée | < 2 s |
| am list à chaud, journal actif | < 100 ms |
| Dépendances runtime ajoutées | 0 |
| Couverture de tests | ≥ 100 tests en v0.3, +25 par jalon |
| Contrats --json cassés entre versions mineures | 0 |
10. ⚠️ Risques & garde-fous
- ADN « zéro runtime » : toute dépendance nouvelle est compilée dans le binaire, jamais requise à l'exécution.
- Performance : le journal grossit — fenêtres temporelles, index dérivés, rotation mensuelle, caches façon probe.rs.
- Vie privée : local par défaut ; télémétrie opt-in, agrégée, anonyme.
- Contrats --json : ajout de champs sans retrait (scripts utilisateurs).
- Compatibilité : migrations additives ; les exports 0.2.x restent importables en 0.3+.
- Complexité UX : les fonctions avancées restent derrière settings.experimental jusqu'à maturité.
- Périmètre : rester un orchestrateur — ne pas réimplémenter les fonctionnalités propres aux agents (tokens, MCP, prompts), sauf valeur transversale (stats, sessions, secrets, coûts).
11. 🏁 Par où commencer
Le suivi est en place sur Gitea : 4 milestones (v0.3.0 → v1.0), 22 labels
(P0–P3, axe-1…axe-12, S/M/L/XL, quick-win, epic) et les issues ci-dessous.
Chaque PR doit référencer son issue avec closes #N pour une clôture
automatique. Ordre de construction proposé pour la phase 0 — chaque étape
est un PR indépendant et testé :
- PR 1 — src/events.rs : journal JSONL + rotation + tests.
- PR 2 — instrumentation start/stop/run (process.rs, run_cmd.rs) — dépend de PR 1.
- PR 3 — state.json v2 + migration additive — dépend de PR 1.
- PR 4 — sessions.json + am sessions + réconciliation — dépend de PR 2.
- PR 5 — am stats + am log (lecture du journal) — dépend de PR 2.
- PR 6 — historique structuré + am history (migration de history.txt).
- PR 7 — am init + détection de contexte (git, stack, cache) — dépend de PR 1.
- En parallèle — les quick wins de la section 3 : am logs #9 · am list --sort #10 · am config set #11 · am alias add #12 · dedup history.txt #13 · am doctor --json #14 · am version --json #15 · am open #16.
Épique de suivi : issue #1 (Phase 0).
Phase 1 — Cockpit (v0.4.0) — découpage créé le 2026-08-17
Épique : issue #25 · milestone v0.4.0 · 17 issues.
| # | Issue | Effort |
|---|---|---|
| #26 | Recherche fuzzy dans am search | M |
| #27 | Ctrl-R + réexécution dans le REPL | M |
| #28 | am history --rerun N | S |
| #29 | am projects + profils de projet | M |
| #30 | am start contextuel (dépend de #29) | S |
| #31 | am timeline (vue chronologique unifiée) | M |
| #32 | am sessions resume | M |
| #33 | am dashboard (TUI temps réel) | L |
| #34 | Hooks on_install/on_start/on_stop/on_update | M |
| #35 | am watch --restart-on-crash --notify | M |
| #36 | am secret (keyring OS) + injection --env | M |
| #37 | am top + am report (rapport hebdo/mensuel) | M |
| #38 | am log --follow (flux en direct) | S |
| #39 | Favoris, notes et tags personnels | M |
| #40 | Profils d'environnement (am profile dev/prod) | M |
| #41 | Complétions dynamiques + man pages | S |
| #42 | Packaging officiel (winget/scoop/deb/Homebrew) + CI | M |
Critère de sortie du jalon : retrouver n'importe quelle action passée en moins de 2 secondes.
Phase 2 — Automatisation (v0.5.0) — découpage créé le 2026-08-17
Épique : issue #47 · milestone v0.5.0 · 27 issues.
| # | Issue | Effort |
|---|---|---|
| #49 | Suivi des coûts — tokens/€ par session (stats --costs, cost_models) ✅ | M |
| #50 | am monitor — TUI temps réel (CPU/mémoire par PID, alertes) ✅ | L |
| #51 | ✅ Playbooks — am history --save + am playbook | L |
| #52 | ✅ Templates — am init --template web/python/rust/cli (substitution + validation) | M |
| #53 | ✅ am sessions export + rétention configurable (sessions_retention_days) | M |
| #54 | ✅ am web — serveur local + API JSON + graphiques (dashboard embarqué, contrats --json, 127.0.0.1) | XL |
| #55 | Services système — am service install (systemd/launchd/tâches Windows) ✅ | L |
| #56 | Planification — am schedule (add --at / list / remove / run) ✅ | M |
| #57 | Orchestration de groupes (ordre, --parallel, attente de santé) ✅ | L |
| #58 | Conteneurs — profils docker/podman par agent ✅ | L |
| #59 | am doctor --watch — vérifications périodiques avec alertes ✅ | M |
| #60 | ✅ Catalogue distant — am catalog update / am catalog add | M |
| #61 | ✅ am suggest — « un agent pour du Python » (tags + usage réel) | M |
| #62 | ✅ am lab — benchmark : même tâche sur N agents | L |
| #63 | ✅ am audit — qui a modifié quoi quand | M |
| #64 | ✅ am update --rollback — backup automatique avant mise à jour | M |
| #65 | ✅ Politiques — pin de version, settings.update_policy | S |
| #66 | ✅ Synchronisation git automatique — am sync (sync_repo, sync_on_exit, secrets exclus) | L |
| #67 | ✅ Partage de catalogue d'équipe (include par URL) | S |
| #68 | ✅ am migrate — assistant de transfert machine A → B (bundle .amx + doctor) | M |
| #69 | ✅ Thèmes couleurs du REPL | S |
| #70 | ✅ am models — inventaire des modèles locaux (ollama, llama.cpp, LM Studio) | M |
| #71 | ✅ Lien agent ↔ modèle — am run --model | M |
| #72 | ✅ doctor vérifie ollama / llama-server comme n'importe quel outil | S |
| #73 | ✅ am models prune — purge des modèles inutilisés | S |
| #74 | ✅ i18n — messages EN/FR (--lang, AM_LANG/LANG, catalogue tr/tr_fmt) | L |
| #75 | ✅ Plugin scripts (hooks avancés, intégration CI) | M |
Critère de sortie du jalon : parc auto-supervisé (crash = redémarrage + alerte).
Phase 3 — Plateforme (v1.0) — découpage créé le 2026-08-17
Épique : issue #48 · milestone v1.0 · 5 issues.
| # | Issue | Effort |
|---|---|---|
| #76 | ✅ Télémétrie anonyme opt-in (compteurs agrégés uniquement) | M |
| #77 | ✅ Registre communautaire — am registry (publication + recherche sur Gitea) | L |
| #78 | ✅ am ask — langage naturel → commande am (fournisseur LLM optionnel) | L |
| #79 | ✅ Profils sandbox par agent (commandes/répertoires autorisés) | L |
| #80 | ✅ am serve --token — API HTTP + WebSocket pour piloter à distance | XL |
Critère de sortie du jalon : dashboard web complet + API distante.
Phase v0.7.0 — Providers & configuration automatisée (P0, PRIORITAIRE)
Épique : issue #87 · milestone v0.7.0 · 5 issues · priorité P0 : livrée AVANT la Phase 3 (v1.0, #76–#80 en P3), sauf dépendances.
Centralise tokens/providers/modèles dans UN registre (settings.providers +
keyring partagé) et configure automatiquement les agents à l'installation :
am install <agent> branche le provider/modèle par défaut,
--provider/--model pour surcharger, --no-config pour le comportement
actuel, am run --provider pour surcharger au lancement (cloud inclus).
S'appuie sur #36 (secrets), #40 (profils), #71 (modèle), #66 (sync) — livrés.
| # | Issue | Effort | Dépend de |
|---|---|---|---|
| #88 | ✅ Registre de providers + commandes am providers (settings.providers, default_provider) |
M | — |
| #89 | ✅ Secrets partagés par provider (namespace keyring + résolution @secret fallback) |
S | #88 |
| #90 | ✅ AgentDef provider/model + flags --provider/--model/--no-config à l'install |
M | #88 |
| #91 | ✅ Configuration post-install : bloc config: par agent (env_map + fichiers) |
L | #89, #90 |
| #92 | ✅ am run/start --provider : override au lancement (providers cloud inclus) |
M | #90 |
Critère de sortie du jalon : un agent installé est opérationnel sans configuration manuelle (tokens au keyring, provider/modèle par défaut).
*Document généré à partir de l'analyse du code (v0.2.7, commit d886de3).
Phases livrées : 0 (v0.3.0), 1 (v0.4.1), 2 (v0.6.0), v0.7.0 (providers,
2026-08-19), 3 (v1.0.0, #76–#80, 2026-08-20) ; maintenance v1.0.1/v1.0.2
(self-update décompression, REPL), v1.0.3 (détection externe), v1.0.4
(catalogue shell AI, #94 #95), v1.0.5 (commande am ai, #93 #96 #97),
v1.0.6 (installateur Windows accepte l'entrée am-windows-x86_64.exe),
v1.1.0 (onboarding/copilot) → v1.1.5 (aichat ≥ 0.30). Bilan & idées neuves ajoutés le 2026-08-23 (§15, §16).*