overmind-mcp 2.8.49 → 2.8.51
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.
- package/README.md +16 -14
- package/dist/bin/cli.js +30 -4
- package/dist/bin/cli.js.map +1 -1
- package/dist/lib/orchestration/swarm.js +2 -2
- package/dist/lib/orchestration/swarm.js.map +1 -1
- package/dist/lib/processRegistry.js +2 -2
- package/dist/lib/processRegistry.js.map +1 -1
- package/dist/lib/sessions.js +2 -2
- package/dist/lib/sessions.js.map +1 -1
- package/dist/memory/MemoryFactory.js +2 -2
- package/dist/memory/MemoryFactory.js.map +1 -1
- package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
- package/dist/memory/PostgresMemoryProvider.js +2 -2
- package/dist/memory/PostgresMemoryProvider.js.map +1 -1
- package/dist/services/ClaudeRunner.d.ts.map +1 -1
- package/dist/services/ClaudeRunner.js +6 -18
- package/dist/services/ClaudeRunner.js.map +1 -1
- package/dist/services/ClineRunner.d.ts +0 -2
- package/dist/services/ClineRunner.d.ts.map +1 -1
- package/dist/services/ClineRunner.js +7 -20
- package/dist/services/ClineRunner.js.map +1 -1
- package/dist/services/GeminiRunner.d.ts.map +1 -1
- package/dist/services/GeminiRunner.js +9 -3
- package/dist/services/GeminiRunner.js.map +1 -1
- package/dist/services/KiloRunner.d.ts.map +1 -1
- package/dist/services/KiloRunner.js +12 -2
- package/dist/services/KiloRunner.js.map +1 -1
- package/dist/services/NousHermesRunner.d.ts.map +1 -1
- package/dist/services/NousHermesRunner.js +14 -4
- package/dist/services/NousHermesRunner.js.map +1 -1
- package/dist/services/OpenClawRunner.d.ts +0 -2
- package/dist/services/OpenClawRunner.d.ts.map +1 -1
- package/dist/services/OpenClawRunner.js +7 -20
- package/dist/services/OpenClawRunner.js.map +1 -1
- package/dist/services/OpenCodeRunner.d.ts +0 -2
- package/dist/services/OpenCodeRunner.d.ts.map +1 -1
- package/dist/services/OpenCodeRunner.js +7 -20
- package/dist/services/OpenCodeRunner.js.map +1 -1
- package/dist/services/QwenCliRunner.d.ts +0 -2
- package/dist/services/QwenCliRunner.d.ts.map +1 -1
- package/dist/services/QwenCliRunner.js +7 -20
- package/dist/services/QwenCliRunner.js.map +1 -1
- package/dist/services/hermes/binaryFinder.js +2 -2
- package/dist/services/hermes/binaryFinder.js.map +1 -1
- package/dist/services/hermes/configYamlFilter.js +2 -2
- package/dist/services/hermes/configYamlFilter.js.map +1 -1
- package/dist/services/hermes/processUtils.js +2 -2
- package/dist/services/hermes/processUtils.js.map +1 -1
- package/docs/OVERMIND_HERMES_SNIPERBOT_FLOW.md +1 -1
- package/docs/SETUP_HERMES_AGENT_FROM_SCRATCH.md +18 -18
- package/docs/SUBTILISATION_EXPLAINED.md +2 -2
- package/docs/agent-http-tutorial.md +524 -524
- package/docs/doc_guide_agent_hermes_permanent.md +1 -1
- package/docs/doc_hermes_gateway.md +2 -2
- package/docs/guide_agent_hermes_overmind.md +1 -1
- package/docs/provider-config-map.md +556 -556
- package/package.json +1 -1
- package/docs/PLAN_REFACTORING_OVERMIND_V2.md +0 -414
- package/docs/PLAN_REFACTOR_OVERMIND_AGI.md +0 -606
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "overmind-mcp",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.51",
|
|
4
4
|
"description": "Orchestrateur universel agents IA multi-modeles via MCP. Inclut le protocole 'Custom-Nickname' pour identifier vos agents avec des surnoms originaux (The Chaos Prophet, Shadow Sniper, etc.), l'isolation mémoire (Private Memory Context) et le support pour QwenCli et Nous Hermes. Installation automatique des dépendances Docker (PostgreSQL, pgvector) inclus.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -1,414 +0,0 @@
|
|
|
1
|
-
# 🔥 OVERMIND v2 — Plan de Refactorisation Distribuée
|
|
2
|
-
|
|
3
|
-
> **Objectif** : Transformer Overmind d'un orchestrateur mono-machine en un **réseau d'agents distribué**, capable de devenir un noeud d'un réseau blockchain agentique RCP.
|
|
4
|
-
|
|
5
|
-
> **Ambition** : L'AGI émergera de la coopération d'agents sur un réseau décentralisé. Overmind doit devenir un noeud de ce réseau.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 📊 ÉTAT ACTUEL — Audit des Fondations
|
|
10
|
-
|
|
11
|
-
### Ce qu'on a (positif)
|
|
12
|
-
|
|
13
|
-
| Composant | Fichier | Status | Note |
|
|
14
|
-
|---|---|---|---|
|
|
15
|
-
| Transport JSON-RPC 2.0 | `bridge/BridgeProxy.ts` | ✅ Existe | Localhost seulement |
|
|
16
|
-
| Circuit Breaker | `bridge/types.ts` | ✅ Existe | Closed→Open→Half-Open |
|
|
17
|
-
| Mémoire PostgreSQL | `memory/PostgresMemoryProvider.ts` | ✅ Existe | 1 DB par agent + DB core |
|
|
18
|
-
| Embeddings Vectoriels | `embedText()` | ✅ Existe | Qwen 8B, 4096D |
|
|
19
|
-
| MCP Server (14 outils) | `server.ts` | ✅ Existe | FastMCP, local |
|
|
20
|
-
| Process Registry | `lib/processRegistry.ts` | ✅ Existe | Locaux seulement |
|
|
21
|
-
| Orchestration parallèle | `run_agents_parallel` | ✅ Existe | Local seulement |
|
|
22
|
-
| Swarm | `lib/orchestration/swarm.ts` | ⚠️ Existe | À vérifier |
|
|
23
|
-
|
|
24
|
-
### Ce qui manque (blockers)
|
|
25
|
-
|
|
26
|
-
| Problème | Impact | Priorité |
|
|
27
|
-
|---|---|---|
|
|
28
|
-
| **Pas de RPC distant** | Impossible de connecter 2 machines | 🔴 CRITIQUE |
|
|
29
|
-
| **Pas de discovery/pairing** | Les noeuds ne se trouvent pas | 🔴 CRITIQUE |
|
|
30
|
-
| **Mémoire non synchronisée** | Chaque machine a sa propre DB isolée | 🔴 CRITIQUE |
|
|
31
|
-
| **Pas d'authentification inter-noeuds** | Sécurité inexistante en distributed | 🟡 HIGH |
|
|
32
|
-
| **Pas de consensus** | Pas de résolution de conflits | 🟡 HIGH |
|
|
33
|
-
| **Pas de tokenomics** | Pas d'incitation économique | 🟢 MEDIUM |
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## 🧠 MÉMOIRE — Diagnostic Précis
|
|
38
|
-
|
|
39
|
-
### Architecture Actuelle (vérifiée dans le code)
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
┌─────────────────────────────────────────────────┐
|
|
43
|
-
│ POSTGRESQL LOCAL │
|
|
44
|
-
│ │
|
|
45
|
-
│ ┌──────────────┐ ┌──────────────────────┐ │
|
|
46
|
-
│ │ overmind_core │ │ agent_sniperbot │ │
|
|
47
|
-
│ │ (partagé) │ │ (DB propre/agent) │ │
|
|
48
|
-
│ │ │ ├──────────────────────┤ │
|
|
49
|
-
│ │ knowledge_ │ │ agent_minimax_1 │ │
|
|
50
|
-
│ │ chunks │ │ (DB propre/agent) │ │
|
|
51
|
-
│ │ agent_runs │ ├──────────────────────┤ │
|
|
52
|
-
│ │ │ │ agent_minimax_2 │ │
|
|
53
|
-
│ └──────────────┘ └──────────────────────┘ │
|
|
54
|
-
│ │
|
|
55
|
-
│ + Fichiers plats Hermes (MEMORY.md, USER.md) │
|
|
56
|
-
└─────────────────────────────────────────────────┘
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### La réalité du "partagé"
|
|
60
|
-
|
|
61
|
-
En lisant `PostgresMemoryProvider.ts` (lignes 458-521) :
|
|
62
|
-
|
|
63
|
-
1. **`storeKnowledge()`** → Stocke dans la DB de l'agent (`agent_<name>`)
|
|
64
|
-
2. **`searchMemory()`** → Cherche dans **DEUX** DBs :
|
|
65
|
-
- `agent_<name>` (DB locale agent)
|
|
66
|
-
- `overmind_core` (DB "partagée")
|
|
67
|
-
3. **Mais** → `overmind_core` n'est JAMAIS écrite directement par les agents !
|
|
68
|
-
|
|
69
|
-
**BUG** : La DB "partagée" (`overmind_core`) existe mais n'est peuplée que si `agentName` est `undefined`. Les agents avec nom écrivent UNIQUEMENT dans leur DB locale.
|
|
70
|
-
|
|
71
|
-
### Correction nécessaire
|
|
72
|
-
|
|
73
|
-
```typescript
|
|
74
|
-
// storeKnowledge() actuel (ligne 431)
|
|
75
|
-
const dbName = this.getDbName(params.agentName); // → toujours agent_<name>
|
|
76
|
-
|
|
77
|
-
// CORRECTION : écrire dans les DEUX
|
|
78
|
-
// 1. DB locale agent (toujours)
|
|
79
|
-
// 2. DB core si flagged "shared=true"
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## 🌐 RPC DISTRIBUÉ — Comment ça va marcher en vrai
|
|
85
|
-
|
|
86
|
-
### Scénario : 2 ordinateurs distants
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
MACHINE A (Paris) MACHINE B (Lyon)
|
|
90
|
-
┌────────────────────┐ ┌────────────────────┐
|
|
91
|
-
│ Overmind Node A │◄──WebSocket──►│ Overmind Node B │
|
|
92
|
-
│ │ (encrypted) │ │
|
|
93
|
-
│ ┌──────────────┐ │ │ ┌──────────────┐ │
|
|
94
|
-
│ │ PostgreSQL A │ │ │ │ PostgreSQL B │ │
|
|
95
|
-
│ │ (agent_sniper│ │ │ │ (agent_minim │ │
|
|
96
|
-
│ │ + core) │ │ │ │ + core) │ │
|
|
97
|
-
│ └──────────────┘ │ │ └──────────────┘ │
|
|
98
|
-
│ │ │ │
|
|
99
|
-
│ MCP Server :3099 │ │ MCP Server :3099 │
|
|
100
|
-
│ RPC Relay :3100 │ │ RPC Relay :3100 │
|
|
101
|
-
└────────────────────┘ └────────────────────┘
|
|
102
|
-
│ │
|
|
103
|
-
└──────── Internet (TLS) ────────────┘
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### Phase de connexion (handshake)
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
1. Node A → Node B : POST /rpc/handshake
|
|
110
|
-
{ nodeId: "overmind_paris", version: "2.0", capabilities: [...] }
|
|
111
|
-
|
|
112
|
-
2. Node B → Node A : POST /rpc/handshake-response
|
|
113
|
-
{ nodeId: "overmind_lyon", accepted: true, authToken: "xxx" }
|
|
114
|
-
|
|
115
|
-
3. WebSocket établi → keep-alive bi-directionnel
|
|
116
|
-
|
|
117
|
-
4. Sync initiale :
|
|
118
|
-
- Node A envoie son catalogue d'agents
|
|
119
|
-
- Node B envoie son catalogue d'agents
|
|
120
|
-
- Échange des schemas de DB
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Protocole RPC inter-noeuds
|
|
124
|
-
|
|
125
|
-
```typescript
|
|
126
|
-
interface OvermindRpcMessage {
|
|
127
|
-
jsonrpc: '2.0';
|
|
128
|
-
id: string;
|
|
129
|
-
method: string;
|
|
130
|
-
params: {
|
|
131
|
-
sourceNode: string; // ID du noeud émetteur
|
|
132
|
-
targetAgent?: string; // Agent cible (optionnel)
|
|
133
|
-
authToken: string; // Token de session
|
|
134
|
-
payload: unknown; // Données spécifiques
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Méthodes supportées :
|
|
139
|
-
// - "agent.run" → Lancer un agent distant
|
|
140
|
-
// - "memory.search" → Chercher dans la mémoire d'un noeud distant
|
|
141
|
-
// - "memory.store" → Écrire dans la mémoire partagée distante
|
|
142
|
-
// - "agent.stream" → Stream output d'un agent distant
|
|
143
|
-
// - "discovery.ping" → Vérifier la présence d'un noeud
|
|
144
|
-
// - "sync.knowledge" → Synchroniser knowledge_chunks
|
|
145
|
-
// - "consensus.propose" → Proposer une décision collective
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Résolution du problème mémoire
|
|
149
|
-
|
|
150
|
-
```
|
|
151
|
-
AVANT (v1 - actuel) :
|
|
152
|
-
Chaque PostgreSQL est ISOLÉ. Aucune synchronisation.
|
|
153
|
-
|
|
154
|
-
APRÈS (v2 - distribué) :
|
|
155
|
-
|
|
156
|
-
COUCHE 1 : Mémoire locale (déjà là)
|
|
157
|
-
→ agent_<name> DB → rapide, privé, pas de sync
|
|
158
|
-
|
|
159
|
-
COUCHE 2 : Mémoire partagée (correction + sync)
|
|
160
|
-
→ overmind_core DB → sync entre noeuds via RPC
|
|
161
|
-
→ Flag "shared=true" sur storeKnowledge()
|
|
162
|
-
→ Réplication eventuelle ou sync périodique
|
|
163
|
-
|
|
164
|
-
COUCHE 3 : Mémoire globale réseau (nouveau)
|
|
165
|
-
→ Table "network_knowledge" dans overmind_core
|
|
166
|
-
→ Source = nodeId + agentName
|
|
167
|
-
→ Vector search cross-noeuds via RPC relay
|
|
168
|
-
→ Chaque noeud maintient un index des embeddings distants
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## 🏗️ PHASES DE REFACTORISATION
|
|
174
|
-
|
|
175
|
-
### Phase 1 — Fondations Distribuées (2-3 semaines)
|
|
176
|
-
|
|
177
|
-
**Objectif** : 2 machines Overmind qui communiquent
|
|
178
|
-
|
|
179
|
-
| Tâche | Fichier | Description |
|
|
180
|
-
|---|---|---|
|
|
181
|
-
| 1.1 | `src/rpc/RpcServer.ts` | Serveur WebSocket + HTTP pour RPC inter-noeuds |
|
|
182
|
-
| 1.2 | `src/rpc/RpcClient.ts` | Client pour appeler des méthodes sur un noeud distant |
|
|
183
|
-
| 1.3 | `src/rpc/NodeIdentity.ts` | Identité crypto du noeud (keypair, nodeId, signature) |
|
|
184
|
-
| 1.4 | `src/rpc/Handshake.ts` | Protocole de handshake sécurisé (challenge-response) |
|
|
185
|
-
| 1.5 | `src/rpc/config.ts` | Config distributed : peers, ports, TLS |
|
|
186
|
-
| 1.6 | `.env` | Variables `OVERMIND_NODE_ID`, `OVERMIND_PEERS`, `OVERMIND_RPC_PORT` |
|
|
187
|
-
|
|
188
|
-
**Livrable** : `node A` peut ping `node B` via RPC.
|
|
189
|
-
|
|
190
|
-
### Phase 2 — Mémoire Distribuée (2 semaines)
|
|
191
|
-
|
|
192
|
-
**Objectif** : La mémoire partagée sync entre 2 machines
|
|
193
|
-
|
|
194
|
-
| Tâche | Fichier | Description |
|
|
195
|
-
|---|---|---|
|
|
196
|
-
| 2.1 | `src/memory/PostgresMemoryProvider.ts` | **PATCH** : storeKnowledge() écrit aussi dans core si `shared=true` |
|
|
197
|
-
| 2.2 | `src/memory/DistributedMemoryProvider.ts` | Nouveau provider qui wrap PostgresMemory + RPC relay |
|
|
198
|
-
| 2.3 | `src/rpc/methods/memory_search.ts` | RPC method : chercher dans la mémoire d'un noeud distant |
|
|
199
|
-
| 2.4 | `src/rpc/methods/memory_store.ts` | RPC method : écrire dans la mémoire partagée distante |
|
|
200
|
-
| 2.5 | `src/memory/SyncEngine.ts` | Moteur de sync incrémental (last_sync_timestamp) |
|
|
201
|
-
| 2.6 | `src/memory/VectorIndexCache.ts` | Cache local des embeddings distants pour search rapide |
|
|
202
|
-
|
|
203
|
-
**Livrable** : Agent sur Machine A peut chercher dans la mémoire de Machine B.
|
|
204
|
-
|
|
205
|
-
### Phase 3 — Exécution Distribuée (2-3 semaines)
|
|
206
|
-
|
|
207
|
-
**Objectif** : Lancer un agent sur une machine distante
|
|
208
|
-
|
|
209
|
-
| Tâche | Fichier | Description |
|
|
210
|
-
|---|---|---|
|
|
211
|
-
| 3.1 | `src/rpc/methods/agent_run.ts` | RPC method : lancer un agent distant |
|
|
212
|
-
| 3.2 | `src/rpc/methods/agent_stream.ts` | Stream output d'un agent distant via WebSocket |
|
|
213
|
-
| 3.3 | `src/tools/run_agent.ts` | **PATCH** : ajout du paramètre `targetNode?` |
|
|
214
|
-
| 3.4 | `src/tools/run_agents_parallel.ts` | **PATCH** : dispatch sur plusieurs noeuds |
|
|
215
|
-
| 3.5 | `src/lib/NodeSelector.ts` | Sélection intelligente du noeud (latence, charge, capabilities) |
|
|
216
|
-
| 3.6 | `src/lib/TaskQueue.ts` | File d'attente distribuée (priority, retry, failover) |
|
|
217
|
-
|
|
218
|
-
**Livrable** : `run_agents_parallel` distribue les tâches sur Machine A et Machine B.
|
|
219
|
-
|
|
220
|
-
### Phase 4 — Résilience & Consensus (2 semaines)
|
|
221
|
-
|
|
222
|
-
**Objectif** : Le réseau survit à la perte d'un noeud
|
|
223
|
-
|
|
224
|
-
| Tâche | Fichier | Description |
|
|
225
|
-
|---|---|---|
|
|
226
|
-
| 4.1 | `src/rpc/HealthMonitor.ts` | Heartbeat entre noeuds, détection de panne |
|
|
227
|
-
| 4.2 | `src/rpc/Failover.ts` | Bascule automatique si un noeud meurt |
|
|
228
|
-
| 4.3 | `src/memory/ConflictResolver.ts` | Résolution de conflits (last-write-wins ou vector clocks) |
|
|
229
|
-
| 4.4 | `src/rpc/methods/consensus.ts` | Consensus simple (majorité) pour décisions collectives |
|
|
230
|
-
| 4.5 | `src/lib/ProcessMigration.ts` | Migration d'un agent d'un noeud à l'autre |
|
|
231
|
-
|
|
232
|
-
**Livrable** : Si Machine B meurt, Machine A prend le relais.
|
|
233
|
-
|
|
234
|
-
### Phase 5 — Couche Blockchain RCP (3-4 semaines)
|
|
235
|
-
|
|
236
|
-
**Objectif** : Overmind devient un noeud d'un réseau agentique décentralisé
|
|
237
|
-
|
|
238
|
-
| Tâche | Description |
|
|
239
|
-
|---|---|
|
|
240
|
-
| 5.1 | Smart contract de registration d'agent (Solidity → Base/Arbitrum) |
|
|
241
|
-
| 5.2 | Agent Commerce Protocol : agents qui paient des agents |
|
|
242
|
-
| 5.3 | Token de récompense pour contribution intellectuelle |
|
|
243
|
-
| 5.4 | Discovery on-chain : trouver des agents sur le réseau mondial |
|
|
244
|
-
| 5.5 | Vérifiable execution : preuve cryptographique qu'un agent a touré (TEE) |
|
|
245
|
-
| 5.6 | Agent Wallet : chaque agent a son propre wallet on-chain |
|
|
246
|
-
|
|
247
|
-
**Livrable** : Overmind est un noeud du réseau blockchain agentique RCP.
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
## 🔐 SÉCURITÉ — Modèle de Confiance
|
|
252
|
-
|
|
253
|
-
```
|
|
254
|
-
NIVEAU 1 : Pair-à-pair privé (Phase 1-4)
|
|
255
|
-
→ 2 machines qu'on contrôle
|
|
256
|
-
→ Auth par keypair Ed25519
|
|
257
|
-
→ TLS obligatoire
|
|
258
|
-
→ Pas de tokenomics nécessaire
|
|
259
|
-
|
|
260
|
-
NIVEAU 2 : Réseau ouvert (Phase 5)
|
|
261
|
-
→ N'importe qui peut rejoindre
|
|
262
|
-
→ Staking + slashing pour mauvais comportement
|
|
263
|
-
→ Réputation on-chain
|
|
264
|
-
→ Audit trail immuable
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## 📐 ARCHITECTURE CIBLE
|
|
270
|
-
|
|
271
|
-
```
|
|
272
|
-
┌─────────────────────────┐
|
|
273
|
-
│ BLOCKCHAIN LAYER │
|
|
274
|
-
│ (Base / Arbitrum) │
|
|
275
|
-
│ │
|
|
276
|
-
│ • Agent Registry │
|
|
277
|
-
│ • Commerce Protocol │
|
|
278
|
-
│ • Token Rewards │
|
|
279
|
-
│ • Discovery │
|
|
280
|
-
└──────────┬───────────────┘
|
|
281
|
-
│
|
|
282
|
-
┌──────────┴───────────────┐
|
|
283
|
-
│ OVERMIND NODE │
|
|
284
|
-
│ │
|
|
285
|
-
│ ┌─────────────────────┐ │
|
|
286
|
-
│ │ RPC Relay :3100 │ │
|
|
287
|
-
│ │ (WebSocket + HTTP) │ │
|
|
288
|
-
│ └────────┬────────────┘ │
|
|
289
|
-
│ │ │
|
|
290
|
-
│ ┌────────┴────────────┐ │
|
|
291
|
-
│ │ MCP Server :3099 │ │
|
|
292
|
-
│ │ (14 outils + RPC) │ │
|
|
293
|
-
│ └────────┬────────────┘ │
|
|
294
|
-
│ │ │
|
|
295
|
-
│ ┌────────┴────────────┐ │
|
|
296
|
-
│ │ Memory Layer │ │
|
|
297
|
-
│ │ • Local (agent_*) │ │
|
|
298
|
-
│ │ • Shared (core) │ │
|
|
299
|
-
│ │ • Network (RPC) │ │
|
|
300
|
-
│ └────────┬────────────┘ │
|
|
301
|
-
│ │ │
|
|
302
|
-
│ ┌────────┴────────────┐ │
|
|
303
|
-
│ │ Agent Runners │ │
|
|
304
|
-
│ │ claude/hermes/kilo │ │
|
|
305
|
-
│ └─────────────────────┘ │
|
|
306
|
-
└──────────────────────────┘
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
---
|
|
310
|
-
|
|
311
|
-
## 🚀 QUICK WINS — Ce qu'on peut faire MAINTENANT
|
|
312
|
-
|
|
313
|
-
### 1. Patch mémoire partagée (30 min)
|
|
314
|
-
|
|
315
|
-
```typescript
|
|
316
|
-
// Dans PostgresMemoryProvider.ts, modifier storeKnowledge()
|
|
317
|
-
async storeKnowledge(params: {
|
|
318
|
-
text: string;
|
|
319
|
-
source?: string;
|
|
320
|
-
agentName?: string;
|
|
321
|
-
shared?: boolean; // ← NOUVEAU
|
|
322
|
-
}): Promise<string> {
|
|
323
|
-
// Écrire dans DB agent (local, toujours)
|
|
324
|
-
const agentDbName = this.getDbName(params.agentName);
|
|
325
|
-
const agentPool = await this.getPoolFor(agentDbName);
|
|
326
|
-
await this.initializeDb(agentDbName, agentPool);
|
|
327
|
-
|
|
328
|
-
const id = `k_${sha256(params.text)}_${randomId()}`;
|
|
329
|
-
const source = params.agentName ? `agent|${params.agentName}` : (params.source || 'user');
|
|
330
|
-
const { embedding, model } = await embedText(params.text);
|
|
331
|
-
const embStr = embedding.length > 0 ? `[${embedding.join(',')}]` : null;
|
|
332
|
-
|
|
333
|
-
await agentPool.query(
|
|
334
|
-
`INSERT INTO knowledge_chunks (id, source, text, embedding, model)
|
|
335
|
-
VALUES ($1, $2, $3, $4, $5)
|
|
336
|
-
ON CONFLICT (id) DO UPDATE SET text = EXCLUDED.text, embedding = EXCLUDED.embedding,
|
|
337
|
-
updated_at = extract(epoch from now()) * 1000`,
|
|
338
|
-
[id, source, params.text, embStr, model]
|
|
339
|
-
);
|
|
340
|
-
|
|
341
|
-
// Si partagé → écrire AUSSI dans overmind_core
|
|
342
|
-
if (params.shared && params.agentName) {
|
|
343
|
-
const corePool = await this.getPoolFor(this.coreDbName);
|
|
344
|
-
await this.initializeDb(this.coreDbName, corePool);
|
|
345
|
-
const coreId = `k_shared_${sha256(params.text)}_${randomId()}`;
|
|
346
|
-
await corePool.query(
|
|
347
|
-
`INSERT INTO knowledge_chunks (id, source, text, embedding, model)
|
|
348
|
-
VALUES ($1, $2, $3, $4, $5)
|
|
349
|
-
ON CONFLICT (id) DO UPDATE SET text = EXCLUDED.text, embedding = EXCLUDED.embedding,
|
|
350
|
-
updated_at = extract(epoch from now()) * 1000`,
|
|
351
|
-
[coreId, `shared|${params.agentName}`, params.text, embStr, model]
|
|
352
|
-
);
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
return id;
|
|
356
|
-
}
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
### 2. Config .env pour distributed
|
|
360
|
-
|
|
361
|
-
```env
|
|
362
|
-
# Overmind Distributed Config
|
|
363
|
-
OVERMIND_NODE_ID=overmind_paris
|
|
364
|
-
OVERMIND_RPC_PORT=3100
|
|
365
|
-
OVERMIND_RPC_ENABLED=true
|
|
366
|
-
|
|
367
|
-
# Peers (format: nodeId:host:port)
|
|
368
|
-
OVERMIND_PEERS=overmind_lyon:192.168.1.50:3100
|
|
369
|
-
|
|
370
|
-
# Security
|
|
371
|
-
OVERMIND_NODE_PRIVATE_KEY=<ed25519_key>
|
|
372
|
-
OVERMIND_TLS_ENABLED=true
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
### 3. Tunnel entre 2 machines (immédiat, sans code)
|
|
376
|
-
|
|
377
|
-
```bash
|
|
378
|
-
# Machine A (Paris) — tunnel SSH vers Machine B
|
|
379
|
-
ssh -R 3100:localhost:3100 user@machine-b-ip
|
|
380
|
-
|
|
381
|
-
# Ou avec WireGuard (meilleur pour prod)
|
|
382
|
-
wg-quick up overmind-vpn
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
---
|
|
386
|
-
|
|
387
|
-
## 📊 TIMELINE
|
|
388
|
-
|
|
389
|
-
```
|
|
390
|
-
Semaine 1-3 : Phase 1 — RPC Foundations
|
|
391
|
-
Semaine 4-5 : Phase 2 — Distributed Memory
|
|
392
|
-
Semaine 6-8 : Phase 3 — Distributed Execution
|
|
393
|
-
Semaine 9-10 : Phase 4 — Resilience & Consensus
|
|
394
|
-
Semaine 11-14 : Phase 5 — Blockchain RCP Layer
|
|
395
|
-
|
|
396
|
-
Total estimé : ~14 semaines (3.5 mois)
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
---
|
|
400
|
-
|
|
401
|
-
## 🎯 INDICATEURS DE SUCCÈS
|
|
402
|
-
|
|
403
|
-
| Phase | KPI | Target |
|
|
404
|
-
|---|---|---|
|
|
405
|
-
| Phase 1 | Latence RPC inter-noeuds | < 100ms |
|
|
406
|
-
| Phase 2 | Search mémoire distante | < 500ms |
|
|
407
|
-
| Phase 3 | Dispatch multi-noeuds | Transparent pour l'utilisateur |
|
|
408
|
-
| Phase 4 | Uptime avec 1 noeud down | 99.9% |
|
|
409
|
-
| Phase 5 | Agents on-chain | 10+ agents enregistrés |
|
|
410
|
-
|
|
411
|
-
---
|
|
412
|
-
|
|
413
|
-
*Plan généré par Sniperbot Analyst — 2 Juin 2026*
|
|
414
|
-
*Basé sur l'audit du code source Overmind actuel*
|