Capitalise la mémoire projet accumulée pendant les chantiers B7/B8 (tâches de fond first-class), le système de tickets V1 et le ticket #1 : design, cadrages d'archi, checkpoints d'avancement et verdicts QA/frontend. Mise à jour de l'index MEMORY.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.3 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| inter-agent-live-context-shared-per-agent | memory note inter-agent-live-context-shared-per-agent |
|
Contexte live inter-agent : PAR AGENT (partagé), pas par paire — DÉCISION FIGÉE
Type : decision d'architecture / produit — validée utilisateur le 2026-07-02.
Décision
Le contexte live d'un agent IdeA est porté par l'agent cible, partagé entre TOUS les
demandeurs. Pour un AgentId donné, IdeA maintient au plus une session
headless/structurée vivante ; tous les idea_ask_agent(requester, target) vers le même
target réutilisent cette session, quel que soit le demandeur.
Ce partage est intentionnel et souhaité, pas un bug ni une fuite : tous les agents du projet sont dans le même domaine de confiance (même utilisateur, même projet). Le contexte live d'un agent = mémoire de travail d'équipe / tableau blanc partagé. On NE veut PAS d'isolation par paire.
La paire (requester, target) n'est pas une frontière d'isolation du contexte moteur :
elle sert uniquement à l'attribution, la corrélation requête/réponse, les vues UI et les
filtres de transcript.
Preuve empirique (2026-07-02)
Main a confié à QA le token IDEA-TOKEN-7F3A-BLEEDCHECK ; Architect a ensuite pu le
récupérer auprès de QA sans que Main le lui transmette. Cause : ensure_structured_session
(crates/application/src/orchestrator/service.rs:1948) fait un early-return sur
session_for_agent(&agent_id) → une seule session vivante par agent, réutilisée.
Modèle de transcript cible (cadré par Architect)
Log canonique PAR AGENT + vues par paire dérivées. Abandon du transcript canonique par paire comme source de vérité (il promet une isolation qui n'existe pas en live).
- Arbo cible :
.ideai/conversations/agents/<targetAgentId>/{log.jsonl, handoff.md, providers.json, log.N.jsonl} - Chaque tour porte l'attribution :
thread_id=Agent(target),requester,target,correlation_id,role,source. - Vues = projections filtrées (
ForAgent,ForPair,ForCorrelation), pas des logs séparés.
Impacts à traiter :
resolve_conversation→resolve_agent_thread(target)+resolve_conversation_view(requester,target).bind_conversation_session→ bind surtargetAgentId; réutiliser la session existante.ConversationRegistry→ index primairetargetAgentId, secondairesrequester/correlation_id; interdire 2 fils live pour le même target.ProviderSessionStoreclé(agent_thread_id, provider_id)au lieu de(pair_id, provider_id).LeafCell.conversation_id= désormais id de fil agent, plus « id de paire ».- Viewer LS7 : défaut = fil agent complet ; vue par paire = vue filtrée/partielle libellée comme telle.
Garde-fou efficience (rotation multi-demandeurs)
Le design LS5/LS6 tient, mais un fil agent partagé croît plus vite (agrège les demandes
de plusieurs requesters). Ajustements : la rotation s'applique au fil agent canonique (pas
aux vues) ; le résumé/handoff doit conserver l'attribution minimale (Objectif courant,
Demandes actives par requester, Décisions récentes, Blocages, Dernière réponse corrélée) ; transcript brut jamais réinjecté (humain-only) ; handoff borné à
HANDOFF_SUMMARY_MAX_CHARS=4096. Risque principal : dilution si demandeurs poussent des
objectifs contradictoires → mitigé par les rubriques stables du handoff.
Découpage dev recommandé (Architect)
ARCHITECTURE.md§19.7 : remplacer « id de paire » par « fil agent partagé » (+ §16/§17/§21).- Introduire
ConversationThreadId/ConversationViewId. - Adapter
resolve_conversation,bind_conversation_session,ConversationRegistry. - Compatibiliser les anciens chemins
for_pair(requester,target)comme vues historiques. - LS7 viewer : fil agent complet + filtres.
- Test QA : un fait confié à QA par Main est visible quand Architect interroge QA.
État
Décision figée. Cadrage architectural livré par Architect. Reste à : intégrer la proposition
dans ARCHITECTURE.md, puis planifier le dev (cycle normal Architect→Git→Dev→QA).
Liens : conversation-rotation-safety-design, handoff-ls5-summary-bound-and-llm-seam, conversation-log-ls6-rotation-and-paginated-read, conversation-viewer-ls7-frontend, headless-interagent-conversation-objective.