У тебя Mac с большим SSD. Ты не скачивал десятки фильмов, в Documents нет архивов на сотни гигабайт, а macOS однажды сообщает: свободного места почти не осталось.

Если этот Mac используется для разработки, начинается настоящая археология.

Где всё?

Один проект весит совсем не столько, сколько кажется

Сам репозиторий может занимать несколько сотен мегабайт.

Но вокруг него постепенно вырастает целая экосистема временных данных.

Xcode создаёт DerivedData и архивы. Cargo хранит registry и результаты сборки. npm, pnpm и Yarn обзаводятся собственными кэшами. Python оставляет pip и uv cache. Gradle и CocoaPods делают примерно то же самое.

Потом появляется Docker.

А следом — локальные нейросети.

HuggingFace, Torch, Whisper, CLIP, CoreML и другие AI-инструменты совершенно спокойно работают с файлами размером в гигабайты.

Каждый инструмент делает это по вполне понятной причине.

Проблема начинается через несколько месяцев, когда уже невозможно вспомнить, кто именно съел диск.

Сам проект может весить 300 МБ, а всё окружение, которое появилось вокруг него за время разработки, — десятки гигабайт.

Можно просто удалить всё

Теоретически — да.

Открываем терминал, пишем несколько команд, запускаем prune для Docker и начинаем методично уничтожать кэши.

И здесь появляется более интересная задача.

Удалить файл очень просто. Гораздо сложнее гарантировать, что ты не удалишь лишнего.

Для инструмента очистки это, на мой взгляд, вообще главный вопрос.

Не найти максимальное количество файлов.

Не показать красивую цифру «найдено 87 ГБ мусора».

А правильно провести границу между тем, что можно восстановить автоматически, и тем, что принадлежит человеку.

Поэтому появился YETI³ Cleaner

Я сделал небольшой нативный инструмент для macOS — YETI³ Cleaner.

Без обещаний «ускорить Mac в десять раз».

Без магической оптимизации памяти.

Без попыток исправлять операционную систему.

Cleaner занимается гораздо более приземлённой работой:

  • системные кэши;
  • временные файлы;
  • старые логи;
  • crash reports;
  • кэши инструментов разработки;
  • тяжёлые AI/ML-кэши;
  • временные данные Docker и Podman.

После анализа он показывает, что найдено, а после очистки — реальный результат.

YETI³ Cleaner не пытается найти на диске всё, что можно удалить. Он пытается найти то, что можно удалить безопасно.

Сначала я определил, что удалять нельзя

При разработке Cleaner я пошёл от обратного.

Сначала нужно определить не то, что программа будет удалять.

Сначала нужно определить то, чего она не должна касаться никогда.

Защищённый контур

  • Documents;
  • Desktop;
  • Downloads;
  • GIT-репозитории;
  • Pictures;
  • Movies;
  • Music;
  • iCloud;
  • Mail и Messages;
  • данные Telegram и WhatsApp;
  • Docker volumes.

Это принципиальная граница.

Можно снова скачать npm-пакет. Можно заново собрать Rust target. Можно повторно получить модель. Можно пересоздать Docker image.

А фотографию, исходники проекта или пользовательскую базу данных команда rm обратно уже не соберёт.

Безопасность Cleaner строится не вокруг вопроса «можно ли это удалить?», а вокруг более строгого вопроса: «можно ли гарантировать, что здесь нет пользовательских данных?»

Cleaner разработчика — это немного другой Cleaner

Большинство программ очистки ориентированы на обычное использование компьютера.

Браузер. Корзина. Системные временные файлы. Логи.

Для рабочей станции разработчика этого уже недостаточно.

На ней одновременно существуют несколько миров:

  • macOS;
  • среды разработки;
  • компиляторы и package managers;
  • контейнеры;
  • локальный AI и ML.

И каждый из них создаёт собственный слой временных данных.

Поэтому YETI³ Cleaner рассматривает их отдельно.

Мне было важно видеть не только общую цифру потенциальной очистки, но и понимать её происхождение.

Это гораздо полезнее одной большой кнопки «Очистить».

Почему Rust

Для такого приложения мне хотелось минимального слоя между интерфейсом и системой.

Поэтому ядро YETI³ Cleaner написано на Rust.

Программа работает непосредственно на Mac, а история запусков хранится локально.

Облако для анализа содержимого диска здесь просто не нужно.

Логика должна оставаться максимально понятной:

  1. посмотреть;
  2. определить;
  3. очистить;
  4. показать результат.

Чем меньше магии находится между этими этапами, тем лучше.

А сколько он освобождает?

Здесь нет правильного числа.

На одном компьютере это будут сотни мегабайт.

На другом — десятки гигабайт.

А рабочая машина, на которой постоянно собираются проекты, запускаются контейнеры и тестируются локальные модели, способна накопить значительно больше.

Поэтому Cleaner фиксирует состояние диска до операции и после неё.

Не расчётное. Не маркетинговое. А фактическое количество освободившегося пространства.

История очисток остаётся локально, поэтому можно видеть, что происходило с машиной со временем.

Почему не сделать shell-скрипт?

Можно.

Собственно, множество подобных задач прекрасно решаются скриптами.

Но затем появляются исключения.

Проверки. Разные версии инструментов. Защищённые каталоги. История. Ошибки доступа. Отображение результата. Необходимость понимать, что произойдёт, прежде чем нажать кнопку.

В какой-то момент shell-скрипт начинает превращаться в приложение.

Так пусть это сразу будет приложение.

Ещё один маленький инструмент YETI³

Мне нравится идея небольших специализированных инструментов.

Не обязательно строить огромный продукт, который пытается решить всё сразу.

Иногда хороший инструмент должен делать одну вещь.

Но делать её понятно.

YETI³ Cleaner как раз такой случай.

Он не должен управлять вашим Mac.

Он должен время от времени приходить туда, где после реальной работы остались временные данные, аккуратно убирать за нами — и исчезать до следующего раза.

Попробовать YETI³ Cleaner

YETI³ Cleaner создан для macOS и прежде всего рассчитан на машины разработчиков, где рядом с обычными приложениями живут Xcode, Docker, Rust, Node.js, Python и локальный AI.

Скачать приложение и посмотреть актуальную версию можно на официальной странице:

cleaner.yeti3.ru

Приложение распространяется бесплатно. Если Cleaner оказался полезным, проект можно добровольно поддержать.


YETI³ Cleaner. Не удалить как можно больше. Удалить только то, что действительно можно удалить.

Пример проекта: YETI3 Cleaner

Когда диск заполнен, удаление самых больших папок наугад может лишить проекта данных. Cleaner начинает с карты занятого пространства и помогает увидеть категории файлов перед решением об очистке.

Практический сценарий и пример проекта

Сначала разберите результат анализа и выясните назначение крупных каталогов. Рабочие базы, резервные копии и незавершённые проекты требуют отдельной проверки. Защищённые категории полезны, но не освобождают владельца от оценки того, что он удаляет.

Главная YETI³ Cleaner
Публичный экран YETI3 Cleaner из обзора проекта. Дата съёмки и остальные экраны указаны в источнике.

Рассмотреть обзор и реальные экраны проекта · Открыть пример

Как подготовить свою задачу к расчёту

Для обсуждения настройки инструмента укажите версию macOS, типы рабочих проектов и границы разрешённой очистки. Объём освобождённого места можно назвать только после проверки конкретного устройства.

В обращении можно указать название этого примера, нужный результат и желаемый срок. После обсуждения согласуются состав работ, полная стоимость, порядок оплаты и критерии приёмки. Фиксированная цена и дата выполнения для вашего проекта пока не определены.

Обсудить задачу с цифровой мастерской · Выбрать другой цифровой сценарий