Собрал бесплатный конвертер файлов для Mac за сутки: 24 тысячи строк кода написала команда ИИ-агентов

Рассказываю, как устроить работу двух десятков агентов Claude так, чтобы они не мешали друг другу, где ИИ ошибался и что вышло на выходе: приложение с 50 форматами, семью редакторами и 393 автотестами.

Собрал бесплатный конвертер файлов для Mac за сутки: 24 тысячи строк кода написала команда ИИ-агентов

Я давно хотел утилиту для Mac, которая убирает рутину с файлами. Фото с iPhone не принимает сайт, запись созвона не влезает в почту, со скриншота нужно достать текст, а перед публикацией снимка – стереть геолокацию. Каждый раз это поиск сервиса, загрузка туда личного файла и ожидание.

Идея была простая: действие должно появляться там, где уже находится файл. Начинаешь его перетаскивать, коротко жмёшь Shift – и прямо под курсором раскрывается круглое меню. Бросаешь файл на нужный лепесток, результат ложится рядом с оригиналом.

Вместо того чтобы писать такое приложение несколько месяцев, я решил проверить, как далеко можно зайти с ИИ. Ответ: до опубликованного релиза за чуть больше суток.

Что получилось

Приложение называется Kumquat. Это бесплатная программа с открытым кодом для Mac на Apple Silicon:

  • около 50 форматов: фото, аудио, видео, документы, таблицы, субтитры, архивы;
  • сжатие до нужного размера, удаление метаданных, распознавание текста, удаление фона;
  • семь встроенных редакторов: разметка скриншотов, закрашивание лиц, коррекция фото, перестановка страниц PDF, обрезка видео на таймлайне и другие;
  • аппаратное кодирование видео на чипах Apple, в 1,5–2,7 раза быстрее программного;
  • интерфейс на русском и английском, всё работает локально, без аккаунтов.

Цифры

  • Около 27 часов от пустой папки до релиза на GitHub, включая ночь и один обрыв сети.
  • 23 760 строк кода на Swift в 95 файлах.
  • 18 задач, розданных агентам-разработчикам, в 5 волнах, плюс ещё 2 на тексты для публикаций.
  • 393 автотеста, которые прогоняют каждую конвертацию и проверяют результат, а не просто факт появления файла.
  • 681 строка перевода на русский.
  • 0 строк кода, написанных мной руками. Моя работа – идея, решения, приоритеты и проверка.

Как работали агенты

Самое интересное в этом проекте не код, а организация. Если просто попросить ИИ «сделай приложение», получится каша: модель упрётся в объём, начнёт противоречить сама себе, а при параллельной работе агенты будут затирать файлы друг друга.

Схема, которая сработала, очень похожа на работу обычной команды разработки.

Сначала контракт, потом работа

Прежде чем запускать агентов, основной Claude написал общий файл с «контрактами»: какие форматы существуют, как называется каждый инструмент, как движок отдаёт результат, как окно сообщает о прогрессе. Это как договорённость между отделами: каждый знает, что получит на входе и что должен отдать.

Вторым шагом созданы файлы-заглушки для всех будущих модулей. Проект собирался с первой минуты, а каждый агент просто заменял свою заглушку настоящим кодом.

У каждого свои файлы

Каждому агенту выдавалась зона ответственности: «колесо», «картинки и PDF», «аудио и видео», «документы», «окна и иконка». Правило было жёстким: чужие файлы не трогать, а если сборка падает из-за соседа – подождать и попробовать снова. Конфликтов почти не было.

Волны

Работа шла волнами по 3–5 агентов:

  1. Ядро: колесо, конвертеры, окна.
  2. Интерактивные редакторы.
  3. Надёжность и удобство: автотесты, параллельная обработка, понятные ошибки, правый клик в Finder, новые форматы, ускорение видео.
  4. Полировка: фирменная палитра, защита от потери правок, совместимость со старыми macOS.
  5. Перевод на русский.

Между волнами – сборка, общий прогон тестов и коммит. Если что-то ломалось, можно было откатиться.

Тесты как страховка

Отдельный агент написал набор из почти 400 проверок. Он генерирует тестовые файлы, прогоняет через приложение все пары конвертаций и проверяет результат: размеры картинки, кодек и длительность видео, число страниц PDF, наличие русского текста. После каждой волны я видел не «вроде работает», а конкретное число зелёных и красных строк.

Где ИИ ошибался

Было бы нечестно рассказывать только про успехи.

  • Агенты не могут подвигать мышью. Главный жест – перетаскивание с Shift – они проверить не смогли, только отдельные его части. Живую проверку делает человек.
  • Окна проверялись по скриншотам, которые рисуются «вне экрана». На таких скриншотах нет размытия стекла, а видео выглядит чёрным прямоугольником, и это иногда сбивало с толку.
  • Один агент написал правдоподобный, но неверный абзац в статье: что я вручную настраивал жест. Этого не было, пришлось поправить. Тексты от ИИ нужно читать так же внимательно, как код.
  • После перевода интерфейса на русский сломался тест: сообщения командной строки тоже стали русскими. Нашли и исправили за пять минут – как раз благодаря тестам.
  • Первая проверка на серверах GitHub упала: там стоит другая версия macOS, где системная утилита не умеет создавать файлы AVIF. Ошибка была в тестах, а не в приложении, но без автоматической проверки мы бы о ней не узнали.

Что я делал сам

Если коротко – принимал решения. Какой жест, сколько клавиш (сначала было три разные, потом я попросил оставить одну и разложить всё по категориям), какую палитру взять (без неона и фиолетового), под какой лицензией выпускать, что писать в README, куда публиковать. ИИ предлагал варианты с плюсами и минусами, но выбор каждый раз оставался за мной.

Ещё одна важная часть – вопросы, которые агент задавал сам: например, перед публикацией он нашёл в истории коммитов мой личный email и спросил, показывать ли его. Такие мелочи потом спасают от неприятных сюрпризов.

Что дальше

Приложение уже лежит на GitHub, ставится одной командой через Homebrew, а заявки в два крупных каталога Mac-приложений ждут рассмотрения. Следующие шаги – подпись сертификатом Apple, чтобы macOS не ругалась при первом запуске, и новые форматы по запросам пользователей.

Если вы на Mac с чипом Apple – попробуйте, это бесплатно. Проект называется Kumquat, на GitHub его можно найти как TheAlexRay/kumquat.

Интересно ваше мнение: вы бы доверили ИИ-агентам писать продукт целиком или только отдельные куски?

Сделано kipperstudio и Claude.

33