Reescrevendo o Prime Agent em Rust
Desde o lançamento do Prime Agent em agosto, os downloads ultrapassaram 300 mil e o processamento de tokens superou 8 trilhões. Hoje, a equipe lança uma versão mais rápida e limpa, reescrita do zero em Rust.
Ao longo de duas semanas, o Prime Agent orquestrou um enxame de mais de 2.000 agentes para reescrever a si mesmo de ponta a ponta, operando em mais de 10.000 Prime Sandboxes e utilizando mais de 200 bilhões de tokens do endpoint GLM-5.3 do Prime Inference. A reescrita testou sob estresse as capacidades multiagente, incluindo a infraestrutura de sandbox e inferência para enxames de agentes em larga escala, pesquisa autônoma e aprendizado por reforço.
Para garantir a paridade de funcionalidades, o Prime Agent usou subagentes para ordenar topologicamente as dependências, com máquinas de estados finitos estruturando cálculos em loop e verificações de corretude. A arquitetura do código foi reescrita para facilitar a manutenção. Benchmarks de tempo de execução e rastros reais foram usados para aprimorar métricas de desempenho e triar bugs. Agora, o Prime Agent roda mais rápido e usa menos recursos do que a maioria dos frameworks de agentes de programação. A implementação em Rust processou 192,99 bilhões de tokens com 1.981 agentes na profundidade 3, enquanto o TypeScript processou 35,70 bilhões de tokens com 228 agentes.
Por que Rust: o TypeScript ajudou a entregar rapidamente, mas os tipos opcionais desaparecem em tempo de execução, os erros trafegam como exceções não verificadas e o trabalho intensivo em CPU disputa com a entrada do teclado em um único event loop. Cada processo paga pelo custo de um runtime JavaScript e de um coletor de lixo. Rust se adequa ao objetivo de entregar rápido mantendo o código em um padrão mais alto à medida que cresce. Os ganhos de desempenho vêm do código nativo sem coletor de lixo, de processos de trabalho por sessão e de melhorias na inicialização. A concorrência se beneficia das traits Send e Sync de Rust, permitindo que o compilador verifique a movimentação de dados entre threads. Garantias em tempo de compilação, derivadas de enums exaustivos, ownership e lifetimes, eliminam classes inteiras de bugs. Benefícios adicionais incluem suporte ao Windows, isolamento de falhas por sessão e um protocolo de daemon mais consistente.
O objetivo era que os agentes realizassem a reescrita de forma autônoma, com intervenção humana mínima. O trabalho humano concentrou-se em montar a verificação que possibilitasse a implantação autônoma em escala, seguindo trabalhos anteriores sobre tradução automática para Rust. Cada especificação cobriu um tipo diferente de paridade: a paridade de TUI compara os binários TypeScript e Rust lado a lado contra o mesmo modelo roteirizado, comparando quadros do terminal. A paridade de harness compara transcrições de sessão e requisições ao provedor de modelo. A paridade de protocolo verifica todos os tipos de mensagem do protocolo do daemon contra a implementação em TypeScript. A paridade de funcionalidades envolveu uma auditoria componente por componente do produto em TypeScript. Verificações objetivas garantem a consistência entre APIs e protocolos.
Fonte: Hacker News · Resumido por HeadlinesBriefing