Persiste l'état runtime : manifestes agents, layouts, permissions, logs et handoffs de conversations, index mémoire et checkpoints du chantier orchestrator-designation (restart, backend-compile-fix, qa-verdict) ainsi que la note conversation-rotation-safety-design. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| conversation-rotation-safety-design | memory note conversation-rotation-safety-design |
|
Conversation Rotation Safety Design
Objectif : reduire le cout token des conversations longues sans degrader la stabilite des agents ni les contacts inter-agents.
Socle existant a reutiliser :
- log canonique
.ideai/conversations/<conversationId>/log.jsonl; handoff.mdincremental ;- injection du handoff au lancement/relaunch ;
LeafCell.conversation_id= id logique IdeA de paire, distinct du resumable provider ;providers.jsonpour(pair_conversation_id, provider_key) -> engine_session_id;InputMediator.busy_state(agent)et FIFO par agent ;ask_agentavec lock de tour par agent + wait-for graph anti-deadlock ;- attach/detach cellule deja modelise : la cellule est une vue,
TerminalSessions::rebind_agent_nodeexiste ; - frontend write-portal sait deja compter la saisie humaine et declarer
set_front_attached.
Regle produit centrale : rotation automatique opportuniste, jamais interruptive. IdeA ne compacte/rote une session qu'a un point sur.
Conditions minimales avant rotation :
- agent
Idle(InputMediator.busy_state == Idle) ; - aucune delegation/ticket/reply en cours ;
- aucun contact entrant en cours, sinon queue ou ancienne session jusqu'a bascule ;
- checkpoint durable OK : prompt/response appendes au log +
handoff.mda jour ; - cellule stable : pas d'attach/detach ou changement de layout en cours ;
- utilisateur non en train d'ecrire : focus/buffer non vide/frappe recente/IME composition/prompt interactif detectable ;
- nouvelle session demarree detached/background et prete avant bascule ;
- bascule atomique routing logique + attachement cellule ; ancienne session retiree ensuite.
Etat cible conceptuel :
RotationRequested -> WaitForAgentIdle -> WaitForNoDelegation -> WaitForNoIncomingRoute -> WaitForCellStable -> WaitForUserInputClear -> Checkpointing -> StartReplacementDetached -> AttachReplacementToCell -> SwitchRouting -> RetireOldSession.
Premier lot recommande : fondation non destructive.
- Ajouter modeles/policy de
ConversationRotationet raisons de blocage. - Ajouter query/use case d'evaluation qui retourne
ReadyouBlocked(reasons)sans tuer ni relancer. - Exposer les signaux manquants de cellule/saisie depuis le frontend vers backend, d'abord comme etat consultable.
- Publier des events de statut de rotation uniquement informatifs.
- Ne pas implementer la bascule physique avant que les tests de surete soient verts.