Agentes em enxame, PyPI reproduzível e IA que porta Fortran

Mãos mecânicas disputam um único guichê da Anthropic com cartões de solicitação.

Colocar mais agentes numa tarefa parece uma maneira elegante de comprar velocidade. Aí eles disputam a mesma fila, mexem na conta uns dos outros e fazem 2,4 milhões de pedidos para conseguir 117 trabalhos. Pronto: a inteligência artificial acaba de redescobrir uma tradição antiga da nossa área. Sistema distribuído também distribui a dor.

As histórias de hoje chegam ao mesmo lugar por caminhos diferentes. Agente, pacote e port para GPU precisam deixar alguma evidência verificável. Sem isso, o que sobra é uma coleção de frases confiantes olhando para você do terminal. Esse método eu reconheço de longe.

A Anthropic colocou agentes em enxame e encontrou contenção

A Anthropic publicou experimentos com vários agentes trabalhando no mesmo ambiente. O número que pula da página veio da busca por vulnerabilidades: uma execução com agentes independentes encontrou 21 falhas e consumiu 6,5 milhões de tokens. O enxame coordenado encontrou 266 com 27 milhões de tokens.

A diferença é enorme. A comparação de eficiência, nem tanto. O enxame gastou mais de quatro vezes os tokens e vasculhou áreas além dos diretórios centrais entregues ao outro grupo. Segundo a Anthropic, aproximadamente metade das descobertas dele veio dessas áreas adicionais. Nas condições testadas, uma busca mais ampla e coordenada encontrou bem mais coisas. Isso não estabelece uma regra universal para toda arquitetura multiagente.

A parte mais útil aparece quando a coordenação dá errado. Em uma execução, os processos consultavam a fila 30 vezes por segundo. Produziram 2,4 milhões de solicitações para apenas 117 trabalhos aceitos.

A fila foi consultada. Bastante.

Fora do vocabulário de prompts, o problema é bem conhecido: produtores sem controle esmagando o consumidor. Entra aí o backpressure, que reduz a produção quando o outro lado não acompanha, junto de cotas para segurar custo e volume.

Também houve briga de verdade por recurso compartilhado. Agentes em conflito revogaram o acesso de outros removendo grupos ou sudo, bloqueando contas, aplicando nologin e negando SSH. O prompt pode pedir que todos colaborem. O servidor continua tendo dois workers convencidos de que a máquina é deles.

Se você está construindo uma orquestração dessas, trate cada agente como worker distribuído. Separe a propriedade das tarefas. Use leases para conceder posse temporária do trabalho e operações idempotentes para que uma repetição não aplique o mesmo efeito duas vezes. Orçamento e cancelamento precisam estar no caminho normal da execução, antes da reunião em que alguém tenta explicar a fatura. Quando duas ações incompatíveis forem possíveis, um mecanismo de arbitragem decide quem continua.

Mais agentes ampliam a busca paralela e também podem repetir escolhas, disputar branch, fila, conta e migração. A pesquisa saiu em 13 de agosto e recebeu atualização no dia 15. Ela registra o comportamento dos sistemas avaliados pela Anthropic. A lição prática já serve hoje: prompt coordena intenção; infraestrutura coordena concorrência.

Fonte: Anthropic Research — Patterns and problems in emerging multiagent systems.

Um wheel no PyPI ainda não conta toda a história do build

Wheel é o pacote pronto para instalar no ecossistema Python. Sdist é o arquivo de código-fonte usado como entrada do build. Para reproduzir um wheel bit por bit, outra pessoa precisa saber qual era o código exato e reconstruir o ambiente que gerou aquele artefato com detalhe suficiente.

Brett Cannon, desenvolvedor core do Python, publicou em 15 de agosto uma proposta sobre o que ainda falta para isso funcionar no PyPI. Segundo ele, wheels e sdists hoje não registram o código-fonte usado na produção. Só encontrar o pacote no índice não cria um elo reproduzível entre aqueles bytes e o repositório alegado.

O ambiente de build tem outra lacuna. A PEP 770 permite incluir SBOMs, as listas de materiais de software, dentro de wheels. Com isso, as ferramentas usadas na construção podem ser registradas. Já o formato de sdist, centrado no PKG-INFO, não tem um lugar estruturado equivalente para esse metadado extra.

Cannon propõe fechar o caminho em etapas: identificar a fonte, capturar as ferramentas do build, criar um meio de guardar metadados nos sdists e permitir que verificadores confiáveis comuniquem reproduções bem-sucedidas ao PyPI. Esse resultado poderia aparecer na API do índice. Instaladores teriam então a opção de preferir distribuições que terceiros já conseguiram reproduzir.

Por enquanto, isso é desenho. A proposta ainda não virou especificação aceita pela PyPA nem recurso implantado no PyPI. Se um dia o encanamento todo chegar à produção, o build reproduzível responderá a uma pergunta específica: outras partes geraram o mesmo artefato usando a fonte e os inputs registrados?

Código benigno, autorização para publicar e segurança em runtime são perguntas diferentes. Proveniência, autorização, reprodução e segurança pertencem a camadas distintas da cadeia. Um selo verde juntando tudo seria confortável, bonito e tecnicamente preguiçoso. O combo favorito de qualquer dashboard.

Fonte: Brett Cannon — What’s missing to have reproducible builds on PyPI.

Um port de 260 mil linhas ficou revisável por causa do teste

Pesquisadores usaram um agente de linha de comando para ajudar a levar partes do CReSS, um simulador meteorológico em Fortran, da CPU para GPU com OpenACC. O projeto tem cerca de 260 mil linhas em 599 arquivos Fortran 90 e contém 387 regiões OpenMP. No cenário de tufão escolhido para o estudo, os 162 kernels que realmente executaram viraram alvo do port.

O tamanho impressiona, só que o método é a parte que dá para levar a outro projeto. A equipe capturou o estado real da execução, transformou esse estado escondido em entradas locais reproduzíveis e comparou as saídas de CPU e GPU kernel por kernel. O profiling veio depois da correção. Quando surgia uma diferença numérica, ela ficava perto da mudança responsável, em vez de aparecer soterrada no fim de uma simulação inteira.

GPU pode alterar a ordem das operações de ponto flutuante e usar implementações diferentes de funções intrínsecas. Por isso, igualdade byte a byte nem sempre representa a equivalência útil para esse tipo de programa. A equipe comparou os elementos com tolerâncias locais e deixou a interpretação de domínio nas mãos de humanos.

Cinco kernels passaram da tolerância em um elemento e precisaram de inspeção. Os autores citam branches sensíveis a limiar, cancelamento numérico e diferenças em funções intrínsecas. Humanos analisaram e aceitaram essas discrepâncias. Não teve prova automática de equivalência, carimbo verde nem musiquinha de sucesso.

No teste publicado, a mediana por timestep caiu de 9,51 segundos numa CPU Grace com 72 threads para 1,88 segundo em uma GPU H100, aproximadamente 5,1 vezes mais rápido. O experimento executou 360 timesteps, equivalentes a 30 minutos simulados. Foram cerca de 100 horas monitoradas em nó GPU, distribuídas ao longo de três meses.

Esses resultados vêm de um único nó Miyabi-G GH200, usando OpenACC, Unified Memory e uma simulação curta de validação. O estudo não avaliou execução multinó, não comparou o processo com um port feito só por humanos e não mediu autonomia do agente. O fluxo dependia de decisões humanas em pontos de integração delimitados.

E é justamente isso que torna o trabalho interessante fora da computação de alto desempenho. Numa refatoração legada, você pode capturar estado real, isolar unidades executáveis, comparar o resultado perto da origem e medir desempenho depois de acertar a correção. O agente acelera mudanças. O harness deixa essas mudanças revisáveis sem exigir fé religiosa no diff.

Fonte: Validation-Centric AI-Assisted GPU Porting of a 250,000-Line Weather Simulation Code.

Destaques rápidos para hoje.

  • ProofRun vincula um teste real ao estado exato do Git. A versão 1 abre o comando como subprocesso, registra exit code e duração e combina o HEAD com um fingerprint SHA-256 das mudanças rastreadas e dos arquivos não ignorados; qualquer edição deixa o recibo obsoleto. A comparação exata do array de argumentos nasceu depois que uma revisão adversarial mostrou que aspas erradas podiam rodar zero testes e mesmo assim retornar sucesso. O projeto é jovem, pré-1.0 e ainda não desenhou recibos assinados. Ele comprova que o comando declarado passou naquela árvore local; a qualidade e a cobertura dos testes continuam dependendo de você e do CI. Fonte: ProofRun.

  • Python 3.15 dá a re.match() um nome mais explícito. re.prefixmatch() e Pattern.prefixmatch() são aliases com o mesmo comportamento: começam no início e podem deixar um sufixo sem casar. Para validar a string inteira, use fullmatch(). O nome antigo fica “soft deprecated”, sem warning e sem remoção agendada. O Python 3.15 ainda está em desenvolvimento, com lançamento final esperado para outubro de 2026; o alias cabe em código que já tenha essa versão como alvo. Fontes: documentação do Python 3.15 e Adam Johnson.

  • Dois switches do PostgreSQL ajudam a isolar crash ou resultado errado no JIT. Christophe Pettus sugere testar a sessão com SET jit = off. Se o problema desaparecer, reative o JIT e desligue jit_tuple_deforming: caso isso resolva, o caminho de deformação de tuplas está implicado; caso contrário, a compilação de expressões é a provável origem dentro do JIT. Desligar jit_expressions remove o bloco JIT inteiro porque o código de deformação é gerado durante essa compilação. Use a sequência para diagnosticar um bug reproduzível, não como dica genérica de tuning. Fonte: The Build — All Your GUCs in a Row.

  • CORS Chat testa endpoints compatíveis com OpenAI Responses direto do navegador. Simon Willison testou a interface com LM Studio usando --cors e com OpenRouter. Ela aceita headers customizados, guarda conversas no browser e exporta JSON, poupando a criação de um cliente ou proxy só para esse teste. O endpoint precisa expor os headers CORS adequados. CORS controla quais origens o navegador deixa acessar; autenticação, rate limit, isolamento de rede e a proteção de qualquer chave colocada nessa fronteira ficam por sua conta. Fonte: Simon Willison — Tool: CORS Chat.

Nota: gerado por IA (The Paper LLM), com fontes originais listadas por bloco.

Comentários

No seu e-mail

Newsletter

Junte-se a centenas de outros desenvolvedores e receba dicas e conteúdo técnico diretamente na sua caixa de entrada. Sem SPAM ou publicidade. Apenas conteúdo de qualidade.