Skip to content

skrashevich/godiskanal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

godiskanal

Консольная утилита для macOS, которая показывает, куда делось место на диске, и помогает его очистить. Параллельно сканирует файловую систему, проверяет известные «пожирателей» места и опционально даёт рекомендации через LLM (OpenAI API или любой совместимый провайдер).

Установка

go install github.com/skrashevich/godiskanal@latest

или локально:

git clone ...
cd godiskanal
go build -o ~/go/bin/godiskanal .

Быстрый старт

# Анализ домашней директории
godiskanal

# Не пересекать границы ФС (быстрее, пропускает внешние тома)
godiskanal -x

# TUI-браузер диска (ncdu-подобный)
godiskanal -b

# TUI-браузер с LLM-описаниями (нажмите i на любом элементе)
godiskanal -b --llm

# Интерактивная TUI-очистка известных мест
godiskanal -i

# С рекомендациями от ИИ
godiskanal --llm

# Всё вместе
godiskanal --llm -i -x

Флаги

Сканирование

Флаг По умолчанию Описание
-p, --path ~ Путь для сканирования
-n, --top 20 Количество топ-директорий
-x, --one-filesystem false Не пересекать границы файловых систем
--exclude PATH Исключить путь (можно повторять)
--min-size 100MB Минимальный размер для отображения

LLM-анализ

Флаг По умолчанию Описание
--llm false Включить анализ с рекомендациями
--api-key API ключ (или OPENAI_API_KEY)
--api-url Базовый URL API (или OPENAI_BASE_URL)
--model gpt-4o-mini Модель LLM

Браузер и очистка

Флаг По умолчанию Описание
-b, --browse false TUI-браузер диска с навигацией и удалением
-i, --interactive false TUI-очистка известных мест (кэши, артефакты)

Сканирование

Сканирование многопоточное — по умолчанию используются все CPU ядра. В процессе отображается текущий каталог; строка прогресса адаптируется под ширину терминала:

  ⠸ 1,234,500 файлов | 128.3 GB  ~/Library/Developer/Xcode/DerivedData/App/Build

Ctrl+C прерывает сканирование и выводит частичные результаты — данные уже собранных директорий не теряются.

Директории, не ответившие за 3 секунды (незагруженные файлы iCloud, зависшие NFS/SMB-тома), автоматически пропускаются. После сканирования выводится предупреждение:

⚠ Пропущено 5 директорий (таймаут — возможно iCloud или сетевой диск)

Флаг -x — не пересекать границы ФС

Полезен при сканировании корня (/) или при наличии примонтированных томов:

godiskanal -x              # только основная ФС
godiskanal --path /  -x   # весь диск, без /Volumes и /System/Volumes

Флаг --exclude

# исключить конкретный каталог
godiskanal --exclude ~/VirtualBoxVMs

# несколько исключений
godiskanal --exclude ~/VMs --exclude /opt/homebrew

API ключ и URL

Ключ и базовый URL передаются через флаги или переменные окружения (флаги имеют приоритет):

# через переменные окружения (рекомендуется)
export OPENAI_API_KEY=sk-...
godiskanal --llm

# через флаги
godiskanal --llm --api-key sk-... --model gpt-4o

Совместимые провайдеры

Флаг --api-url (или переменная OPENAI_BASE_URL) позволяет использовать любой OpenAI-совместимый API:

# Ollama (локальные модели)
godiskanal --llm --api-url http://localhost:11434/v1 --model llama3.2

# LM Studio
godiskanal --llm --api-url http://localhost:1234/v1 --model local-model

# Azure OpenAI
godiskanal --llm \
  --api-url https://my-resource.openai.azure.com/openai/deployments/gpt-4o \
  --api-key $AZURE_OPENAI_KEY \
  --model gpt-4o

# через переменные окружения
export OPENAI_BASE_URL=http://localhost:11434/v1
export OPENAI_API_KEY=ollama
godiskanal --llm --model llama3.2

После завершения стриминга выводится статистика токенов и стоимость запроса:

— Токены: 512 вход + 1024 выход = 1536 итого  | стоимость: $0.0007

Стоимость рассчитывается автоматически для популярных моделей OpenAI. При использовании сторонних провайдеров строка стоимости не выводится, если провайдер не возвращает usage-данные.


Сценарии использования

1. Базовый анализ

godiskanal

Утилита:

  1. Показывает статистику диска (всего / занято / свободно)
  2. Параллельно сканирует ~/ с прогресс-индикатором
  3. Выводит топ-20 директорий по размеру
  4. Находит крупные node_modules
  5. Проверяет известные «пожирателей» места: Xcode DerivedData, iOS Simulators, Docker, npm/yarn/pnpm/Go/Homebrew кэши, Корзина и др.
  6. Сообщает о локальных снимках Time Machine
  7. Выводит краткие рекомендации по очистке

2. Анализ через LLM

godiskanal --llm

Формирует промпт с данными сканирования и стримит ответ от LLM в терминал. После завершения выводит потраченные токены и стоимость запроса.

3. TUI-браузер диска

godiskanal -b

Открывает ncdu-подобный интерфейс для навигации по дереву директорий. Управление:

Клавиша Действие
↑↓ / jk Навигация
Enter / Войти в директорию
/ Esc Вернуться назад
Space Отметить для удаления
d Удалить отмеченные
D Удалить текущий элемент
i Описание от LLM (нужен API ключ)
? Помощь
q Выйти
# С LLM-описаниями (нажмите i на любом элементе)
godiskanal -b --llm

4. Интерактивная TUI-очистка

godiskanal -i

TUI-интерфейс со списком известных мест (кэши, артефакты сборки, старые backups). Пробел выбирает элементы, Enter запускает очистку с подтверждением. Docker и iOS Simulators помечаются отдельно с инструкцией по ручной очистке.

5. Полный сценарий

godiskanal --llm -i -x

Параллельное сканирование без пересечения границ ФС → рекомендации от ИИ → TUI-очистка.

6. Сканирование конкретного пути

godiskanal --path ~/Projects --llm
godiskanal --path /Users/shared --top 30

Что проверяется автоматически

macOS

Локация Описание
~/Library/Caches Кэши всех приложений
~/Library/Developer/Xcode/DerivedData Артефакты сборки Xcode
~/Library/Developer/CoreSimulator/Devices Образы iOS-симуляторов¹
~/Library/Developer/Xcode/iOS DeviceSupport Символы отладки устройств
~/Library/Application Support/MobileSync/Backup Резервные копии iPhone/iPad
~/.Trash Корзина
~/Downloads Загрузки
Homebrew cache Определяется через brew --cache
Time Machine snapshots Локальные снимки (tmutil)

Инструменты разработки

Локация Описание
~/.npm Кэш npm
~/.yarn/cache Кэш Yarn
~/.pnpm-store Хранилище pnpm
~/.bun/install Кэш Bun
~/go/pkg/mod Кэш Go-модулей
~/Library/Caches/go-build Кэш сборки Go
~/.gradle/caches Кэш Gradle
~/.m2/repository Репозиторий Maven
~/.cargo Кэш Rust/Cargo
~/.rustup/toolchains Установленные тулчейны Rust
~/.cocoapods Кэш CocoaPods
~/.node-gyp Кэш нативных Node.js модулей
~/.pub-cache Кэш Dart/Flutter
~/.nuget/packages Кэш NuGet (.NET)
~/.platformio Тулчейны PlatformIO
~/Library/Caches/pip Кэш Python pip
~/.venv Python виртуальное окружение
~/.cache/uv Кэш пакетного менеджера uv
~/Library/Containers/com.docker.docker Docker образы и данные¹

AI / ML

Локация Описание
~/.cache/huggingface Локальные модели HuggingFace
~/.cache/whisper Модели OpenAI Whisper
~/.continue/index Поисковый индекс Continue AI

Браузеры / Electron

Локация Описание
~/.cache/puppeteer Chromium для Puppeteer
~/.cache/electron Кэш Electron SDK

node_modules

node_modules Любые крупные node_modules в дереве сканирования (>200 MB)

¹ Требует ручной команды (xcrun simctl delete unavailable / docker system prune), отображается отдельно в TUI.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages