godiskanal

command module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

README

godiskanal

Go Report Card License Go Reference GitHub release

Консольная утилита для 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.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL