Este é um site de fãs, não afiliado ao projeto oficial OpenClaw nem à Anthropic. github.com/openclaw/openclaw
release

OpenClaw 4.15: a lagosta troca o cérebro e aprende a olhar para as próprias chaves

OpenClaws.io Team

OpenClaws.io Team

@openclaws

April 16, 2026

6 min de leitura

OpenClaw 4.15: a lagosta troca o cérebro e aprende a olhar para as próprias chaves

Quando terminou a última leva de releases, a lagosta tinha acabado de sair de um cerco de segurança de dez dias. A carapaça uma camada mais grossa. As garras um pouco mais rápidas. Mas ao nadar pela água, ela ainda não olhava muito para si mesma.

O que 4.15 faz não é espetacular, mas a direção é clara: dar à lagosta um cérebro melhor, ensinar ela a reparar nas chaves que tem na mão e, de passagem, mudar a memória para outro lugar, sem barulho.

Essa versão não vai aparecer no hero de nenhum screenshot do produto. Mas depois que você terminar a atualização, alguns padrões vão ter se movido em silêncio—e se você dependia do comportamento antigo em algum canto, vale saber antes.

Um cérebro novo: Opus 4.7

A seleção padrão da Anthropic agora aponta para Claude Opus 4.7. Antes, o alias opus obrigava você a fixar uma versão específica na config; agora ele já aponta direto para o Opus mais novo. O padrão via Claude CLI acompanha.

Junto vem a compreensão de imagens do Opus 4.7—essa parte antes precisava de plugin extra ou de vision provider externo, e dessa vez já vem empacotada no core. Você joga um screenshot na janela de chat e a lagosta já consegue ler sozinha. Não precisa dar volta.

Se você tinha pinnado manualmente o provider num Opus mais antigo, essa atualização não mexe na sua config—o pin explícito continua ganhando. Mas se você rodava no padrão, vai perceber que tanto a velocidade do chat quanto a leitura de imagens deram um passo à frente.

Uma saída para as máquinas que não dão conta

Ao mesmo tempo que Opus 4.7 sobe, aparece uma flag apontando na direção contrária: agents.defaults.experimental.localModelLean: true.

Ela é pensada pros modelos locais pequenos. Quando você liga, o prompt deixa de carregar as ferramentas pesadas que sufocam modelos menores—browser, cron e companhia—fazendo a janela de contexto encolher um pouco e aliviando a carga de inferência. O experimental no nome é honesto: ainda está sendo ajustado. Mas se você está rodando um 7B ou um 13B na sua própria máquina, essa flag talvez seja mais interessante pra você do que a subida do Opus.

"Ao forte, mais força; ao fraco, menos carga"—esse é o fio menos visível que atravessa essa release.

Pela primeira vez dá pra ver as chaves

É o que mais vale contar dessa versão, e também o mais fácil de deixar passar.

Na Control UI apareceu um card novo, Model Auth Status Card. O que ele faz soa trivial: te diz se o token OAuth de cada provider ligado está saudável, quanto tempo falta para ele expirar e se os rate limits andaram apertando ele.

Soa trivial, mas esse card não existia antes. Você descobria que um token OAuth tinha expirado no instante exato em que o provider devolvia um 401; os rate limits viravam reais quando você travava no meio de uma execução. A lagosta vinha usando essas credenciais o tempo todo, mas nunca teve um único lugar onde ela—ou você—pudesse ver esse estado antes de alguma coisa quebrar.

Por trás do card tem um método novo do gateway: models.authStatus. Ele vem com cache de 60 segundos, então a UI não fica de fato pollando o provider uma vez por segundo. Quando vários clientes compartilham a mesma instância de lagosta, o endpoint de introspection do provider também não apanha na martelada.

Junto com o card vêm alguns fixes de camada mais baixa. Corrida de credenciais—antes de reabrir o socket, os salvamentos de auth pendentes são escritos em disco primeiro. Assim, uma reconexão não engole mais uma autenticação que estava quase para terminar. Acesso a arquivos do workspace—todas as operações de caminho agora passam pelo helper compartilhado fs-safe, e symlinks apontando para arquivos da allowlist são rejeitados. Nada disso dá vídeo de demo, mas os dois entram no mesmo tema: a lagosta tem uma ideia mais clara do que está segurando.

Memory se mudando em silêncio

Essa release mudou três coisas na camada de memory. Somadas, formam um passo com direção.

Primeiro, os índices de memory do LanceDB agora aceitam armazenamento remoto de objetos. Até agora eles só viviam em disco local, o que significa que trocar de máquina obrigava a reconstruir o índice e que compartilhar memória entre dispositivos era praticamente inviável. Nessa versão, o mesmo índice LanceDB pode viver em S3 ou num store compatível com S3, e o disco local vira só uma camada de cache. Para quem tem a lagosta rodando em várias máquinas ou faz o vai-e-vem entre notebook e VPS, esse é o passo chave de "memória presa à máquina" para "memória presa à conta".

Segundo, GitHub Copilot entra no pool de embedding providers. A busca no memory precisa de um modelo de embedding para vetorizar as entradas, e até agora você escolhia entre OpenAI, um sentence-transformers local e mais um punhado de outros. Agora tem mais uma opção: se você já tem assinatura do Copilot, a busca no memory pode reaproveitar esse canal de autenticação—com um host helper dedicado que respeita overrides remotos e o refresh do token.

Terceiro—e o único com aresta quebradora—dreaming.storage.mode troca o valor padrão de inline para separate.

Dreaming é a fase em que a lagosta, no "tempo vago" dela, condensa e reorganiza a memória. Os phase blocks que esse processo produzia iam, até agora, direto pro arquivo de memory do dia. Vantagem: tudo ficava numa linha do tempo só. Desvantagem: o arquivo de memory engordava por causa do conteúdo gerado e os diffs ficavam ilegíveis.

O novo padrão manda os phase blocks para um caminho à parte: memory/dreaming/{phase}/YYYY-MM-DD.md—um arquivo por fase por dia, deixando o arquivo de memory original só com o que você escreveu à mão. A atualização não reescreve seus arquivos de memory existentes, mas na próxima vez que dreaming rodar, a saída vai pro lugar novo. Se você tinha scripts lendo conteúdo de dreaming de dentro do arquivo de memory, esses scripts precisam de um caminho novo.

Se quiser manter o comportamento antigo, volte esse setting explicitamente pra inline.

A voz do Google também chega

O plugin empacotado do Google ganhou suporte ao Gemini TTS: seleção de voz, saída em WAV e formato PCM pensado pra telefonia. Se você já usava Google Cloud pra fazer STT ou outras chamadas ao Gemini, não precisa mais plugar um TTS provider separado—a mesma autenticação atravessa de ponta a ponta.

Não é uma mudança enorme. Mas um pedaço que você antes tinha que montar sozinho agora vem pronto pra usar.

As coisas que não viraram manchete mas que você provavelmente pisava todo dia

O resto não ganha seção própria. Mas somando, cobre uma boa fatia do atrito do dia a dia:

  • Os 404 do chat do Ollama foram corrigidos. Se o seu ID de modelo tinha o prefixo ollama/, a versão antiga mandava esse prefixo direto pro servidor do Ollama e levava um 404. A versão nova tira o prefixo antes da request sair.
  • Download de imagens do BlueBubbles voltou a ser compatível com Node 22+—junto disso, a lógica de retry do webhook e da captura de anexos também foi refeita. Se você usa BlueBubbles no macOS pra fazer ponte com iMessage, ao subir o Node, sobe essa release junto.
  • Watchdog de streaming na TUI—se nenhum delta de chat event chegar em 30 segundos, o indicador de streaming é resetado. Antes, quando o provider cortava o stream em silêncio, a TUI ficava travada em "streaming". Agora não mais.
  • Invalidação do snapshot de skills—mudar a config skills.* antes deixava as sessions de agent já abertas rodando com a lista antiga de skills; precisava reiniciar pra ver as skills novas. Agora qualquer mudança na config invalida o snapshot em cache.
  • Stream guard de ferramentas desconhecidas, ligado por padrão—antes isso era uma proteção opt-in: quando o modelo alucina um nome de ferramenta inexistente, o guard impede que "Tool X not found" vire loop infinito. Agora já vem ligado sem configurar nada.
  • Resolução de caminhos—caminhos ~ fora do workspace agora resolvem contra o home do sistema operacional, não mais contra OPENCLAW_HOME. Quando esses dois diretórios não batiam, o mesmo ~/foo.txt podia apontar pra lugares diferentes entre edit e write; o fix coloca os dois em acordo.
  • Alinhamento de prompt cache—nos runs do task-scoped adapter, o chat ID de entrada no system prompt agora está estabilizado, então várias chamadas dentro da mesma task batem com taxa de hit mais alta no prompt cache.
  • Passthrough de resultados MEDIA—antes, o passthrough MEDIA: que vinha de tools locais confiáveis fazia matching frouxo com os nomes das tools built-in. Agora o matching é exato, e tools de cliente cujo nome normalizado colide com um built-in são rejeitadas na entrada. Colisão de nomes deixou de ser porta dos fundos.
  • Recuperação de replay—um 401 input item ID does not belong to this connection devolvido pelo provider agora é classificado como "replay-invalid", com a orientação certa de session reset, em vez de ser tratado como um 401 qualquer e retentado sem parar.

Padrões que se moveram

Essa release mexeu em alguns padrões; vale listar juntos pro fechamento de conta:

  • dreaming.storage.mode: inlineseparate (phase blocks pousam em memory/dreaming/{phase}/YYYY-MM-DD.md)
  • Stream guard de ferramentas desconhecidas: ligado por padrão (era opt-in)
  • Providers de voz empacotados Microsoft / ElevenLabs: ligados por padrão
  • Seleção padrão da Anthropic: aponta pro Opus 4.7
  • Padrão do Claude CLI: alinhado ao Opus 4.7

Os dois primeiros são mudanças de comportamento. Se você dependia do comportamento antigo, sobrescreva explicitamente na config antes de atualizar.

Em uma linha

Se você só vai levar uma coisa desse post: roda openclaw update e abre a Control UI pra dar uma olhada no novo Model Auth Status Card. Esse card vai te contar uma coisa que antes você não sabia—quais chaves exatamente a lagosta está segurando, qual delas está perto de expirar e qual vem apanhando dos rate limits ultimamente.

Se você é usuário pesado de dreaming, ou já folheou o texto cru dos phase blocks dentro dos seus arquivos de memory—presta atenção na mudança de padrão do dreaming.storage.mode. A saída nova do dreaming vai pro subdiretório memory/dreaming/. Na primeira vez que dreaming rodar depois da atualização, uma olhada nesse diretório já te mostra a forma nova.

Fique por dentro

Receba novidades sobre recursos e integrações. Sem spam, cancele quando quiser.