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

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

История разработки System Cleaner — универсального инструмента для macOS и Linux, который помогает найти и удалить мусор, проверить безопасность и оптимизировать систему

---

Проблема: система засоряется, а времени разбираться нет

Несколько месяцев назад я заметил, что мой MacBook начал работать медленнее. Диск был забит, но понять, что именно занимает место, было сложно. Особенно проблемными оказались:

- ML модели от Hugging Face, PyTorch и TensorFlow — они могут занимать десятки гигабайт, и я забывал, какие из них реально используются

- Остатки удаленных приложений — после удаления программ оставались конфиги и кэши

- Артефакты разработки — `__pycache__`, `node_modules`, старые виртуальные окружения

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

Я начал искать готовые решения, но большинство были либо платными, либо слишком сложными, либо работали только на одной платформе. Тогда я подумал: а почему бы не сделать свой инструмент?

Решение: создать свой инструмент

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

Что я хотел получить:

1. Кроссплатформенность — работа на macOS и Linux

2. Анализ ML кэшей — понимание, какие модели не используются

3. Проверка зависимостей — поиск конфликтов и неиспользуемых библиотек

4. Безопасность — проверка прав доступа, поиск секретов

5. Понятные отчеты — Markdown и JSON форматы

Реализация: оказалось проще, чем думал

Я разработчик на Python, но никогда не делал системных утилит. Первая мысль: "Это будет сложно". Вторая: "А попробовать?"

Технологический стек

Выбрал простой и понятный стек:

- Python 3.12 — современный язык, который я знаю хорошо

- Typer — для создания CLI интерфейса (очень простой, похож на Click, но лучше)

- Pydantic — для валидации конфигурации

- Rich — для красивого вывода в терминале

- uv — современный менеджер пакетов (быстрее pip)

Первые шаги

Начал с простого: сканирование директорий кэшей. Оказалось, что Python отлично подходит для таких задач:

```python from pathlib import Path

def scan_caches(): cache_dir = Path.home() / "Library" / "Caches" for item in cache_dir.iterdir(): size = get_directory_size(item) if size > 100 * 1024 * 1024: # Больше 100MB print(f"{item.name}: {size / 1024 / 1024:.2f} MB") ```

Это заняло буквально 10 минут. И уже работало.

Платформо-независимость

Следующий шаг — сделать инструмент работающим и на Linux. Оказалось, что это не так сложно:

- Вместо хардкода путей создал абстракцию `PlatformPaths` - Автоматическое определение платформы через `platform.system()` - Единый интерфейс для обеих ОС

```python class PlatformPaths: def cache_dir(self): if IS_MACOS: return self.home / "Library" / "Caches" elif IS_LINUX: return self.home / ".cache" ```

Теперь одна и та же логика работает на обеих платформах.

Анализ ML кэшей

Самая интересная часть — анализ моделей Hugging Face. Оказалось, что структура кэша предсказуема:

- Модели хранятся в `~/.cache/huggingface/hub/models--{org}--{model_name}/` - Можно получить дату последнего доступа через `stat()` - Модели старше 30 дней — кандидаты на удаление

Реализация заняла один вечер — это было самое интересное.

Проверка зависимостей

Для анализа зависимостей использовал существующие инструменты:

- `uv pip check` — для проверки конфликтов - Анализ импортов в коде — для поиска неиспользуемых зависимостей - Парсинг `pyproject.toml` — для получения списка зависимостей

Это тоже оказалось проще, чем казалось.

Результат: инструмент, который работает

Через день работы я получил рабочий инструмент:

- ✅ Кроссплатформенный — работает на macOS и Linux

- ✅ Анализирует ML кэши — показывает неиспользуемые модели

- ✅ Проверяет зависимости — находит конфликты и неиспользуемые пакеты

- ✅ Безопасность — проверяет права доступа и ищет секреты

- ✅ Открытый исходный код — MIT License, доступен всем

Что я узнал в процессе

1. Создание CLI инструментов проще, чем кажется — Typer делает это тривиальным

2. Кроссплатформенность достигается через абстракции — не нужно писать отдельный код для каждой ОС

3. Python отлично подходит для системных утилит — `pathlib` делает работу с путями простой

4. Открытый исходный код — это правильно — другие могут использовать и улучшать

Цифры

- Время разработки: один день

- Строк кода: ~3800 (включая тесты и документацию)

- Зависимостей: 6 основных (Typer, Pydantic, Rich, PyYAML и еще пару)

- Поддерживаемых платформ: 2 (macOS и Linux)

Почему это доступно каждому

Многие думают, что создание системных утилит — это сложно. Но это не так:

Вам не нужно:

- ❌ Знать C или C++ — Python справляется отлично

- ❌ Разбираться в системном программировании — достаточно базовых знаний

- ❌ Иметь годы опыта — достаточно понимать основы Python

- ❌ Иметь команду — можно делать в одиночку

Вам нужно:

- ✅ Базовое знание Python (достаточно понимать классы и функции)

- ✅ Понимание проблемы, которую хотите решить

- ✅ Готовность учиться (документация и примеры есть везде)

- ✅ Немного времени (можно делать постепенно)

Советы для начинающих

1. Начните с простого — не пытайтесь сразу сделать все функции

2. Используйте готовые библиотеки — не изобретайте велосипед

3. Пишите для себя — сначала решите свою проблему, потом думайте о других

4. Публикуйте код — GitHub — отличное место для этого

5. Не бойтесь ошибок — это нормально, все через это проходят

Что делать дальше

Если у вас есть идея инструмента, который решит вашу проблему:

1. Опишите проблему — что именно хотите решить

2. Найдите простой способ — не усложняйте

3. Начните с прототипа — сначала сделайте так, чтобы работало

4. Постепенно улучшайте — добавляйте функции по мере необходимости

5. Поделитесь результатом — возможно, другим это тоже нужно

Инструменты, которые помогут

- Typer — для CLI интерфейсов

- Click — альтернатива Typer (если хотите что-то другое)

- Rich — для красивого вывода

- Pydantic — для валидации данных

- uv — современный менеджер пакетов Python

Все это бесплатно и с открытым исходным кодом.

Заключение

Создание System Cleaner показало мне, что разработка полезных инструментов доступна каждому. Не нужно быть гением или иметь годы опыта. Достаточно:

- Понять проблему - Найти простое решение - Начать делать - Не останавливаться на полпути

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

---

P.S.

Проект System Cleaner доступен на GitHub

Если хотите обсудить разработку подобных инструментов или поделиться своим опытом — пишите в Telegram

---

2
Начать дискуссию