Como Provei Que Meu Próprio Relatório de Bug Estava Errado: Depuração do OpenClaw no Telegram via Proxy apiRoot

✍️ OpenClawRadar📅 Publicado: September 8, 2026🔗 Source
Ad

O apiRoot do Telegram do OpenClaw pode ser apontado, por conta, para um proxy local a fim de capturar as cargas úteis reais, permitindo distinguir entre bugs reais de reinserção e artefatos de renderização do lado do cliente. Um desenvolvedor usou isso para provar que seu próprio relatório de bug estava errado — e retirá-lo.

A saga do relatório de bug

Na semana passada, um agente principal começou a recusar instruções, alegando que as mensagens continham um bloco de sistema injetado. O usuário registrou o issue #137927. Descobriu-se que o contexto interno do OpenClaw estava vazando para o texto visível da mensagem, parecendo uma injeção. O issue foi fechado após três correções serem mescladas, mas os mantenedores notaram que as correções não resolviam o sintoma "bloco completo reinserido em texto limpo" relatado pelo usuário. Seis issues irmãos permaneciam abertos.

Por que a evidência era fraca

Quando o usuário testou novamente removendo o HTML e copiando o texto limpo, os delimitadores reapareceram. Um comentarista apontou que isso poderia ser quatro coisas diferentes: eco do modelo, contaminação de replay, renderização do cliente ou reinserção real no canal. A evidência do usuário — texto colado de um cliente de chat — não conseguia distinguir essas possibilidades. Ninguém em onze threads havia capturado a carga útil realmente transmitida.

Ad

Capturando a carga útil

A configuração do Telegram do OpenClaw tem um apiRoot por conta. Apontá-lo para um proxy de registro local faz com que as chamadas de API dessa conta passem pelo proxy em vez do Telegram. Passos:

  • Crie um bot descartável no BotFather.
  • Adicione-o como uma segunda conta do Telegram na configuração, vinculada ao mesmo agente.
  • Defina apenas o apiRoot dessa conta para um proxy de registro local.
  • O proxy registra o corpo da solicitação, encaminha para api.telegram.org e retorna a resposta.
  • As contas de produção mantêm tokens reais e o apiRoot padrão — nada mais roteia por ele.

Cerca de 120 linhas de Python da biblioteca padrão são suficientes para o proxy.

Os resultados

Teste um: Prosa simples sem delimitadores. A carga útil era completamente limpa. Mas a resposta do agente mencionou que sua entrada chegou com o bloco de contexto completo anexado — então o bloco chega ao modelo mesmo quando a saída está limpa.

Teste dois: O usuário enviou o texto do preâmbulo removido. A carga útil mostrou &lt;&lt;&lt;BEGIN_OPENCLAW_INTERNAL_CONTEXT&gt;&gt;&gt; (com escape HTML), mas o que foi copiado era o literal <<<BEGIN\_OPENCLAW\_INTERNAL\_CONTEXT>>>. O delimitador literal nunca foi transmitido — o agente o citou ao descrever o bloco, o OpenClaw o escapou para HTML (parse_mode é HTML), o Telegram o renderizou de volta para a string literal, e copiar deu a versão sem escape.

A conclusão

Qualquer transcrição colada em um relatório de bug já passou por renderização e cópia — não pode provar transmissão versus citação. Vários relatórios se baseiam em evidências tão fracas. Este método de depuração se mostra mais confiável. Além disso, ao ler as correções, o usuário encontrou algo pior — um problema arquitetural separado — que ele planeja relatar separadamente.

📖 Leia a fonte completa: r/openclaw

Ad

👀 See Also