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>
49 lines
2.7 KiB
Markdown
49 lines
2.7 KiB
Markdown
---
|
|
name: conversation-rotation-safety-design
|
|
description: memory note conversation-rotation-safety-design
|
|
metadata:
|
|
type: project
|
|
---
|
|
---
|
|
name: conversation-rotation-safety-design
|
|
description: Cadrage initial pour la compression/rotation automatique non interruptive des conversations d'agents.
|
|
metadata:
|
|
type: project
|
|
---
|
|
|
|
# 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.md` incremental ;
|
|
- injection du handoff au lancement/relaunch ;
|
|
- `LeafCell.conversation_id` = id logique IdeA de paire, distinct du resumable provider ;
|
|
- `providers.json` pour `(pair_conversation_id, provider_key) -> engine_session_id` ;
|
|
- `InputMediator.busy_state(agent)` et FIFO par agent ;
|
|
- `ask_agent` avec lock de tour par agent + wait-for graph anti-deadlock ;
|
|
- attach/detach cellule deja modelise : la cellule est une vue, `TerminalSessions::rebind_agent_node` existe ;
|
|
- 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.md` a 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 `ConversationRotation` et raisons de blocage.
|
|
- Ajouter query/use case d'evaluation qui retourne `Ready` ou `Blocked(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. |