BlogEngenharia

O agente musical disse ter mudado uma clave em que nunca mexeu

Uma edição que não mudou nada voltou como “Applied” (aplicado), as leituras da partitura escondiam uma clave no meio da peça e o modelo acreditou na imagem. Veja cada causa, a correção e o que ainda não medimos.

Escrito por
Publicado
Tamanho
6 min de leitura

A resposta curta

Em 10 de outubro de 2026, o Starling, nosso assistente dentro do app, disse a uma pessoa que tinha passado a mão esquerda do compasso 4 para a clave de fá. O compasso continuava em clave de sol. Três coisas se somaram: a ferramenta de edição respondeu “Applied” (aplicado) a uma edição que não mudou nada, a nossa leitura em texto da partitura não mostrava as mudanças de clave no meio da peça, e o modelo confiou numa imagem da página. Corrigimos as três nas ferramentas e depois acrescentamos uma regra compartilhada; a medição de antes e depois ainda não foi feita.

O que aconteceu?

Numa partitura de piano, a pauta de baixo passava para a clave de sol durante um compasso, o compasso 4, onde o acorde arpejado fica no agudo, e voltava para a clave de fá depois dele. A pessoa pediu ao Starling, ao lado da partitura, que colocasse a mão esquerda do compasso 4 em clave de fá. O Starling chamou a ferramenta de edição, recebeu um sucesso e disse que estava feito. A página ainda mostrava clave de sol no compasso 4. Quando a pessoa disse que nada tinha mudado, o modelo ficou com a explicação que parecia mais provável e não leu o compasso de novo.

Descobrimos isso lendo a conversa salva e o histórico de versões da partitura no nosso servidor de homologação (staging), no mesmo dia.

Por que o assistente acreditou que a edição tinha funcionado?

Porque todas as fontes que ele tinha diziam isso, ou não diziam nada. Cada causa, sozinha, seria contornável.

  1. Pedido“compasso 4, mão esquerda, clave de fá”
  2. Ediçãodefine a clave com que a pauta abre, que já era de fá
  3. Resultado“Applied”, com um novo número de versão
  4. Leituramostra só a clave inicial, então nada parece errado
  5. Resposta“Pronto”
Como o falso relato se formou: uma edição que não mudou nada ainda gerou um sucesso e uma versão, e a leitura da partitura que o modelo consultou não mostrava a mudança de clave dentro do compasso 4.
  • A edição não mudou nada e mesmo assim deu certo. Nossas ferramentas tratavam qualquer pedido válido como uma nova versão. Definir numa pauta a clave que ela já tinha era válido, então o servidor salvava uma partitura idêntica e respondia “Applied” com um novo número de versão. O modelo não tinha motivo para duvidar.
  • A leitura escondia o que importava. A leitura em texto de uma partitura listava a clave e a tonalidade iniciais de cada parte, não as mudanças no meio da peça. Uma clave que mudava no compasso 4 ficava invisível no texto. Pior: uma clave de precaução no fim de um compasso, impressa para avisar da clave do compasso seguinte, era contada como a clave daquele próprio compasso.
  • O modelo confiou na imagem. Quando o texto e a página renderizada discordavam, ou o texto não dizia nada, o modelo julgava pela imagem, onde claves pequenas no meio de um sistema são fáceis de ler errado.

O que mudamos?

Quatro mudanças, todas feitas em 10 de outubro de 2026, no servidor que o Starling e o conector MCP compartilham.

  1. Uma edição que deixa a partitura como estava é recusada. A ferramenta devolve o erro “Nothing changed” (nada mudou: essa edição deixa a partitura como estava, então nenhuma versão nova foi salva), e o número da versão continua o mesmo. Desfazer e refazer ficam de fora.
  2. Toda edição lista o que escreveu. O resultado agora traz linhas como bar 4: lower staff clef treble -> bass ou bars 1-4: key C major -> F major, de modo que o modelo relata o que está na partitura depois da edição.
  3. As leituras mostram as mudanças no meio da peça. A leitura da partitura informa as claves, a tonalidade e a fórmula de compasso de cada compasso onde elas mudam, o texto de revisão marca “treble clef from here” (clave de sol a partir daqui) e as mudanças de tonalidade no próprio lugar, e uma clave de precaução agora vale para o compasso que ela anuncia.
  4. Uma regra compartilhada para todos os caminhos. As instruções do Starling, do servidor MCP e das habilidades do nosso plugin agora dizem: diga só o que os resultados das ferramentas mostram; um erro ou “Nothing changed” significa que a edição não foi feita, então diga isso; julgue claves, tonalidades e notas pela leitura em texto, não por uma imagem; e, se a pessoa contestar, leia esses compassos de novo.

A ordem importa. As duas primeiras colocam os fatos no resultado que o modelo lê, algo que nenhuma redação de prompt consegue. A especificação do MCP descreve a mesma divisão: os erros ao executar uma ferramenta pertencem ao resultado da ferramenta, marcados com isError, para que o modelo os veja e se corrija. O nosso “Applied” era um sucesso onde deveria haver um erro.

Como testamos isso?

De dois jeitos, um concluído e outro pendente.

  • Uma verificação da nossa suíte de testes abre uma partitura cuja pauta de baixo muda de clave dentro de um compasso e cuja tonalidade muda mais adiante, e confirma que toda leitura mostra as duas mudanças, que uma edição lista a clave e a tonalidade que escreveu e que uma edição que não muda nada é recusada sem gerar nova versão. Ela roda junto com as outras verificações rápidas em cada pull request.
  • Uma avaliação envia ao Starling seis pedidos sobre uma peça de piano de doze compassos montada como a que deu errado: uma correção de clave de verdade, a mesma correção num compasso que já estava em clave de fá, uma pergunta sobre a tonalidade depois da mudança, uma edição de altura que não muda nada, uma edição de pedal e uma contagem de compassos. Um modelo à parte lista cada afirmação da resposta e a confere com a partitura como ficou salva depois da rodada, nunca com as palavras do próprio assistente. Ainda não a rodamos antes e depois da mudança, então não temos uma taxa de alucinação para informar.

Regras reduzem a taxa de afirmações falsas; não a levam a zero. Um modelo ainda pode ler errado um compasso só pela imagem, e é por isso que a regra o manda para o texto e que as edições que ele faz são marcadas e podem ser desfeitas.

O que diríamos a quem está montando um agente com ferramentas?

  • Uma ferramenta nunca deve informar sucesso quando nada aconteceu. Se uma chamada não pode mudar o estado, devolva um erro que o modelo consiga ler.
  • Devolva o que foi escrito, nos termos do próprio domínio. Repetir o pedido não prova nada.
  • Ponha em texto todo fato de que o modelo precisa para conferir o próprio trabalho. Se os fatos estão só numa imagem, o modelo vai julgar pela imagem.
  • Leia as conversas. Descobrimos isso por uma conversa salva, não por uma métrica.

Fontes

  1. Model Context Protocol, Specification 2025-11-25: Tools, seção Error Handling.
  2. A conversa salva e o histórico da partitura do ScoreStarling de 10 de outubro de 2026, e a mudança e os testes que vieram depois.

Perguntas e respostas

Por que uma ferramenta informaria sucesso numa edição que não mudou nada?

A nossa tratava todo pedido válido como uma nova versão: definir uma clave que a pauta já tinha era válido, então ela salvava uma partitura idêntica e respondia “Applied” (aplicado). Desde 10 de outubro de 2026, uma edição assim é recusada com “Nothing changed” (nada mudou), e nenhuma versão é salva.

Só regras no prompt bastam para um agente parar de afirmar edições que não fez?

Não de forma confiável. Uma regra ajuda, mas o modelo ainda precisa saber o que é verdade. As mudanças que mais importam estão nas ferramentas: recusar edições que não mudam nada e listar o que cada edição escreveu, para que os fatos estejam no resultado que o modelo lê.

Isso vale também para o ChatGPT e o Claude?

Sim. O Starling e o conector MCP chamam as mesmas ferramentas, então o ChatGPT, o Claude e outros clientes MCP recebem as mesmas recusas e as mesmas listas de mudanças escritas, e a mesma regra consta nas instruções do servidor.

Traga qualquer música Saia com uma partitura