Ceci est un site fan, non affilié au projet officiel OpenClaw ni à Anthropic. github.com/openclaw/openclaw
release

OpenClaw 4.15 : le homard change de cerveau et commence à regarder ses propres clés

OpenClaws.io Team

OpenClaws.io Team

@openclaws

April 16, 2026

6 min de lecture

OpenClaw 4.15 : le homard change de cerveau et commence à regarder ses propres clés

Quand la dernière vague de releases s'est terminée, le homard venait tout juste de sortir d'un siège sécurité de dix jours. La carapace, un peu plus épaisse. Les pinces, un peu plus rapides. Mais en nageant, il ne se regardait toujours pas beaucoup lui-même.

4.15 ne fait pas grand-chose d'éclatant, mais la direction est claire : donner au homard un meilleur cerveau, lui apprendre à jeter un œil aux clés qu'il a en main, et—pendant qu'on y est—déplacer sa mémoire ailleurs, sans bruit.

Cette version n'apparaîtra pas en hero sur une seule capture du produit. Mais une fois que tu auras fini la mise à jour, quelques valeurs par défaut auront glissé en silence—et si tu comptais sur l'ancien comportement dans un coin quelconque, mieux vaut le savoir avant.

Un nouveau cerveau : Opus 4.7

Le choix Anthropic par défaut pointe désormais sur Claude Opus 4.7. Jusqu'ici, l'alias opus te demandait d'épingler toi-même une version dans la config ; maintenant il pointe directement sur le dernier Opus. Le défaut via Claude CLI suit.

Arrive avec ça la compréhension d'image d'Opus 4.7—ce bout-là demandait auparavant un plugin supplémentaire ou un vision provider externe, et cette fois-ci il est embarqué directement dans le core. Tu lâches une capture dans la fenêtre de chat, et le homard sait la lire lui-même. Plus besoin de faire un détour.

Si tu avais épinglé le provider à la main sur un Opus plus ancien, cette mise à jour ne touche pas à ta config—un pin explicite garde la priorité. Mais si tu tournais sur les valeurs par défaut, tu verras que la vitesse du chat et la lecture des images ont toutes deux avancé d'un cran.

Une sortie pour les machines qui ne suivent pas

En même temps que la montée d'Opus 4.7 arrive un flag qui pointe dans la direction inverse : agents.defaults.experimental.localModelLean: true.

Il est pensé pour les petits modèles locaux. Quand tu l'actives, le prompt arrête d'embarquer les outils lourds qui étouffent les petits modèles—browser, cron et compagnie—ce qui amincit d'un cran la fenêtre de contexte et allège la charge d'inférence. Le experimental dans le nom est honnête : ça se peaufine encore. Mais si tu fais tourner un 7B ou un 13B sur ta propre machine, ce flag est peut-être plus intéressant pour toi que la montée d'Opus.

« Rendre le fort plus fort, alléger le faible »—c'est le fil moins visible qui traverse cette release.

La première fois qu'on voit ses clés

C'est ce que cette version a de plus intéressant à raconter, et aussi ce qui se laisse oublier le plus facilement.

Dans la Control UI est apparue une carte, Model Auth Status Card. Ce qu'elle fait a l'air banal : elle te dit si le token OAuth de chaque provider lié est en bonne santé, combien de temps il lui reste avant expiration, et si les rate limits l'ont pressé récemment.

Ça a l'air banal, mais cette carte n'existait pas avant. Tu apprenais qu'un token OAuth avait expiré au moment exact où le provider renvoyait un 401 ; les rate limits devenaient réels quand tu te retrouvais bloqué en pleine exécution. Le homard utilisait ces identifiants depuis le début, mais il n'existait pas un seul endroit où lui—ou toi—puisse voir cet état avant que quelque chose ne casse.

Derrière la carte, il y a une nouvelle méthode de gateway : models.authStatus. Elle embarque un cache de 60 secondes, donc l'UI n'interroge pas vraiment le provider une fois par seconde. Quand plusieurs clients partagent la même instance de homard, l'endpoint d'introspection du provider n'est pas non plus martelé.

Plus bas arrivent quelques correctifs qui accompagnent la carte. Course aux identifiants—avant de rouvrir le socket, les enregistrements d'auth en attente sont d'abord versés sur disque. Comme ça, une reconnexion ne croque plus une authentification qui était sur le point de se terminer. Accès aux fichiers de l'espace de travail—toutes les opérations sur les chemins passent désormais par le helper partagé fs-safe, et les liens symboliques qui visent des fichiers de l'allowlist sont rejetés. Rien dans tout ça ne se prête à une vidéo de démo, mais les deux tombent sous le même thème : le homard a une idée plus claire de ce qu'il tient.

Memory déménage en silence

Cette release change trois choses dans la couche memory. Mises bout à bout, elles dessinent un pas avec une direction.

Première, les index memory de LanceDB acceptent désormais du stockage objet distant. Jusqu'ici, ils ne vivaient que sur disque local, ce qui veut dire que changer de machine obligeait à reconstruire l'index et que partager la mémoire entre appareils, c'était en gros mort-né. Dans cette version, le même index LanceDB peut vivre sur S3 (ou sur un store compatible S3), et le disque local devient juste une couche de cache. Pour qui déploie le homard sur plusieurs machines, ou fait la navette entre un portable et un VPS, c'est le pas clé pour passer de « la mémoire est liée à la machine » à « la mémoire est liée au compte ».

Deuxième, GitHub Copilot entre dans le pool des embedding providers. La recherche memory a besoin d'un modèle d'embedding pour vectoriser les entrées, et jusqu'ici tu choisissais entre OpenAI, un sentence-transformers local et deux trois autres. Maintenant il y a une option de plus : si tu as déjà un abonnement Copilot, la recherche memory peut réutiliser ce même canal d'authentification—avec un host helper dédié qui respecte les overrides distants et le refresh de token.

Troisième—et le seul avec un côté cassant—dreaming.storage.mode change sa valeur par défaut de inline à separate.

Dreaming, c'est la phase pendant laquelle le homard, sur son temps libre, condense et réorganise la mémoire. Les phase blocks qui en sortaient étaient jusque-là réinsérés directement dans le fichier memory du jour. Avantage : tout était aligné sur une même ligne de temps. Inconvénient : le fichier memory grossissait à cause du contenu généré, et les diffs devenaient illisibles.

Le nouveau défaut envoie les phase blocks dans un chemin à part : memory/dreaming/{phase}/YYYY-MM-DD.md—un fichier par phase et par jour, qui laisse le fichier memory d'origine avec uniquement ce que tu as écrit à la main. La mise à jour ne réécrit pas tes fichiers memory existants, mais la prochaine fois que dreaming tournera, sa sortie ira au nouvel endroit. Si tu avais des scripts qui lisaient le contenu de dreaming depuis le fichier memory, il faut leur changer le chemin.

Si tu préfères garder l'ancien comportement, remets ce réglage sur inline de manière explicite.

La voix de Google débarque

Le plugin Google embarqué gagne le support Gemini TTS : choix de voix, sortie WAV et format PCM pensé pour la téléphonie. Si tu utilisais déjà Google Cloud pour faire du STT ou pour d'autres appels Gemini, plus besoin de brancher un TTS provider séparé—la même authentification tient de bout en bout.

Ce n'est pas un changement énorme. Juste un morceau qu'il fallait avant assembler soi-même, et qui est maintenant prêt à l'emploi.

Ce qui n'est pas monté en titre mais que tu marchais probablement dessus tous les jours

Le reste ne décroche pas de section dédiée. Mais mis ensemble, ça couvre une grosse part des frottements du quotidien :

  • Les 404 du chat Ollama sont réparés. Si ton ID de modèle portait le préfixe ollama/, l'ancienne version l'envoyait tel quel au serveur Ollama et se prenait un 404. La nouvelle version décolle le préfixe avant l'envoi de la requête.
  • Le téléchargement d'images de BlueBubbles retrouve la compatibilité Node 22+—et au passage, la logique de reprise des webhooks et de récupération des pièces jointes a été refaite. Si tu utilises BlueBubbles sur macOS pour faire le pont iMessage, monte à cette release en même temps que tu montes de Node.
  • Watchdog de streaming dans la TUI—si aucun delta de chat event n'arrive en 30 secondes, l'indicateur de streaming est remis à zéro. Avant, quand le provider coupait le flux en silence, la TUI restait figée dans l'état « streaming ». Plus maintenant.
  • Invalidation du snapshot de skills—changer la config skills.* laissait auparavant les sessions d'agent déjà ouvertes tourner avec la vieille liste de skills ; il fallait redémarrer pour voir les nouveaux. Maintenant n'importe quel changement de config invalide le snapshot mis en cache.
  • Stream guard pour outils inconnus, activé par défaut—avant, c'était une protection en opt-in : quand le modèle hallucine un nom d'outil qui n'existe pas, le guard empêche que « Tool X not found » parte en boucle infinie. Maintenant c'est activé par défaut, sans rien à configurer.
  • Résolution des chemins—les chemins ~ hors de l'espace de travail se résolvent désormais contre le home de l'OS, plus contre OPENCLAW_HOME. Quand ces deux répertoires n'étaient pas les mêmes, un même ~/foo.txt pouvait pointer vers des endroits différents entre edit et write ; le fix les remet d'accord.
  • Alignement du prompt cache—dans les runs du task-scoped adapter, le chat ID d'entrée dans le system prompt est stabilisé, donc plusieurs appels dans la même task ont un meilleur taux de hit dans le prompt cache.
  • Passthrough des résultats MEDIA—avant, le passthrough MEDIA: qui venait des outils locaux de confiance faisait un matching lâche avec les noms des outils built-in. Maintenant le matching est exact, et les outils client dont le nom normalisé entre en collision avec un built-in sont directement rejetés. Plus de porte dérobée à coups de collision de noms.
  • Reprise après replay—un 401 input item ID does not belong to this connection renvoyé par le provider est désormais classifié comme « replay-invalid », avec la bonne indication de session reset, au lieu d'être traité comme un 401 lambda qu'on retente à l'infini.

Valeurs par défaut qui ont bougé

Cette release a déplacé quelques valeurs par défaut ; autant les mettre côte à côte pour le pointage :

  • dreaming.storage.mode : inlineseparate (les phase blocks atterrissent dans memory/dreaming/{phase}/YYYY-MM-DD.md)
  • Stream guard pour outils inconnus : activé par défaut (était en opt-in)
  • Providers de voix Microsoft / ElevenLabs embarqués : activés par défaut
  • Choix Anthropic par défaut : pointe sur Opus 4.7
  • Défaut du Claude CLI : aligné sur Opus 4.7

Les deux premiers sont des changements de comportement. Si tu tenais à l'ancien comportement, écrase-le de manière explicite dans la config avant la mise à jour.

En une ligne

Si tu ne retiens qu'une chose de ce billet : lance openclaw update, puis ouvre la Control UI pour regarder la nouvelle Model Auth Status Card. Cette carte va te dire quelque chose que tu ne savais pas—exactement quelles clés le homard tient, laquelle est proche de l'expiration et laquelle s'est récemment fait serrer la vis par un rate limit.

Si tu es un gros utilisateur de dreaming, ou si tu as déjà feuilleté le texte brut des phase blocks dans tes fichiers memory, fais attention au changement de défaut sur dreaming.storage.mode : la nouvelle sortie de dreaming part dans le sous-répertoire memory/dreaming/. La première fois que dreaming tournera après la mise à jour, un coup d'œil dans ce répertoire te donnera la nouvelle forme.

Reste informé

Reçois les news sur les nouvelles fonctionnalités et intégrations. Pas de spam, désinscription à tout moment.