Открытый инструмент для очистки, оптимизации и поиска вредоносных программ на Mac.
Бесплатная, заверенная Apple альтернатива CleanMyMac, созданная на Swift 6 и SwiftUI.
Или скачайте последний DMG. Он заверен Apple, поэтому просто открывается: без правого клика, без предупреждений, без Терминала.
---
## Почему Mac Sai?
Полноценный инструмент для очистки Mac не должен стоить годовой подписки и не должен просить вас доверять «чёрному ящику» с глубоким доступом к вашим файлам. Mac Sai даёт весь набор инструментов, полностью открыто.
- **Бесплатно, навсегда.** Без подписки, без встроенных покупок, без «перейдите на Pro», без навязчивых окон. Лицензия BSD-3.
- **Ноль телеметрии.** Нет аналитики, нет отчётов о сбоях, нет трекеров, нет сервера, куда можно было бы что-то отправить. И не нужно верить на слово: вы можете [проверить это сами](#проверьте-отсутствие-телеметрии-сами) двумя командами.
- **Все ключевые инструменты CleanMyMac в одном приложении.** 22 модуля для очистки, защиты, производительности, управления приложениями и анализа диска, плюс виджет в строке меню.
- **Безопасность по умолчанию.** Удаление сначала в Корзину, чёрный список защищённых путей, защита от символьных ссылок и TOCTOU, и `SafetyGuard`, который проверяет каждый путь. Приложение спроектировано так, чтобы никогда не терять ваши данные.
- **Заверено Apple и полностью открыто.** Ваш Mac проверяет подпись при каждом запуске, а каждая строка кода доступна для чтения.
---
## Возможности с первого взгляда
### 🧹 Очистка
- **Умное сканирование** (в один клик)
- **Системный мусор** (16+ категорий)
- **Вложения почты**
- **Корзины**
- **Мусор проектов** (папки сборки)
- **Дисковые «пожиратели»** (Docker, симуляторы)
- **История очистки** (восстановление в один клик)
### 🛡️ Защита
- **Удаление вредоносных программ**
- **Конфиденциальность** (браузеры)
- **Расширения браузеров**
- **Сохранённые сети Wi-Fi**
- **Обзор разрешений**
### 🗂️ Файлы
- **Space Lens** (карта диска)
- **Большие и старые файлы**
- **Дубликаты** (+ объединение)
- **Шреддер**
### 📊 Строка меню
- CPU / память / диск / батарея в реальном времени
- Сеть, время работы, подкачка
- Полезные рекомендации
---
## Возможности подробно
### 🧹 Очистка
| Модуль | Что делает |
|--------|------------|
| **Умное сканирование** | Один клик запускает модули очистки, защиты и производительности сразу, с прогрессом в реальном времени, и показывает, сколько именно освобождено по каждому модулю |
| **Системный мусор** | 16+ категорий сканирования: пользовательские и системные кэши, журналы, языковые файлы, повреждённые настройки, повреждённые объекты входа, версии документов, резервные копии iOS, мусор Xcode, кэши менеджеров пакетов / IDE / ИИ-инструментов, остатки удалённых пользователей, а также **прореживание Universal Binary** (находит толстые Mach-O с срезами arm64 и x86_64 и переписывает их под вашу архитектуру через `lipo`, с поддержкой отмены) |
| **Вложения почты** | Находит кэшированные вложения из Apple Mail, Outlook и Spark |
| **Корзины** | Очищает Корзину во всех местах, включая внешние диски |
| **Мусор проектов** | Находит воссоздаваемые папки сборки в ваших проектах: `node_modules`, `.next`, `dist`, `target` для Rust и Maven, `build` для Gradle, виртуальные окружения Python и `Pods` для CocoaPods. Папка учитывается, только если соседние файлы подтверждают тип проекта, а `dist` и `Pods` только если они указаны в вашем `.gitignore`. Всё перемещается в Корзину |
| **Дисковые «пожиратели»** | Показывает, сколько места занимают Docker и симуляторы Xcode. Удаляет остановленные контейнеры, висячие образы и висячий кэш сборки (каждое после подтверждения), а также недоступные симуляторы и старые среды выполнения симуляторов. Тома Docker и самая новая среда выполнения для каждой платформы никогда не затрагиваются |
| **История очистки** | Показывает ваши недавние очистки (за последние 30 дней, до 20) и возвращает целую очистку из Корзины одним щелчком. История хранится только на вашем Mac в `~/Library/Logs/MacClean/clean-history.json`, доступна для чтения только вашей учётной записи и никуда не отправляется |
### 🛡️ Защита
| Модуль | Что делает |
|--------|------------|
| **Удаление вредоносных программ** | Сигнатурное сканирование с 3 уровнями глубины (Быстрый / Сбалансированный / Глубокий): агенты и демоны запуска, расширения браузеров и известные шаблоны рекламного/вредоносного ПО (это выверенный список, а не антивирус, и мы так и говорим) |
| **Конфиденциальность** | Очищает историю, cookie и кэш Safari, Chrome и Firefox, с фильтрами по времени. Закладки Safari **никогда не затрагиваются** |
| **Расширения браузеров** | Показывает расширения, установленные в Safari, Chrome, Brave, Edge, Arc и Firefox. Расширения Chromium и Firefox, установленные вами, можно переместить в Корзину, пока браузер закрыт; установленные политикой или самим браузером показываются, но не трогаются. Для расширений Safari открываются настройки Safari |
| **Сохранённые сети Wi-Fi** | Показывает список предпочитаемых беспроводных сетей и забывает выбранные вами |
| **Обзор разрешений** | Только для чтения: обзор по приложениям, какие разрешения приватности (TCC) есть у каждого приложения, тот ракурс, которого не даёт «Системные настройки». Любое действие ведёт в «Системные настройки», где и находятся сами переключатели |
### ⚡ Производительность
| Модуль | Что делает |
|--------|------------|
| **Оптимизация** | Управление объектами входа и агентами запуска с включением/выключением каждого |
| **Обслуживание** | Системные задачи: освободить память, запустить скрипты обслуживания, проверить загрузочный диск, перестроить Launch Services, переиндексировать Spotlight, сбросить DNS, проредить локальные снимки Time Machine. Задачи помечены по уровню риска, «Запустить безопасные задачи» выполняется последовательно, а пароль администратора запрашивается **один раз** |
### 📦 Приложения
| Модуль | Что делает |
|--------|------------|
| **Удаление приложений** | Движок сопоставления, который находит каждый связанный файл в 17+ подкаталогах Library (включая приложения во вложенных папках вендоров). Полное удаление, **сброс к настройкам по умолчанию** (очистка кэшей и настроек приложения с сохранением самого приложения) и обнаружение неиспользуемых приложений |
| **Неиспользуемые приложения** | Находит приложения, которые вы не открывали 3, 6 или 12 месяцев, по дате последнего использования из Spotlight, с сортировкой по размеру. Запущенные приложения никогда не попадают в список, а если у Spotlight нет данных об использовании, модуль так и сообщает, а не гадает. Один щелчок передаёт приложение в модуль удаления |
| **Расширения** | Просмотр сторонних панелей настроек, интернет-плагинов и расширений Safari. Установленные пользователем панели и плагины можно переместить в Корзину |
| **Обновления приложений** | Проверяет обновления установленных приложений по их собственным лентам Sparkle (читает только сведения о версии и не отправляет ничего о вас) |
### 🗂️ Файлы
| Модуль | Что делает |
|--------|------------|
| **Space Lens** | Визуализация занятости диска квадрифицированной картой с возможностью углубляться по папкам |
| **Большие и старые файлы** | Находит файлы больше 50 МБ, сортирует по размеру и дате последнего доступа |
| **Дубликаты** | Поэтапное обнаружение (группировка по размеру, частичный SHA-256, полный хеш, проверка inode), плюс режим **объединения**, который освобождает место клонами APFS с копированием при записи, не удаляя ни одной копии |
| **Шреддер** | Безопасное стирание файлов в стандартном, необратимом и режиме безопасной перезаписи |
### 📊 Виджет в строке меню
Виджет в строке меню в стиле «матового стекла», который держит показатели вашего Mac в одном клике. Это отдельный процесс, запускается при входе и включается из боковой панели приложения, так что открывать главное окно ради быстрой проверки не нужно.
- **Живые кольца показателей**: загрузка CPU, давление памяти, занятость диска и батарея в сетке 2x2 (`host_processor_info`, `vm_statistics64`, ёмкость APFS, источник питания IOKit), с градацией цвета от зелёного к янтарному и красному
- **Настраиваемый показатель**: свободное место, загрузка GPU, использование памяти или температура батареи; выбор сохраняется, недоступные датчики показывают `--`
- **Сеть, время работы и подкачка**: скорость приёма/передачи в реальном времени, время работы системы, использование подкачки
- **Рекомендации**: полезные подсказки, которые можно закрыть («Пользовательские кэши выросли до 2.52 ГБ, запустите Системный мусор»), одно нажатие для действия, скрываются на 30 дней после закрытия
- **Статус защиты**: время последнего сканирования на вредоносное ПО и число угроз, с цветовой пометкой по свежести
- **Подключённые устройства**: внешние тома (со свободным местом) и дисплеи с первого взгляда
- **Оповещения о состоянии**: уведомления (с ограничением частоты, по желанию), когда на диске критически мало места или давление памяти долго держится высоким
### ⌨️ Горячие клавиши
| Сочетание | Действие |
|----------|--------|
| **⌘R** | Запустить сканирование в текущем модуле |
| **⌘K** | Очистить текущий выбор (когда показаны результаты) |
| **⌘1 до ⌘9** | Перейти к первым девяти модулям боковой панели |
| **⌘,** | Открыть настройки |
---
## Сравнение Mac Sai
| | Mac Sai | CleanMyMac | Pearcleaner | PureMac | OnyX | Mole |
|---|:---:|:---:|:---:|:---:|:---:|:---:|
| **Цена** | Бесплатно | $39.95/год | Бесплатно | Бесплатно | Бесплатно | Бесплатно (CLI) |
| **Открытый код** | ✅ BSD-3 | ❌ | ✅ Fair-code | ✅ MIT | ❌ | ✅ MIT |
| **Телеметрия** | ❌ Нет | ⚠️ Да | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет |
| **Нативное GUI-приложение** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ CLI (GUI отдельно, платно) |
| **Умное сканирование (в один клик)** | ✅ | ✅ | ❌ | ➖ Частично | ❌ | ➖ Интерактивный CLI |
| **Системный мусор (16+ категорий)** | ✅ | ✅ | ➖ | ✅ | ➖ Ограниченно | ✅ |
| **Прореживание Universal Binary** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| **Сканер вредоносного ПО** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| **Очистка приватности браузеров** | ✅ | ✅ | ❌ | ❌ | ➖ | ❌ |
| **Удаление с поиском остатков** | ✅ | ✅ | ✅ Профильно | ❌ | ❌ | ✅ |
| **Поиск дубликатов (+ объединение)** | ✅ | ➖ | ❌ | ❌ | ❌ | ❌ |
| **Карта занятости диска** | ✅ | ❌ | ❌ | ❌ | ❌ | ➖ Анализатор |
| **Монитор системы в строке меню** | ✅ | ✅ Меню | ❌ | ❌ | ❌ | ❌ |
| **Скрипты обслуживания** | ✅ | ✅ | ❌ | ❌ | ✅ Сильно | ➖ |
| **Заверено Apple** | ✅ | ✅ | ✅ | ✅ | ✅ | Н/Д |
| **Версия macOS** | 14+ | 13+ | 13+ | 13+ | зависит | зависит |
> CleanMyMac прекрасный продукт, и те, кому нужен отточенный опыт с поддержкой, вправе за него платить. Mac Sai для всех, кто предпочитает прозрачный исходный код и нулевую подписку.
---
## Установка
### Homebrew (рекомендуется)
Mac Sai есть в официальном Homebrew cask, tap не нужен:
```bash
brew install --cask mac-sai
```
Приложение заверено Apple, поэтому запускается из Spotlight или «Программ» без предупреждений и лишних шагов.
Другие способы установки (скрипт в одну строку, DMG, сборка из исходников)
**Установщик в одну строку**
```bash
curl -fsSL https://raw.githubusercontent.com/iliyami/MacSai/main/scripts/install.sh | bash
```
Скачивает последний DMG и устанавливает приложение в `/Applications`.
**Скачивание DMG**
Возьмите последний DMG со страницы [Releases](https://github.com/iliyami/MacSai/releases/latest) и перетащите Mac Sai в папку «Программы».
**Сборка из исходников**
```bash
git clone https://github.com/iliyami/MacSai.git
cd MacSai
swift build
swift test # запустить весь набор из 1048 тестов
bash scripts/build-dmg.sh # собрать локальный DMG (без подписи)
```
Требуется тулчейн Swift 6 (Xcode 16+).
**Устанавливали через старый tap?**
Теперь Mac Sai в официальном cask, так что tap можно убрать: `brew untap iliyami/macsai` (на установленное приложение и будущие `brew upgrade` это не влияет).
### Полный доступ к диску
Нескольким модулям (Вложения почты, Конфиденциальность, Вредоносное ПО) нужен полный доступ к диску для сканирования защищённых областей:
1. Откройте **Системные настройки, Конфиденциальность и безопасность, Полный доступ к диску**
2. Нажмите **+** и добавьте **Mac Sai.app**
3. Перезапустите Mac Sai
### Удаление
Установка через Homebrew:
```bash
brew uninstall --zap --cask mac-sai
```
Установка через DMG или вручную (также обрабатывает установку через Homebrew):
```bash
curl -fsSL https://raw.githubusercontent.com/iliyami/MacSai/main/scripts/uninstall.sh | bash
```
Оба варианта удаляют Mac Sai вместе с его настройками, кэшами, журналами и базой данных в `~/Library`.
---
## Подписано, заверено Apple и заслуживает доверия
Mac Sai подписан идентификатором Apple **Developer ID** и **заверен Apple**. Для приложения-очистителя это важнее, чем почти для всего остального, что вы устанавливаете, ведь вы вот-вот дадите ему глубокий доступ к своим файлам, и вы вправе знать, что на вашем Mac работает действительно наша и неизменённая сборка. Всё это обеспечивает ваш собственный Mac, а не только наши обещания:
- **Apple его проверила.** Каждый релиз отправляется в Apple и проверяется на вредоносное ПО перед выпуском.
- **Его нельзя подменить.** Подпись это криптографическая печать над каждым файлом; измените хоть один байт, и macOS откажется его открыть.
- **Он доказуемо от нас.** Подпись привязана к нашему идентификатору разработчика Apple, поэтому никто другой не выпустит то, что ваш Mac примет за Mac Sai.
- **Просто работает.** Без предупреждений Gatekeeper, без открытия через правый клик, без Терминала.
Вместе с полностью открытым кодом это цепочка доверия, которую не нужно принимать на веру: код открыт, мы подписываем каждый релиз, Apple его проверяет, а ваш Mac перепроверяет печать при каждом открытии.
### Проверьте отсутствие телеметрии сами
Не верьте нам на слово. И исходный код, и работающий процесс можно проверить.
**1. Поиск сетевых API в исходниках**
```bash
rg -n 'URLSession|NSURLConnection' Sources --glob '*.swift'
```
Вы должны увидеть ровно два сетевых пути, оба необязательные и только на чтение:
- `Sources/MacCleanKit/UpdateChecker.swift`: необязательная проверка обновлений Mac Sai (отключается в настройках)
- `Sources/MacClean/Modules/Updater/UpdaterModule.swift`: запускаемая пользователем проверка лент Sparkle *других приложений* при открытии модуля «Обновления»
В коде нет никакой аналитики, отчётов о сбоях или трекеров.
**2. Наблюдение за живым процессом**
```bash
lsof -i -P -n | grep -i 'MacClean\|Mac Sai\|MacSai' || echo "no network sockets"
```
Ожидание: при обычной локальной очистке установленных соединений нет. Little Snitch или LuLu делают ту же проверку наглядной.
**3. Проверьте бинарник, который вы на самом деле установили**
Исходный код и подписанный бинарник представляют собой два разных артефакта, поэтому самая надёжная проверка выполняется по приложению на вашем диске, а не по этому репозиторию. После `brew install --cask mac-sai`:
```bash
APP="/Applications/Mac Sai.app/Contents/MacOS/MacClean"
# Сетевые классы, которые импортирует бинарник (появляется только URLSession):
nm -u "$APP" | grep -iE 'URLSession|NWConnection|CFSocket' | sort -u
# Все URL, вшитые в бинарник (запрашиваются только две конечные точки обновления):
strings -a "$APP" | grep -iE 'https?://' | sort -u
```
Ожидание: в списке будет только сетевой класс `_OBJC_CLASS_$_NSURLSession`, а запрашиваются лишь два адреса: `api.github.com/repos/iliyami/MacSai/releases/latest` и `formulae.brew.sh/api/cask/mac-sai.json`. Остальные ссылки `github.com/iliyami/MacSai` и ссылка поддержки `buymeacoffee.com/iliyami` просто открываются в браузере. Никаких трекеров, аналитических доменов и ничего лишнего. Запустите снова после любого обновления: результат всегда описывает именно ту сборку, что у вас запущена.
Примечание: для приложения с Developer ID без песочницы, как это, доступ к сети не ограничивается entitlement, поэтому настоящая проверка выполняется анализом символов и строк, а не командой `codesign --entitlements`. Та же проверка выполняется в CI при каждом изменении ([`scripts/check-network-surface.sh`](scripts/check-network-surface.sh)).
---
## Архитектура
```
Mac Sai
├── MacClean Основное приложение SwiftUI (22 модуля)
├── MacCleanKit Общий фреймворк (модели, константы, протоколы)
├── MacCleanHelper Привилегированный помощник XPC (LaunchDaemon для root-операций)
└── MacCleanMenu Монитор в строке меню (отдельный процесс)
```
### Технологии
| Слой | Технология |
|-------|-----------|
| Язык | Swift 6 со строгой конкурентностью |
| UI | Гибрид SwiftUI + AppKit |
| Конкурентность | Акторы, TaskGroup, async/await, `@Sendable` |
| База данных | GRDB.swift (SQLite) в режиме WAL |
| Сканирование файлов | Предвыборка `URLResourceKey` на APFS |
| Инкрементальные обновления | FSEvents с воспроизведением истории |
| Привилегированные операции | SMAppService + NSXPCConnection |
| Системная статистика | Mach API (`host_processor_info`, `vm_statistics64`, `proc_pidinfo`) |
### Модель безопасности
Mac Sai спроектирован так, чтобы **никогда не приводить к потере данных**:
- **Чёрный список защищённых путей**: `/System`, `/usr`, `/bin`, `/sbin` и системные приложения Apple неприкосновенны, а macOS firmlinks приводятся к канонической форме, чтобы обнаружение подмены символьных ссылок не срабатывало ложно на легитимных системных путях
- **Фильтр очищаемости перед сканированием**: объекты, которые текущий процесс не смог бы отправить в Корзину (root-владельцы внутри системных кэшей, каталоги под защитой data-vault в `~/Library/Caches/com.apple.*`), отбрасываются на этапе сканирования и никогда не показываются как «очищаемые»
- **Сначала в Корзину**: все удаления по умолчанию идут в Корзину, а режим пробного запуска показывает результат, ничего не трогая
- **Защита от TOCTOU**: символьные ссылки повторно разрешаются непосредственно перед удалением
- **Исключённые папки**: в настройках можно выбрать папки, которые сканирование полностью пропускает, и `SafetyGuard` дополнительно отказывается удалять что-либо внутри них
- **Пакетная, отменяемая очистка**: большие выборки разбиваются на пакеты по 5000 объектов с проверкой отмены между пакетами, а после нажатия «Отмена» сканирование возвращается в простой примерно за секунду
- **Журнал действий в приложении**: каждая ошибка при очистке записывается вместе с полным путём, доступна для просмотра и копирования на экране после очистки, записи старше 30 дней удаляются автоматически
- **Проверка XPC на уровне ядра**: привилегированный помощник использует `NSXPCListener.setCodeSigningRequirement`, так что само ядро отклоняет любое соединение, чья подпись кода не совпадает с идентификатором и командой основного приложения
---
## Тесты
```bash
swift test
```
Набор на основе XCTest содержит **1048 тестов** и относится к `SafetyGuard` и `CleaningEngine` (файлам жизни и смерти) как к обязанным быть безупречными: состязательное покрытие символьных ссылок, обхода путей, NULL-байтов, SIP, защищённых приложений, ограничений на число файлов, TOCTOU и идемпотентности, плюс интеграционное покрытие пробного запуска / удаления в Корзину / необратимого удаления, конечного автомата сканирования, каждой категории системного мусора, математики карты, движка сопоставления удаления, обнаружения дубликатов, разбора appcast и полных сквозных циклов «от синтетического стенда до очистки». Стенды (`withTempHome`, `withFakeApp`, `withFakePlist`) гарантируют, что ни один тест не касается вашей настоящей домашней папки.
---
## Участие
Мы очень рады вкладу. Прочитайте [руководство для участников](CONTRIBUTING.md), затем:
1. Сделайте форк и создайте ветку с функцией
2. Внесите изменение (одно сфокусированное изменение на PR упрощает ревью)
3. Запустите `swift test`
4. Откройте Pull Request
Также открыто [голосование за функции](https://github.com/iliyami/MacSai/issues/55): ставьте 👍 инструментам, которые хотите увидеть следующими.
## Лицензия
BSD 3-Clause. См. [LICENSE](LICENSE). Вы можете использовать, изменять и распространять код при условии сохранения текста об авторских правах и лицензии, а также без использования имени «Mac Sai» или имён участников для продвижения производных продуктов без разрешения.
## Благодарности
Вдохновлено сообществом открытых утилит для Mac:
- [Pearcleaner](https://github.com/alienator88/Pearcleaner): шаблоны удаления приложений
- [Mole](https://github.com/tw93/Mole): категории очистки
- [Tencent Lemon Cleaner](https://github.com/Tencent/lemon-cleaner): модульная архитектура
- Алгоритм квадрифицированной карты, авторы Bruls, Huizing и van Wijk (2000)
## Поддержка и спонсоры
Mac Sai бесплатен и останется бесплатным: без платной версии, рекламы и слежки. Если он избавил вас от подписки на программу для очистки, можно [угостить меня кофе ☕](https://buymeacoffee.com/iliyami). Это помогает и дальше выпускать подписанные и нотариально заверенные версии.
### Место спонсора
У Mac Sai **одно** место для спонсора, прямо здесь. Каждый месяц этот репозиторий посещают около 9 000 человек, а приложение скачали более 76 000 раз, в основном разработчики и опытные пользователи Mac.
- **Только один спонсор одновременно**, чтобы ваше имя не потерялось среди десятков логотипов.
- **С отбором.** Инструменты для разработчиков, продукты для приватности и безопасности, приложения для Mac, которые уважают своих пользователей. Никаких «чистилок» и «оптимизаторов», криптовалют, партнёрских VPN-программ и ничего, что следит за людьми.
- **Никогда внутри приложения.** В Mac Sai нет рекламы и телеметрии, и ни один спонсор этого не изменит.
Mac Sai это свободное ПО, созданное сообществом для сообщества.
Если оно избавило вас от подписки, ⭐ поможет другим его найти, а чашка кофе ☕ поможет ему жить.