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.
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.

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.
▶ 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
- Para agentes de IA
- Por que isto existe
- O que você obtém
- Capturas de tela
- Instalação
- Compilar a partir do código-fonte
- Perguntas frequentes
- Limitações conhecidas
- Roteiro
- Feedback
- Privacidade
- Licença
Início rápido
O GIF no topo desta página reproduz exatamente esta ordem:
- Abra Visão geral — ele percorre todo o volume e desenha o resultado como um anel, com o registro ao lado.
- 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.
- 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ão | Um — FileManager.trashItem. Tudo vai para a Lixeira. |
| Desfazer | Sim, por operação, durante toda a sessão. |
| Caminhos protegidos | A própria pasta inicial, ~/Library e afins nunca podem ser removidos por completo. |
| Esvaziar a Lixeira | Quem 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 Docker | Somente leitura. Discos virtuais não têm caminho por imagem, então o app aponta em vez de fingir. |
| Rede | Nenhuma. Sem atualizador, sem analytics, sem anúncios. |
| Preço | Nada. Todos os recursos e as seis skins vêm desbloqueados nesta versão. |
| Runtime | Um ú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 geral | Duplicados |
|---|---|
![]() | ![]() |
| Caches de desenvolvimento | Sobras |
|---|---|
![]() | ![]() |
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:
Seis skins, seis esqueletos. Mesma página, três delas — Graphite é a escura:
| Graphite | Mint | Polar Night |
|---|---|---|
![]() | ![]() | ![]() |
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:
| 空间总览 | 开发缓存 |
|---|---|
![]() | ![]() |
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
- Baixe
DiskWise-<version>[-universal].dmgem Releases. - Abra e arraste DiskWise.app para Applications.
- 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=universalare named…-universal.dmgand carry both the Apple Silicon and Intel slices in one file; the Apple Silicon-only ones are namedDiskWise-<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,/optor/privatecome 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_modulessweeps 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:
| Channel | Where |
|---|---|
| hnyxgxm2009@163.com | |
| GitHub | Open an issue — English or Chinese is fine |
| Discussions | Questions, 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.









