Compatible avec OpenClaw v2026.2 | Cet article s’adresse aux équipes ou aux utilisateurs ayant besoin d’isoler les contextes.
TL;DR : Configuration multi-Agent : "agents": {"instances": {"personal": {...}, "work": {...}}}. Règles de routage : "routing": {"rules": [{"match": {"channel": "telegram"}, "agent": "personal"}]}. Isolation des sessions : "sessions": {"isolation": "user"}. Mode sandbox : "sandbox": {"mode": "non-main"}. Adapté aux scénarios multi-utilisateurs, multi-projets et multi-usages.
Pourquoi le multi-Agent ?
Limites du mono-Agent
| Scénario | Problème mono-Agent | Solution multi-Agent |
|---|---|---|
| Multi-utilisateurs | Contexte mélangé, problèmes de confidentialité | Un Agent indépendant par utilisateur |
| Multi-projets | Informations projet mélangées | Un Agent indépendant par projet |
| Multi-usages | Un Agent pour plusieurs rôles | Des Agents spécialisés |
| Multi-équipes | Permissions difficiles à contrôler | Isolation des Agents par équipe |
| Contrôle des coûts | Impossible de distinguer la consommation | Facturation indépendante par modèle |
Cas d’usage du multi-Agent
flowchart TB
subgraph Users["Utilisateurs"]
U1[Utilisateur A]
U2[Utilisateur B]
U3[Équipe X]
U4[Équipe Y]
end
subgraph Router["Routage des messages"]
R[Règles de routage]
end
subgraph Agents["Instances Agent"]
A1[Agent personnel A]
A2[Agent personnel B]
A3[Agent équipe X]
A4[Agent équipe Y]
end
subgraph Models["Modèles"]
M1[Claude Opus]
M2[Claude Sonnet]
M3[GPT-4o]
M4[Haiku]
end
U1 --> R
U2 --> R
U3 --> R
U4 --> R
R --> A1
R --> A2
R --> A3
R --> A4
A1 --> M1
A2 --> M2
A3 --> M3
A4 --> M4
Configuration multi-Agent
Structure de base
{
"agents": {
"defaults": {
"model": "anthropic/claude-sonnet-4",
"workspace": "~/.openclaw/workspace"
},
"instances": {
"personal": {
"model": "anthropic/claude-opus-4-6",
"workspace": "~/.openclaw/workspaces/personal",
"thinkingLevel": "high"
},
"work": {
"model": "anthropic/claude-sonnet-4",
"workspace": "~/.openclaw/workspaces/work",
"skills": ["github", "jira", "confluence"]
},
"assistant": {
"model": "anthropic/claude-haiku-3.5",
"workspace": "~/.openclaw/workspaces/assistant"
}
}
}
}
Paramètres de configuration d’un Agent
| Paramètre | Description | Exemple |
|---|---|---|
model |
Modèle utilisé | anthropic/claude-opus-4-6 |
workspace |
Répertoire de travail | ~/.openclaw/workspaces/personal |
thinkingLevel |
Niveau de réflexion | high, medium, low |
skills |
Compétences activées | ["gmail", "calendar"] |
sandbox |
Configuration sandbox | { "mode": "non-main" } |
contextWindow |
Fenêtre de contexte | 200000 |
Structure du Workspace
~/.openclaw/
├── workspace/ # Workspace par défaut
│ ├── AGENTS.md
│ ├── SOUL.md
│ └── skills/
├── workspaces/
│ ├── personal/ # Agent personnel
│ │ ├── AGENTS.md
│ │ ├── SOUL.md
│ │ └── USER.md
│ ├── work/ # Agent professionnel
│ │ ├── AGENTS.md
│ │ └── skills/
│ └── assistant/ # Agent assistant
│ └── AGENTS.md
└── openclaw.json # Configuration principale
Règles de routage des messages
Configuration du routage
{
"routing": {
"rules": [
{
"match": {
"channel": "telegram",
"sender": "123456789"
},
"agent": "personal"
},
{
"match": {
"channel": "discord",
"guild": "987654321"
},
"agent": "work"
},
{
"match": {
"session": "main"
},
"agent": "personal"
}
],
"default": "personal"
}
}
Détail des règles de routage
| Champ de correspondance | Description | Exemple |
|---|---|---|
channel |
Type de canal | telegram, discord, slack |
sender |
ID de l’expéditeur | 123456789 |
guild |
ID du serveur Discord | 987654321 |
group |
ID du groupe | -100123456789 |
session |
ID de session | main, telegram:user:123 |
pattern |
Correspondance regex | ^work- |
Exemple de routage complexe
{
"routing": {
"rules": [
{
"name": "Telegram personnel",
"match": {
"channel": "telegram",
"sender": ["123456789", "987654321"]
},
"agent": "personal"
},
{
"name": "Discord professionnel",
"match": {
"channel": "discord",
"guild": "111222333"
},
"agent": "work"
},
{
"name": "Groupe professionnel",
"match": {
"channel": "telegram",
"group": "-100111222333"
},
"agent": "work"
},
{
"name": "Environnement de test",
"match": {
"pattern": "^test-"
},
"agent": "assistant",
"config": {
"sandbox": { "mode": "always" }
}
}
],
"default": "personal"
}
}
Priorité du routage
flowchart TB
MSG[Message reçu] --> R1{Correspond à la règle 1 ?}
R1 -->|Oui| A1[Agent 1]
R1 -->|Non| R2{Correspond à la règle 2 ?}
R2 -->|Oui| A2[Agent 2]
R2 -->|Non| R3{Correspond à la règle 3 ?}
R3 -->|Oui| A3[Agent 3]
R3 -->|Non| D[Agent par défaut]
Les règles sont évaluées dans l’ordre ; la première règle correspondante s’applique.
Isolation des sessions
Niveaux d’isolation
| Niveau | Description | Cas d’usage |
|---|---|---|
| Sans isolation | Contexte partagé | Mono-utilisateur, mono-usage |
| Isolation par canal | Contexte indépendant par canal | Accès multi-canaux |
| Isolation par utilisateur | Contexte indépendant par utilisateur | Partage multi-utilisateurs |
| Isolation par session | Chaque session est indépendante | Isolation totale |
| Isolation par Agent | Chaque Agent est indépendant | Déploiement multi-Agent |
Configurer l’isolation des sessions
{
"sessions": {
"isolation": "user",
"persistence": true,
"retention": {
"maxAge": 604800000,
"maxSessions": 100
}
}
}
Configuration détaillée de l’isolation
{
"sessions": {
"isolation": "user",
"storage": {
"type": "file",
"path": "~/.openclaw/sessions"
},
"encryption": {
"enabled": true,
"algorithm": "aes-256-gcm"
},
"retention": {
"maxAge": 604800000,
"maxSessions": 100,
"cleanupInterval": 86400000
}
}
}
| Paramètre | Description | Valeur par défaut |
|---|---|---|
isolation |
Niveau d’isolation | user |
storage.type |
Type de stockage | file |
encryption.enabled |
Activer le chiffrement | true |
retention.maxAge |
Durée max de rétention | 7 jours |
retention.maxSessions |
Nombre max de sessions | 100 |
Scénarios de collaboration en équipe
Scénario 1 : Partage en petite équipe
{
"agents": {
"instances": {
"team": {
"model": "anthropic/claude-sonnet-4",
"workspace": "~/.openclaw/workspaces/team",
"skills": ["github", "jira", "slack"]
}
}
},
"routing": {
"rules": [
{
"match": { "channel": "slack" },
"agent": "team"
},
{
"match": { "channel": "discord" },
"agent": "team"
}
],
"default": "team"
}
}
Scénario 2 : Isolation par département
{
"agents": {
"instances": {
"engineering": {
"model": "anthropic/claude-opus-4-6",
"workspace": "~/.openclaw/workspaces/engineering",
"skills": ["github", "jira", "pagerduty"],
"sandbox": { "mode": "off" }
},
"marketing": {
"model": "anthropic/claude-sonnet-4",
"workspace": "~/.openclaw/workspaces/marketing",
"skills": ["mailchimp", "analytics"],
"sandbox": { "mode": "non-main" }
},
"support": {
"model": "anthropic/claude-haiku-3.5",
"workspace": "~/.openclaw/workspaces/support",
"skills": ["zendesk", "intercom"],
"sandbox": { "mode": "always" }
}
}
},
"routing": {
"rules": [
{
"name": "Engineering Discord",
"match": { "channel": "discord", "guild": "111111111" },
"agent": "engineering"
},
{
"name": "Marketing Slack",
"match": { "channel": "slack", "team": "T22222222" },
"agent": "marketing"
},
{
"name": "Support Telegram",
"match": { "channel": "telegram", "group": "-100333333333" },
"agent": "support"
}
],
"default": "support"
}
}
Scénario 3 : SaaS multi-tenant
{
"agents": {
"dynamic": true,
"template": {
"model": "anthropic/claude-sonnet-4",
"workspace": "~/.openclaw/workspaces/tenants/{{tenantId}}",
"skills": ["base"],
"sandbox": { "mode": "always" }
},
"limits": {
"maxAgents": 100,
"maxSessionsPerAgent": 50,
"maxTokensPerMonth": 1000000
}
},
"routing": {
"rules": [
{
"name": "Tenant Routing",
"match": { "header": "X-Tenant-Id" },
"agent": "tenant_{{tenantId}}",
"createIfNotExists": true
}
]
}
}
Permissions et sécurité
Contrôle des permissions des Agents
{
"agents": {
"instances": {
"trusted": {
"model": "anthropic/claude-opus-4-6",
"sandbox": { "mode": "off" },
"permissions": {
"filesystem": { "read": true, "write": true },
"network": { "outbound": true },
"process": { "execute": true }
}
},
"restricted": {
"model": "anthropic/claude-haiku-3.5",
"sandbox": { "mode": "always" },
"permissions": {
"filesystem": {
"read": ["~/allowed/"],
"write": ["~/allowed/"]
},
"network": {
"outbound": ["api.example.com"]
},
"process": { "execute": false }
}
}
}
}
}
Modes sandbox
| Mode | Description | Cas d’usage |
|---|---|---|
off |
Pas de sandbox | Agent de confiance |
non-main |
Sandbox pour les sessions non principales | Partage en équipe |
always |
Toujours en sandbox | Environnement non fiable |
Configuration du sandbox
{
"sandbox": {
"mode": "non-main",
"container": {
"image": "openclaw/sandbox:latest",
"timeout": 30000,
"memory": "512m",
"cpu": "0.5"
},
"allowlist": ["read", "write", "edit", "bash"],
"denylist": ["browser", "canvas", "nodes"],
"networkPolicy": {
"allow": ["api.example.com"],
"deny": ["*"]
}
}
}
Monitoring et gestion
Surveillance de l’état des Agents
# Lister toutes les instances Agent
openclaw agents list
# Exemple de sortie :
# Name Model Sessions Status Last Active
# personal claude-opus-4-6 3 active 2 min ago
# work claude-sonnet-4 5 active 5 min ago
# assistant claude-haiku-3.5 2 idle 1 hour ago
# Voir les détails d'un Agent
openclaw agents show personal
# Voir les règles de routage
openclaw routing list
Gestion des sessions
# Lister toutes les sessions
openclaw sessions list --agent personal
# Exemple de sortie :
# Session ID Channel Sender Created Messages
# telegram:user:123 telegram 123456789 2026-02-26 42
# main cli - 2026-02-25 128
# Voir les détails d'une session
openclaw sessions show telegram:user:123
# Exporter une session
openclaw sessions export telegram:user:123 --format json
# Supprimer une session
openclaw sessions delete telegram:user:123
Statistiques de consommation
# Voir la consommation par Agent
openclaw usage --by-agent
# Exemple de sortie :
# Agent Tokens In Tokens Out Cost Requests
# personal 125,000 45,000 $2.10 128
# work 89,000 32,000 $1.25 95
# assistant 15,000 8,000 $0.15 42
# Statistiques sur une période donnée
openclaw usage --by-agent --from 2026-02-01 --to 2026-02-28
Bonnes pratiques
1. Répartition judicieuse des Agents
| Critère de répartition | Description | Exemple |
|---|---|---|
| Usage | Par fonction | coding, research, assistant |
| Projet | Par projet | project-alpha, project-beta |
| Équipe | Par équipe | engineering, marketing |
| Modèle | Par modèle | opus, sonnet, haiku |
2. Héritage de configuration
{
"agents": {
"defaults": {
"model": "anthropic/claude-sonnet-4",
"workspace": "~/.openclaw/workspace",
"thinkingLevel": "medium",
"sandbox": { "mode": "non-main" }
},
"instances": {
"opus": {
"model": "anthropic/claude-opus-4-6",
"thinkingLevel": "high"
// Hérite du workspace et sandbox de defaults
},
"haiku": {
"model": "anthropic/claude-haiku-3.5",
"thinkingLevel": "minimal"
// Hérite des autres paramètres de defaults
}
}
}
}
3. Principe du moindre privilège
{
"agents": {
"instances": {
"restricted": {
"model": "anthropic/claude-haiku-3.5",
"sandbox": { "mode": "always" },
"permissions": {
"filesystem": {
"read": ["~/allowed/read"],
"write": ["~/allowed/write"]
},
"network": {
"outbound": []
},
"process": {
"execute": false
}
}
}
}
}
}
4. Monitoring et alertes
{
"monitoring": {
"alerts": [
{
"condition": "usage > 1000000",
"action": "notify"
},
{
"condition": "error_rate > 0.1",
"action": "notify"
},
{
"condition": "response_time > 10000",
"action": "notify"
}
],
"webhook": "https://your-monitoring.com/webhook"
}
}
Dépannage
Le routage ne fonctionne pas
# Voir les règles de routage actuelles
openclaw routing list
# Tester le routage
openclaw routing test --channel telegram --sender 123456789
# Exemple de sortie :
# Matched Rule: Telegram personnel
# Target Agent: personal
# Route Path: default -> rule 1 -> personal
Problèmes d’isolation des sessions
# Vérifier la configuration d'isolation
openclaw config get sessions.isolation
# Vérifier la liste des sessions
openclaw sessions list --all
# Réinitialiser l'isolation des sessions
openclaw sessions reset --agent personal
Problèmes de permissions
# Vérifier la configuration des permissions
openclaw agents permissions show personal
# Tester une permission
openclaw agents test-permission personal --action filesystem.read --path ~/test
# Exemple de sortie :
# Permission: filesystem.read
# Path: ~/test
# Result: ALLOWED
Résumé
L’architecture multi-Agent est une fonctionnalité avancée d’OpenClaw offrant un support puissant pour les scénarios d’équipe et d’entreprise :
- Routage flexible : Assigner différents Agents selon le canal, l’utilisateur ou le projet
- Isolation des sessions : Protéger la confidentialité, éviter la confusion de contexte
- Contrôle des permissions : Gestion fine et granulaire des permissions
- Optimisation des coûts : Choisir différents modèles selon l’usage
- Extensibilité : Création et gestion dynamiques des Agents
Résumé de cet article :
- Compréhension de la valeur et des scénarios de l’architecture multi-Agent
- Maîtrise de la configuration des Agents et des règles de routage des messages
- Apprentissage de la configuration de l’isolation des sessions
- Découverte des bonnes pratiques pour la collaboration en équipe
- Maîtrise du contrôle des permissions et du monitoring
Historique des mises à jour :
- 2026-02-26 : Publication initiale, basée sur OpenClaw v2026.2
Navigation de la série :
- ← Précédent : Web Control UI et Canvas
- → Suivant : Bonnes pratiques de configuration de la sécurité