DiskWise

Recupere espaço em disco do Mac dentro de um agente de codificação: verifica caches, node_modules, DerivedData e uso do Docker, elabora um plano e move apenas itens conhecidos como seguros para a Lixeira.

Documentação

DiskWise

Uma alternativa gratuita e de código aberto ao CleanMyMac para macOS.

stars platform swift languages license size brew

Um limpador de disco nativo em SwiftUI para node_modules, Xcode DerivedData, volumes Docker, caches de aplicativos e sobras de desinstalação — e ele nunca exclui nada de verdade: toda remoção vai para a Lixeira e permanece desfazível até que você a esvazie. Sem Electron, sem sidecar em Python, sem servidor local, sem telemetria, sem assinatura, e toda a interface em dez idiomas. Um DMG de ~5 MB, um único arquivo para Apple Silicon e Intel.

Inglês | 简体中文 | 日本語 | 한국어

The Overview page in one loop: a rescan grows the ring segment by segment until it settles, its light sweeping round the band, opening a ledger row unfolds that row's detail in place while the ring steps back to a small reference dial, the first tap on an arc arms it and the second moves it to the Trash, and Undo puts it back

Scan → abra uma linha → dois toques → desfazer. Captura feita contra uma pasta inicial sintética, então os números na tela são inventados — a faixa laranja diz isso.

The App Caches page on screen: every row says what deleting it would cost

▶ O vídeo de demonstração de 43 segundos (YouTube).

brew install --cask dreamofxm/diskwise/diskwise

Ou pela Mac App Store (macOS 13+, gratuito, atualizado automaticamente pela loja): DiskWise: Storage Cleaner

Prefere baixar um arquivo local? Última versão no GitHub — toda versão acompanha o SHA-256 do DMG.


Conteúdo

Início rápido

O GIF no topo desta página reproduz exatamente esta ordem:

  1. Abra Visão geral — ele percorre todo o volume e desenha o resultado como um anel, com o registro ao lado.
  2. Clique em qualquer linha desse registro — as pastas abaixo dela se desdobram ali mesmo, e o anel recua para um pequeno mostrador de referência.
  3. Clique no arco que você pode mover duas vezes: o primeiro clique o arma, o segundo o move para a Lixeira. Desfazer o coloca de volta, e esvaziar a Lixeira continua sendo decisão do Finder.

Para agentes de IA

A versão de download direto inclui um CLI diskwise (a versão da App Store não inclui), e ele também funciona como um servidor Model Context Protocol — Claude Code, Cursor, Codex, Qoder, OpenCode, Zed, ZCode e Claude Desktop podem todos liberar espaço em disco para você. Ele não pode rm -rf: o único caminho de remoção move itens comprovadamente seguros para a Lixeira, toda operação é desfazível, e locais arriscados nunca podem ser tocados.

O Claude Code aceita uma linha no Terminal:

claude mcp add diskwise -- "/Applications/DiskWise.app/Contents/MacOS/diskwise" mcp

Depois é só pedir ao seu agente "veja o que vale a pena limpar no meu Mac" — ele escaneia, elabora um plano, mostra o resumo, e só move algo depois que você concordar. Os oito acima são os que verificamos linha por linha; qualquer cliente que possa hospedar um servidor MCP stdio local aceita os mesmos dois valores — o caminho deste binário e o argumento mcp. Se algum deles não conseguir conectar, o problema é do cliente: issues e PRs são bem-vindos. Detalhes, trechos para os outros sete clientes e o modelo completo de segurança: docs/AGENTS-CLI.md.

Por que isto existe

Um limpador de disco precisa ler muita coisa da sua máquina antes de poder dizer algo útil. A maioria deles é de código fechado, inclui um daemon em segundo plano e trata rm -rf como um recurso.

Nós seguimos o caminho oposto:

DiskWise
Caminho de exclusãoUm — FileManager.trashItem. Tudo vai para a Lixeira.
DesfazerSim, por operação, durante toda a sessão.
Caminhos protegidosA própria pasta inicial, ~/Library e afins nunca podem ser removidos por completo.
Esvaziar a LixeiraQuem faz é o Finder, nunca este aplicativo. Versão direta: o app pede ao Finder e você confirma mais uma vez. Versão da App Store: a sandbox impede esse evento — comportamento medido, nem o prompt de permissão aparece — então o mesmo botão abre a Lixeira e você pressiona ⌘⇧⌫.
Imagens DockerSomente leitura. Discos virtuais não têm caminho por imagem, então o app aponta em vez de fingir.
RedeNenhuma. Sem atualizador, sem analytics, sem anúncios.
PreçoNada. Todos os recursos e as seis skins vêm desbloqueados nesta versão.
RuntimeUm único .app. Sem Python, sem porta, sem daemon.

A lista de caches explica cada item que consegue — o que é, o que acontece se você excluí-lo, como ele volta. Só escrevemos esse texto para itens que realmente entendemos, então algumas linhas têm e outras não. WeChat, DingTalk e WeCom estão cobertos, porque em muitas máquinas só esses três ocupam dezenas de gigabytes.

Ele é feito para máquinas usadas por um desenvolvedor por alguns anos — aquelas em que node_modules, volumes Docker, Xcode DerivedData e dez GB de caches assumiram o controle silenciosamente.

O que você obtém

Veja o espaço

  • Visão geral — o volume desenhado como um anel: uma fatia é um bloco de bytes que esta passada realmente mediu, e as fatias somam o disco inteiro (pastas principais + todo o resto contado + não medido + removível + livre).
    • A faixa clara fica exatamente na borda do que já foi medido até agora.
    • Uma fatia que você pode mover inteira leva dois toques: o primeiro a arma, o segundo a envia para a Lixeira, e ela se solta sozinha após 3 segundos.
    • Há uma única lista, o registro ao lado do anel. Abra uma linha e o detalhe se desdobra ali mesmo — as pastas abaixo dela, os lugares por trás de Outros contados, os volumes por trás de Não medido.
    • Enquanto uma linha está aberta, o anel recua para um pequeno mostrador de referência, e Revelar e Aprofundar ficam nessa linha.
  • Varredura do disco inteiro — sem escopo para adivinhar. A versão de código aberto percorre todo o volume (raízes de sistema na lista de permissões incluídas, pastas iniciais de outros usuários incluídas); a versão em sandbox da Mac App Store percorre tudo o que sua permissão alcança e diz isso na tela.
    • De qualquer forma, cobre o volume, não apenas os cantos arrumados da sua pasta inicial.
  • Uma linha de cobertura que nomeia o que não foi medido — a visão geral informa quanto do seu espaço usado foi realmente medido e nomeia o resto: volumes do sistema, pastas somente de administrador e pastas bloqueadas por falta de Acesso Total ao Disco.
    • O botão Conceder acesso só aparece quando uma leitura real de um arquivo protegido diz que a permissão está realmente faltando, então uma máquina que já concedeu nunca é incomodada de novo.
    • Todo número é decimal, então bate com o Finder e o Sobre Este Mac byte por byte.
  • A fatia "Outros contados" soma — abra essa linha e todos os lugares por trás do arco são listados abaixo dela, e a última linha detalha o total parte por parte (as linhas listadas, mais as que estão abaixo do piso de 100 MB), porque "mais de cem GB, confia em mim" não é uma explicação.
  • Arquivos grandes — os N maiores nas mesmas raízes, com diretórios de desenvolvimento puláveis.
  • Não tocados há muito tempo — arquivos que você não abre há N dias, nas mesmas raízes.
  • Duplicados — tamanho → hash parcial → hash completo, agrupados, com a cópia mais recente de cada grupo bloqueada para você não apagar a única existente.
    • Cópias dentro de venv / site-packages / DerivedData nunca entram na comparação e são listadas separadamente: exclua uma e aquele ambiente fica sem uma peça.

Especiais para máquinas de desenvolvimento

  • node_modules — varredura de projetos agrupada por projeto, para você ver "esses 3 checkouts custam 4,7 GB".
  • Uso do Docker — uma linha por runtime de contêiner realmente instalado (Docker Desktop, OrbStack, Podman, colima), medido pelo que seu disco virtual ocupa neste disco, com os números do próprio mecanismo listados abaixo. Somente leitura: aponta onde podar, nunca exclui por você.

Limpeza

  • Caches de aplicativos — uma base de conhecimento curada (caches do sistema, dumps de crash, WeChat / DingTalk / WeCom / QQ …). Cada entrada explica o que é, o que acontece se você excluir e como recuperar, com um selo dizendo o custo da exclusão — Seguro, baixável novamente ou perda de dados.
  • Caches de desenvolvimento — a mesma base de conhecimento, a metade das ferramentas que essas máquinas realmente enchem o disco: Homebrew, npm / pnpm / yarn, Maven, Gradle, conda, uv, cargo, modelos Ollama, arquivos Xcode, DerivedData e cada dispositivo de simulador listado um a um.
  • Sobras — dados órfãos de aplicativos que você já desinstalou, comparados com os IDs de pacote de tudo que ainda está instalado. Subestima em vez de excluir demais.
  • Lixeira — estatísticas da sessão, pilha de desfazer e um botão Esvaziar: fora da sandbox, pede ao Finder para fazer o esvaziamento; na versão da App Store, abre a Lixeira para você pressionar ⌘⇧⌫.

Personalização

  • Skins — 6 temas, e a parte interessante é que não são apenas trocas de cor: cada um muda tipografia, raio dos cantos, elevação, assinatura de movimento e paleta de gráficos. Morning Fog, Graphite, Mint, Polar Night, Aurora Glass, Ink & Paper — todos os seis estão inclusos.
  • Skins são dados, não código — todos os seis vivem em um único arquivo, Sources/DiskCleaner/Resources/skins.json, que documenta seus próprios campos. Um sétimo tema é um objeto JSON: edite esse arquivo no navegador no GitHub e abra um PR — sem Xcode, sem compilação, sem Swift.

Capturas de tela

Visão geralDuplicados
Overview: the whole volume as one ring with the ledger beside itDuplicates: hash-grouped copies with the newest one locked
Caches de desenvolvimentoSobras
Dev Caches: Homebrew, npm, Maven, Gradle, simulator devices and moreLeftovers: data orphaned by uninstalled apps

A loja de skins renderiza uma miniatura ao vivo de cada tema — mini barra lateral, anel medidor, linhas e botões, tudo desenhado com os tokens reais daquela skin — para você ver o esqueleto antes de vestir:

Skins: six theme cards, each rendering a live thumbnail of the whole page in that theme

Seis skins, seis esqueletos. Mesma página, três delas — Graphite é a escura:

GraphiteMintPolar Night
Graphite skinMint skinPolar Night skin

A interface vem em dez idiomas — inglês, chinês simplificado e tradicional, japonês, coreano, alemão, espanhol, francês, russo e português do Brasil — alternáveis pelo menu de idioma na página de Skins, e seguindo o idioma do sistema por padrão. As mesmas telas em chinês:

空间总览开发缓存
Overview in Simplified ChineseDev Caches in Simplified Chinese

As contagens são flexionadas por idioma em vez de montadas em inglês: o russo escolhe sua própria forma para cada número (1 файл, 3 файла, 11 групп), o alemão e as línguas românicas flexionam singular/plural, e japonês e coreano usam o classificador numérico que esses idiomas realmente usam.

Instalação

Mac App Store

DiskWise: Storage Cleaner — macOS 13+, gratuito, instale e comece a usar; a loja cuida de todas as versões seguintes.

Cada uma dessas versões precisa passar pela revisão da Apple primeiro, então a loja pode ficar atrás de uma versão do GitHub. Se você quiser a versão mais recente no momento em que ela sair, use o Homebrew ou o DMG abaixo.

Homebrew (um comando)

brew install --cask dreamofxm/diskwise/diskwise

O nome totalmente qualificado é o que faz isso funcionar a partir de um tap de terceiros: desde o Homebrew 6, taps não oficiais não são confiáveis por padrão, e instalar pelo nome completo confia apenas neste cask. Se preferir usar o nome curto:

brew tap DreamOfXM/diskwise
brew trust --cask dreamofxm/diskwise/diskwise
brew install --cask diskwise

Detalhes do tap e como o checksum fixado é atualizado: DreamOfXM/homebrew-diskwise.

O Homebrew instala o mesmo arquivo que a página de Releases carrega. Desde a v1.7, ele é assinado com um certificado Developer ID e notarizado pela Apple, então abre com um clique duplo e nunca chega a essa etapa. Versões anteriores à v1.7 foram compiladas ad-hoc, então o macOS bloqueia o primeiro início uma vez e você aprova em Ajustes do Sistema → Privacidade e Segurança → Abrir mesmo assim (no macOS 13–14, clique com o botão direito → Abrir faz o mesmo). Obtê-lo pela Mac App Store pula essa etapa completamente.

DMG

  1. Baixe DiskWise-<version>[-universal].dmg em Releases.
  2. Abra e arraste DiskWise.app para Applications.
  3. Clique duas vezes. Desde a v1.7, funciona direto — o app é assinado com Developer ID e notarizado. Em uma versão anterior à v1.7, o primeiro início é bloqueado uma vez; aprove em Ajustes do Sistema → Privacidade & Segurança → Abrir mesmo assim e o app abre normalmente a partir daí (no macOS 13–14, clique com o botão direito → Abrir funciona; o Sequoia removeu esse atalho). Releases built with ARCH=universal are named …-universal.dmg and carry both the Apple Silicon and Intel slices in one file; the Apple Silicon-only ones are named DiskWise-<version>.dmg. Checksums are published next to each release asset, and the cask pins the same SHA-256.

Build from source

You need the Xcode Command Line Tools — not full Xcode.

swift build                    # debug
swift run SelfTest             # all green is the precondition for shipping
swift run DiskCleaner          # run the app
bash build_app/build.sh        # localize check → build → self-test → .app → sign → dist/*.dmg + SHA256

build.sh refuses to produce a package if any of the three gates fails: missing translations, a failing self-test, or an unpacked resource. The translation gate parses the Swift sources and skins.json itself, so it catches a user-visible string that was never wrapped in L(…) as well as a missing translation — a language can't silently ship half-translated.

Contributing? Start with CONTRIBUTING.md, then docs/ARCHITECTURE.md and docs/DESIGN.md — both encode rules that were learned the expensive way. Three PRs need no Swift at all: a cache knowledge base entry, a skin, or a translation.

FAQ

Is this a CleanMyMac alternative? In the sense that it covers the same ground — caches, large files, duplicates, uninstall leftovers, Docker usage — with the source on this page and no subscription. It deliberately does less than a suite: no malware scan, no VPN, no mail cleanup, no "speed booster", because those are different products with different risks.

Can it delete something I actually need? Anything it removes lands in the Trash, and the session keeps an undo stack. Home itself and ~/Library can never be removed wholesale. Emptying the Trash is Finder's job, so macOS asks you one more time before space is really gone.

Is it safe to delete node_modules, DerivedData, caches? node_modules comes back with npm install, DerivedData with the next Xcode build, and caches with the next run of the tool that wrote them. DiskWise states that per entry rather than assuming you know it — each cache row says what it is, what happens if you delete it, and how to get it back.

Does it send data anywhere? No. No updater, no analytics, no account, no ads — the app has no network access at all, which is also why feedback goes through GitHub or email below.

What about WeChat / DingTalk / WeCom caches? They're in the cache knowledge base, because on a Chinese developer's Mac those are often the single biggest consumers. That's why Simplified and Traditional Chinese are both first-class here rather than a translation bolted onto an English UI.

Intel Mac? From v1.3 on, every published DMG is built with ARCH=universal and carries both the arm64 and x86_64 slices in one file, so the same download works on Apple Silicon and Intel. Releases before v1.3 shipped an arm64-only file (DiskWise-<version>.dmg, no -universal in the name); Intel users on those versions need to build from source instead (it takes a minute and needs no Xcode). bash build_app/build.sh still defaults to Apple Silicon; pass ARCH=universal to get both.

Why does macOS complain on first launch? From v1.7 it doesn't: every release from that version onward is signed with a Developer ID certificate and notarized by Apple, so Gatekeeper lets it open. The ad-hoc builds before it get stopped once — approve it in System Settings → Privacy & Security → Open Anyway and it launches normally afterwards; on macOS 13–14 right-click → Open does the same job, a shortcut Sequoia removed. The App Store build never gets stopped.

Known limits

  • The system area is counted, not cleaned. Rows under /Library, /opt or /private come up with a System area badge and a locked checkbox: either only an admin can write there, or the files belong to Homebrew / Xcode, whose own cleanup commands do a better job.
  • Large node_modules sweeps are slow and don't stream results yet.
  • It will not find every orphan. Leftover detection is deliberately conservative.

Roadmap

  • Streaming snapshots for slow scans
  • More cache knowledge base entries (open a PR — this is the easiest way to contribute)

Feedback

The app has no network access, so there is no built-in "send feedback" button — pick a channel:

ChannelWhere
Emailhnyxgxm2009@163.com
GitHubOpen an issue — English or Chinese is fine
DiscussionsQuestions, ideas, show-and-tell

Email and issues also live in-app: the Feedback page at the bottom of the sidebar, with copy buttons for every address.

If it cleared space you didn't know you had, starring the repo is genuinely how the next person finds it — there is no marketing budget behind this project, so GitHub search and awesome-list traffic are what decide whether anyone sees it at all.

Privacy

DiskWise has no network access and collects nothing — every scan runs locally on your Mac. Full policy: docs/PRIVACY.md.

License

Apache License 2.0 — see LICENSE.