Разработчик с ИИ-агентами воссоздал Winamp для Mac и уложился в 2–3% CPU
Автор несколько лет откладывал свой плеер в стиле Winamp для Mac, а с ИИ-агентами наконец довёл его до релиза. MacAmp написан на Swift, SwiftUI и AppKit, без Electron: на M1 он берёт около 0,01% процессора на паузе и 2–3% при игре со спектроанализатором. Код в основном писали агенты, а человек отвечал за идею, архитектуру и приёмку. Проект открыт под лицензией MIT.
AI-обработка оригинала Habr AI; редакция Hamidun News
Знакомая история: есть заброшенная папка с личным проектом, который три-четыре года назад остановился на первом экране и базовом проигрывании. Разработчик Alexrel искал для Mac простой плеер в духе Winamp, но современные либо превратились в комбайны со стримингами, либо работают на Electron и зря грузят процессор. Свой плеер он наконец довёл до конца с помощью ИИ-агентов. Получился MacAmp: открытая репродукция Winamp 2.95 на Swift, SwiftUI и AppKit, без веб-вью, универсальная сборка для Apple Silicon и Intel, нужна macOS 14 или новее.
Что получилось в итоге
Плеер повторяет оригинал вплоть до окон, меню и горячих клавиш. Главное окно, эквалайзер и плейлист магнитно стыкуются, есть режимы Shade и Double Size. Работают любые скины Winamp 2.x, играются MP3, AAC, FLAC, Ogg, MIDI и другие форматы, поддерживаются интернет-радио, CD-рипы и десятиполосный эквалайзер. Современные функции спрятаны внутрь: например, звук сам переключается на новое устройство вывода.
Главная метрика для утилиты, которая должна висеть в углу, это аппетиты. На M1 плеер на паузе берёт около 0,01% процессора, при игре со спектроанализатором 2–3%. Когда ничего не играет, движок останавливается, а анализатор через две секунды тишины перестаёт присылать кадры.
Инженерные детали, которые стоит подсмотреть
Три отдельных безрамочных NSWindow нужно двигать как одно целое, а в macOS сгруппировать окна нечем. Автор считает позицию каждого окна от точки начала перетаскивания плюс общий сдвиг. Если добавлять маленькие шаги на каждое движение мыши, ошибки округления накапливаются, и стыки разъезжаются. Магнитное притяжение к краям считается один раз по предполагаемым рамкам, а результат применяется ко всей группе.
Вторая деталь касается скинов. Это растровые BMP для экранов старой плотности, и при стандартной отрисовке на Retina шрифт и цифры таймера расплываются. Поэтому окна рисуют себя сами с interpolationQuality = .none, а спрайты вырезаются по пикселям оригинала. Эквалайзер построен на AVAudioUnitEQ: полосы там параметрические фильтры, а предусилитель реализован через globalGain.
Как здесь работали агенты
По словам автора, большую часть кода написали ИИ-агенты. Он придумывал, ставил задачи, смотрел результат и решал, что выпускать. Схема сработала, потому что человек понимает, каким должен быть продукт, и замечает, когда архитектура уезжает в сторону, а конкретные вызовы AppKit знает агент.
Помогли три вещи:
- Документы в репозитории. Видение, план по этапам, чек-лист, справочник по размерам и поведению Winamp 2.x и скриншоты оригинала. Агент читает всё это перед работой, и не нужно каждый раз объяснять, что «как в Winamp» значит буквально.
- AGENTS.md и скиллы. Правила и инструкции о том, как безопасно менять эквалайзер и плейлист, не дают агенту ломать работающее.
- Тесты одной командой.
./build.sh testпозволяет быстро проверять каждое изменение.
Не удалось отдать агентам ощущения: как ложится в руку перетаскивание, не дрожит ли поле, тот ли цвет, как звучит кроссфейд на живых треках. Это проверяется только руками и ушами.
Ограничения и практический вывод
У проекта есть честные пробелы. Нет визуализаций Milkdrop, MP3- и Ogg-кодировщика для CD, трекерных модулей и скробблера Last.fm. Приложение намеренно не подписано Developer ID: плеер подменяет иконки файлов внутри своего бандла и переподписывается локально, поэтому при первом запуске Gatekeeper покажет предупреждение. Обойти его можно через настройки безопасности или командой xattr -dr com.apple.quarantine. Кроме того, автор тестировал плеер на одном Mac и одной фонотеке, поэтому просит отчёты о кроссфейде, CUE, радио после обрыва сети, Bluetooth, сне Mac и больших плейлистах.
Для практика вывод простой. Агентам лучше давать не абстрактное «сделай плеер», а проект с документами, правилами и автоматической проверкой. Тогда они работают как исполнитель, который знает API, а продуктовые решения и приёмка остаются за вами. Исходники и DMG-сборка лежат на GitHub под лицензией MIT.
- 12 нояб. 2026 г.Google привезла Gemini Intelligence в Android Auto — пока только для Pixel
- 12 нояб. 2026 г.Adobe показала на Max четыре ИИ-прототипа: 3D из фото, звук-квадрат и копипаст правок
- 12 нояб. 2026 г.Apple продаёт ИИ сверх лимита: в Logic Pro появился пакет за $50 без подписки
- 12 нояб. 2026 г.Apple продаёт пакеты ИИ-лимитов за $50 разово — и обходит подписочную модель
Вопросы и ответы по материалу
Что известно по теме: что получилось в итоге?
Плеер повторяет оригинал вплоть до окон, меню и горячих клавиш. Главное окно, эквалайзер и плейлист магнитно стыкуются, есть режимы Shade и Double Size. Работают любые скины Winamp 2.x, играются MP3, AAC, FLAC, Ogg, MIDI и другие форматы, поддерживаются интернет-радио, CD-рипы и десятиполосный эквалайзер. Современные функции спрятаны внутрь: например, звук сам переключается на новое устройство вывода. Главная метрика для утилиты, которая должна висеть в углу, это аппетиты.
Что известно по теме: инженерные детали, которые стоит подсмотреть?
Три отдельных безрамочных NSWindow нужно двигать как одно целое, а в macOS сгруппировать окна нечем. Автор считает позицию каждого окна от точки начала перетаскивания плюс общий сдвиг. Если добавлять маленькие шаги на каждое движение мыши, ошибки округления накапливаются, и стыки разъезжаются. Магнитное притяжение к краям считается один раз по предполагаемым рамкам, а результат применяется ко всей группе. Вторая деталь касается скинов.
Что известно по теме: как здесь работали агенты?
По словам автора, большую часть кода написали ИИ-агенты. Он придумывал, ставил задачи, смотрел результат и решал, что выпускать. Схема сработала, потому что человек понимает, каким должен быть продукт, и замечает, когда архитектура уезжает в сторону, а конкретные вызовы AppKit знает агент. Помогли три вещи: Документы в репозитории. Видение, план по этапам, чек-лист, справочник по размерам и поведению Winamp 2.x и скриншоты оригинала.
Соберите рабочего ИИ-агента или сервис своими руками без ручного кода
В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.