Windows 磁盘空间体检(win-disk-space-doctor)

SKILL运维和基础设施
运维和基础设施 未标注权限 许可证不明确
安装这个技能

Windows 全盘空间只读体检工作流。扫描指定盘符(默认 C:),定位空间构成与「飞速增长」元凶,输出商务风 HTML 诊断报告 + 分级(可删/需评估/禁删)清理清单。当用户说"扫描C盘""C盘满了""空间消耗飞快""哪些文件夹可以安全删除""磁盘体检"时使用。

一句话选型结论

按资料字段整理

Windows 磁盘空间体检(win-disk-space-doctor)是运维和基础设施类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类运维和基础设施 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_b3307eb6/win-disk-space-doctor
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

运维和基础设施
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_b3307eb6仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791693399
正文体量28.3 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
查服务与日志

按现象定位服务状态与日志线索。

写部署与巡检脚本

把重复的部署、巡检写成脚本。

故障排查

按步骤排查网络、依赖与配置。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在运维和基础设施场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Windows 磁盘空间体检(win-disk-space-doctor)当前 未标注权限 未标注 未标注 未标注 有
Azure 部署 调用外部服务 GitHub 仓库 664.2 万 Codex、Claude、Cursor 有
Azure diagnostics 问题管理 调用外部服务 GitHub 仓库 657.6 万 Codex、Claude、Cursor 有
Azure aigateway 部署 调用外部服务 GitHub 仓库 655.3 万 Codex、Claude、Cursor 有
Azure AI 搜索 调用外部服务 GitHub 仓库 651.4 万 Codex、Claude、Cursor 有
Azure Cloud migrate 部署 调用外部服务 GitHub 仓库 650.7 万 Codex、Claude、Cursor 有

SKILL.md 全文

28.3 KB
模型实际读到的说明书原文,来自技能仓库

Windows 磁盘空间体检

Windows 系统盘空间诊断的完整工作流。核心价值不是"清理",而是"用证据指认元凶"——告诉用户到底是哪一个进程/目录在持续吃掉空间,以及哪些东西看起来能删其实不能删。

> 一次交付 = 一个能双击就用的文件夹。 体检的产出固定是:① 商务风 HTML 诊断报告;② 可双击运行的清理工具包 —— clean-Tier1.ps1 + 中文双击启动器 clean-Tier1-launcher.cmd + space-report.ps1 + space-report-template.html,五件同目录。
> 脚本默认 dry-run,什么都不删;要真动手必须显式 -Execute + 管理员权限 + 输入大写 YES 确认。使用者不需要自己开管理员窗口 —— 启动器会自动弹 UAC(R-18)。

铁律(违反必返工)

  • R-01 第一轮只做只读扫描,绝不删任何文件。 报告出来后由用户指定删哪些。即使用户说"帮我清理",第一轮也先出清单。
  • R-02 必须跳过 reparse point(联接点 / junction)。 否则 C:\Users\All Users(→ProgramData)、AppData\Local\Application Data(自指)会造成重复计数。实测同一目录差 6.8 GB。
  • R-03 .ps1 脚本一律纯 ASCII 写。 Windows PowerShell 5.1 读无 BOM 的 UTF-8 脚本会按 ANSI 解析,中文注释/字符串直接导致语法崩溃(典型报错:","后面缺少表达式、意外的标记"10:N1"、字符串缺少终止符)。需要中文输出就写文件再读。
  • R-04 体积统计用「整树走一遍、按深度聚合」,不要对每个子目录单独递归。 后者在 Temp 这种几千子目录的场景下几乎跑不完。
  • R-05 「增长」口径要诚实。 「近 N 天修改过的文件体积合计」度量的是活动强度(churn),含覆盖写入,不等于净增量。报告里必须写明,净增量要另找可辨认事件(新增补丁包、新日志文件)。
  • R-06 交付清理脚本时,dry-run 必须打印「可直接复制的下一步命令」。 只写一句"加 -Execute 就能清"是不够的——用户会误以为脚本"只列计划就退出了"。dry-run 结尾必须给出带完整路径、可直接粘贴的 -Execute 命令行,并注明需要管理员窗口、-Yes 可跳过确认、以及"不加 -Execute 永不删除"。脚本会把自身路径($MyInvocation.MyCommand.Path)填进该提示,中文路径必须用双引号包住。
  • R-07 -Execute 必须具备交互式确认闸门。 先完整打印计划 → 再要求输入大写 YES → 才动手;-Yes 用于无人值守场景绕过。删除动作永远发生在计划打印之后(因此扫描与删除必须分两趟结构,不能边扫边删)。
  • R-08 脚本必须自证"正常结束"。 结尾必须打印 [ FINISHED ] ... exit code 0 横幅 + 耗时,并写结果日志。没有结束标记的脚本,用户一定会把"跑完了"读成"崩了"——本次实况。诊断一个"疑似早退"的脚本,用这三条判据:① 末尾有 FINISHED 横幅;② 结果日志被写出(日志是脚本最后几条语句);③ 调用方在脚本返回后还能继续执行(例如能打印出自身的耗时行)。三条齐 = 脚本跑到底了,问题在感知不在代码。
  • R-09 交付给非技术用户的 Windows 脚本,必须附 .cmd 启动器。 .ps1 没有文件关联,双击不会运行;而从编辑器/GUI 拉起时控制台又会一闪而过(脚本正常结束 → 窗口关闭 → 看起来像"意外退出")。启动器负责四件事:Unblock-File(清 Zone.Identifier)、结束时按需停顿、需要时 UAC 提权、跑完自动接后续动作。⚠️ 停顿用 -Pause/-NoPause 精确控制,不要用 -NoExit——-NoExit 会把用户丢在一个 PowerShell 提示符里。启动器只允许 ASCII 或 GBK(cp936) 两种编码,且路径一律用 %~dp0 运行时求值、绝无中文路径字面量(中文菜单的编码口径见 R-18)。
  • R-10 Read-Host 必须 try/catch 包裹,中止路径绝不用 exit。 非交互 shell 下 Read-Host 会抛 PSInvalidOperationException 把脚本打死(-NonInteractive 必现;$ErrorActionPreference='SilentlyContinue' 也挡不住)。要捕获并给出"请改用 -Yes"的明确指引。中止用 return 语义,不要用 exit——若用户是点源(. script.ps1)执行,exit 会把他整个 PowerShell 窗口一起关掉。
  • R-11 给脚本做"防误删回归测试"时,一律用 ASCII 路径的副本运行。 测试脚本里写中文路径字面量 = 自己踩 R-03(实测路径被解成乱码,4 组测试全部空跑)。正确做法:把真实路径通过环境变量($env:X,走 UTF-16 传递,安全)传进纯 ASCII 的测试脚本。
  • R-12 清理企业管控 agent 时,只删「可再生缓存」,绝不碰「策略文件」「数据库」与「日志」。 可删:@@partial@@_*(下载中断残包)、*.msu(已取回的补丁包,agent 需要时会重下);禁删:ldappl3.INI / ldappl3.BAZ(agent 策略与备份)、C:\ProgramData\Sentinel\data(EDR 数据库)、agent 程序体、SentinelOne_*.binlog(日志类,默认只统计不删)。⚠️ 两条踩坑教训:① *.BAZ 这个模式看着像"备份垃圾",实测会命中 ldappl3.BAZ —— 写 Filter 前必须把实际命中的文件名打印出来核对,不能靠扩展名想象;② 日志与缓存要分开判——缓存可再生(删了会重下),日志有取证/审计价值(删了不可追)。拿不准时默认不删,把选择权交回用户。
  • R-13 体积回落必须先归因,不能想当然认定「自动轮转 / 自限制」。 看到某目录从 23.5 GB 掉到 90 MB,先问用户"这是不是你手工清过 / 重启过",再下结论。鉴别判据:真正的自轮转有稳定的保留上限与固定命名序列(如恰好 5 个满包),需观察 2~3 个周期才能确认;做不到这一点就一律按「持续增长、会复发」处理。
  • R-14 生成脚本需要输出中文时,中文必须来自模板的 L10N 块,脚本里一个字都不能写。 用 <!--L10N\nKEY=中文\nL10N--> 把文案存进模板,脚本解析成字典再拼装动态片段,最后把 L10N 块从输出里剥掉。判据:[System.IO.File]::ReadAllBytes($f) 里 >127 的字节数必须为 0——每次改完脚本都跑一次,别信眼睛。
  • ⚠️ L10N 块的解析实现有两个坑:① 换行必须支持——值里含全角括号 ( 时,若模板里把长文案折了行,旧解析器会把续行当新键丢掉,值被静默截断成空串。判据:L10N 键必须"列 0 起头",续行必须缩进。② 变量定义顺序——L10N 字典必须在任何使用它的表/图之前加载完毕,否则前半部渲染出 <span class="pill p2"></span> 空徽章(语法检查仍然 0 错误,极隐蔽)。→ 凡是"应为空则报错"的断言,都要在生成物上验,别只验语法。
  • R-15 「只统计不删除」的行必须用 -NoDelete 显式标记,并提供反向开关,默认落在"不删"一侧。 涉及日志 / 取证数据 / 策略未定的项目,哪怕 IT 说零风险,脚本默认也不动手:打印为 [info] ... (report only - NOT deleted),报告状态列渲染成「只统计·不删除」徽章。要恢复删除必须显式加 -IncludeSentinelLogs 之类的开关。理由:默认不删的成本是"少回收几个 GB",默认删的成本是"不可逆的用户数据损失"——两者不对称,必须选保守侧。报告里也要把「实际删除=0」说成设计如此,否则用户会当成脚本失效。
  • R-16 报告的 hero 文字与正文必须共用同一条左基线。 做法是让两个内容框同宽同起点:.hero-inner 的水平 padding = .wrap 水平 padding + section 边框宽 + section 水平 padding。朴素版 section(无卡片)为 24px;卡片化 section(如 border:1px solid + padding:28px 30px)为 55px(此时两边内容框都是 970px)。实测:生成报告时给 section 加了 padding:28px 30px 而 .hero-inner 仍是 padding:0 24px,1440 视口下顶部标题 left=204、正文 left=235,顶部文字整体左偏 31px。判据(不许靠肉眼):渲染后量 .hero h1 与首个 section 正文(h2/.sec-desc)的 getBoundingClientRect().left,必须相等(朴素版基准 204,卡片版基准 235)。见 references/report-style.md「左基线对齐」。
  • R-17 体检报告出来的同一轮,必须一并交付可直接运行的清理工具包。 报告 + clean-Tier1.ps1 + 双击启动器 clean-Tier1-launcher.cmd + space-report.ps1 + space-report-template.html 构成一个交付单元,缺件即判本次未完成——只给清单不给工具,等于把落地动作推回给使用者。脚本默认 dry-run;本轮确无 Tier 1 可清项时,在报告里明写"本次无需清理"。
  • R-18 工具包必须"落到使用者手边",启动器要让零基础用户"双击即可"。 三条硬判据:
    1. 同目录交付——报告 HTML 生成在哪个目录,clean-Tier1.ps1 / clean-Tier1-launcher.cmd / space-report.ps1 / space-report-template.html 就复制到哪个目录。工具留在安装目录(用户找不到)判交付失败。
    2. 启动器自解释——菜单用中文,写成"第 1 步 / 第 2 步"的行动指引,不要只写功能名(dry run / preview 对零基础用户等于天书);进入"清理"后先做一次中文 pause 确认,再用中文预告接下来会遇到什么(会弹 UAC → 点【是】→ 新窗口要求输入大写 YES)。用户在任何一步关掉窗口都不得造成删除。
    3. 提权由启动器代劳——用 Start-Process -Verb RunAs -Wait 自动弹 UAC,用户不需要知道"以管理员身份运行"这件事。这正是"零基础用户不会开管理员窗口"的解法。
  • ⚠️ 编码:.cmd 不受 R-03 约束(那是 .ps1 的坑)。启动器采用 GBK(cp936) 存盘 + 首行 chcp 936 承载中文菜单(目标系统为中文 Windows,默认 OEM 代码页 936);路径一律用 %~dp0 运行时求值,绝不写中文路径字面量,装在任何中文路径下都不会乱码。若落到非中文系统,症状是菜单显示乱码、脚本仍能正常执行(中文只作显示文本)。
  • ⚠️ 大小写一致性:包内文件名统一为 clean-Tier1.ps1 / clean-Tier1-launcher.cmd(大写 T)。Windows 文件系统不敏感,但解到 Linux/WSL 就会 404,且启动器内部引用、SKILL.md 引用、README 引用三者必须逐字一致。
  • ⚠️ 同步陷阱:Copy-Item 覆盖一个"大小写不同但等价"的同名文件时,磁盘上存储的大小写不会更新(NTFS 保留原名),而 md5 只比内容、比不出大小写——所以"md5 全一致"不等于文件名一致。改名要用"临时名 → 目标名"两段式,同步后单独列出两边文件名逐个比对。

四类结论必须给出

一次合格的体检报告至少回答这四个问题:

  1. 空间在哪——顶层目录 + 深挖到 2~4 层,带体积排序。
  2. 谁在飞快增长——近 7/14 天写入排行 + 文件级证据(具体文件名、体积、时间戳、增长节奏)。
  3. 哪些能安全删——三级清单(见下)。
  4. 怎么治本——不只清一次,要给防止复发的机制。

三级清单分级准则

级别 判据 典型例子
Tier 1 低风险 可再生的缓存/临时/日志/安装包残留 %LOCALAPPDATA%\Temp、SoftwareDistribution\Download、Windows\Logs\CBS、$WinREAgent、npm/pip/uv cache、更新器 crx_cache
Tier 2 需评估 涉及系统行为、企业 IT 管控、或应用自有数据 hiberfil.sys(用 powercfg)、pagefile.sys(限上限别关)、企业管控补丁缓存、EDR 日志、AV 定义库、旧版本程序目录、应用缓存
Tier 3 禁止手删 删了会坏 Windows\WinSxS(用 DISM)、Windows\Installer、System32/DriverStore、Outlook .ost、安全代理本体、用户文档

判据心法:问「删掉后谁会变」——会坏的进 Tier 3,会重新下载的进 Tier 1,要审批/会影响合规的进 Tier 2。

企业管控机的特殊处理(重要)

遇到同时装着 Ivanti EPM / SentinelOne / Symantec SEP / LANDesk / Malwarebytes / CrowdStrike 这类公司 IT 推送的管控软件时:

  • 它们往往吃掉 10~30 GB,且不受用户控制(补丁缓存策略、日志轮转上限都是 IT 侧配置)。
  • 默认不要建议用户自行删除,先建议提 IT 工单并明确指出诉求(如「补丁缓存里同一补丁存了两份,冗余 8.85 GB,请调整缓存保留策略」)。
  • 要把「可再生缓存 / 滚动日志」与「agent 状态」分开判:前者(补丁包与下载残包)在用户与 IT 核实后可纳入 Tier 1 自动清理;后者(策略文件 ldappl3.*、EDR 数据库、agent 程序体)永远列入 Tier 3。
  • ⚠️ 日志类默认只统计、不删。 判断心法:补丁包缓存(可再生)≠ 日志(有取证/审计价值)。日志要不要清,是使用者的策略决定,不是技术判断;IT 说的"零风险"只解除安全顾虑,不解除策略顾虑。实现方式:-NoDelete 标记 + 反向开关(默认关)。
  • 这两类目录会「一直涨」,不会自己清。 实测:EDR binlog 约每半小时新增 100 MB(≈ 4.8 GB/天);企业补丁缓存每个补丁周期新增约 8.85 GB。→ 报告里要明确写"属会复发型,需定期复查",不能只出一次性清单。
  • 高价值发现:同一个补丁包被存两份(一份哈希命名、一份 tw#####-##### 命名)——这是 Ivanti EPM 的常见现象,值得单独点出来。

已知的"空间刺客"清单(优先查这几处)

  1. %LOCALAPPDATA%\Temp —— 尤其 iSlide Tools(每次编辑 PPT 整份复制进 Temp,单文件可达 460 MB 且留多份)、Outlook Logging(每个 .etl 恰好 50 MB)。
  2. EDR/杀软的 binlog:SentinelOne_*.binlog 固定 100 MB/个、约半小时一个 → 每天约 4.8 GB,且不会自己轮转清理。⚠️ 属日志类,报告里只统计、不清理。
  3. 企业补丁缓存:Ivanti\EPM Agent\sdmcache、Windows\SoftwareDistribution\Download。sdmcache 每个补丁周期吃约 8.85 GB,可涨到 23.5 GB+,不会自行回落;其中 @@partial@@_* 残包与 *.msu 属可再生,策略文件 ldappl3.* 不碰。
  4. 应用自动更新多版本并存:Edge(EdgeCore / Edge / EdgeWebView / Optimized 四处各落一份 332 MB)、WeMeet、夸克、钉钉(current + current_new)、豆包(Application + User Data\update_data)。
  5. hiberfil.sys + pagefile.sys(合计常达内存 1.5~2 倍)。
  6. Windows\WinSxS + Windows\Installer。
  7. ms-playwright、npm-cache、pip、uv 这类开发缓存。
  8. Outlook .ost(随邮件量线性增长)。
  9. $WinREAgent(系统更新遗留)。
  10. AppData\Roaming\Microsoft\PowerPoint 的崩溃自动恢复残留。

执行流程

第 1 步:一次遍历、多维度聚合(核心脚本)

用 scripts/scan-disk.ps1。它按「整树走一遍 + 按深度聚合」实现,一次拿到 depth1~4 的体积排行、近 14 天写入排行、>150 MB 大文件清单。

# 结果落在 $env:TEMP\disk_scan_<drive>.txt
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\scan-disk.ps1 -Drive C

跑完用 Read 读回文本文件(不要指望 stdout 回显)。全盘约 90 万文件耗时 10 分钟左右,放后台跑。

第 2 步:按需补刀

主扫描拿不到的,再用小脚本补:

  • 常见热点清单(Temp / SoftwareDistribution / Installer / Prefetch / 回收站)——快速版,秒级。
  • 受保护目录(Program Files\WindowsApps 会因 ACL 返回 0,必须说明而非当 0 处理)。
  • 特定应用的深度下钻(某个目录为什么这么大)。

第 3 步:核账

顶层各目录体积之和 vs Get-PSDrive C 的 Used,差额要解释清楚。常见差额来源:

  • Program Files\WindowsApps(ACL 全锁,读数为 0)
  • NTFS 元数据(文件数上百万时 MFT 本身就有数 GB)
  • 卷影副本 / 系统还原点(用 Get-CimInstance Win32_ShadowCopy 计数,为 0 即可排除这一嫌疑)
  • WinSxS 硬链接(朴素求和会高估)

差额超过 5% 就要在报告里单列说明,不能装作没看见。

第 4 步:出报告 + 一键清理工具包(同目录交付)

> 硬要求:报告出来的同时,必须交付一个可直接双击使用的工具文件夹,五件套齐:① 诊断报告 C盘空间体检报告-<日期>.html;② clean-Tier1.ps1;③ clean-Tier1-launcher.cmd(零基础用户的双击入口);④ space-report.ps1;⑤ space-report-template.html。
> ①②③④⑤ 必须落在同一个目录(默认 = 报告所在目录)。使用者的全部操作就是「双击 ③ → 按 1 预览 → 按 2 清理」,不需要自己开管理员窗口、不需要敲任何命令。只给报告不给工具 = 本次交付未完成(R-17);工具留在安装目录 = 等于没给(R-18)。本轮确实无 Tier 1 清理项时,在报告里明写"本次无需清理",而不是略过不提。

  • 报告:白底 + 深海军蓝 #0B2545 + 金 #C9A961 商务风单页 HTML(含 KPI 卡、纯 CSS 条形图、可筛选的三级清单表格、分步方案、口径边界表)。不输出 PDF(点开即看、随时转发)。版面与配色的唯一标准是 references/report-style.md——出任何报告 HTML 前先读它,照抄其组件与骨架,不要临时另起一套风格。 两个最易漏的点:① 左基线对齐(R-16)——hero 内层容器必须与 .wrap 同宽同内边距,section 不得私自加水平内边距;② PLAN section 末尾必须有「下一步:一键清理」块(.next,R-18),用中文写清"双击哪个文件、按几、会发生什么"。
  • 清理脚本:clean-Tier1.ps1(v1.5),默认 dry-run,必须显式加 -Execute 且管理员权限才动手。只碰 Tier 1,Tier 2/3 一律不碰并在末尾列出「需另行处理」清单。开关:-Execute(真删)/-Yes(跳过确认,供无人值守)/-Pause·-NoPause(强制/禁用结束等待)/-SkipAgentCache(跳过 Group 7 企业管控缓存)/-IncludeSentinelLogs(默认关,打开才删 EDR 日志,见 R-12/R-15)/-KeepTraceDays N(日志保留天数,默认 7)。结果日志默认写 %USERPROFILE%\clean-tier1-last.log(注意别写进 Temp,否则自己会被自己清掉)。七个清理组:1 用户 Temp/2 Windows 日志与更新缓存/3 安装器与更新器残留/4 开发缓存/5 应用 traces 与 logs/6 回收站/7 企业管控 agent 缓存(当前实际只删补丁缓存;EDR binlog 为 report-only 行,见 R-12/R-15)。-Filter 支持分号分隔多模式(OR)。
  • 启动器:clean-Tier1-launcher.cmd(双击入口,见 R-09 / R-18)。中文菜单,四选一:1 先预览(只列清单、绝不删)/2 开始清理(自动 UAC 提权 → 弹窗点【是】→ 新窗口输入大写 YES → 跑完自动出对比报告)/3 只出对比报告/4 退出。进"清理"前先 pause 用中文再确认一次,并在动手之前用中文预告"会弹授权窗口、点【是】、再输 YES"。预览与清理都用 -NoPause、由启动器自己收尾(不用 -NoExit,否则会把用户丢在一个 PowerShell 提示符里),提权那次用 -Pause 保证弹窗窗口不闪退。启动器先 Unblock-File 再跑。文件名大小写必须与包内实际文件逐字一致(R-18)。
  • 运行前后对比报告:space-report.ps1 + space-report-template.html(两者随报告同目录交付)。clean-Tier1.ps1 每次运行(dry-run 也算)都会往 %USERPROFILE%\clean-tier1-history.jsonl 追加一行 JSON 快照(模式、空闲量前后、逐组的计划量 vs 实际删除量 vs 成功/锁定数);space-report.ps1 读该文件渲染成商务风单页 HTML。头部取「最近一次未中止的 EXECUTE」,若还没有执行记录则取最后一次运行并整体标注为「预览态」。⚠️ 没有历史文件时它只打印一行提示就返回、不产 HTML(退出码 0,不是崩溃),所以首次使用必须先跑一次 clean-Tier1.ps1 再看报告。
  • 通用解法(值得跨技能复用):脚本纯 ASCII,全部中文文案放进独立的 HTML 模板(模板用 Get-Content -Raw -Encoding UTF8 显式读取,所以无 BOM 也安全);正文/单位/百分比这类文案写死在模板里,脚本只注入数字与表格行;两种状态(预览 vs 执行)用 {{CLS_DRY}}/{{CLS_EXEC}} 两个类名切换 hidden,避免脚本里出现任何中文。
  • 脚本要往动态片段里塞中文时走 L10N 块(R-14):模板里放 <!--L10N … KEY=中文 … L10N-->,脚本解析成字典供拼装用,最后把该块从输出剥掉。占位符与脚本 map 的键必须双向零差集,脚本会自动告警未填充的 {{...}}。⚠️ L10N 字典必须在文件靠前处加载(在任何表/图生成之前)。模板里若要写一个字面 @(如选项名),写 @@ —— 脚本在占位符替换之后统一还原。
  • 记账口径:每条目单独记「实际删除字节数」(成功删一个累加一个),不要只用磁盘空闲量前后差值——后者会被同期写入抵消,导致报告失真。report-only 行的「实际删除」恒为 0,须在报告里注明"设计如此",否则用户会认为脚本没干活。
# 预览(安全,什么都不删)
powershell -NoProfile -ExecutionPolicy Bypass -File .\clean-Tier1.ps1
# 真清(必须管理员窗口)
powershell -NoProfile -ExecutionPolicy Bypass -File .\clean-Tier1.ps1 -Execute
# 无人值守
powershell -NoProfile -ExecutionPolicy Bypass -File .\clean-Tier1.ps1 -Execute -Yes

第 5 步:交付前自检(清理脚本必做)

# 检查项 判据
1 纯 ASCII 脚本非 ASCII 字节数 = 0
2 语法 [PSParser]::ParseFile 报 0 错误
3 干运行 实跑一次,末尾出现 [ FINISHED ] 横幅
4 防误删回归 -Execute 分别喂「空答案」和「错误答案」,必须中止,且前后 (Get-PSDrive C).Free 不变(这是唯一能证明"确认闸门有效"的方法,不能靠读代码拍胸脯)
5 非交互 -NonInteractive 下跑 -Execute,必须给出明确指引而非崩溃
6 启动器 喂「非法选项 + 退出」应能循环回菜单并正常退出
7 新清理组命中复核 新增 Filter/路径后,必须在 dry-run 输出里核对实际命中的文件名与体积,确认没有误伤(实测教训:*.BAZ 会命中 ldappl3.BAZ)。见 R-12
8 对比报告 跑一次 space-report.ps1,输出 HTML 里不得残留 {{...}} 占位符;{{CLS_DRY}}/{{CLS_EXEC}} 两个状态块只应有一个可见
9 报告视觉标准 对照 references/report-style.md:只用令牌配色;每个 section 有英文小标 + sec-desc 口径说明;KPI 卡三行完整;条形图宽度数据驱动且图例一致;数值列右对齐;@media 断点带 screen;L10N 块已剥离;模板与脚本键双向零差集
10 顶部左基线 hero 内层容器(.hero-inner)与 .wrap 同 max-width + 同水平 padding;section 无水平内边距;渲染实测 .hero h1 的 left == 首个 section 正文的 left(1440 视口基准 204)。见 R-16
11 工具包同目录 报告 HTML 所在目录内必须同时存在 5 件:报告 + clean-Tier1.ps1 + clean-Tier1-launcher.cmd + space-report.ps1 + space-report-template.html;缺件即判未完成。见 R-17 / R-18
12 report-only 行为 标记 -NoDelete 的行:-Execute 下必须不删(前后 (Get-PSDrive C).Free 不变,且 deletedMB=0);报告状态列渲染成「只统计·不删除」而非空徽章;显式加反向开关后应恢复为可删行
13 L10N 渲染断言 出件后 grep 生成物:不得出现 <span class="pill p2"></span> 这类空徽章(= 变量未定义),不得残留 @@。语法 0 错误不代表值取到了 —— 必须在生成物上断言(R-14 第②坑)
14 零基础可用性(启动器实测) 把 clean-Tier1-launcher.cmd + clean-Tier1.ps1 + space-report.ps1 + 模板复制到一个 ASCII 路径的空目录(模拟用户文件夹,R-11)实跑:① 菜单中文不乱码;② 选 1 出预览并能回到菜单;③ 无历史时选 3 给中文提示而非崩溃;④ 选 4 正常退出;⑤ 启动器内部引用的文件名与目录内实际文件大小写逐字一致
15 一键清理块 报告 PLAN section 末尾有 .next 块;块内文件名与随附实际文件逐字一致(含大小写);按键顺序为"先 1 预览、后 2 清理"(R-18)

参照 R-11:第 3~6、14 项一律在 ASCII 路径的副本上跑。

常用命令备忘

# 休眠文件降级(保留快速启动,约省一半)
powercfg /h /type reduced
# 完全关闭休眠(省全部)
powercfg /h off
# 组件存储清理(管理员)
DISM /Online /Cleanup-Image /StartComponentCleanup
# 加 /ResetBase 更彻底,但之后已装更新无法卸载
DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase
# 卷影副本占用(管理员)
vssadmin list shadowstorage
# 卷影副本计数(普通权限可跑,用来排除嫌疑)
Get-CimInstance Win32_ShadowCopy | Measure-Object

参考

  • references/report-style.md —— 报告视觉规范(出任何报告 HTML 前必读)。设计令牌、版面骨架(含「左基线对齐」)、组件库、响应式与打印、生成器工程约束、交付前检查清单。
  • scripts/scan-disk.ps1 —— 主扫描器(单次遍历、按深度聚合、跳过 reparse point,纯只读)。
  • scripts/clean-Tier1.ps1 —— Tier 1 清理器(默认 dry-run,v1.5,7 组;每次运行写一行历史快照)。交付时复制到报告目录。
  • scripts/clean-Tier1-launcher.cmd —— 双击启动器(R-09 / R-18)。GBK(cp936) 中文菜单:先预览/开始清理并自动出报告/只出报告/退出。交付时复制到报告目录。
  • scripts/space-report.ps1 —— 运行前后空间对比报告生成器(读 clean-tier1-history.jsonl)。交付时复制到报告目录。
  • scripts/space-report-template.html —— 对比报告的中文模板({{占位符}} + <!--L10N--> 文案块,UTF-8)。交付时复制到报告目录。

经验沉淀

发现新的"空间刺客"、新的踩坑、新的分级判例时,按以下方式回写:

  1. 可复用的规则 → 直接补进本 SKILL.md 的铁律区(R-18、R-19…),保持编号连续。
  2. 过程与证据 → 记在技能目录下的 NOTES.md(自建,不随包发布)。
  3. 每条经验必须带判据(怎么验证)与触发条件(什么场景会遇到),只写"要注意 XX"不算沉淀。

常见问题

5 问
答案由本站依据条目字段整理
Windows 磁盘空间体检(win-disk-space-doctor)怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_b3307eb6/win-disk-space-doctor。安装方式为未标注。装完刷新技能列表或重开客户端。

Windows 磁盘空间体检(win-disk-space-doctor)支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Windows 磁盘空间体检(win-disk-space-doctor)权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Windows 磁盘空间体检(win-disk-space-doctor)收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Windows 磁盘空间体检(win-disk-space-doctor)用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。