Un bot, plusieurs tâches : guide complet Workspace x Telegram
Vous avez déjà demandé à votre assistant « organise le journal d'aujourd'hui » et le voir toucher aux fichiers de votre projet pro ?
C'est ce qui se passe quand les espaces de travail ne sont pas bien configurés. Ce guide corrige ça en une fois.
Ce que vous allez apprendre
- Comprendre le flux complet : groupe → assistant → espace de travail
- Initialiser plusieurs espaces de travail
- Configurer Agents + Bindings de bout en bout
- Vérifier que la configuration fonctionne vraiment
L'idée d'ensemble
L'architecture cible est simple :
Groupe Telegram A → Assistant A → Espace A (touche uniquement ces fichiers)
Groupe Telegram B → Assistant B → Espace B (touche uniquement ces fichiers)
Messages directs → Assistant principal → Espace principal
Pour y arriver, trois étapes : créer les espaces → définir les agents → définir les bindings.
Étape 1 : Créer les espaces de travail
Chaque assistant a besoin de son propre répertoire. Initialisez-les avec :
openclaw setup --workspace "~/.openclaw/workspace-main"
openclaw setup --workspace "~/.openclaw/workspace-project-a"
openclaw setup --workspace "~/.openclaw/workspace-project-b"Chaque espace reçoit automatiquement les fichiers nécessaires (AGENTS.md, SOUL.md, IDENTITY.md, etc.).
💡 Si le répertoire n'existe pas encore, la commande le crée. Si vous avez cloné un espace existant depuis Git, vous pouvez sauter l'initialisation et pointer directement le chemin dans la Config.
Étape 2 : Configurer Agents et Bindings
Ouvrez l'interface de contrôle → Config → Raw JSON et ajoutez la structure suivante.
Scénario A : Même bot, groupes différents, espaces différents
{
"agents": {
"list": [
{ "id": "main", "name": "Principal", "workspace": "~/.openclaw/workspace-main", "default": true },
{ "id": "project-a", "name": "Projet A", "workspace": "~/.openclaw/workspace-project-a" },
{ "id": "project-b", "name": "Projet B", "workspace": "~/.openclaw/workspace-project-b" }
]
},
"bindings": [
{ "agentId": "project-a", "match": { "channel": "telegram", "peer": { "kind": "group", "id": "-1001234567890" } } },
{ "agentId": "project-b", "match": { "channel": "telegram", "peer": { "kind": "group", "id": "-1009876543210" } } },
{ "agentId": "main", "match": { "channel": "telegram" } }
],
"channels": {
"telegram": {
"enabled": true,
"botToken": "votre token de bot",
"dmPolicy": "pairing",
"groups": { "*": { "requireMention": true } }
}
}
}Comment trouver l'ID du groupe ?
- Envoyez un message dans le groupe
- Exécutez
openclaw logs --followet cherchezchat.id - Ou transférez le message à @userinfobot
Scénario B : Comptes bot différents, espaces différents
Avec plusieurs tokens de bot, chaque bot peut correspondre à son propre assistant et espace :
{
"agents": {
"list": [
{ "id": "main", "name": "Bot principal", "workspace": "~/.openclaw/workspace-main", "default": true },
{ "id": "alerts", "name": "Bot alertes", "workspace": "~/.openclaw/workspace-alerts" }
]
},
"bindings": [
{ "agentId": "main", "match": { "channel": "telegram", "accountId": "default" } },
{ "agentId": "alerts", "match": { "channel": "telegram", "accountId": "alerts" } }
],
"channels": {
"telegram": {
"enabled": true,
"accounts": {
"default": { "botToken": "123456:ABC...", "dmPolicy": "pairing" },
"alerts": { "botToken": "987654:XYZ...", "dmPolicy": "allowlist", "allowFrom": ["tg:votreTelegramId"] }
}
}
}
}⚠️ Avec plusieurs comptes, ne gardez pas de
botTokenau niveau racine. Tout doit être dansaccounts.
Étape 3 : Enregistrer et vérifier
Depuis l'interface web : cliquez sur Save / Apply sur la page Config.
Si vous éditez le fichier directement : enregistrez ~/.openclaw/openclaw.json. La Gateway recharge en général à chaud, mais en cas de doute, redémarrez-la :
openclaw gatewayVérification
- Envoyez un message dans chaque groupe Telegram et confirmez que le bon assistant répond
- Exécutez
openclaw doctorpour un contrôle de santé rapide
Points à retenir
| Objectif | Comment |
|---|---|
| Créer un nouvel espace | openclaw setup --workspace "chemin" |
| Groupe différent → espace différent | Faire correspondre peer: { kind: "group", id: "groupId" } dans bindings |
| Bot différent → espace différent | Utiliser channels.telegram.accounts avec accountId dans bindings |
| Les Bindings semblent ignorés | Mettre les règles spécifiques en premier ; c'est premier match gagnant |