Les outils de session sont les commandes et capacités disponibles pour gérer, inspecter et contrôler les sessions d'agent.
Outils CLI
Lister les sessions
# Toutes les sessions
openclaw sessions ls
# Sessions actives uniquement
openclaw sessions ls --active
# Avec détails
openclaw sessions ls --verboseAfficher une session
# Détails complets
openclaw sessions show <session-id>
# Historique de messages
openclaw sessions show <session-id> --messages
# Statistiques
openclaw sessions show <session-id> --statsCréer/réinitialiser
# Nouvelle session
openclaw sessions create --label my-project
# Réinitialiser (efface historique)
openclaw sessions reset <session-id>
# Réinitialiser avec confirmation
openclaw sessions reset <session-id> --confirmSupprimer
# Supprimer une session
openclaw sessions delete <session-id>
# Supprimer toutes les sessions inactives
openclaw sessions prune --inactive
# Supprimer tout (danger!)
openclaw sessions delete-all --confirmOutils Gateway (RPC)
Créer session
const result = await gateway.rpc('session.create', {
label: 'customer-support',
metadata: {
user: 'alice@example.com',
channel: 'telegram'
}
});
// { sessionId, sessionKey, createdAt }Obtenir session
const session = await gateway.rpc('session.get', {
sessionId: 'sess_123'
});
// { id, key, label, metadata, createdAt, lastActiveAt }Mettre à jour metadata
await gateway.rpc('session.update', {
sessionId: 'sess_123',
metadata: {
status: 'resolved',
resolvedBy: 'agent'
}
});Supprimer session
await gateway.rpc('session.delete', {
sessionId: 'sess_123'
});Commandes in-chat
`/new`
Démarre une nouvelle conversation (nouvelle session) :
/newGarde le même canal/utilisateur, mais historique vide
`/reset`
Réinitialise la session actuelle :
/resetEfface l'historique, recharge le contexte
`/status`
Affiche l'état de la session :
/statusRetourne :
- Session ID
- Messages count
- Token usage
- Model
- Workspace
Outils programmatiques
SessionManager (API interne)
import { SessionManager } from '@openclaw/core';
const session = await SessionManager.load(sessionId);
// Lire historique
const messages = await session.getMessages();
// Ajouter message
await session.addMessage({
role: 'user',
content: 'Hello'
});
// Compacter
await session.compact({
threshold: 0.8,
keepRecent: 20
});
// Sauvegarder
await session.save();Hooks de session
// session_start
export function onSessionStart(ctx) {
console.log('Session started:', ctx.sessionId);
// Charger données externes
ctx.metadata.userData = await loadUserData(ctx.user);
}
// session_end
export function onSessionEnd(ctx) {
console.log('Session ended:', ctx.sessionId);
// Sauvegarder analytics
await saveSessionAnalytics({
sessionId: ctx.sessionId,
duration: ctx.duration,
messageCount: ctx.messageCount,
toolsUsed: ctx.toolsUsed
});
}Metadata de session
Chaque session peut avoir des métadonnées personnalisées :
{
sessionId: 'sess_abc123',
sessionKey: 'agent:main:main',
label: 'customer-support',
metadata: {
user: 'alice@example.com',
userId: 'user_789',
channel: 'telegram',
chatId: '123456789',
language: 'fr',
timezone: 'Europe/Paris',
customField: 'value'
},
createdAt: '2026-02-06T10:00:00Z',
lastActiveAt: '2026-02-06T12:30:00Z'
}Inspection de session
Fichiers de session
Les sessions sont stockées dans :
~/.openclaw/sessions/
├── agent_main_main.json # Métadonnées session
├── agent_main_main_messages.ndjson # Historique messages
└── agent_main_main_tools.ndjson # Logs outilsLire directement
# Métadonnées
cat ~/.openclaw/sessions/agent_main_main.json | jq
# Derniers messages
tail -n 20 ~/.openclaw/sessions/agent_main_main_messages.ndjson
# Rechercher dans messages
grep "error" ~/.openclaw/sessions/agent_main_main_messages.ndjsonGestion de session avancée
Sessions multiples
Créer des sessions pour différents contextes :
# Session principale
openclaw sessions create --label main
# Session projet A
openclaw sessions create --label project-a
# Session projet B
openclaw sessions create --label project-bBasculer entre sessions
# Changer de session active
export OPENCLAW_SESSION=project-a
# Exécuter dans une session spécifique
openclaw agent --session project-a "Deploy latest changes"Archiver sessions
# Exporter session
openclaw sessions export sess_123 > session-backup.json
# Importer session
openclaw sessions import < session-backup.jsonSurveillance
Logs de session
# Logs en temps réel
openclaw logs --follow --session sess_123
# Logs d'erreurs uniquement
openclaw logs --level error --session sess_123
# Logs d'outils
openclaw logs --stream tool --session sess_123Métriques
# Statistiques globales
openclaw sessions stats
# Par session
openclaw sessions stats --session sess_123Nettoyage
Pruning automatique
Configurer dans config.yaml :
sessions:
pruning:
enabled: true
inactiveAfterDays: 30 # Supprimer si inactif > 30j
maxSessions: 100 # Garder max 100 sessionsPruning manuel
# Supprimer sessions inactives > 30j
openclaw sessions prune --inactive --days 30
# Supprimer sessions par label
openclaw sessions prune --label "test-*"
# Dry-run (voir ce qui serait supprimé)
openclaw sessions prune --dry-runSécurité
Isolation
- Chaque session a son propre workspace
- Les données de session sont isolées
- Les credentials sont par session
Accès
- Sessions privées par défaut
- Partage via session keys
- Contrôle d'accès par utilisateur/canal
Audit
- Logs complets de toutes les actions
- Traçabilité des outils utilisés
- Export pour audit/compliance
Voir Session pour les concepts et Agent Loop pour le lifecycle.