1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
id: 23
title: "Router les messages entre plusieurs agents d'un channel"
state: closed
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:21.000Z
updatedAt: 2026-10-29T16:35:01.000Z
labels:
- "kind::feature"
- "area::acp"
- "real-agents"
- "priority::high"
- "size::L"
milestone: "M3 · Channels & multi-agents"
epic: "Channels & multi-agents"
related:
- 11
- 14
- 22
body: |
## Contexte
Un channel peut contenir plusieurs agents. ACP est un protocole **1 client ↔ 1 agent** : le multi-agents est donc une responsabilité de Sidekicks.
## Décisions proposées (à confirmer)
1. **Qui répond ?** Seuls les agents **mentionnés** dans le message. Sans mention, le message va au dernier agent ayant parlé. Raison : éviter que deux LLM locaux répondent en même temps (coût mémoire/latence) et rester prévisible pour l'utilisateur.
2. **Contexte partagé** : une session ACP par (channel, agent). Quand Bob est mentionné, on préfixe son prompt avec les messages du channel qu'il n'a pas encore vus (« Alice a dit : … »). Raison : chaque agent garde sa propre session, mais suit la conversation.
3. **Concurrence** : si deux agents sont mentionnés, exécution séquentielle par défaut (mémoire), parallèle en option.
## Critères d'acceptation
- [ ] Scénario Alice + Bob dans un channel : Bob peut commenter la réponse d'Alice.
- [ ] Jamais plus d'agents actifs que la limite de [#11 — Gérer le cycle de vie des processus agents](.tickets/issues/0011-gerer-le-cycle-de-vie-des-processus-agents.yaml).
- [ ] Tests unitaires du routage avec faux agents.
tasks:
- id: 1
title: "Règles de destinataire (mentions, dernier agent)"
state: closed
priority: high
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:21.000Z
updatedAt: 2026-10-29T16:35:01.000Z
closedAt: 2026-10-29T16:35:01.000Z
- id: 2
title: "Injection du contexte non vu dans le prompt"
state: closed
priority: high
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:21.000Z
updatedAt: 2026-10-29T16:35:01.000Z
closedAt: 2026-10-29T16:35:01.000Z
- id: 3
title: "Exécution séquentielle / parallèle"
state: closed
priority: medium
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:21.000Z
updatedAt: 2026-10-29T16:35:01.000Z
closedAt: 2026-10-29T16:35:01.000Z
- id: 4
title: "Tests unitaires avec faux agents"
state: closed
priority: medium
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:21.000Z
updatedAt: 2026-10-29T16:35:01.000Z
closedAt: 2026-10-29T16:35:01.000Z
- id: 5
title: "Test realagents Alice + Bob"
state: closed
priority: medium
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:21.000Z
updatedAt: 2026-10-29T16:35:01.000Z
closedAt: 2026-10-29T16:35:01.000Z
comments:
- id: 1
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T16:35:01.000Z
body: |
## Résultat
Règles (ADR 0006) : `/agent:commande` → cet agent ; sinon les agents mentionnés, l'un après l'autre dans l'ordre des mentions ; sinon le dernier agent qui a parlé (ou l'unique membre) ; sinon message système demandant de mentionner un agent. Une session ACP par (channel, agent) ; avant son tour, l'agent reçoit les messages du channel qu'il n'a pas vus (20 au plus, 1500 caractères chacun). Un agent ne répond qu'à un channel à la fois.
**Exécution parallèle en option : non retenue.** Deux modèles locaux qui génèrent en même temps sont chacun plus lents, et le second ne pourrait pas lire la réponse du premier. À rouvrir si des agents distants (non locaux) arrivent.
Tests : faux agents (routage, invitation, contexte non vu, une seule réponse à la fois par agent, Stop qui arrête aussi les agents suivants) et `make test-real` : Bob retrouve le code donné par Alice (3 essais sur 3, sans « Bob: » devant après l'ajout d'une consigne en fin de prompt).
|