overmind-mcp 2.8.21 → 2.8.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,315 @@
1
+ # 🤖 Guide : Agent Hermes Permanent — Persistance & Orchestration
2
+
3
+ > **Objectif** : Construire un agent IA persistant, connecté à Discord, avec mémoire, bridge modulaire, et orchestration multi-agents.
4
+
5
+ ---
6
+
7
+ ## 📐 Architecture — 2 Couches Bien Distinctes
8
+
9
+ ```
10
+ ┌──────────────────────────────────────────────────┐
11
+ │ OVERMIND │
12
+ │ L'Encapsuleur / Orchestrator │
13
+ │ │
14
+ │ • Agent CRUD (create, delete, list, config) │
15
+ │ • Orchestration (run_agent, run_agents_parallel) │
16
+ │ • Mémoire partagée (memory_store/search cross-agents)│
17
+ │ • Mémoire locale/agent (DB propre par agent) │
18
+ │ • Cron PERSISTANT (survit aux redémarrages) │
19
+ │ • Agent Control (status, stream, kill, wait) │
20
+ │ • Bridge SDK (TypeScript wrappers) │
21
+ │ • Registre agents (.overmind/hermes/) │
22
+ │ │
23
+ │ ┌────────────────────────────────────────────┐ │
24
+ │ │ HERMES GATEWAY │ │
25
+ │ │ Le Runtime Agent │ │
26
+ │ │ │ │
27
+ │ │ • SOUL.md → persona/voix │ │
28
+ │ │ • Skills (~100+ built-in) │ │
29
+ │ │ • Mémoire locale (MEMORY.md, USER.md) │ │
30
+ │ │ • TTS (ElevenLabs, OpenAI...) │ │
31
+ │ │ • MCP Client (connecte aux serveurs) │ │
32
+ │ │ • Terminal, fichiers, browser... │ │
33
+ │ │ • Cron agent-level (session fraîche) │ │
34
+ │ │ • Session SQLite (state.db) │ │
35
+ │ └────────────────────────────────────────────┘ │
36
+ └──────────────────────────────────────────────────┘
37
+ ```
38
+
39
+ **Point clé** : Overmind encapsule Hermes. Chaque couche a ses propres responsabilités.
40
+
41
+ ---
42
+
43
+ ## 🔀 Qui Fait Quoi ? — Hermes vs Overmind
44
+
45
+ | Fonctionnalité | Hermes Gateway | Overmind |
46
+ |---|---|---|
47
+ | **Persona (SOUL.md)** | ✅ Gère | — |
48
+ | **Skills** | ✅ Charge et injecte | — |
49
+ | **TTS** | ✅ Exécute | — |
50
+ | **MCP Client** | ✅ Se connecte aux serveurs | — |
51
+ | **Mémoire fichiers plats** | ✅ MEMORY.md, USER.md | — |
52
+ | **Mémoire locale DB** | — | ✅ memory_store/search (DB propre/agent) |
53
+ | **Mémoire partagée** | — | ✅ Cross-agents, include_runs |
54
+ | **Session** | ✅ state.db (SQLite) | — |
55
+ | **Cron (agent-level)** | ✅ Session fraîche à chaque tick | — |
56
+ | **Agent CRUD** | — | ✅ create, config, delete |
57
+ | **Orchestration** | — | ✅ run_agent, run_agents_parallel |
58
+ | **Mémoire partagée** | — | ✅ memory_store, memory_search (cross-agents) |
59
+ | **Cron PERSISTANT** | — | ✅ Survit aux redémarrages |
60
+ | **Agent Control** | — | ✅ status, stream, kill, wait |
61
+ | **Bridge SDK** | — | ✅ Wrappers TypeScript |
62
+ | **Registre agents** | — | ✅ .overmind/hermes/ |
63
+
64
+ ### ⏰ Cron — La Différence Importante
65
+
66
+ **Hermes Gateway Cron** :
67
+ - Tourne dans une **session fraîche** à chaque tick
68
+ - Même profil, même MCP, mais pas de contamination entre runs
69
+ - Lié au cycle de vie de l'agent
70
+ - Configuration via `cronjob()` dans l'agent
71
+
72
+ **Overmind Cron PERSISTANT** :
73
+ - Géré au niveau de l'**encapsuleur**
74
+ - **Survit aux redémarrages** de l'agent et du gateway
75
+ - Stocké dans le registre Overmind
76
+ - Indépendant du cycle de vie Hermes
77
+ - Configuration via le Bridge SDK ou l'API Overmind
78
+
79
+ ---
80
+
81
+ ## 📁 Structure des Fichiers
82
+
83
+ ```
84
+ .overmind/
85
+ ├── hermes/ ← Runtime Hermes (géré par Overmind)
86
+ │ ├── agent_mon_bot/ ← Agent isolé
87
+ │ │ ├── .hermes/ ← Cerveau (géré par Hermes Gateway)
88
+ │ │ │ ├── SOUL.md ← Persona
89
+ │ │ │ ├── config.yaml ← Modèle + MCP + TTS
90
+ │ │ │ ├── .env ← Clés API
91
+ │ │ │ ├── state.db ← Mémoire locale SQLite
92
+ │ │ │ ├── memories/ ← MEMORY.md + USER.md
93
+ │ │ │ ├── skills/ ← Compétences
94
+ │ │ │ ├── sessions/ ← Historique
95
+ │ │ │ ├── cron/ ← Cron agent-level
96
+ │ │ │ ├── logs/ ← Logs
97
+ │ │ │ └── audio_cache/ ← TTS
98
+ │ │ └── (fichiers de travail)
99
+ │ └── ...
100
+ ├── agents/ ← Registre Overmind
101
+ └── bridge/ ← SDK TypeScript (couche Overmind)
102
+ ├── index.ts ← Barrel export
103
+ ├── types.ts ← Contrats partagés
104
+ ├── utils.ts ← Logger, SSE, retry
105
+ ├── BridgeProxy.ts ← Transport JSON-RPC
106
+ └── OverBridgeService.ts ← API haut niveau Overmind
107
+ ```
108
+
109
+ ---
110
+
111
+ ## 🔗 Bridge SDK — Wrappers Overmind en TypeScript
112
+
113
+ Le dossier `bridge/` est un **SDK modulaire** qui wrappe les appels MCP Overmind. Il permet de piloter les agents depuis une app externe.
114
+
115
+ ### Architecture en 3 Couches
116
+
117
+ ```
118
+ App/Discord Bot → OverBridgeService → BridgeProxy → Overmind MCP (localhost:3099)
119
+ → Hermes Gateway
120
+ ```
121
+
122
+ | Fichier | Rôle | Lignes |
123
+ |---|---|---|
124
+ | `types.ts` | Contrats : `McpResponse`, `AgentResult`, `BridgeConfig`, `SessionState` | ~150 |
125
+ | `utils.ts` | Logger, SSE parsing, retry, validation, formatage Discord | ~170 |
126
+ | `BridgeProxy.ts` | Transport JSON-RPC 2.0 : circuit breaker, 3 couches timeout | ~285 |
127
+ | `OverBridgeService.ts` | API Overmind : `runAgent()`, `memorySearch()`, `runParallel()` | ~284 |
128
+ | `index.ts` | Barrel export | ~46 |
129
+
130
+ ### Ce que le Bridge Wrappe (fonctionnalités Overmind)
131
+
132
+ ```typescript
133
+ // Orchestration
134
+ bridge.runAgent('agent', 'hermes', 'prompt') // Lancer un agent
135
+ bridge.runAgentForDiscord('agent', 'hermes', msg, ctx) // Avec contexte Discord
136
+ bridge.runParallel([...]) // Flotte multi-agents
137
+
138
+ // Mémoire partagée Overmind (pas la mémoire locale Hermes)
139
+ bridge.memorySearch({ query: 'trading' })
140
+ bridge.memoryStore({ text: 'Décision...', source: 'decision' })
141
+
142
+ // Agent CRUD
143
+ bridge.listAgents()
144
+ bridge.createAgent('nom', 'hermes', 'prompt')
145
+ bridge.deleteAgent('nom')
146
+
147
+ // Agent Control
148
+ bridge.agentControl({ agentName: 'x', action: 'status' })
149
+ bridge.agentControl({ agentName: 'x', action: 'kill' })
150
+
151
+ // Session persistante (Overmind, pas Hermes)
152
+ bridge.resetSession('agent')
153
+ ```
154
+
155
+ ### Circuit Breaker (BridgeProxy)
156
+
157
+ - **Closed** → tout passe, échecs comptés
158
+ - **Open** → après 5 échecs → bloque 30s
159
+ - **Half-Open** → 1 test, 3 succès → re-Close
160
+
161
+ ### Session Persistante (Overmind)
162
+
163
+ ```typescript
164
+ interface SessionState {
165
+ currentSessionId: string | undefined;
166
+ lastActivityAt: number;
167
+ messageCount: number;
168
+ }
169
+ ```
170
+ - Auto-persistée par le Bridge
171
+ - `autoResume: true` → reprend la session existante
172
+ - Survit entre les appels
173
+
174
+ ---
175
+
176
+ ## 🧠 Mémoire — 3 Couches
177
+
178
+ ### 1. Mémoire Hermes Gateway (par agent, fichiers plats)
179
+
180
+ Injectée dans le prompt à chaque tour. Gérée par l'agent lui-même.
181
+
182
+ | Fichier | Rôle | Portée |
183
+ |---|---|---|
184
+ | `MEMORY.md` | Notes personnelles de l'agent | 1 agent |
185
+ | `USER.md` | Profil et préférences utilisateur | 1 agent |
186
+ | `state.db` | SQLite (sessions, cache skills) | 1 agent |
187
+
188
+ ```bash
189
+ memory(action: "add", target: "memory", content: "L'utilisateur préfère...")
190
+ memory(action: "replace", target: "user", old_text: "old", content: "new")
191
+ ```
192
+
193
+ ### 2. Mémoire Overmind Locale (par agent, base de données)
194
+
195
+ **Chaque agent a sa PROPRE base de données Overmind** — isolation complète.
196
+ Les `memory_store` et `memory_search` sont **locale à l'agent** par défaut.
197
+
198
+ ```bash
199
+ # Stockage local à l'agent (sa propre DB Overmind)
200
+ memory_store(text: "Décision : BlockChat v0.2", source: "decision")
201
+ memory_search(query: "BlockChat protocol")
202
+ ```
203
+
204
+ - Chaque agent = sa propre DB vectorielle
205
+ - Recherche sémantique dans les connaissances de l'agent
206
+ - Types : `user`, `agent`, `pattern`, `error`, `decision`
207
+
208
+ ### 3. Mémoire Overmind Partagée (entre agents)
209
+
210
+ En plus de sa DB locale, un agent peut accéder à une mémoire **commune** partagée entre tous les agents.
211
+
212
+ ```bash
213
+ # Accès mémoire partagée (cross-agents)
214
+ memory_search(query: "trading strategy", include_runs: true)
215
+ ```
216
+
217
+ - Partagée entre tous les agents de la flotte
218
+ - Inclut l'historique des runs (`include_runs: true`)
219
+ - Permet la transmission de connaissances inter-agents
220
+
221
+ ---
222
+
223
+ ## 🚀 Créer un Agent — Étape par Étape
224
+
225
+ ### Via Overmind MCP (CRUD = Overmind)
226
+
227
+ ```bash
228
+ # 1. Créer (Overmind)
229
+ create_agent(name: "mon_bot", runner: "hermes", prompt: "Tu es...")
230
+
231
+ # 2. Configurer (Overmind)
232
+ update_agent_config(name: "mon_bot", model: "glm-5.1",
233
+ mcpServers: ["discord-server", "memory-server"])
234
+
235
+ # 3. Injecter clés (Overmind)
236
+ update_agent_config(name: "mon_bot", env: { "OPENAI_API_KEY": "sk-xxx" })
237
+
238
+ # 4. Lancer (Overmind orchestre, Hermes exécute)
239
+ run_agent(runner: "hermes", agentName: "mon_bot", prompt: "Analyse BTC")
240
+ ```
241
+
242
+ ### Via le Bridge SDK (TypeScript)
243
+
244
+ ```typescript
245
+ import { OverBridgeService } from './bridge/index.js';
246
+
247
+ const bridge = new OverBridgeService(
248
+ { mcpUrl: 'http://localhost:3099/mcp' },
249
+ logger,
250
+ );
251
+
252
+ // Lancer un agent (Overmind → Hermes)
253
+ const reply = await bridge.runAgent('mon_bot', 'hermes', 'Analyse BTC');
254
+
255
+ // Avec contexte Discord
256
+ const reply = await bridge.runAgentForDiscord(
257
+ 'mon_bot', 'hermes', 'Analyse BTC',
258
+ { channelId: '123', userId: '456', username: 'demon' }
259
+ );
260
+
261
+ // Multi-agents en parallèle (Overmind)
262
+ const results = await bridge.runParallel([
263
+ { agentName: 'minimax_1', runner: 'hermes', prompt: 'Analyse marché' },
264
+ { agentName: 'minimax_2', runner: 'hermes', prompt: 'Scrape Twitter' },
265
+ ]);
266
+ ```
267
+
268
+ ---
269
+
270
+ ## 🔗 Serveurs MCP — Outils des Agents
271
+
272
+ | Serveur MCP | Port | Ce qu'il fait |
273
+ |---|---|---|
274
+ | `discord-server` | 3141 | Messages, embeds, fichiers Discord |
275
+ | `memory-server` | 3099 | Mémoire locale/agent + partagée Overmind + CRUD agents |
276
+ | `postgresql-server` | 5433 | Base vectorielle (recherche sémantique) |
277
+ | `x-mcp-server` | 3142 | Scrape Twitter/X |
278
+
279
+ ---
280
+
281
+ ## 🏗️ Orchestration Multi-Agents (Overmind)
282
+
283
+ ```
284
+ ┌─────────────────────────────────┐
285
+ │ ORCHESTRATEUR │
286
+ │ (Overmind wrapper) │
287
+ │ │
288
+ │ ┌─────────┐ ┌─────────┐ │
289
+ │ │minimax_1│ │minimax_2│ │
290
+ │ │ Hermes │ │ Hermes │ │
291
+ │ └────┬────┘ └────┬────┘ │
292
+ │ ┌────┴────┐ ┌────┴────┐ │
293
+ │ │minimax_3│ │minimax_4│ │
294
+ │ │ Hermes │ │ Hermes │ │
295
+ │ └─────────┘ └─────────┘ │
296
+ │ │
297
+ │ → Embed Discord consolidé │
298
+ └─────────────────────────────────┘
299
+ ```
300
+
301
+ ---
302
+
303
+ ## ⚠️ Pièges à Éviter
304
+
305
+ 1. **Confondre Hermes et Overmind** → Hermes = runtime agent, Overmind = encapsuleur
306
+ 2. **Cron Hermes vs Cron Overmind** → Overmind est persistant, Hermes est par session
307
+ 3. **3 couches de mémoire** → Fichiers plats (Hermes), DB locale/agent (Overmind), partagée cross-agents (Overmind)
308
+ 4. **Clés API dans SOUL.md** → Jamais. Toujours dans `.env`
309
+ 5. **Bridge sans session** → Toujours `autoResume: true` pour la continuité
310
+ 6. **Oublier les MCP servers** → Sans MCP, l'agent ne peut rien faire
311
+
312
+ ---
313
+
314
+ *Guide v3 par SniperBot Analyst — OverMind 🤖*
315
+ *Hermes Gateway vs Overmind clairement séparés + Bridge SDK*