A pasta `.cargo\bin` que ninguém conseguia encontrar pela linha de comando

Ler o original em inglês

silent-failureclaude-codeautomationverification

Imagem de capa: A pasta `.cargo\bin` que ninguém conseguia encontrar pela linha de comando

A pasta chamada .cargo\bin estava lá, guardando uma ferramenta que o computador não conseguia encontrar.

Só descobrimos isso porque alguém fez uma pergunta direta: “A gente parou de usar esse atalho. Por quê?” Nossa primeira resposta não foi uma resposta. Dissemos que ainda não sabíamos e fomos conferir.

O atalho serviria para deixar o trabalho de rotina no computador menos prolixo. Ele colocava um pequeno filtro na frente de tarefas comuns, como ver o que mudou em um projeto ou compilá-lo. O filtro se chamava rtk. Ele pegava a saída longa e bagunçada de um comando e devolvia as poucas linhas de que um agente de IA provavelmente precisaria. Isso importa porque cada linha extra gasta atenção e espaço em uma conversa.

Um longo conjunto de instruções mandava toda sessão de IA colocar rtk antes desses comandos. No papel, parecia que a gente usava o atalho o tempo todo. Mas as primeiras verificações voltaram vazias. Pedimos a dois tipos de janela de comando que encontrassem o rtk. As duas voltaram vazias.

A prateleira que ninguém olhou

A ferramenta em si não tinha sumido. Ela estava dentro daquela pasta pequena no computador. O problema era que a pasta não estava no PATH, a lista de lugares onde o computador procura quando você digita um comando. Pense no PATH como a lista de prateleiras que um funcionário de loja pode olhar quando alguém pede um item. O item pode estar no prédio, mas, se a prateleira não está na lista, o funcionário diz que ele não está lá.

Era só isso. Toda vez que um agente de IA digitava rtk antes de um comando, o computador respondia “command not found”. Aí um wrapper executava o comando comum no lugar. O trabalho parecia terminar. A pessoa ou a IA que lia o resultado final não recebia nenhum aviso claro de que o atalho tinha falhado.

Nós tínhamos confiado na instrução em si, e ela não servia como prova. O conserto levou cinco minutos. A confiança mal colocada tinha escondido 366 tentativas falhas (Ler em inglês). Em 4.446 registros de sessões, o atalho de verdade tinha rodado apenas dez vezes. Uma dessas dez foi a investigação que encontrou o erro.

Havia um remendo fácil. Poderíamos ter criado um link para essa única ferramenta em uma pasta mais visível. Não fizemos isso. Seria consertar um item perdido e deixar todas as outras ferramentas guardadas em .cargo\bin igualmente difíceis de achar. Em vez disso, adicionamos a pasta inteira à lista permanente de PATH do computador.

Isso exigiu cuidado. Uma lista de PATH é texto simples, e substituí-la sem atenção pode apagar o resto da lista. Primeiro lemos as 81 entradas que já existiam e depois adicionamos mais uma, chegando a 82. Também precisamos reiniciar o programa que abre as novas sessões de trabalho, porque ele só lê essa lista quando inicia. Para ter certeza de que o conserto era real, atualizamos também a sessão ativa e vimos o rtk produzir sua saída curta na hora.

Lendo os recibos

Aquele conserto de cinco minutos levou a uma pergunta melhor. Se uma única falha tinha deixado a mesma pequena pegada centenas de vezes, o que mais estava acontecendo nos registros?

Toda sessão de programação com IA tinha guardado um log contínuo dos comandos que tentou e do que voltou. Tratamos esses logs como alguém trata uma pilha de recibos quando o caixa não fecha. Não presumimos que toda linha estranha significava problema. Contamos as mensagens repetidas e depois conferimos o que havia por trás delas.

Alguns padrões eram ruído antigo. Um comando de projeto tinha falhado 62 vezes antes de ser instalado, mas agora funcionava. Outras mensagens eram erros esperados, capturados e registrados de propósito. Esses não precisavam de novo conserto. A distinção importante era simples: isso ainda está acontecendo, está causando dano, ou é o registro de algo que já foi tratado?

Um problema ativo era mais doloroso. Um programa em Python travava ao tentar imprimir caracteres comuns, como um símbolo de confere, uma seta ou um nome com acento. O nome assustador era UnicodeEncodeError. Em português claro, o programa tentava colocar um caractere na página usando um alfabeto antigo que não o incluía.

Eram 143 dessas mensagens em 59 sessões. A primeira correção foi mudar uma configuração do computador para o Python usar as regras modernas de texto. Funcionou ali. Mas isso não acompanharia o trabalho para outro computador nem para uma cópia nova. Não era uma correção duradoura.

O conserto duradouro foi para dentro do próprio programa, no ponto em que ele começa a falar com o mundo exterior. Dissemos ao programa que usasse UTF-8, a forma moderna de representar texto, sempre que imprimisse. Depois removemos a configuração do computador, rodamos o teste do símbolo de confere de novo e confirmamos que ele ainda imprimia direito e terminava normalmente.

Os comandos que a janela não conseguia ler

O maior monte de problemas era menos dramático. Eram frases que a janela de comando nem conseguia ler. Foram 562 erros “Missing” do PowerShell, além de muitas outras mensagens sobre pontuação quebrada e aspas sem fechar. A causa eram comandos longos e embaraçados de uma linha só, principalmente os que tinham várias partes entre aspas. Isso aconteceu três vezes enquanto investigávamos justamente esse padrão.

Nenhum software novo resolveu isso. Adicionamos uma regra simples: se um comando é mais do que uma linha simples, escreva-o em um pequeno arquivo de script e execute o arquivo. É como escrever as instruções em um cartão em vez de gritá-las por uma porta barulhenta. O computador consegue ler tudo antes de começar.

O que procurar nos seus próprios registros

Se o seu trabalho depende de uma ferramenta ou de um atalho, encontre o lugar onde ele deixa rastro e olhe ali, em vez de reler as instruções que dizem que ele está em uso. Uma mensagem de falha com cara inofensiva que aparece mais de uma vez merece ser contada. Quando as instruções escritas e o trabalho que realmente acontece se afastam, uma repetição costuma ser o primeiro lugar onde isso aparece.

Receba a próxima história de IA no dia a dia

Histórias em linguagem simples sobre usar IA para facilitar o trabalho do dia a dia. Um e-mail curto quando sair uma nova, sem jargão.