Outils de Session

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 --verbose

Afficher 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> --stats

Cré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> --confirm

Supprimer

# Supprimer une session
openclaw sessions delete <session-id>

# Supprimer toutes les sessions inactives
openclaw sessions prune --inactive

# Supprimer tout (danger!)
openclaw sessions delete-all --confirm

Outils 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) :

/new

Garde le même canal/utilisateur, mais historique vide

`/reset`

Réinitialise la session actuelle :

/reset

Efface l'historique, recharge le contexte

`/status`

Affiche l'état de la session :

/status

Retourne :

  • 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 outils

Lire 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.ndjson

Gestion 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-b

Basculer 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.json

Surveillance

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_123

Métriques

# Statistiques globales
openclaw sessions stats

# Par session
openclaw sessions stats --session sess_123

Nettoyage

Pruning automatique

Configurer dans config.yaml :

sessions:
  pruning:
    enabled: true
    inactiveAfterDays: 30  # Supprimer si inactif > 30j
    maxSessions: 100       # Garder max 100 sessions

Pruning 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-run

Sé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.