agent conversation fix
This commit is contained in:
@ -51,9 +51,10 @@ Le workspace Cargo multi-crate, sens des dépendances **strict** (`Présentation
|
||||
|
||||
## 5. Délégation & collaboration
|
||||
|
||||
- Pour déléguer/discuter avec un autre agent, tu utilises **le protocole d'orchestration IdeA**
|
||||
(`.ideai/requests/<ton-agent>/`), **jamais** les subagents natifs du fournisseur. *(Tant que
|
||||
l'orchestration v3 n'est pas livrée, Main relaie manuellement.)*
|
||||
- Pour déléguer/discuter avec un autre agent, utilise le mécanisme IdeA indiqué dans le
|
||||
contexte applicatif injecté : `idea_ask_agent(target, task)` si l'outil MCP est
|
||||
disponible, sinon le fallback `.ideai/requests/<ton-agent>/`. Quand tu es sollicité,
|
||||
réponds normalement en fin de tour ; IdeA capture ta réponse finale.
|
||||
- Ta source de vérité d'architecture est `architect.md`. En cas de contradiction entre ton code
|
||||
et ce document, c'est le document qui gagne — ou tu remontes l'incohérence à Main.
|
||||
|
||||
|
||||
@ -51,9 +51,10 @@ contrat IPC de ton côté.
|
||||
|
||||
## 5. Délégation & collaboration
|
||||
|
||||
- Pour déléguer/discuter avec un autre agent, tu utilises **le protocole d'orchestration IdeA**
|
||||
(`.ideai/requests/<ton-agent>/`), **jamais** les subagents natifs du fournisseur. *(Tant que
|
||||
l'orchestration v3 n'est pas livrée, Main relaie manuellement.)*
|
||||
- Pour déléguer/discuter avec un autre agent, utilise le mécanisme IdeA indiqué dans le
|
||||
contexte applicatif injecté : `idea_ask_agent(target, task)` si l'outil MCP est
|
||||
disponible, sinon le fallback `.ideai/requests/<ton-agent>/`. Quand tu es sollicité,
|
||||
réponds normalement en fin de tour ; IdeA capture ta réponse finale.
|
||||
- Source de vérité d'architecture : `architect.md`. Contradiction code↔doc ⇒ le doc gagne, ou tu
|
||||
remontes à Main.
|
||||
|
||||
|
||||
@ -109,11 +109,11 @@ tu le dis.
|
||||
|
||||
## 5. Délégation & collaboration
|
||||
|
||||
- Tu réponds à Main via le protocole d'orchestration IdeA (`idea_reply`). Quand Main te
|
||||
délègue une tâche (message `[IdeA · tâche de … · ticket …]`), tu traites puis tu
|
||||
appelles **impérativement** `idea_reply(result=…)`.
|
||||
- Quand Main te délègue une tâche via IdeA, tu la traites puis tu termines ton tour avec
|
||||
ta réponse normale. IdeA capture automatiquement ta réponse finale ; tu ne gères pas
|
||||
de ticket et tu n'appelles pas d'outil de remise de résultat.
|
||||
- Tu rends compte clairement : branche courante, ce que tu as committé (hash + message
|
||||
court), ce que tu as mergé/rebasé, et **ta décision** (pourquoi cette
|
||||
branche, pourquoi ce merge ou ce non-merge).
|
||||
- En cas de conflit de merge/rebase, tu le signales à Main avec le détail ; tu ne forces
|
||||
pas une résolution hasardeuse.
|
||||
pas une résolution hasardeuse.
|
||||
|
||||
@ -25,12 +25,12 @@ Exception limitée : tu peux modifier les fichiers de contexte, mémoire, docume
|
||||
Pour déléguer, utilise uniquement les outils IdeA natifs :
|
||||
|
||||
- `idea_list_agents` pour identifier les agents disponibles.
|
||||
- `idea_ask_agent` pour confier une tâche et recevoir une réponse synchrone.
|
||||
- `idea_ask_agent` pour confier une tâche et recevoir la réponse finale capturée par IdeA.
|
||||
- `idea_launch_agent` pour lancer ou rattacher un agent si nécessaire.
|
||||
|
||||
N'utilise jamais les subagents natifs du fournisseur IA pour ce projet.
|
||||
|
||||
Quand tu reçois une tâche préfixée `[IdeA · tâche de … · ticket …]`, tu dois répondre avec `idea_reply(result=…, ticket=…)`. Une réponse texte seule ne débloque pas l'agent appelant.
|
||||
Quand IdeA te sollicite via une conversation inter-agent headless, traite la demande et termine ton tour avec ta réponse normale. Ne gère aucun ticket et n'appelle pas d'outil de remise de résultat : IdeA capture automatiquement ta réponse finale.
|
||||
|
||||
---
|
||||
|
||||
@ -108,4 +108,4 @@ Si la demande utilisateur contredit le cycle, rappelle brièvement la règle et
|
||||
|
||||
---
|
||||
|
||||
*Dernière mise à jour : 2026-06-20*
|
||||
*Dernière mise à jour : 2026-06-20*
|
||||
|
||||
@ -55,9 +55,10 @@ Quand c'est rouge, ton rapport au dev (via Main) contient :
|
||||
|
||||
## 5. Délégation & collaboration
|
||||
|
||||
- Pour déléguer/discuter avec un autre agent : **protocole d'orchestration IdeA**
|
||||
(`.ideai/requests/<ton-agent>/`), **jamais** de subagent natif fournisseur. *(En attendant
|
||||
l'orchestration v3, Main relaie.)*
|
||||
- Pour déléguer/discuter avec un autre agent, utilise le mécanisme IdeA indiqué dans le
|
||||
contexte applicatif injecté : `idea_ask_agent(target, task)` si l'outil MCP est
|
||||
disponible, sinon le fallback `.ideai/requests/<ton-agent>/`. Quand tu es sollicité,
|
||||
réponds normalement en fin de tour ; IdeA capture ta réponse finale.
|
||||
- Source de vérité d'architecture : `architect.md`. Tes tests valident la conformité du code à ce
|
||||
document.
|
||||
|
||||
@ -70,7 +71,7 @@ Trois chantiers (cadence **A+B ensemble, puis C**). Points de vigilance test :
|
||||
sur agent inconnu, etc.).
|
||||
- **B — Reprise au redémarrage** : tester que `agent_was_running`/`conversation_id` sont **bien
|
||||
consommés** à l'ouverture (ce qui n'est pas le cas aujourd'hui), avec et sans `resumeFlag`.
|
||||
- **C — Orchestration v3** : tester le routage `ask_agent` (réponse synchrone corrélée), le repli
|
||||
- **C — Orchestration v3** : tester le routage `ask_agent` (réponse finale capturée), le repli
|
||||
fichier quand un profil ne supporte pas MCP, la non-régression du protocole `.ideai/requests`.
|
||||
|
||||
Tu interviens **après** le cadrage d'`Architect`, en binôme avec le dev du lot concerné, jusqu'au
|
||||
|
||||
@ -42,3 +42,4 @@
|
||||
- [mcp-functional-tests-t1-t9-green-live-2026-06-24](mcp-functional-tests-t1-t9-green-live-2026-06-24.md) — memory note mcp-functional-tests-t1-t9-green-live-2026-06-24
|
||||
- [mcp-t10a-harness-interrupt-does-not-cancel-rendezvous](mcp-t10a-harness-interrupt-does-not-cancel-rendezvous.md) — memory note mcp-t10a-harness-interrupt-does-not-cancel-rendezvous
|
||||
- [mcp-t10b-pending-reboot-verification](mcp-t10b-pending-reboot-verification.md) — memory note mcp-t10b-pending-reboot-verification
|
||||
- [headless-interagent-conversation-objective](headless-interagent-conversation-objective.md) — memory note headless-interagent-conversation-objective
|
||||
|
||||
40
.ideai/memory/headless-interagent-conversation-objective.md
Normal file
40
.ideai/memory/headless-interagent-conversation-objective.md
Normal file
@ -0,0 +1,40 @@
|
||||
---
|
||||
name: headless-interagent-conversation-objective
|
||||
description: memory note headless-interagent-conversation-objective
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
# Objectif chantier — remplacer la conversation inter-agent MCP par headless robuste
|
||||
|
||||
## Intention produit
|
||||
|
||||
Le projet veut se séparer du MCP pour la **conversation inter-agent**, car le rendez-vous MCP a provoqué trop de blocages, wedges, busy fantômes et pertes de résultats. MCP reste conservé pour les autres outils IdeA : mémoire, liste d'agents, contexte, workstate et fonctions non conversationnelles.
|
||||
|
||||
Le nouveau mécanisme doit utiliser les modes **headless** fournis par les modèles/CLIs comme interface de communication entre agents, tout en gardant le modèle mental : **1 agent = 1 employé**.
|
||||
|
||||
## Règles fonctionnelles validées
|
||||
|
||||
- Un agent n'a qu'une seule conversation canonique et une seule identité opérationnelle, qu'il soit utilisé via la cellule CLI par l'utilisateur ou via headless par un autre agent.
|
||||
- Quand un agent B travaille pour un agent A, aucun autre agent ni l'utilisateur ne peut lui parler tant que B n'a pas fini.
|
||||
- L'utilisateur doit pouvoir voir que B est occupé et, si possible, suivre le travail headless en temps réel. La solidité prime sur cette UI temps réel.
|
||||
- L'utilisateur doit pouvoir cancel le travail d'un agent occupé.
|
||||
- Si l'utilisateur annule A dans la CLI alors que A attend B, l'annulation doit cascader vers B.
|
||||
- B ne peut être annulé que par l'agent qui lui parle ou par l'utilisateur, pas par un autre agent tiers.
|
||||
- Si plusieurs agents veulent parler à B, les demandes attendent en FIFO simple jusqu'à ce que B soit libre.
|
||||
- Le headless est seulement l'interface de communication agent-agent : mêmes mémoire, contexte, historique, permissions, cwd et outils qu'en usage CLI interactif.
|
||||
- Un historique reconstitué doit être accessible depuis la cellule, via un bouton, avec toutes les conversations de la session dans un historique unique.
|
||||
- L'architecture reste hexagonale : conversation canonique par modèle/adapters, pas de dépendance directe dispersée aux formats natifs.
|
||||
|
||||
## Priorité de conception
|
||||
|
||||
Priorité 1 : robustesse et absence de blocage durable.
|
||||
|
||||
Le design doit privilégier des garanties mécaniques simples : processus headless borné, fin par exit process, timeout, cancel explicite, nettoyage d'état idempotent, queue FIFO observable, et résultat synthétique en cas d'échec.
|
||||
|
||||
Priorité 2 : observabilité et UX.
|
||||
|
||||
L'affichage temps réel du travail headless est souhaité si le mode headless permet de streamer stdout/stderr ou événements structurés, mais ne doit pas fragiliser le protocole. À défaut, fournir statut occupé, bouton cancel, historique final et diagnostic exploitable.
|
||||
|
||||
## Décision de périmètre
|
||||
|
||||
Le MCP n'est pas retiré globalement. Il est retiré uniquement du chemin critique de conversation inter-agent. Les outils IdeA existants peuvent rester exposés aux agents via MCP tant qu'ils ne servent pas au rendez-vous conversationnel.
|
||||
Reference in New Issue
Block a user