Atualizei para o macOS 27 Golden Gate Beta 2 depois de voltar das férias, cansado e ansioso para voltar ao trabalho. Usei o primeiro beta sem problemas e estou animado para ver o que o novo beta tem a oferecer. No entanto, dentro de algumas horas meu MacBook Pro M4 Pro ficou desconfortavelmente quente e a bateria caiu ridiculamente rápido, de 100% para cerca de 40% em duas horas. Fechei o Affinity primeiro porque é um conhecido esgotador de bateria, mas isso não fez diferença. O laptop continuou quente, os ventiladores funcionaram e resolvi cuidar disso mais tarde.
Eu olhei no Activity Monitor e vi que o App Store Agent estava consumindo muita energia, mas eu estava ocupado com outras coisas ao mesmo tempo e não tive tempo de pular na toca do coelho e descobrir o que realmente estava acontecendo. Em vez de passar a noite vasculhando os syslogs, inicializei pi instalação de codificação usando GPT-5.5 e pedi para dar uma olhada.
Dei ao GPT-5.5 um aviso bastante vago: “Meu laptop está descarregando a bateria há algumas horas e não consigo encontrar a causa. Você pode dar uma olhada?” Não forneci uma mensagem de erro específica ou algo específico para apontar em uma determinada direção. Tudo o que eu disse foi que meu laptop estava quente e a bateria estava acabando.
Investigação de GPT-5.5
O diagnóstico é feito passo a passo
O GPT-5.5 não se apressou em responder, em vez disso percorreu o circuito de diagnóstico, leu a saída e decidiu o que verificar a seguir. É um loop de agente típico que você também costuma ver em agentes de codificação como Codex ou OpenCode, mas é personalizado para solução de problemas no dispositivo.
Tudo começou verificando as alegações de saúde da bateria e prevenção do sono:
pmset -g batt
pmset -g assertions
Como resultado, constatou-se que a bateria consumiu cerca de 24 W de energia, o que representa cerca de 38%, restando cerca de 1 hora e 20 minutos. Outro aplicativo alegava prevenção ativa do sono, mas esse não era o problema principal.
Em seguida, atraiu os consumidores de CPU mais populares:
top -l 2 -s 5 -n 30 -o cpu -stats pid,command,cpu,power,mem,time
ps -Ao pid,ppid,pcpu,pmem,rss,etime,args | sort -k3 -nr | head
Isso nos deu nossa primeira pista: o appstoreagent estava rodando em torno de 54-60% da CPU, o dasd em 44-47% e o WindowServer em 37-42%. Além disso, VS Code, Discord e Slack foram contribuidores menores. Então o Appstoreagent foi brilhante, mas por quê?
GPT-5.5 continuou a testar o processo diretamente:
PID=$(pgrep -x appstoreagent | head -1)
ps -p "$PID" -o pid,ppid,user,%cpu,%mem,rss,etime,command
sample "$PID" 5 1
Em seguida, verificou se a rede estava baixando ou carregando:
lsof -a -p "$PID" -iTCP -sTCP:ESTABLISHED -nP
Não há conexões TCP ativas. Portanto, o agente da App Store não estava buscando atualizações da App Store nem transferindo dados, mas era queimando a CPU em algo local.
Só então começou a vasculhar os logs:
log show --style compact --last 5m --predicate 'process == "appstoreagent"'
A saída apontou para appstoreagent preso em um loop de métricas do Apple Arcade/App Store. As filas ativas e atividades de tarefas incluíam com.apple.appstored.ArcadeManager.dispatch, ArcadePostSummary e ArcadePostPayout, e consultava o lançamento do aplicativo e o histórico de uso por meio do Biome, atingindo repetidamente erros do agendador, liberando eventos nulos e, em seguida, fazendo um loop novamente.
O GPT-5.5 então examinou os logs da última hora para ver se era apenas um problema transitório ou se era realmente um padrão estabelecido.
log show --predicate 'subsystem == "com.apple.appstored"' --last 1h --info
Os números foram chocantes, pois o subsistema daemon da App Store gerou aproximadamente 2 milhões de linhas de log naquela hora, das quais aproximadamente 98,4% (aproximadamente 1.980.158 linhas) estavam diretamente relacionadas ao loop de métricas do Arcade. O restante foi dividido da seguinte forma: erros BGSystemTaskSchedulerErrorDomain (133.319), “recuperação de conta de cobrança” (11.956), fora do Arcade MetricsCoordinator (~9.356), erros de coordenador de inicialização e varreduras de mapas de software em comparação com pequenas frações.
Então sim, o Arcade era a atividade dominante. Mas quem estava realmente dirigindo isso?
Determinando a causa raiz do consumo da bateria
Descompactando erros SQLite e o loop do agendador
Verificando os logs e o que o GPT-5.5 mostrou, notei um erro SQLite que parecia estranho. Eu perguntei sobre: “O que era esse SQLite sem esse log de coluna?”
GPT-5.5 então executou o seguinte comando:
log show --last 60s --predicate 'process == "appstoreagent"' | grep -c "no such column"
Mostrou quantas vezes o erro ocorreu: active_launch_events.recent_launch_times. Este é um erro clássico de incompatibilidade de esquema SQLite porque o banco de dados foi consultado repetidamente em busca de uma coluna que não existia. O antigo processo do agente da app store detectou cerca de 50 desses erros em um curto período de tempo. Esta não foi a principal fonte de desgaste da CPU, mas após a atualização do Beta 2 parecia consistente com uma incompatibilidade incompleta do esquema do banco de dados local da App Store ou do Bioma.
O erro SQLite provavelmente fez parte da mesma cadeia de falhas, e não de um único erro. Parece que o BGTaskScheduler despertou o agente da loja de aplicativos para relatar as métricas do Arcade, o que significa que o agente da loja de aplicativos consultou os dados do histórico de inicialização local, atingiu uma coluna SQLite ausente, não encontrou eventos para postar, tentou reprogramar a tarefa, acertou erros do agendador e repetiu. O uso da CPU que você vê pertence ao appstoreagent porque era o processo que fazia o trabalho, enquanto o BGSystemTaskSchedulerErrorDomain era um erro de estrutura que ele encontrava durante o loop.
Quando percebi isso, perguntei por que a alta CPU vinha do appstoreagent e não do BGSystemTaskSchedulerErrorDomain. A resposta é que BGSystemTaskSchedulerErrorDomain não é um processo separado. Este é um domínio de erro do sistema de tarefas em segundo plano da Apple. A CPU estava aparecendo no Appstoreagent porque era o processo que acionava as tarefas do Arcade Metrics, consultando dados de uso, buscando o estado da conta, liberando métricas, tentando agendar e reprogramar tarefas em segundo plano, obtendo erros do agendador e fazendo loop novamente. O erro do agendador era um sintoma do que o agente da app store estava fazendo, e não de um serviço individual que consumia CPU.
O processo de eliminação funcionou temporariamente, mas retornará após alguns minutos.
Correção temporária até que a Apple possa consertar corretamente
Do killall à desativação do launchctl
Finalmente perguntei: “O que posso fazer para impedir que isso aconteça?”
Isso sugeriu uma progressão do mais leve para o mais pesado:
killall appstoreagent
launchctl kickstart -k gui/$(id -u)/com.apple.appstoreagent
Um simples kill interrompe o processo temporariamente, mas o agente da app store continua voltando, então foi sugerido desabilitar totalmente o agente em execução:
launchctl disable gui/$(id -u)/com.apple.appstoreagent
pkill -9 appstoreagent
Executei os dois comandos e o uso da CPU caiu imediatamente e a duração da bateria voltou ao normal e já foi corrigida. A persistência vem da desativação do launchctl, que persiste durante as reinicializações, porque não apenas interrompe o processo; impede que o launchd o reinicie. Isso significa que terei que reativá-lo manualmente mais tarde por meio de launchctl enable gui/$(id -u)/com.apple.appstoreagent quando finalmente for corrigido, mas por enquanto posso viver sem ele.
Desativar o App Store Agent pode interromper alguns trabalhos de relatórios em segundo plano, mas é uma compensação bastante razoável para a versão beta. Opções mais fáceis estão disponíveis, e alguns relatórios sugerem que simplesmente desligar as atualizações automáticas da App Store resolveu o problema. Além disso, usar o modo de baixo consumo de energia ou a otimização da CPU pode solucionar o problema, mesmo que não resolva o problema subjacente. No entanto, tenha em mente que isso é beta para que você possa esperar pela próxima versão ou simplesmente não usar o beta. Porém, no meu caso, eu queria algo que funcionasse agora, não mais tarde.
Poucos dias após o lançamento do Beta 2, os usuários do r/MacOSBeta estavam documentando exatamente o mesmo problema. Vi muitos relatórios de appstoreagent e appstorecomponentsd consumindo constantemente até 150% da CPU, descarregando completamente as baterias em apenas algumas horas, com os mesmos códigos de erro e a mesma coluna SQLite ausente, gerando um loop infinito de novas tentativas.
UM Desenvolvedor chinês também diagnosticou de forma independente a causa raiz, descobrindo que a coluna active_launch_events.recent_launch_times era a arma fumegante após a atualização para beta. Não foi um problema isolado no meu computador, mas o bug generalizado no macOS 27 Golden Gate Beta 2 e GPT-5.5 conseguiu identificá-lo imediatamente.
O que isso realmente significa
O loop do agente é onde reside o valor
Os agentes de codificação com acesso ao terminal podem executar comandos, ler a saída e decidir o que verificar em seguida. Esta é uma funcionalidade quase padrão neste momento. O Pi não faz nada significativamente diferente do Codex ou Código aberto deve funcionar se o mesmo prompt for exibido, é apenas meu equipamento de codificação preferido porque é leve e extensível.
No entanto, há uma diferença entre uma IA que ajuda você a escrever código em um editor e uma IA que diagnostica um problema de sistema em sua máquina real. O loop de agência, onde executa o comando, lê a saída, decide o que verificar a seguir e repete, é onde reside o valor. Não se trata de relembrar um bug conhecido dos dados de treinamento ou de raciocinar sobre alguma verdade oculta, trata-se de diagnósticos sistemáticos que levarei uma noite para fazer manualmente antes de sintetizar os resultados em algo em que eu possa realmente agir.
Às vezes, pedir à IA para dar uma olhada é melhor do que três horas pesquisando você mesmo a saída do log show. E neste caso estava certo.







