Значок Mac Sai

Mac Sai

Открытый инструмент для очистки, оптимизации и поиска вредоносных программ на Mac.
Бесплатная, заверенная Apple альтернатива CleanMyMac, созданная на Swift 6 и SwiftUI.

English | 简体中文 | 繁體中文 | Deutsch | Français | Русский

GitHub stars Последний релиз macOS 14+ Swift 6 Тесты Без телеметрии Заверено Apple Лицензия PR приветствуются

Скриншот Mac Sai

Установка одной командой:

```bash brew install --cask mac-sai ```

Или скачайте последний 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 Sai в строке меню

Виджет в строке меню в стиле «матового стекла», который держит показатели вашего 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 нет рекламы и телеметрии, и ни один спонсор этого не изменит.

Это место свободно. Стать спонсором →

## История звёзд

Star History Chart

Mac Sai это свободное ПО, созданное сообществом для сообщества.
Если оно избавило вас от подписки, ⭐ поможет другим его найти, а чашка кофе ☕ поможет ему жить.