overmind-mcp 2.8.15 → 2.8.21
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.
|
@@ -7,311 +7,311 @@ export const configExampleSchema = z.object({
|
|
|
7
7
|
export async function configExample(args) {
|
|
8
8
|
const { provider } = args;
|
|
9
9
|
let text = '';
|
|
10
|
-
const interpolationNotice = `
|
|
11
|
-
💡 **NOUVEAUTÉ : INTERPOLATION DE VARIABLES**
|
|
12
|
-
Vous pouvez désormais utiliser des variables du fichier \`.env\` dans vos fichiers \`settings_[agent].json\`.
|
|
13
|
-
Les variables commençant par \`$\` seront automatiquement remplacées par leur valeur réelle au moment de l'exécution.
|
|
10
|
+
const interpolationNotice = `
|
|
11
|
+
💡 **NOUVEAUTÉ : INTERPOLATION DE VARIABLES**
|
|
12
|
+
Vous pouvez désormais utiliser des variables du fichier \`.env\` dans vos fichiers \`settings_[agent].json\`.
|
|
13
|
+
Les variables commençant par \`$\` seront automatiquement remplacées par leur valeur réelle au moment de l'exécution.
|
|
14
14
|
`;
|
|
15
15
|
switch (provider) {
|
|
16
16
|
case 'glm':
|
|
17
|
-
text = `🚀 **EXEMPLE DE CONFIGURATION POUR GLM / Z.AI (ANTHROPIC PROXY)**
|
|
18
|
-
|
|
19
|
-
### 📂 settings_[nom_agent].json
|
|
20
|
-
\`\`\`json
|
|
21
|
-
{
|
|
22
|
-
"env": {
|
|
23
|
-
"ANTHROPIC_MODEL": "$ANTHROPIC_MODEL_Z",
|
|
24
|
-
"ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_Y",
|
|
25
|
-
"ANTHROPIC_AUTH_TOKEN_FALLBACK": "$ANTHROPIC_AUTH_TOKEN_E",
|
|
26
|
-
"ANTHROPIC_BASE_URL": "$ANTHROPIC_BASE_URL_Z"
|
|
27
|
-
},
|
|
28
|
-
"enableAllProjectMcpServers": false,
|
|
29
|
-
"enabledMcpjsonServers": [
|
|
30
|
-
"postgresql-server",
|
|
31
|
-
"memory"
|
|
32
|
-
],
|
|
33
|
-
"agent": "nom_agent",
|
|
34
|
-
"runner": "claude"
|
|
35
|
-
}
|
|
36
|
-
\`\`\`
|
|
37
|
-
|
|
38
|
-
### 📂 .env correspondant
|
|
39
|
-
\`\`\`
|
|
40
|
-
# Z.AI Configuration
|
|
41
|
-
ANTHROPIC_BASE_URL_Z=https://api.z.ai/api/anthropic
|
|
42
|
-
ANTHROPIC_MODEL_Z=glm-5.1
|
|
43
|
-
ANTHROPIC_AUTH_TOKEN_Y=your_primary_token_here
|
|
44
|
-
ANTHROPIC_AUTH_TOKEN_E=your_fallback_token_here
|
|
45
|
-
\`\`\`
|
|
46
|
-
|
|
47
|
-
**Modèles GLM disponibles :**
|
|
48
|
-
- \`glm-5.1\` - Flagship modèle (recommandé)
|
|
49
|
-
- \`glm-5\` - Performances solides
|
|
50
|
-
- \`glm-4.5-air\` - Modèle léger et coût-efficace
|
|
51
|
-
|
|
52
|
-
**Fallback automatique :**
|
|
53
|
-
- Utilise \`ANTHROPIC_AUTH_TOKEN_Y\` par défaut
|
|
54
|
-
- En cas d'erreur 401/429/5xx, bascule automatiquement sur \`ANTHROPIC_AUTH_TOKEN_E\`
|
|
55
|
-
|
|
17
|
+
text = `🚀 **EXEMPLE DE CONFIGURATION POUR GLM / Z.AI (ANTHROPIC PROXY)**
|
|
18
|
+
|
|
19
|
+
### 📂 settings_[nom_agent].json
|
|
20
|
+
\`\`\`json
|
|
21
|
+
{
|
|
22
|
+
"env": {
|
|
23
|
+
"ANTHROPIC_MODEL": "$ANTHROPIC_MODEL_Z",
|
|
24
|
+
"ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_Y",
|
|
25
|
+
"ANTHROPIC_AUTH_TOKEN_FALLBACK": "$ANTHROPIC_AUTH_TOKEN_E",
|
|
26
|
+
"ANTHROPIC_BASE_URL": "$ANTHROPIC_BASE_URL_Z"
|
|
27
|
+
},
|
|
28
|
+
"enableAllProjectMcpServers": false,
|
|
29
|
+
"enabledMcpjsonServers": [
|
|
30
|
+
"postgresql-server",
|
|
31
|
+
"memory"
|
|
32
|
+
],
|
|
33
|
+
"agent": "nom_agent",
|
|
34
|
+
"runner": "claude"
|
|
35
|
+
}
|
|
36
|
+
\`\`\`
|
|
37
|
+
|
|
38
|
+
### 📂 .env correspondant
|
|
39
|
+
\`\`\`
|
|
40
|
+
# Z.AI Configuration
|
|
41
|
+
ANTHROPIC_BASE_URL_Z=https://api.z.ai/api/anthropic
|
|
42
|
+
ANTHROPIC_MODEL_Z=glm-5.1
|
|
43
|
+
ANTHROPIC_AUTH_TOKEN_Y=your_primary_token_here
|
|
44
|
+
ANTHROPIC_AUTH_TOKEN_E=your_fallback_token_here
|
|
45
|
+
\`\`\`
|
|
46
|
+
|
|
47
|
+
**Modèles GLM disponibles :**
|
|
48
|
+
- \`glm-5.1\` - Flagship modèle (recommandé)
|
|
49
|
+
- \`glm-5\` - Performances solides
|
|
50
|
+
- \`glm-4.5-air\` - Modèle léger et coût-efficace
|
|
51
|
+
|
|
52
|
+
**Fallback automatique :**
|
|
53
|
+
- Utilise \`ANTHROPIC_AUTH_TOKEN_Y\` par défaut
|
|
54
|
+
- En cas d'erreur 401/429/5xx, bascule automatiquement sur \`ANTHROPIC_AUTH_TOKEN_E\`
|
|
55
|
+
|
|
56
56
|
${interpolationNotice}`;
|
|
57
57
|
break;
|
|
58
58
|
case 'ilmu':
|
|
59
|
-
text = `🚀 **EXEMPLE DE CONFIGURATION POUR ILMU AI**
|
|
60
|
-
|
|
61
|
-
### 📂 settings_[nom_agent].json
|
|
62
|
-
\`\`\`json
|
|
63
|
-
{
|
|
64
|
-
"env": {
|
|
65
|
-
"ANTHROPIC_MODEL": "$Z_AI_MODEL", // Interpolé depuis le .env
|
|
66
|
-
"ANTHROPIC_AUTH_TOKEN": "$Z_AI_API_KEY",
|
|
67
|
-
"ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL",
|
|
68
|
-
"API_TIMEOUT_MS": "900000"
|
|
69
|
-
},
|
|
70
|
-
"enableAllProjectMcpServers": false,
|
|
71
|
-
"enabledMcpjsonServers": [
|
|
72
|
-
"postgresql-server",
|
|
73
|
-
"memory",
|
|
74
|
-
"discord-server"
|
|
75
|
-
],
|
|
76
|
-
"agent": "ilmu_agent",
|
|
77
|
-
"runner": "kilo"
|
|
78
|
-
}
|
|
79
|
-
\`\`\`
|
|
59
|
+
text = `🚀 **EXEMPLE DE CONFIGURATION POUR ILMU AI**
|
|
60
|
+
|
|
61
|
+
### 📂 settings_[nom_agent].json
|
|
62
|
+
\`\`\`json
|
|
63
|
+
{
|
|
64
|
+
"env": {
|
|
65
|
+
"ANTHROPIC_MODEL": "$Z_AI_MODEL", // Interpolé depuis le .env
|
|
66
|
+
"ANTHROPIC_AUTH_TOKEN": "$Z_AI_API_KEY",
|
|
67
|
+
"ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL",
|
|
68
|
+
"API_TIMEOUT_MS": "900000"
|
|
69
|
+
},
|
|
70
|
+
"enableAllProjectMcpServers": false,
|
|
71
|
+
"enabledMcpjsonServers": [
|
|
72
|
+
"postgresql-server",
|
|
73
|
+
"memory",
|
|
74
|
+
"discord-server"
|
|
75
|
+
],
|
|
76
|
+
"agent": "ilmu_agent",
|
|
77
|
+
"runner": "kilo"
|
|
78
|
+
}
|
|
79
|
+
\`\`\`
|
|
80
80
|
${interpolationNotice}`;
|
|
81
81
|
break;
|
|
82
82
|
case 'minimax':
|
|
83
|
-
text = `🚀 **EXEMPLE DE CONFIGURATION POUR MINIMAX (VIA PROXY ANTHROPIC)**
|
|
84
|
-
|
|
85
|
-
### 📂 settings_[nom_agent].json
|
|
86
|
-
\`\`\`json
|
|
87
|
-
{
|
|
88
|
-
"env": {
|
|
89
|
-
"ANTHROPIC_BASE_URL": "https://api.minimax.io/anthropic",
|
|
90
|
-
"MINIMAX_CN_API_KEY": "$MINIMAX_CN_API_KEY", // ⚠️ Provider minimax-cn: utilisez MINIMAX_CN_API_KEY (PAS ANTHROPIC_AUTH_TOKEN) — c'est le plugin minimax du binaire hermes v0.16.0 qui décide du nom de la variable.
|
|
91
|
-
"API_TIMEOUT_MS": "3000000",
|
|
92
|
-
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
|
|
93
|
-
"ANTHROPIC_MODEL": "The_Chaos_Prophet",
|
|
94
|
-
"ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-M2",
|
|
95
|
-
"ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-M2",
|
|
96
|
-
"ANTHROPIC_DEFAULT_OPUS_MODEL": "MiniMax-M2",
|
|
97
|
-
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-M2"
|
|
98
|
-
},
|
|
99
|
-
"agent": "nom_agent",
|
|
100
|
-
"runner": "claude"
|
|
101
|
-
}
|
|
102
|
-
\`\`\`
|
|
103
|
-
|
|
104
|
-
> **Note (Hermes runner + provider minimax-cn)** : le binaire Hermes lit le credential via la variable d'environnement attendue par le plugin provider minimax, soit \`MINIMAX_CN_API_KEY\`. Si vous utilisez \`ANTHROPIC_AUTH_TOKEN\` avec un provider minimax, Hermes upstream va silencieusement renvoyer 401 même si Overmind a la clé. Mapping complet des credentials par provider :
|
|
105
|
-
> - \`minimax-cn\` → \`MINIMAX_CN_API_KEY\`
|
|
106
|
-
> - \`minimax\` (alias) → \`MINIMAX_API_KEY\`
|
|
107
|
-
> - \`zai\` → \`GLM_API_KEY\` ou \`ZAI_ANTHROPIC_FALLBACK_KEY\`
|
|
108
|
-
> - \`z-ai\` → \`Z_AI_API_KEY\`
|
|
109
|
-
> - \`anthropic\` → \`ANTHROPIC_AUTH_TOKEN\` (accepte les suffixes \`_1.._5\`, \`_E\`, \`_F\`, \`_Y\`)
|
|
83
|
+
text = `🚀 **EXEMPLE DE CONFIGURATION POUR MINIMAX (VIA PROXY ANTHROPIC)**
|
|
84
|
+
|
|
85
|
+
### 📂 settings_[nom_agent].json
|
|
86
|
+
\`\`\`json
|
|
87
|
+
{
|
|
88
|
+
"env": {
|
|
89
|
+
"ANTHROPIC_BASE_URL": "https://api.minimax.io/anthropic",
|
|
90
|
+
"MINIMAX_CN_API_KEY": "$MINIMAX_CN_API_KEY", // ⚠️ Provider minimax-cn: utilisez MINIMAX_CN_API_KEY (PAS ANTHROPIC_AUTH_TOKEN) — c'est le plugin minimax du binaire hermes v0.16.0 qui décide du nom de la variable.
|
|
91
|
+
"API_TIMEOUT_MS": "3000000",
|
|
92
|
+
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
|
|
93
|
+
"ANTHROPIC_MODEL": "The_Chaos_Prophet",
|
|
94
|
+
"ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-M2",
|
|
95
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-M2",
|
|
96
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "MiniMax-M2",
|
|
97
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-M2"
|
|
98
|
+
},
|
|
99
|
+
"agent": "nom_agent",
|
|
100
|
+
"runner": "claude"
|
|
101
|
+
}
|
|
102
|
+
\`\`\`
|
|
103
|
+
|
|
104
|
+
> **Note (Hermes runner + provider minimax-cn)** : le binaire Hermes lit le credential via la variable d'environnement attendue par le plugin provider minimax, soit \`MINIMAX_CN_API_KEY\`. Si vous utilisez \`ANTHROPIC_AUTH_TOKEN\` avec un provider minimax, Hermes upstream va silencieusement renvoyer 401 même si Overmind a la clé. Mapping complet des credentials par provider :
|
|
105
|
+
> - \`minimax-cn\` → \`MINIMAX_CN_API_KEY\`
|
|
106
|
+
> - \`minimax\` (alias) → \`MINIMAX_API_KEY\`
|
|
107
|
+
> - \`zai\` → \`GLM_API_KEY\` ou \`ZAI_ANTHROPIC_FALLBACK_KEY\`
|
|
108
|
+
> - \`z-ai\` → \`Z_AI_API_KEY\`
|
|
109
|
+
> - \`anthropic\` → \`ANTHROPIC_AUTH_TOKEN\` (accepte les suffixes \`_1.._5\`, \`_E\`, \`_F\`, \`_Y\`)
|
|
110
110
|
${interpolationNotice}`;
|
|
111
111
|
break;
|
|
112
112
|
case 'openrouter':
|
|
113
|
-
text = `🚀 **EXEMPLE DE CONFIGURATION POUR OPENROUTER (VIA PROXY ANTHROPIC)**
|
|
114
|
-
|
|
115
|
-
### 📂 settings_[nom_agent].json
|
|
116
|
-
\`\`\`json
|
|
117
|
-
{
|
|
118
|
-
"env": {
|
|
119
|
-
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api/v1",
|
|
120
|
-
"ANTHROPIC_AUTH_TOKEN": "$OPENROUTER_API_KEY", // Utilisez une variable .env
|
|
121
|
-
"API_TIMEOUT_MS": "3000000",
|
|
122
|
-
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
|
|
123
|
-
"ANTHROPIC_MODEL": "anthropic/claude-3-5-sonnet",
|
|
124
|
-
"ANTHROPIC_SMALL_FAST_MODEL": "anthropic/claude-3-haiku",
|
|
125
|
-
"ANTHROPIC_DEFAULT_SONNET_MODEL": "anthropic/claude-3-5-sonnet",
|
|
126
|
-
"ANTHROPIC_DEFAULT_OPUS_MODEL": "anthropic/claude-3-opus",
|
|
127
|
-
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "anthropic/claude-3-haiku"
|
|
128
|
-
},
|
|
129
|
-
"agent": "nom_agent",
|
|
130
|
-
"runner": "claude"
|
|
131
|
-
}
|
|
132
|
-
\`\`\`
|
|
113
|
+
text = `🚀 **EXEMPLE DE CONFIGURATION POUR OPENROUTER (VIA PROXY ANTHROPIC)**
|
|
114
|
+
|
|
115
|
+
### 📂 settings_[nom_agent].json
|
|
116
|
+
\`\`\`json
|
|
117
|
+
{
|
|
118
|
+
"env": {
|
|
119
|
+
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api/v1",
|
|
120
|
+
"ANTHROPIC_AUTH_TOKEN": "$OPENROUTER_API_KEY", // Utilisez une variable .env
|
|
121
|
+
"API_TIMEOUT_MS": "3000000",
|
|
122
|
+
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
|
|
123
|
+
"ANTHROPIC_MODEL": "anthropic/claude-3-5-sonnet",
|
|
124
|
+
"ANTHROPIC_SMALL_FAST_MODEL": "anthropic/claude-3-haiku",
|
|
125
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "anthropic/claude-3-5-sonnet",
|
|
126
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "anthropic/claude-3-opus",
|
|
127
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "anthropic/claude-3-haiku"
|
|
128
|
+
},
|
|
129
|
+
"agent": "nom_agent",
|
|
130
|
+
"runner": "claude"
|
|
131
|
+
}
|
|
132
|
+
\`\`\`
|
|
133
133
|
${interpolationNotice}`;
|
|
134
134
|
break;
|
|
135
135
|
case 'minimaxi':
|
|
136
|
-
text = `🚀 **EXEMPLE DE CONFIGURATION POUR MINIMAXI (VERSION ALTERNATIVE)**
|
|
137
|
-
|
|
138
|
-
### 📂 settings_[nom_agent].json
|
|
139
|
-
\`\`\`json
|
|
140
|
-
{
|
|
141
|
-
"env": {
|
|
142
|
-
"ANTHROPIC_MODEL": "MiniMax-Text-01",
|
|
143
|
-
"ANTHROPIC_AUTH_TOKEN": "$MINIMAXI_API_KEY", // Configuré dans le .env
|
|
144
|
-
"ANTHROPIC_BASE_URL": "$MINIMAXI_BASE_URL",
|
|
145
|
-
"ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-Text-01",
|
|
146
|
-
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-Text-01",
|
|
147
|
-
"ANTHROPIC_DEFAULT_OPUS_MODEL": "MiniMax-Text-01",
|
|
148
|
-
"ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-Text-01",
|
|
149
|
-
"API_TIMEOUT_MS": "900000",
|
|
150
|
-
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
|
|
151
|
-
"agent": "minimax_agent"
|
|
152
|
-
},
|
|
153
|
-
"agent": "minimax_agent",
|
|
154
|
-
"runner": "claude"
|
|
155
|
-
}
|
|
156
|
-
\`\`\`
|
|
136
|
+
text = `🚀 **EXEMPLE DE CONFIGURATION POUR MINIMAXI (VERSION ALTERNATIVE)**
|
|
137
|
+
|
|
138
|
+
### 📂 settings_[nom_agent].json
|
|
139
|
+
\`\`\`json
|
|
140
|
+
{
|
|
141
|
+
"env": {
|
|
142
|
+
"ANTHROPIC_MODEL": "MiniMax-Text-01",
|
|
143
|
+
"ANTHROPIC_AUTH_TOKEN": "$MINIMAXI_API_KEY", // Configuré dans le .env
|
|
144
|
+
"ANTHROPIC_BASE_URL": "$MINIMAXI_BASE_URL",
|
|
145
|
+
"ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-Text-01",
|
|
146
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-Text-01",
|
|
147
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "MiniMax-Text-01",
|
|
148
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-Text-01",
|
|
149
|
+
"API_TIMEOUT_MS": "900000",
|
|
150
|
+
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
|
|
151
|
+
"agent": "minimax_agent"
|
|
152
|
+
},
|
|
153
|
+
"agent": "minimax_agent",
|
|
154
|
+
"runner": "claude"
|
|
155
|
+
}
|
|
156
|
+
\`\`\`
|
|
157
157
|
${interpolationNotice}`;
|
|
158
158
|
break;
|
|
159
159
|
// ─── OVERMIND: Guide complet $VAR + FALLBACK TOKENS ───
|
|
160
160
|
case 'overmind':
|
|
161
|
-
text = `🎯 **GUIDE COMPLET : SUBSTITUTION $VAR ET FALLBACK TOKENS**
|
|
162
|
-
|
|
163
|
-
Overmind supporte deux mécanismes puissants pour vos agents :
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
### 1️⃣ SUBSTITUTION $VAR (tous les runners)
|
|
168
|
-
|
|
169
|
-
Les settings de vos agents peuvent référencer des variables d'environnement du \`.env\` avec la syntaxe \`$NOM_VARIABLE\`.
|
|
170
|
-
|
|
171
|
-
\`\`\`json
|
|
172
|
-
{
|
|
173
|
-
"env": {
|
|
174
|
-
"ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_1",
|
|
175
|
-
"ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL"
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
\`\`\`
|
|
179
|
-
|
|
180
|
-
Au runtime, Overmind remplace automatiquement \`$ANTHROPIC_AUTH_TOKEN_1\` par sa valeur réelle depuis le \`.env\`.
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
### 2️⃣ RETRY AUTOMATIQUE SUR ERREUR (ClaudeRunner + KiloRunner)
|
|
185
|
-
|
|
186
|
-
Quand une erreur se produit, Overmind peut RETENTER automatiquement avec des tokens de secours.
|
|
187
|
-
|
|
188
|
-
**Erreurs retryables :**
|
|
189
|
-
- **401** : Auth failure (token invalide/expiré)
|
|
190
|
-
- **429** : Rate limit / quota exhausted (limite atteinte)
|
|
191
|
-
- **500, 502, 503** : Server error (erreur serveur)
|
|
192
|
-
|
|
193
|
-
**Détection texte stderr :** \`401\`, \`unauthorized\`, \`invalid api key\`, \`authentication failed\`, \`auth error\`, \`429\`, \`rate limit\`, \`quota exhausted\`, \`limit exhausted\`, \`503\`, \`service unavailable\`, \`500\`, \`internal server error\`
|
|
194
|
-
|
|
195
|
-
**Flow :** Token primaire → AUTH_FALLBACK_1 → AUTH_FALLBACK_2 → AUTH_FALLBACK_3 → ÉCHEC
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
### 📂 EXEMPLE COMPLET : ClaudeRunner avec 3 fallback tokens
|
|
200
|
-
|
|
201
|
-
\`\`\`json
|
|
202
|
-
{
|
|
203
|
-
"model": "claude-sonnet-4-20250514",
|
|
204
|
-
"env": {
|
|
205
|
-
"ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN", // Token principal
|
|
206
|
-
"AUTH_FALLBACK_1": "$ANTHROPIC_AUTH_TOKEN_2", // Si 401/429/5xx
|
|
207
|
-
"AUTH_FALLBACK_2": "$ANTHROPIC_AUTH_TOKEN_3", // Si encore échoué
|
|
208
|
-
"AUTH_FALLBACK_3": "$ANTHROPIC_AUTH_TOKEN_4" // Dernier recours
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
\`\`\`
|
|
212
|
-
|
|
213
|
-
**.env associé :**
|
|
214
|
-
\`\`\`
|
|
215
|
-
ANTHROPIC_AUTH_TOKEN=sk-cp-primary... # Token principal ( utilisation normale )
|
|
216
|
-
ANTHROPIC_AUTH_TOKEN_2=sk-cp-xxx... # Fallback #1
|
|
217
|
-
ANTHROPIC_AUTH_TOKEN_3=sk-cp-yyy... # Fallback #2
|
|
218
|
-
ANTHROPIC_AUTH_TOKEN_4=sk-cp-zzz... # Fallback #3
|
|
219
|
-
\`\`\`
|
|
220
|
-
|
|
221
|
-
**Comment ça marche :**
|
|
222
|
-
1. L'agent commence avec \`ANTHROPIC_AUTH_TOKEN\` = \`$ANTHROPIC_AUTH_TOKEN\` → résolu → \`sk-cp-primary...\`
|
|
223
|
-
2. Si erreur 401/429/5xx → retry avec \`AUTH_FALLBACK_1\` → \`sk-cp-xxx...\`
|
|
224
|
-
3. Si encore échec → retry avec \`AUTH_FALLBACK_2\` → \`sk-cp-yyy...\`
|
|
225
|
-
4. Si encore échec → retry avec \`AUTH_FALLBACK_3\` → \`sk-cp-zzz...\`
|
|
226
|
-
5. Si encore échec → \`RETRYABLE_ERROR_ALL_FALLBACKS_EXHAUSTED\`
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
|
|
230
|
-
### 📂 EXEMPLE COMPLET : KiloRunner avec fallback
|
|
231
|
-
|
|
232
|
-
\`\`\`json
|
|
233
|
-
{
|
|
234
|
-
"model": "claude-sonnet-4-20250514",
|
|
235
|
-
"env": {
|
|
236
|
-
"OPENAI_API_KEY": "$ANTHROPIC_AUTH_TOKEN", // Clé primaire Kilo
|
|
237
|
-
"AUTH_FALLBACK_1": "$ANTHROPIC_AUTH_TOKEN_2", // Fallback #1
|
|
238
|
-
"AUTH_FALLBACK_2": "$ANTHROPIC_AUTH_TOKEN_3", // Fallback #2
|
|
239
|
-
"AUTH_FALLBACK_3": "$ANTHROPIC_AUTH_TOKEN_4" // Fallback #3
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
\`\`\`
|
|
243
|
-
|
|
244
|
-
> Kilo utilise \`OPENAI_API_KEY\` comme clé primaire (compatible OpenAI / OpenRouter / etc.).
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
### 📂 EXEMPLE : Variable $VAR simple (sans fallback)
|
|
249
|
-
|
|
250
|
-
\`\`\`json
|
|
251
|
-
{
|
|
252
|
-
"model": "claude-sonnet-4-20250514",
|
|
253
|
-
"env": {
|
|
254
|
-
"ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN",
|
|
255
|
-
"ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL",
|
|
256
|
-
"API_TIMEOUT_MS": "$API_TIMEOUT_MS"
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
\`\`\`
|
|
260
|
-
|
|
261
|
-
Les \`$VAR\` peuvent être sur n'importe quelle valeur de \`env\`.
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
### ⚠️ RÈGLES IMPORTANTES
|
|
266
|
-
|
|
267
|
-
- Les clés \`AUTH_FALLBACK_1\`, \`AUTH_FALLBACK_2\`, \`AUTH_FALLBACK_3\` sont réservées par Overmind pour le retry automatique.
|
|
268
|
-
- La substitution est à **un seul niveau** : \`$MINIMAXI_API_KEY\` est remplacé, mais pas récursivement.
|
|
269
|
-
- Les tokens sont résolus **avant** le spawn de l'agent.
|
|
270
|
-
- Le retry fonctionne sur erreur **401 (auth), 429 (rate limit), 500/502/503 (server error)** — pas sur les erreurs de réseau simples (timeout, DNS...).
|
|
271
|
-
- Chaque token fallback ne sera testé qu'une seule fois par session d'agent.
|
|
161
|
+
text = `🎯 **GUIDE COMPLET : SUBSTITUTION $VAR ET FALLBACK TOKENS**
|
|
162
|
+
|
|
163
|
+
Overmind supporte deux mécanismes puissants pour vos agents :
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
### 1️⃣ SUBSTITUTION $VAR (tous les runners)
|
|
168
|
+
|
|
169
|
+
Les settings de vos agents peuvent référencer des variables d'environnement du \`.env\` avec la syntaxe \`$NOM_VARIABLE\`.
|
|
170
|
+
|
|
171
|
+
\`\`\`json
|
|
172
|
+
{
|
|
173
|
+
"env": {
|
|
174
|
+
"ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_1",
|
|
175
|
+
"ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL"
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
\`\`\`
|
|
179
|
+
|
|
180
|
+
Au runtime, Overmind remplace automatiquement \`$ANTHROPIC_AUTH_TOKEN_1\` par sa valeur réelle depuis le \`.env\`.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
### 2️⃣ RETRY AUTOMATIQUE SUR ERREUR (ClaudeRunner + KiloRunner)
|
|
185
|
+
|
|
186
|
+
Quand une erreur se produit, Overmind peut RETENTER automatiquement avec des tokens de secours.
|
|
187
|
+
|
|
188
|
+
**Erreurs retryables :**
|
|
189
|
+
- **401** : Auth failure (token invalide/expiré)
|
|
190
|
+
- **429** : Rate limit / quota exhausted (limite atteinte)
|
|
191
|
+
- **500, 502, 503** : Server error (erreur serveur)
|
|
192
|
+
|
|
193
|
+
**Détection texte stderr :** \`401\`, \`unauthorized\`, \`invalid api key\`, \`authentication failed\`, \`auth error\`, \`429\`, \`rate limit\`, \`quota exhausted\`, \`limit exhausted\`, \`503\`, \`service unavailable\`, \`500\`, \`internal server error\`
|
|
194
|
+
|
|
195
|
+
**Flow :** Token primaire → AUTH_FALLBACK_1 → AUTH_FALLBACK_2 → AUTH_FALLBACK_3 → ÉCHEC
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
### 📂 EXEMPLE COMPLET : ClaudeRunner avec 3 fallback tokens
|
|
200
|
+
|
|
201
|
+
\`\`\`json
|
|
202
|
+
{
|
|
203
|
+
"model": "claude-sonnet-4-20250514",
|
|
204
|
+
"env": {
|
|
205
|
+
"ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN", // Token principal
|
|
206
|
+
"AUTH_FALLBACK_1": "$ANTHROPIC_AUTH_TOKEN_2", // Si 401/429/5xx
|
|
207
|
+
"AUTH_FALLBACK_2": "$ANTHROPIC_AUTH_TOKEN_3", // Si encore échoué
|
|
208
|
+
"AUTH_FALLBACK_3": "$ANTHROPIC_AUTH_TOKEN_4" // Dernier recours
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
\`\`\`
|
|
212
|
+
|
|
213
|
+
**.env associé :**
|
|
214
|
+
\`\`\`
|
|
215
|
+
ANTHROPIC_AUTH_TOKEN=sk-cp-primary... # Token principal ( utilisation normale )
|
|
216
|
+
ANTHROPIC_AUTH_TOKEN_2=sk-cp-xxx... # Fallback #1
|
|
217
|
+
ANTHROPIC_AUTH_TOKEN_3=sk-cp-yyy... # Fallback #2
|
|
218
|
+
ANTHROPIC_AUTH_TOKEN_4=sk-cp-zzz... # Fallback #3
|
|
219
|
+
\`\`\`
|
|
220
|
+
|
|
221
|
+
**Comment ça marche :**
|
|
222
|
+
1. L'agent commence avec \`ANTHROPIC_AUTH_TOKEN\` = \`$ANTHROPIC_AUTH_TOKEN\` → résolu → \`sk-cp-primary...\`
|
|
223
|
+
2. Si erreur 401/429/5xx → retry avec \`AUTH_FALLBACK_1\` → \`sk-cp-xxx...\`
|
|
224
|
+
3. Si encore échec → retry avec \`AUTH_FALLBACK_2\` → \`sk-cp-yyy...\`
|
|
225
|
+
4. Si encore échec → retry avec \`AUTH_FALLBACK_3\` → \`sk-cp-zzz...\`
|
|
226
|
+
5. Si encore échec → \`RETRYABLE_ERROR_ALL_FALLBACKS_EXHAUSTED\`
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
### 📂 EXEMPLE COMPLET : KiloRunner avec fallback
|
|
231
|
+
|
|
232
|
+
\`\`\`json
|
|
233
|
+
{
|
|
234
|
+
"model": "claude-sonnet-4-20250514",
|
|
235
|
+
"env": {
|
|
236
|
+
"OPENAI_API_KEY": "$ANTHROPIC_AUTH_TOKEN", // Clé primaire Kilo
|
|
237
|
+
"AUTH_FALLBACK_1": "$ANTHROPIC_AUTH_TOKEN_2", // Fallback #1
|
|
238
|
+
"AUTH_FALLBACK_2": "$ANTHROPIC_AUTH_TOKEN_3", // Fallback #2
|
|
239
|
+
"AUTH_FALLBACK_3": "$ANTHROPIC_AUTH_TOKEN_4" // Fallback #3
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
\`\`\`
|
|
243
|
+
|
|
244
|
+
> Kilo utilise \`OPENAI_API_KEY\` comme clé primaire (compatible OpenAI / OpenRouter / etc.).
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
### 📂 EXEMPLE : Variable $VAR simple (sans fallback)
|
|
249
|
+
|
|
250
|
+
\`\`\`json
|
|
251
|
+
{
|
|
252
|
+
"model": "claude-sonnet-4-20250514",
|
|
253
|
+
"env": {
|
|
254
|
+
"ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN",
|
|
255
|
+
"ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL",
|
|
256
|
+
"API_TIMEOUT_MS": "$API_TIMEOUT_MS"
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
\`\`\`
|
|
260
|
+
|
|
261
|
+
Les \`$VAR\` peuvent être sur n'importe quelle valeur de \`env\`.
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
### ⚠️ RÈGLES IMPORTANTES
|
|
266
|
+
|
|
267
|
+
- Les clés \`AUTH_FALLBACK_1\`, \`AUTH_FALLBACK_2\`, \`AUTH_FALLBACK_3\` sont réservées par Overmind pour le retry automatique.
|
|
268
|
+
- La substitution est à **un seul niveau** : \`$MINIMAXI_API_KEY\` est remplacé, mais pas récursivement.
|
|
269
|
+
- Les tokens sont résolus **avant** le spawn de l'agent.
|
|
270
|
+
- Le retry fonctionne sur erreur **401 (auth), 429 (rate limit), 500/502/503 (server error)** — pas sur les erreurs de réseau simples (timeout, DNS...).
|
|
271
|
+
- Chaque token fallback ne sera testé qu'une seule fois par session d'agent.
|
|
272
272
|
- Si tous les fallbacks sont épuisés, l'erreur finale est \`RETRYABLE_ERROR_ALL_FALLBACKS_EXHAUSTED\`.`;
|
|
273
273
|
break;
|
|
274
274
|
case 'hermes':
|
|
275
|
-
text = `🤖 **EXEMPLE DE CONFIGURATION POUR HERMES (NOUS AGENT)**
|
|
276
|
-
|
|
277
|
-
### 📂 .claude/settings_[nom_agent].json
|
|
278
|
-
\`\`\`json
|
|
279
|
-
{
|
|
280
|
-
"model": "MiniMax-M2.7",
|
|
281
|
-
"env": {
|
|
282
|
-
"HERMES_AUTH_TOKEN": "$HERMES_AUTH_TOKEN",
|
|
283
|
-
"HERMES_BASE_URL": "$HERMES_BASE_URL",
|
|
284
|
-
"HERMES_MODEL": "MiniMax-M2.7",
|
|
285
|
-
"MAX_TOKENS": "16000"
|
|
286
|
-
},
|
|
287
|
-
"enableAllProjectMcpServers": false,
|
|
288
|
-
"enabledMcpjsonServers": [
|
|
289
|
-
"postgresql-server",
|
|
290
|
-
"memory"
|
|
291
|
-
],
|
|
292
|
-
"agent": "nom_agent",
|
|
293
|
-
"runner": "hermes"
|
|
294
|
-
}
|
|
295
|
-
\`\`\`
|
|
296
|
-
|
|
297
|
-
### 📂 .env correspondant
|
|
298
|
-
\`\`\`
|
|
299
|
-
# Hermes / Nous Agent Configuration
|
|
300
|
-
HERMES_AUTH_TOKEN=your_hermes_token_here
|
|
301
|
-
HERMES_BASE_URL=https://api.minimax.io
|
|
302
|
-
MAX_TOKENS=16000
|
|
303
|
-
\`\`\`
|
|
304
|
-
|
|
305
|
-
**Comment ça marche :**
|
|
306
|
-
- Hermes utilise les **3 fichiers standard** comme les autres runners : \`.claude/settings_[agent].json\`, \`.claude/agents/[agent].md\`, \`.claude/.mcp.[agent].json\`
|
|
307
|
-
- Le modèle par défaut est \`MiniMax-M2.7\` (défini dans \`CONFIG.HERMES.DEFAULT_MODEL\`)
|
|
308
|
-
- Les agents sont définis via \`PromptManager\` (\`.claude/agents/[nom].md\`)
|
|
309
|
-
- Les MCP servers sont configurés via \`.claude/.mcp.[agent].json\` (même format que Claude/Kilo)
|
|
310
|
-
- HERMES_DIR est automatiquement injecté au spawn pour l'isolation
|
|
311
|
-
- Pas de fallback token intégré (contrairement à Claude/Kilo) — à implémenter via le réseau de tokens Overmind si besoin
|
|
312
|
-
|
|
313
|
-
**Modèle par défaut :** \`MiniMax-M2.7\` (via \`CONFIG.HERMES.DEFAULT_MODEL\`)
|
|
314
|
-
|
|
275
|
+
text = `🤖 **EXEMPLE DE CONFIGURATION POUR HERMES (NOUS AGENT)**
|
|
276
|
+
|
|
277
|
+
### 📂 .claude/settings_[nom_agent].json
|
|
278
|
+
\`\`\`json
|
|
279
|
+
{
|
|
280
|
+
"model": "MiniMax-M2.7",
|
|
281
|
+
"env": {
|
|
282
|
+
"HERMES_AUTH_TOKEN": "$HERMES_AUTH_TOKEN",
|
|
283
|
+
"HERMES_BASE_URL": "$HERMES_BASE_URL",
|
|
284
|
+
"HERMES_MODEL": "MiniMax-M2.7",
|
|
285
|
+
"MAX_TOKENS": "16000"
|
|
286
|
+
},
|
|
287
|
+
"enableAllProjectMcpServers": false,
|
|
288
|
+
"enabledMcpjsonServers": [
|
|
289
|
+
"postgresql-server",
|
|
290
|
+
"memory"
|
|
291
|
+
],
|
|
292
|
+
"agent": "nom_agent",
|
|
293
|
+
"runner": "hermes"
|
|
294
|
+
}
|
|
295
|
+
\`\`\`
|
|
296
|
+
|
|
297
|
+
### 📂 .env correspondant
|
|
298
|
+
\`\`\`
|
|
299
|
+
# Hermes / Nous Agent Configuration
|
|
300
|
+
HERMES_AUTH_TOKEN=your_hermes_token_here
|
|
301
|
+
HERMES_BASE_URL=https://api.minimax.io
|
|
302
|
+
MAX_TOKENS=16000
|
|
303
|
+
\`\`\`
|
|
304
|
+
|
|
305
|
+
**Comment ça marche :**
|
|
306
|
+
- Hermes utilise les **3 fichiers standard** comme les autres runners : \`.claude/settings_[agent].json\`, \`.claude/agents/[agent].md\`, \`.claude/.mcp.[agent].json\`
|
|
307
|
+
- Le modèle par défaut est \`MiniMax-M2.7\` (défini dans \`CONFIG.HERMES.DEFAULT_MODEL\`)
|
|
308
|
+
- Les agents sont définis via \`PromptManager\` (\`.claude/agents/[nom].md\`)
|
|
309
|
+
- Les MCP servers sont configurés via \`.claude/.mcp.[agent].json\` (même format que Claude/Kilo)
|
|
310
|
+
- HERMES_DIR est automatiquement injecté au spawn pour l'isolation
|
|
311
|
+
- Pas de fallback token intégré (contrairement à Claude/Kilo) — à implémenter via le réseau de tokens Overmind si besoin
|
|
312
|
+
|
|
313
|
+
**Modèle par défaut :** \`MiniMax-M2.7\` (via \`CONFIG.HERMES.DEFAULT_MODEL\`)
|
|
314
|
+
|
|
315
315
|
${interpolationNotice}`;
|
|
316
316
|
break;
|
|
317
317
|
}
|