Communitygithub.com

tzwkb/disk-cleanup

Agent Skill — Outils de nettoyage de disque et d'analyse d'espace pour Windows.

Qu'est-ce que disk-cleanup ?

Cette compétence fournit à un agent IA une boîte à outils complète pour analyser et nettoyer l'espace disque sous Windows, avec une approche structurée et sécurisée. Elle est idéale pour les assistants de développement, les outils de maintenance système ou tout agent IA travaillant sur des environnements Windows. La compétence repose sur un modèle de sécurité « feu tricolore » (vert/jaune/rouge) pour catégoriser les fichiers et dossiers, garantissant que seuls les éléments sûrs (caches temporaires, caches de navigateur, pip cache, etc.) sont supprimés automatiquement, tandis que les éléments à risque nécessitent une confirmation explicite de l'utilisateur. Le flux de travail standard comprend cinq étapes : analyse agressive de l'ensemble du disque à l'aide de scripts Python et PowerShell, classification et évaluation des risques, présentation d'un rapport détaillé à l'utilisateur, exécution des nettoyages approuvés (avec un mode dry-run), et vérification post-nettoyage. Les scripts inclus (tree_size_scanner, scan_programdata, find_folders_by_keyword, etc.) permettent une exploration hiérarchique rapide des dossiers volumineux, une analyse ciblée de ProgramData, une recherche par mots-clés dans les noms de dossiers, et des opérations de nettoyage avancées comme la suppression de dossiers verrouillés via la technique du dossier vide Robocopy. La compétence gère également des cas spécifiques aux applications chinoises (WeChat, QQ, WPS) qui ne respectent pas les API Windows standard, et fournit des conseils pour la migration de dossiers utilisateur, le nettoyage des composants WinSxS, et l'analyse des bibliothèques de jeux (Steam, WeGame).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add tzwkb/disk-cleanup

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Disk Cleanup Master — Nettoyeur de Disque Windows

Principes Fondamentaux (À Ne Pas Enfreindre)

  1. Analyse Agressive, Suppression Prudente
    • Phase d'analyse : Parcourir largement, vérifier en profondeur, ne pas hésiter à signaler en excès
    • Phase de suppression : Chaque opération doit montrer le contenu, la taille, le risque à l'utilisateur, et obtenir une confirmation explicite avant exécution
  2. Modèle de Sécurité Feu Tricolore
    • 🟢 Vert (Suppression Sûre) : Temp, caches navigateur, pip cache, __pycache__, résidus d'anciens installateurs, Cache/Log explicitement marqués par l'application, anciens composants WinSxS
    • 🟡 Jaune (Confirmation Utilisateur Requise) : Sauvegardes de jeux, enregistrements WeChat/QQ, fichiers cloud WPS, fichiers personnels dans Téléchargements, données globales d'application dans ProgramData
    • 🔴 Rouge (Interdiction de Suppression Sans Autorisation) : Répertoires système Windows, Program Files, fichiers de projet en cours d'utilisation, données non sauvegardées
  3. Traitement Spécial des Applications Chinoises
    • Les applications Tencent (WeChat/QQ/WeCom), NetEase, WPS, Baidu utilisent souvent des chemins codés en dur et ne respectent pas les API Windows Known Folders
    • Ne jamais couper/renommer leurs dossiers directement ; modifier le chemin dans les paramètres du logiciel
    • Voir references/chinese-app-special-cases.md pour les détails

Flux de Travail Standard

Étape 1 : Analyse Panoramique (Agressive)

  • Utiliser Get-PSDrive pour obtenir un aperçu de l'espace disque
  • Utiliser scripts/tree_size_scanner.py pour une analyse hiérarchique — depuis le répertoire racine, trier par taille, explorer couche par couche le plus gros dossier, localiser rapidement la source de consommation d'espace
  • Effectuer une analyse ciblée des zones critiques : AppData, Documents, ProgramData
  • Objectif : Fournir une carte d'occupation du disque en 5 minutes

Stratégie d'Analyse Hiérarchique :

# Vue panoramique du disque C (afficher les dossiers >500 Mo, profondeur 4)
python scripts/tree_size_scanner.py "C:\\" 500 4

# Localisation rapide des gros dossiers sur D/E
python scripts/tree_size_scanner.py "D:\\" 5000 3
  • D'abord analyser la racine, trouver les plus gros dossiers
  • Ensuite, analyser en profondeur chaque gros dossier individuellement
  • Ignorer automatiquement les répertoires système (Windows, Program Files) pour éviter les erreurs

Recherche d'Applications/Jeux Spécifiques (Non Installés via Plateforme) :

# Recherche par mot-clé dans les noms de dossiers (profondeur 6, sans calcul de taille, ultra-rapide)
python scripts/find_folders_by_keyword.py "D:\\" "Call of Duty|COD|Modern Warfare"

Étape 2 : Classification et Évaluation des Risques

  • Classer les résultats d'analyse selon 🟢🟡🔴
  • Marquer les éléments jaunes avec des risques spécifiques (ex : "Sauvegarde WeChat 33 Go, perte définitive après changement de téléphone")
  • Exclure directement les éléments rouges, aucune action

Étape 3 : Présenter le Rapport à l'Utilisateur

  • Utiliser un tableau : Zone, Taille, Niveau de Risque, Action Suggérée
  • Laisser l'utilisateur cocher ou répondre explicitement "quoi supprimer"
  • Interdiction d'effectuer une suppression en lot sans confirmation élément par élément

Étape 4 : Exécuter le Nettoyage

  • Éléments verts : Exécution directe, mais rapport des résultats après exécution
  • Éléments jaunes : Confirmation utilisateur pour un élément, puis exécution
  • Avant exécution, utiliser --dry-run ou un mode aperçu

Étape 5 : Vérification

  • Vérifier l'espace disque après nettoyage
  • Pour les opérations de migration (ex : Documents), effectuer un test d'écriture pour valider le chemin

Guide de Nettoyage Spécifique du Disque C

Nettoyage Système Sécurisé (Vert)

# Fichiers temporaires
$env:TEMP                    # Fichiers temporaires utilisateur
C:\Windows\Temp              # Fichiers temporaires système
C:\Windows\SoftwareDistribution\Download  # Cache Windows Update

# Caches navigateur
$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Cache
$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cache

# Corbeille
C:\$Recycle.Bin

# Fichier d'hibernation (si l'utilisateur n'utilise pas l'hibernation)
# powercfg /hibernate off

Nettoyage du Stockage de Composants WinSxS (Vert Haute Valeur)

WinSxS (C:\Windows\WinSxS) est le dépôt de composants système Windows. Chaque mise à jour conserve les anciennes versions pour permettre le rollback. Sur le long terme, il peut accumuler 10-20 Go.

Analyse de l'espace récupérable :

dism /Online /Cleanup-Image /AnalyzeComponentStore

Exécution du nettoyage (sûr, recommandé) :

dism /Online /Cleanup-Image /StartComponentCleanup
  • Après nettoyage, impossible de désinstaller les mises à jour Windows déjà installées (impact minimal en pratique)
  • Permet généralement de récupérer quelques centaines de Mo à plusieurs Go
  • Prend 3-10 minutes, peut s'exécuter en arrière-plan

Nettoyage plus agressif (prudence) :

dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase
  • Libère plus d'espace, mais rend impossible le rollback de toute mise à jour
  • À envisager uniquement en cas de manque critique d'espace disque

Gestion de l'Environnement Python Global

  • pip list --format=freeze pour voir le nombre total de paquets
  • pip list --not-required pour identifier les paquets de niveau supérieur installés directement par l'utilisateur (généralement bien moins que le total)
  • pip check pour vérifier les conflits de dépendances
  • pip cache purge pour nettoyer le cache de téléchargement pip
  • Nettoyer les résidus d'installation corrompus dans site-packages commençant par ~
  • Nettoyer tous les dossiers __pycache__ : Get-ChildItem -Path $sitePackages -Recurse -Directory -Filter "__pycache__" | Remove-Item -Recurse -Force
  • Attention : La résolution des conflits de dépendances peut rencontrer des paquets mutuellement exclusifs (ex : pyjwt requis dans des plages de versions différentes par deux paquets), l'utilisateur doit décider lequel conserver

Analyse Ciblée d'AppData

AppData est un gros consommateur caché sur le disque C, généralement divisé en :

  • Local : Caches d'application, données d'exécution (grand potentiel de nettoyage)
  • Roaming : Configurations utilisateur, historiques de chat (prudence)
  • LocalLow : Données d'application à faible privilège (généralement petites)

Gros éléments courants :

  • Local\Netease\CloudMusic\Cache — Cache NetEase Cloud Music (supprimable)
  • Roaming\Kingsoft\office6\backup — Sauvegardes de crash WPS (supprimable)
  • Roaming\Tencent — Données WeChat PC (jaune, voir référence)

Analyse Ciblée de ProgramData

ProgramData est un gros consommateur souvent négligé du disque C. Il stocke les données globales d'application, les caches d'installation et les configurations de pilotes de périphériques.

Stratégie de Classification :

CatégorieChemin TypiqueRisqueExemple
Données de pilotesNVIDIA, NVIDIA Corporation, LGHUB, ASUS🔴 Ne pas toucherSuppression peut causer des anomalies périphériques
Données globales d'applicationTencent, anaconda3, 0install.net🟡 Supprimer après confirmationSupprimable si l'application n'est plus utilisée
Caches d'installationPackage Cache, Microsoft\VisualStudio🟡 PrudenceSuppression peut empêcher la désinstallation/réparation du programme
Données systèmeMicrosoft\Windows Defender, Microsoft\Search🔴 Ne pas toucherComposants système essentiels

Commande d'analyse :

# Utiliser le script pour éviter le timeout des commandes individuelles
python scripts/scan_programdata.py

Éléments nettoyables courants :

  • anaconda3 — Si un autre environnement Python est utilisé, peut être désinstallé (généralement 3-8 Go)
  • 0install.net — Données du gestionnaire de paquets Zero Install, supprimable si non utilisé (quelques centaines de Mo)
  • Tencent\QQPCMgr — Données QQ PC Manager (supprimable si non utilisé)
  • Tencent\WeType — Données WeType Input (supprimable si non utilisé)

Processus de Désinstallation d'Applications Lourdes (Jaune → Vert)

Pour les résidus d'application dans ProgramData ou Program Files, ne pas supprimer directement les dossiers. Suivre le processus de désinstallation standard :

  1. Rechercher le programme de désinstallation dans le registre

    Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" |
      Where-Object { $_.DisplayName -match "Anaconda" }
    
  2. Désinstallation silencieuse (installateur NSIS)

    & "C:\ProgramData\anaconda3\Uninstall-Anaconda3.exe" /S
    
    • Attention : L'option /S peut retourner immédiatement, sans attendre la fin de la désinstallation
    • Il faut interroger en boucle la disparition du dossier :
    while (Test-Path "C:\ProgramData\anaconda3") { Start-Sleep -Seconds 10 }
    
  3. Nettoyer les résidus

    • Vérifier et supprimer les dossiers résiduels
    • Vérifier les variables d'environnement PATH :
    [Environment]::GetEnvironmentVariable("Path", "User") -split ";" | Select-String "anaconda"
    [Environment]::GetEnvironmentVariable("Path", "Machine") -split ";" | Select-String "anaconda"
    
  4. Dernière solution pour les dossiers tenaces : Robocopy Empty Trick Quand Remove-Item -Force et takeown + icacls échouent :

    $empty = "C:\temp_empty_$(Get-Random)"
    New-Item -ItemType Directory -Path $empty -Force | Out-Null
    robocopy $empty "C:\ProgramData\0install.net" /MIR /R:1 /W:1 /NP /NFL /NDL
    Remove-Item $empty -Force
    Remove-Item "C:\ProgramData\0install.net" -Force
    
    • Principe : Écraser le dossier cible avec un dossier vide en miroir, forçant la suppression du contenu
    • Avertissement : robocopy /MIR vide complètement la cible, ne jamais inverser les directions !

Migration des Répertoires Utilisateurs

Dossiers Standard Windows (Documents / Bureau / Téléchargements / Images / Vidéos)

  • Bonne pratique : Clic droit sur le dossier → Propriétés → Emplacement → Déplacer
  • Il s'agit d'une redirection système ; les programmes utilisant les API de chemin pointeront automatiquement vers le nouvel emplacement
  • Après migration, si l'ancien dossier est verrouillé et ne peut être supprimé, redémarrer puis traiter

Données d'Applications Tierces

  • Mauvaise pratique : Couper directement les dossiers d'application dans AppData ou Documents vers un nouveau disque
  • Bonne pratique : Modifier dans les paramètres de chaque logiciel "Gestion des fichiers/Emplacement de stockage" pour laisser le logiciel migrer lui-même
  • Exception : Les bibliothèques de jeux Steam peuvent être ajoutées/migrées dans les paramètres Steam

Analyse des Bibliothèques de Jeux

Steam

  • Dossier de bibliothèque : steamapps\common\ (jeux installés)
  • Téléchargements incomplets : steamapps\downloading\ (supprimable en toute sécurité)
  • Workshop : steamapps\workshop\ (nettoyable manuellement après désabonnement)
  • La désinstallation des jeux doit passer par le client Steam, ne pas supprimer directement les dossiers

WeGame

  • Données de plateforme : WEGAME\
  • Données de jeux : WeGameApps\rail_apps\
  • Jeux volumineux courants : LOL (~40-50 Go), Valorant (~30 Go)

Pièges Courants et Expériences

  1. Risque robocopy /MIR

    • /MIR équivaut à une synchronisation miroir, supprime les fichiers supplémentaires du côté cible. Une inversion de direction efface les données
    • Les opérations sur de grands dossiers peuvent expirer, mais le processus robocopy continue en arrière-plan, bloquant les E/S ultérieures
    • Gestion : Vérifier après opération Get-Process robocopy, tuer si nécessaire
  2. Robocopy Empty Trick (Suppression des dossiers tenaces)

    • Quand les fichiers sont verrouillés, permissions insuffisantes, takeown échoue, utiliser un dossier vide + /MIR pour forcer le vidage de la cible
    • Obligatoire : Créer d'abord un dossier vide indépendant comme source, confirmer le chemin cible avant exécution
    • Ne jamais utiliser un répertoire système (comme C:\Windows) comme cible
  3. Pollution de la sortie d'analyse

    • Exécuter plusieurs Get-ChildItem | Format-Table en parallèle dans une seule commande Shell peut mélanger les flux de sortie (ex : résultats NVIDIA Corporation mélangés avec dossier Tencent)
    • Gestion : Analyser un seul répertoire à la fois, ou utiliser un script Python pour une sortie unifiée
  4. Comportement asynchrone des désinstallateurs NSIS

    • Les désinstallateurs silencieux avec /S peuvent retourner immédiatement, sans bloquer en attendant la fin
    • Gestion : Après lancement, interroger en boucle la disparition du dossier d'installation ou vérifier la liste des processus
  5. Verrouillage de fichiers

    • WeChat, WPS, QQ et autres applications en arrière-plan verrouillent leurs fichiers de données, empêchant le renommage/suppression
    • Gestion : Fermer les processus correspondants (y compris les démons), puis agir
  6. Noms de fichiers Unicode

    • Les noms de fichiers chinois sous Windows peuvent provoquer des erreurs d'encodage dans PowerShell/Python
    • Gestion : Utiliser .encode('ascii', 'replace').decode('ascii') dans les scripts Python pour une sortie sécurisée
  7. Timeout de Measure-Object -Sum

    • Pour les dossiers contenant des centaines de milliers de fichiers (ex : cache WeChat, ressources de jeux), Get-ChildItem -Recurse avec Measure-Object peut expirer
    • Gestion : Utiliser robocopy $path \NULL /L /S /NJH /NJS /BYTES pour les statistiques, ou limiter la profondeur d'analyse
  8. Stratégie ultime pour les grands dossiers (Hiérarchique + Mots-clés)

    • Get-ChildItem -Recurse et robocopy /L /S peuvent expirer sur les bibliothèques Steam ou lors d'analyses de disque entier
    • Gestion :
      1. Filtre grossier : Utiliser os.scandir pour ne scanner que les dossiers >5 Go sous la racine, instantané
      2. Forage : Utiliser tree_size_scanner.py pour explorer couche par couche les gros dossiers
      3. Recherche ciblée : Utiliser find_folders_by_keyword.py pour une correspondance par mots-clés dans les noms de dossiers, avec profondeur limitée (≤6 couches), sans calcul de taille, pour éviter le timeout
      4. Si les trois étapes ci-dessus échouent, alors seulement envisager une récursion complète

Liste des Outils Script

  • scripts/tree_size_scanner.py <path> [min_mb] [max_depth] — Analyse hiérarchique : depuis la racine, explorer couche par couche le plus gros dossier, générer une carte d'occupation du disque
  • scripts/scan_large_folders.py <path> — Analyse rapide des grands dossiers sous un chemin donné (profondeur limitée pour éviter le timeout)
  • scripts/scan_programdata.py — Analyse ciblée de C:\ProgramData, classer et afficher les grands dossiers par niveau de sécurité
  • scripts/find_folders_by_keyword.py <path> <pattern> — Recherche par mots-clés dans les noms de dossiers (profondeur 6, sans calcul de taille, ultra-rapide)
  • scripts/find_zombie_packages.py — Analyser l'environnement pip global, lister les paquets de niveau supérieur et les conflits de dépendances
  • scripts/cleanup_temp.ps1 [-WhatIf] — Nettoyage sécurisé de Temp, caches navigateur, pip cache, WinSxS (support du mode aperçu)
  • scripts/robocopy_wipe.py <target> — Supprimer les dossiers tenaces avec la technique Robocopy empty trick (inclut une vérification de sécurité du chemin)

Modèle de Sortie

Lors du rapport à l'utilisateur, utiliser le modèle de tableau suivant :

ZoneTailleRisqueSuggestion
......🟢/🟡/🔴...

Rapport après nettoyage :

LecteurEspace libre avantEspace libre aprèsEspace libéré
............

Skills associés