Ao vivo 18/11 · Turma 318 nov às 19:00 MSK — aula prática gratuita de agentes de IA · Turma 3 ao vivo começa 23/11Aula 18/11 →Turma 3 (23/11)
LançamentoAnálise · No radarHabr AI→ original

Desenvolvedor recriou o Winamp para Mac com agentes de IA e manteve o uso de CPU em 2–3%

O autor adiou por vários anos seu player no estilo Winamp para Mac, mas finalmente conseguiu lançá-lo com a ajuda de agentes de IA. O MacAmp usa Swift, SwiftUI e AppKit, sem Electron: no M1, consome cerca de 0,01% de CPU em pausa e 2–3% durante a reprodução com o analisador de espectro. Os agentes escreveram a maior parte do código, enquanto o desenvolvedor ficou responsável pela ideia, pela arquitetura e pela aprovação do resultado. O projeto tem código aberto sob a licença MIT.

Processado por IA de Habr AI; editado por Hamidun News
Desenvolvedor recriou o Winamp para Mac com agentes de IA e manteve o uso de CPU em 2–3%
Fonte: Habr AI. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalHabr AI ↗
Editor-chefe
Dado-chave #1O agente lê a visão do produto, o plano e o guia de referência do Winamp 2.x antes de trabalhar
Dado-chave #2AGENTS.md, skills e testes com um único comando, ./build.sh test, mantêm o agente dentro dos limites
Dado-chave #3Não dá para confiar nos agentes para avaliar a experiência: crossfade e arraste precisam ser testados manualmente

Uma história familiar: uma pasta abandonada com um projeto pessoal que, três ou quatro anos atrás, parou na primeira tela e na reprodução básica. O desenvolvedor Alexrel procurava um player simples para Mac, no espírito do Winamp, mas os atuais ou viraram suítes cheias de serviços de streaming, ou usam Electron e consomem CPU sem necessidade. Com a ajuda de agentes de IA, ele finalmente concluiu seu próprio player. O resultado é o MacAmp: uma recriação de código aberto do Winamp 2.95 em Swift, SwiftUI e AppKit, sem webviews, com uma versão universal para Apple Silicon e Intel. Ele exige macOS 14 ou mais recente.

O resultado final

O player reproduz o original nos mínimos detalhes, incluindo janelas, menus e atalhos de teclado. A janela principal, o equalizador e a playlist se encaixam magneticamente, e há modos Shade e Double Size. Qualquer skin do Winamp 2.x funciona. O player reproduz MP3, AAC, FLAC, Ogg, MIDI e outros formatos, além de oferecer suporte a rádio pela internet, extração de CDs e equalizador de dez bandas. Os recursos modernos ficam nos bastidores: por exemplo, o áudio muda automaticamente para um novo dispositivo de saída.

Para um utilitário que deve ficar num canto da tela, a principal métrica é o consumo de recursos. No M1, o player usa cerca de 0,01% de CPU em pausa e 2–3% durante a reprodução com o analisador de espectro. Quando nada está tocando, o mecanismo de áudio para, e o analisador deixa de enviar quadros após dois segundos de silêncio.

Detalhes de engenharia que valem uma olhada

Três NSWindow separadas e sem bordas precisam se mover como um conjunto, mas o macOS não oferece um recurso para agrupar janelas. O autor calcula a posição de cada janela a partir do ponto inicial do arraste, somado ao deslocamento comum. Se pequenos incrementos forem adicionados a cada movimento do mouse, os erros de arredondamento se acumulam e os encaixes se desalinham. A atração magnética pelas bordas é calculada uma única vez, com base nos contornos previstos, e o resultado é aplicado ao grupo inteiro.

O segundo detalhe envolve as skins. Elas são imagens rasterizadas em BMP, feitas para telas de baixa densidade de pixels. Com a renderização padrão no Retina, a fonte e os números do contador de tempo ficam borrados. Por isso, as próprias janelas fazem sua renderização com interpolationQuality = .none, e os sprites são recortados pelas coordenadas dos pixels originais. O equalizador usa AVAudioUnitEQ: as bandas são filtros paramétricos, e o pré-amplificador é implementado por meio de globalGain.

Como os agentes trabalharam neste projeto

Segundo o autor, agentes de IA escreveram a maior parte do código. Ele concebia as ideias, definia as tarefas, avaliava os resultados e decidia o que lançar. A abordagem funcionou porque o desenvolvedor entende como o produto deve ser e percebe quando a arquitetura se desvia do rumo, enquanto o agente conhece as chamadas específicas do AppKit.

Três coisas ajudaram:

  • Documentação no repositório. Visão do produto, plano por etapas, checklist, guia de referência das dimensões e do comportamento do Winamp 2.x e capturas de tela do original. O agente lê tudo isso antes de trabalhar, sem que seja necessário explicar a cada vez que “igual ao Winamp” deve ser levado ao pé da letra.
  • AGENTS.md e skills. Regras e instruções sobre como alterar o equalizador e a playlist com segurança impedem que o agente quebre o que já funciona.
  • Testes com um único comando. ./build.sh test permite verificar rapidamente cada alteração.

Não foi possível delegar aos agentes a avaliação da experiência: se o arraste parece natural, se algum campo treme, se a cor está certa, como soa o crossfade com faixas reais. Isso só se verifica com as mãos e os ouvidos.

Limitações e conclusão prática

O projeto tem lacunas reconhecidas. Não há visualizações Milkdrop, codificadores MP3 e Ogg para CDs, módulos de tracker nem scrobbler do Last.fm. O aplicativo não tem assinatura Developer ID por decisão do autor: o player substitui ícones de arquivos dentro do próprio bundle e refaz a assinatura localmente. Por isso, o Gatekeeper exibirá um aviso na primeira execução. É possível contorná-lo pelas configurações de segurança ou com o comando xattr -dr com.apple.quarantine. Além disso, o autor testou o player em apenas um Mac e com uma única biblioteca musical. Por isso, pede relatos sobre crossfade, CUE, rádio após quedas de rede, Bluetooth, suspensão do Mac e playlists grandes.

Para quem desenvolve, a conclusão é simples. É melhor entregar aos agentes um projeto com documentação, regras e verificação automatizada do que um pedido abstrato como “faça um player”. Assim, eles atuam como executores que conhecem as APIs, enquanto as decisões de produto e a aprovação final continuam com você. O código-fonte e a versão em DMG estão no GitHub sob a licença MIT.

História

Perguntas frequentes sobre a notícia

O que se sabe sobre O resultado final?

O player reproduz o original nos mínimos detalhes, incluindo janelas, menus e atalhos de teclado. A janela principal, o equalizador e a playlist se encaixam magneticamente, e há modos Shade e Double Size. Qualquer skin do Winamp 2.x funciona. O player reproduz MP3, AAC, FLAC, Ogg, MIDI e outros formatos, além de oferecer suporte a rádio pela internet, extração de CDs e equalizador de dez bandas. Os recursos modernos ficam nos bastidores: por exemplo, o áudio muda automaticamente para um novo dispositivo de saída.

O que se sabe sobre Detalhes de engenharia que valem uma olhada?

Três NSWindow separadas e sem bordas precisam se mover como um conjunto, mas o macOS não oferece um recurso para agrupar janelas. O autor calcula a posição de cada janela a partir do ponto inicial do arraste, somado ao deslocamento comum. Se pequenos incrementos forem adicionados a cada movimento do mouse, os erros de arredondamento se acumulam e os encaixes se desalinham. A atração magnética pelas bordas é calculada uma única vez, com base nos contornos previstos, e o resultado é aplicado ao grupo inteiro.

Como os agentes trabalharam neste projeto?

Segundo o autor, agentes de IA escreveram a maior parte do código. Ele concebia as ideias, definia as tarefas, avaliava os resultados e decidia o que lançar. A abordagem funcionou porque o desenvolvedor entende como o produto deve ser e percebe quando a arquitetura se desvia do rumo, enquanto o agente conhece as chamadas específicas do AppKit. Três coisas ajudaram: Documentação no repositório.

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
O que você acha?
Carregando comentários…