Live 18/11 · Cohorte 318 nov à 19h00 MSK — atelier pratique gratuit sur les agents IA · La Cohorte 3 démarre le 23/11Atelier 18/11 →Cohorte 3 (23/11)
SortieAnalyse · Sur le radarHabr AI→ original

Un développeur recrée Winamp pour Mac avec des agents IA et tient dans 2 à 3 % de CPU

Pendant plusieurs années, l'auteur a repoussé son lecteur de style Winamp pour Mac. Avec des agents IA, il l'a enfin publié. MacAmp est écrit en Swift, SwiftUI et AppKit, sans Electron : sur M1, il consomme environ 0,01 % du processeur en pause et 2 à 3 % en lecture avec l'analyseur de spectre. Le code a été écrit en grande partie par des agents, tandis que l'humain s'est chargé de l'idée, de l'architecture et de la recette. Le projet est open source sous licence MIT.

Traité par IA depuis Habr AI ; édité par Hamidun News
Un développeur recrée Winamp pour Mac avec des agents IA et tient dans 2 à 3 % de CPU
Source : Habr AI. Collage: Hamidun News.
Écouter l'article
Fiche synthèse et chiffres clés
ParamètreDonnées
Source primaireHabr AI ↗
Rédacteur en chef
Chiffre clé #1L'agent lit la vision, le plan et le guide de référence sur Winamp 2.x avant de travailler
Chiffre clé #2AGENTS.md, les skills et les tests lancés par une seule commande ./build.sh test gardent l'agent dans le cadre
Chiffre clé #3Les agents ne peuvent pas juger le ressenti : le crossfade et le glisser-déposer se vérifient à la main

Une histoire familière : un dossier abandonné contenant un projet personnel qui s'est arrêté il y a trois ou quatre ans au premier écran et à la lecture de base. Le développeur Alexrel cherchait pour Mac un lecteur simple dans l'esprit de Winamp, mais les lecteurs modernes sont soit devenus des couteaux suisses bourrés de services de streaming, soit tournent sur Electron et chargent inutilement le processeur. Il a fini par mener son propre lecteur à terme avec l'aide d'agents IA. Résultat : MacAmp, une reproduction open source de Winamp 2.95 en Swift, SwiftUI et AppKit, sans web view, en build universel pour Apple Silicon et Intel, qui nécessite macOS 14 ou plus récent.

Ce que cela donne au final

Le lecteur reproduit l'original jusqu'aux fenêtres, aux menus et aux raccourcis clavier. La fenêtre principale, l'égaliseur et la playlist s'aimantent entre eux, et les modes Shade et Double Size sont disponibles. Tous les skins Winamp 2.x fonctionnent, les formats MP3, AAC, FLAC, Ogg, MIDI et d'autres sont lus, et le lecteur prend en charge les webradios, le ripping de CD et un égaliseur à dix bandes. Les fonctions modernes sont intégrées discrètement : par exemple, le son bascule automatiquement vers un nouveau périphérique de sortie.

La métrique essentielle pour un utilitaire censé rester dans un coin de l'écran, c'est son appétit. Sur M1, le lecteur en pause consomme environ 0,01 % du processeur, et 2 à 3 % en lecture avec l'analyseur de spectre. Quand rien n'est lu, le moteur s'arrête, et l'analyseur cesse d'envoyer des images après deux secondes de silence.

Les détails d'ingénierie à retenir

Trois NSWindow distinctes et sans bordure doivent être déplacées comme un tout, alors que macOS n'offre aucun moyen de grouper des fenêtres. L'auteur calcule la position de chaque fenêtre à partir du point de départ du glissement, plus un décalage global. Si l'on ajoutait de petits pas à chaque mouvement de souris, les erreurs d'arrondi s'accumuleraient et les jonctions se disloqueraient. L'attraction magnétique vers les bords est calculée une seule fois à partir des cadres prévus, et le résultat est appliqué à tout le groupe.

Le deuxième détail concerne les skins. Ce sont des BMP raster conçus pour les écrans de l'ancienne densité, et avec le rendu standard sur Retina, la police et les chiffres du minuteur deviennent flous. C'est pourquoi les fenêtres se dessinent elles-mêmes avec interpolationQuality = .none, et les sprites sont découpés au pixel près de l'original. L'égaliseur est construit sur AVAudioUnitEQ : les bandes y sont des filtres paramétriques, et le préamplificateur est implémenté via globalGain.

Comment les agents ont travaillé

Selon l'auteur, la majeure partie du code a été écrite par des agents IA. Lui imaginait, fixait les tâches, examinait le résultat et décidait de ce qui sortait. Le schéma a fonctionné parce que l'humain comprend ce que doit être le produit et remarque quand l'architecture dérive, tandis que l'agent connaît les appels AppKit concrets.

Trois éléments ont aidé :

  • Des documents dans le dépôt. La vision, le plan par étapes, une checklist, un guide de référence sur les dimensions et le comportement de Winamp 2.x et des captures d'écran de l'original. L'agent lit tout cela avant de travailler, et il n'est pas nécessaire d'expliquer à chaque fois que « comme dans Winamp » doit se comprendre littéralement.
  • AGENTS.md et les skills. Des règles et des instructions sur la façon de modifier sans risque l'égaliseur et la playlist empêchent l'agent de casser ce qui fonctionne.
  • Des tests en une seule commande. ./build.sh test permet de vérifier rapidement chaque modification.

Il n'a pas été possible de déléguer le ressenti aux agents : la prise en main du glisser-déposer, l'absence de tremblement du champ, la justesse de la couleur, le rendu du crossfade sur des morceaux réels. Cela ne se vérifie qu'avec les mains et les oreilles.

Limites et enseignement pratique

Le projet a des lacunes assumées. Il n'y a pas de visualisations Milkdrop, pas d'encodeur MP3 et Ogg pour les CD, pas de modules tracker ni de scrobbler Last.fm.

L'application n'est volontairement pas signée avec un Developer ID : le lecteur remplace les icônes de fichiers à l'intérieur de son bundle et se re-signe localement, c'est pourquoi Gatekeeper affiche un avertissement au premier lancement. On peut le contourner via les réglages de sécurité ou avec la commande `xattr -dr com.apple.

quarantine`. De plus, l'auteur a testé le lecteur sur un seul Mac et une seule bibliothèque musicale ; il demande donc des retours sur le crossfade, les CUE, la radio après une coupure réseau, le Bluetooth, la mise en veille du Mac et les grandes playlists.

Pour les praticiens, la leçon est simple. Mieux vaut ne pas donner aux agents un « fais un lecteur » abstrait, mais un projet doté de documents, de règles et de vérifications automatiques. Ils travaillent alors comme un exécutant qui connaît les API, tandis que les décisions produit et la recette restent de votre côté. Les sources et le build DMG sont disponibles sur GitHub sous licence MIT.

Dossier

Questions clés sur cet article

Que sait-on sur Ce que cela donne au final ?

Le lecteur reproduit l'original jusqu'aux fenêtres, aux menus et aux raccourcis clavier. La fenêtre principale, l'égaliseur et la playlist s'aimantent entre eux, et les modes Shade et Double Size sont disponibles. Tous les skins Winamp 2.x fonctionnent, les formats MP3, AAC, FLAC, Ogg, MIDI et d'autres sont lus, et le lecteur prend en charge les webradios, le ripping de CD et un égaliseur à dix bandes.

Que sait-on sur Les détails d'ingénierie à retenir ?

Trois NSWindow distinctes et sans bordure doivent être déplacées comme un tout, alors que macOS n'offre aucun moyen de grouper des fenêtres. L'auteur calcule la position de chaque fenêtre à partir du point de départ du glissement, plus un décalage global. Si l'on ajoutait de petits pas à chaque mouvement de souris, les erreurs d'arrondi s'accumuleraient et les jonctions se disloqueraient.

Comment les agents ont travaillé?

Selon l'auteur, la majeure partie du code a été écrite par des agents IA. Lui imaginait, fixait les tâches, examinait le résultat et décidait de ce qui sortait. Le schéma a fonctionné parce que l'humain comprend ce que doit être le produit et remarque quand l'architecture dérive, tandis que l'agent connaît les appels AppKit concrets. Trois éléments ont aidé : Des documents dans le dépôt.

ZK
Zhemal Khamidun — CPO d'Alpina Digital, product manager d'AlpinaGPT. Conçoit des produits IA depuis 2019. Hamidun News est un projet personnel devenu un agrégateur en production avec plus de 6 000 lecteurs.
✦ 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
Qu'en pensez-vous ?
Chargement des commentaires…