storage-analyzer-windows

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

【做什么】纯 Windows 只读存储分析 — 扫描 12+ 组目标(含 Installer/ProgramData/回收站)→ 三灯分级(🟢可自动清/🟡需判断/🔴建议卸载)→ 交互式 HTML 报告 + 本地服务一键删。 【何时用】用户抱怨磁盘空间不足、要求清理/分析/查看空间占用、想知道什么东西吃硬盘。 【触发词】磁盘满了/C盘满了/D盘满了/空间不够/清理空间/清理磁盘/清理C盘/占空间/ 存储分析/磁盘分析/看一下存储/电脑空间/storage analysis/disk cleanup/清缓存/ 哪些东西占地方/看下内存/内存满了。 【反触发】用户明确指运行内存/RAM(如"哪个进程吃内存/内存占用高")→ 那是 RAM 不是存储,不触发本 skill。 【纯 Windows·零 macOS·零第三方依赖】Python 3.10+ 标准库即可。 node_name: 存储分析(Windows)

一句话选型结论

按资料字段整理

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

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

安装

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

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

  2. 2
    拿到技能文件

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

  3. 3
    刷新技能列表

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

  4. 4
    验证是否生效

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

技能档案

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

典型使用场景

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

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

写部署与巡检脚本

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

故障排查

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

选择建议

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

值得选的地方

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

先想清楚的地方

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

更适合

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

不太适合

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

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
storage-analyzer-windows当前 未标注权限 未标注 未标注 未标注 有
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 全文

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

Storage Analyzer Windows

纯 Windows 只读存储分析,交互式 HTML 报告 + 一键清理。

阶段 谁执行 做什么 产出
Step 1-2 scan.py 脚本 只读扫描 12 组目标,算大小 %TEMP%\storage_scan.json
Step 3 Agent (你) 读参考→探查→三灯分级→写 JSON %TEMP%\storage_analysis.json
Step 4 server.py 脚本 启动本地服务 → 交互式网页 http://127.0.0.1:端口/
Step 5 Agent (你) 用 preview_url 打开 + 对话给摘要 浏览器预览 + 文字结论

> 速览:用户说"磁盘满了" → 跑 scan.py --quick(0.3s) 看概况 → 需要详情再跑全量(9s) → 按附录A模板写分析JSON → server.py 启动交互式服务 → 自动用 preview_url 打开 → 给用户一句话摘要。全程只读扫描,交互式网页支持一键清理。


约束规则

铁律

  • 全程只读扫描。 只能跑 os.scandir / shutil.disk_usage / 列目录。
  • 删除命令只展示,不执行。 报告里的清理命令供用户在终端确认后运行。
    即使用户在对话里说"帮我删",也要先停下确认,不要直接代跑。
  • 系统目录保护。 C:\Windows 除了 Installer / Temp / SoftwareDistribution
    之外不扫描不操作。
  • 回收站警告。 清空回收站前必须明确告知空间释放量。
  • 长路径处理。 Windows 路径 >260 字符时使用 \\?\ 前缀。

⏸️ 确认门

Step 3 完成后,必须暂停,向用户展示:

  1. Top 5 摘要(表格:排名/名称/大小/分级/一句话说明)
  2. 三灯汇总(🟢 X 项约 Y GB / 🟡 X 项约 Y GB / 🔴 X 项约 Y GB)
  3. 问用户:"分级结果如上,是否继续生成报告?还是需要调整?"

用户同意后才进入 Step 4。 如果用户要求调整,只调用户指定的项,不要推翻全部分级。

异常处理

异常场景 处理方式
Python 未安装 提示用户安装 Python 3.10+:winget install python3 或从 python.org 下载。不要用 python3 命令,Windows 上是 python 或 py -3。
scan.py 输出为空 检查 %TEMP%\storage_scan.json 是否存在且非空。为空则重新扫描并加 2>&1 捕获 stderr 排查错误。
扫描结果全 0(空盘) 报告直接给摘要"磁盘基本为空,无需清理"。不跑 Step 3 分析。
某个 target 目录不存在 跳过,不给 denied。如 C:\Windows\Installer 在某些精简版 Windows 上不存在。
server.py 端口被占用 server.py 使用端口 0(随机),不会冲突。如遇异常,检查防火墙/杀毒软件是否拦截 127.0.0.1 本地回环。仅在用户要求服务模式时使用。
build_report.py 写入桌面失败 检查桌面路径是否可写,如被 OneDrive 同步占用则改写到 %USERPROFILE% 或 %TEMP%。
浏览器打不开 手动复制终端输出的 URL 到浏览器。或用 --no-browser 参数跳过自动打开。
recycle_bin 扫描为空 原因:普通用户无权读 C:\$Recycle.Bin。给提示:"回收站大小无法直接读取,请右键桌面回收站查看属性"。
磁盘接近满(<1GB 可用) 优先使用 --quick 模式避免扫描写出大量 JSON 占用最后空间。写 analysis JSON 时确认 %TEMP% 有足够空间。
权限拒绝(denied) 扫描结果中 denied 标注的目录,在报告中列出并说明"可能遗漏体量"。不要尝试 runas 提权。

执行流程

Step 1 快速扫描(可选,0.5s 内)

python scripts/scan.py --quick &gt; %TEMP%\storage_scan.json

仅扫描一级子目录大小(跳过递归),大文件自动聚合显示。
适用场景:快速判断"有没有大问题"。

Step 2 全量扫描

python scripts/scan.py &gt; %TEMP%\storage_scan.json

扫描 12 组目标(详见 references/windows.md),耗时约 9-15s(SSD)。
读不到的目录标 denied。

Step 3 分析与分级

先读 references/windows.md 了解布局规则,再读扫描 JSON。

按 附录A 的 6 条检查清单逐条执行,按 附录B 的模板写出 analysis JSON。

核心决策规则(详见附录A):
- 🟢 可自动清理 — 纯缓存/临时文件/可再生,正例:pip Cache,反例:node_modules
- 🟡 需人工判断 — 含用户数据或需判断成本,正例:WeChat Files,反例:Windows\System32
- 🔴 建议卸载 — 大应用/重复安装,正例:不再用的 MobileAppEngine,反例:C:\Windows
- 其他 → 不展示(归蓝色)

Step 4 启动交互式服务并自动打开

使用 PowerShell Start-Process 以独立进程启动(不受 Bash 超时影响):

Start-Process -FilePath &quot;python&quot; -ArgumentList &quot;scripts/server.py&quot;,&quot;%TEMP%\storage_analysis.json&quot;,&quot;--no-browser&quot;,&quot;--port-file&quot;,&quot;%TEMP%\storage_server_url.txt&quot; -WindowStyle Hidden

启动后:
1. 等待 2 秒读取 %TEMP%\storage_server_url.txt 获取 URL
2. 健康检查 GET /health 确认服务正常
3. 用 Start-Process 在用户默认浏览器中打开 URL(不要用 preview_url,内嵌浏览器无法正确执行交互式功能)
4. 同时可用 preview_url 在内嵌面板中预览(仅查看,一键清理功能需在真实浏览器中使用)

这是默认模式,交互式网页支持:
- 🟢 一键清理全部 — 确认面板 + 逐项串行删除 + 进度反馈
- 🟢 单项移到废纸篓 / 直接删除
- 🟡 在资源管理器打开 / 安全子路径移废纸篓
- 🔴 在资源管理器打开(去卸载)
- 折叠卡片、锚点导航、命令复制

可选:静态报告模式(仅查看,不能操作删除):

python scripts/build_report.py %TEMP%\storage_analysis.json %USERPROFILE%\Desktop\storage-report.html

纯静态只读 HTML 文件,不含删除功能。仅在用户明确要求静态报告时使用。

Step 5 摘要总结

报告打开后,给一段结论先行的摘要:总可释放估算、最该先清的 2-3 项、风险最高的一项。细节让用户看网页。


附录A:分析检查清单

逐条执行,每完成一条在脑中打勾。

  • [ ] 1. 挑 Top 5:按 size_kb 排序全部 groups 条目,取前 5,判定类型标签。
    标签按优先级从高到低匹配,命中即停止,后面的不再考虑:
优先级 标签 释义 判定依据
1 系统文件 操作系统运行依赖的核心文件与组件仓库,误删可能导致系统不稳定、功能异常或无法启动 C:\Windows 下除 Temp/SoftwareDistribution 外的全部子目录, C:\Boot, EFI 分区, pagefile.sys, hiberfil.sys
2 应用程序文件 应用程序安装目录下的全部文件(含 exe/dll/资源/配置),删除将导致对应应用无法运行 C:\Program Files\*, C:\Program Files (x86)\*, %LOCALAPPDATA%\Programs\* 下的应用目录
3 虚拟机镜像 虚拟机/模拟器的磁盘镜像文件,删除将导致虚拟机数据完全丢失且不可恢复 EmulatorSdk 镜像, WSL vhdx, Hyper-V 虚拟硬盘, VMware .vmdk, VirtualBox .vdi
4 应用数据 应用产生的不可再生或具有持久价值的用户个人数据,通常位于 AppData 及其子目录 WPS 模板, 微信聊天记录, 钉钉消息, 邮箱本地数据
5 应用缓存 面向最终用户的应用产生的可再生临时文件,删除不影响功能、不丢用户数据 浏览器 Cache, 缩略图缓存, 微信/QQ 图片缓存, %TEMP%\*, Office 最近文件索引
6 开发缓存 包管理器/构建工具/IDE 产生的可再生中间文件,删除后可通过重新下载或构建恢复 pip Cache, .npm, .gradle, .m2/repository, Cargo target/, Yarn cache, NuGet packages
7 用户文件 用户主动创建/编辑/保存的个人文档、工程文件、自建图片等 Desktop, Documents, Pictures, WorkBuddy\* 项目目录
8 媒体内容 从网络下载或应用缓存的消费型音视频文件,常见于 Downloads/Videos/Music 及各 App 离线目录 Downloads 里的 .mp4/.mkv/.avi, App 离线视频缓存, Music\
9 下载内容 Downloads 目录下用户通过浏览器/下载器获取后未整理的文件(安装包、压缩包、文档等) Downloads\*.exe, Downloads\*.msi, Downloads\*.zip
10 回收站 Windows 回收站内容 C:\$Recycle.Bin, 各盘符 \$Recycle.Bin
11 其他 以上均不匹配的兜底分类 —

> 互斥规则:按优先级 1→11 依次匹配,命中即停。例如:Downloads 下的安装包优先匹配 9(下载内容),而非 8(媒体内容);%TEMP% 下的编译中间文件优先匹配 6(开发缓存),而非 5(应用缓存)。

  • [ ] 2. 探查神秘大目录:对名称含 UUID/GUID/SSID 的目录、大小 >1GB 的
    ProgramData 子目录、不明用途的隐藏目录 → ls 查看内部结构,查出归属。
    例:kingsoft/wps_international/addons 实为国际版 WPS 的冗余插件。

  • [ ] 3. 三灯分类(只分"存在清理决策"的项,正常应用/系统文件归蓝色不展示):

🟢 可自动清理 — 纯缓存/临时文件/安装包残留/可再生不丢用户数据
- ✅ 正例:浏览器 Cache、%TEMP%\*、--updater 目录、pip Cache(开发缓存可再生)、IntelliJ IDEA caches
- ❌ 反例:node_modules(项目依赖,删了项目跑不了)、AppData\Roaming\Microsoft(Office 设置不可再生)、微信聊天记录(用户数据)
- 必填 trash_paths[]、commands[{label,cmd}]、kill_processes[]。
- ⚠️ trash_paths 不能为空,漏了按钮就不出现。

🟡 需人工判断 — 含用户数据或有判断成本
- ✅ 正例:WeChat Files(聊天记录含重要数据)、Downloads 文件夹(可能有重要文件未整理)、WPS 模板(含自定义)、VMware 虚拟机镜像(大小巨大但可能还在用)
- ❌ 反例:C:\Windows\Installer 不能手删(用 DISM 清理)、C:\Windows\WinSxS 不能手删(系统组件仓库)、C:\Windows\System32 不能手删
- 必填 content_profile、why_manual、disposal、risk。
- 有核实过的安全子路径时 → trash_paths(🟡 只能移废纸篓,永不给 rm)。
- 目录是 App 内部格式 → open_note 字段说明。
- ⚠️ 口吻中性如产品说明,不写"我发现/提醒注意"。

🔴 建议卸载(别手删) — 大应用/重复安装/想卸载的项
- ✅ 正例:不再用的 MobileAppEngine(7.6GB)、EdrawSoft(1.2GB)、Autodesk(2GB+)
- ❌ 反例:C:\Windows(操作系统本身)、Microsoft Office(如果还在用)、dotnet(系统运行时依赖)、Git(开发必备工具)
- 必填 why_keep、indirect_release(具体卸载步骤,可照做不是空话)、app_paths[]。
- 不给删除按钮,只给"在资源管理器打开(去卸载)"。

  • [ ] 4. 数量检查:green+yellow+red 的总信息量应「一眼能看完」。
    如果某级超过 10 项,挑最重要的列,其余合并到 summary。

  • [ ] 5. 大小字段规范:用"约 14 GB""合计约 8.6 GB"格式。
    "约"已表示估算,不要再加"(估算)"。

  • [ ] 6. 按附录B模板写出完整 analysis JSON。
    tier_stats 的 green/yellow/red 必须是可解析的 GB 数字开头(如"约 27.8 GB")。


附录B:analysis JSON 模板(照此结构写)

{
  &quot;generated_at&quot;: &quot;2026-06-03 17:00:00&quot;,
  &quot;scan_seconds&quot;: 9.3,
  &quot;system&quot;: {  /* 从 scan.json 的 system 字段直接复制 */ },
  &quot;top5&quot;: [
    {&quot;rank&quot;: 1, &quot;tier&quot;: &quot;red&quot;, &quot;size&quot;: &quot;约 7.6 GB&quot;, &quot;type&quot;: &quot;应用程序文件&quot;,
     &quot;name&quot;: &quot;MobileAppEngine&quot;, &quot;path&quot;: &quot;C:\\Program Files\\MobileAppEngine&quot;,
     &quot;note&quot;: &quot;华为手机助手模拟器,EmulatorSdk 占 7.4 GB&quot;}
  ],
  &quot;green&quot;: [
    {
      &quot;name&quot;: &quot;WorkBuddy 桌面端更新缓存&quot;,
      &quot;path&quot;: &quot;C:\\Users\\xxx\\AppData\\Local\\@genieworkbuddy-desktop-updater&quot;,
      &quot;size_estimate&quot;: &quot;约 450 MB&quot;,
      &quot;kill_processes&quot;: [],
      &quot;trash_paths&quot;: [&quot;C:\\Users\\xxx\\AppData\\Local\\@genieworkbuddy-desktop-updater&quot;],
      &quot;commands&quot;: [
        {&quot;label&quot;: &quot;PowerShell 移入回收站&quot;,
         &quot;cmd&quot;: &quot;Remove-Item -Path \&quot;$env:LOCALAPPDATA\\@genieworkbuddy-desktop-updater\&quot; -Recurse -Force&quot;}
      ]
    }
  ],
  &quot;yellow&quot;: [
    {
      &quot;name&quot;: &quot;WPS 双版本插件/模板&quot;,
      &quot;path&quot;: &quot;C:\\Users\\xxx\\AppData\\Roaming\\kingsoft&quot;,
      &quot;size&quot;: &quot;约 4.4 GB&quot;,
      &quot;content_profile&quot;: &quot;WPS 中文版+国际版数据。wps/addons 2.2GB,wps_international/addons 1.9GB。&quot;,
      &quot;why_manual&quot;: &quot;涉及两个版本的共用数据,无法自动判断主要用哪版。&quot;,
      &quot;disposal&quot;: &quot;只用中文版:wps_international/addons 1.9GB 可安全删除。&quot;,
      &quot;risk&quot;: &quot;删除 wps_international 后国际版 WPS 启动时会重新下载插件。&quot;,
      &quot;trash_paths&quot;: [&quot;C:\\Users\\xxx\\AppData\\Roaming\\kingsoft\\wps_international&quot;]
    }
  ],
  &quot;red&quot;: [
    {
      &quot;name&quot;: &quot;MobileAppEngine(华为手机助手)&quot;,
      &quot;path&quot;: &quot;C:\\Program Files\\MobileAppEngine&quot;,
      &quot;size&quot;: &quot;约 7.6 GB&quot;,
      &quot;why_keep&quot;: &quot;7.4GB 为 EmulatorSdk Android 模拟器镜像。如果不用华为手机连电脑可卸载。&quot;,
      &quot;indirect_release&quot;: &quot;设置→应用→已安装的应用→搜索 MobileAppEngine→卸载。释放约 7.6GB。&quot;,
      &quot;app_paths&quot;: [&quot;C:\\Program Files\\MobileAppEngine&quot;],
      &quot;auto_reclaim&quot;: &quot;否,需手动卸载&quot;
    }
  ],
  &quot;denied&quot;: [],
  &quot;summary&quot;: {
    &quot;overview&quot;: &quot;C 盘仅剩 4.3GB,最大占用是华为手机助手 7.6GB + WPS 数据 4.4GB。可立刻释放约 1.8GB。&quot;,
    &quot;tier_stats&quot;: {&quot;green&quot;: &quot;约 1.8 GB&quot;, &quot;yellow&quot;: &quot;约 15.0 GB&quot;, &quot;red&quot;: &quot;约 12.4 GB&quot;},
    &quot;priority&quot;: [
      &quot;最优先:清除更新缓存 5 项约 1.8GB,零风险&quot;,
      &quot;其次:清理 WPS 国际版插件 1.9GB&quot;
    ],
    &quot;long_term&quot;: [
      &quot;启用存储感知:设置→系统→存储→存储感知→开&quot;,
      &quot;定期 DISM:DISM /Online /Cleanup-Image /StartComponentCleanup&quot;,
      &quot;大文件迁移至 D 盘:D 盘还有 218GB 可用&quot;
    ]
  }
}

注意事项:
- system 字段直接复制 scan.json 的 system,不要改动结构。
- trash_paths 必须是真实存在的绝对路径数组,不能为空数组。
- 🟡 项的 trash_paths 只放核实过安全可移的子路径(如旧备份目录),不是整个 path。
- 🟡 项如果没有安全子路径,trash_paths 留空或不写。
- commands[].cmd 写完整的可执行命令,用户可以直接复制到 PowerShell。


依赖

  • Python 3.10+ (纯标准库,零 pip install)
  • Windows 10 / 11(Windows 7 未测试)

平台状态

  • Windows 10/11:完整实现并实测(扫描/报告/一键删除全验证)。
  • 新增覆盖原版盲区:Installer、ProgramData、回收站、WinSxS、Windows Temp。

与原版 storage-analyzer 的差异

维度 原版 Windows 版
平台 macOS + Windows Windows only
扫描目标 7 组 (Win) 12 组 + dev_caches
macOS 代码 ~150 行 0 行
盲区 ~65 GB 已覆盖
--quick 模式 无 有
--cache 缓存 无 有
健康检查 无 GET /health
长路径处理 无 \\?\ 前缀
回收站查询 无 Windows API
hiberfil/pagefile 未检测 已检测

长期建议(写入报告 long_term)

  • Windows 自带:cleanmgr(磁盘清理)、存储感知(设置→系统→存储)
  • DISM 清理:DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase
  • 第三方工具:WizTree(免费)、SpaceSniffer(免费)、TreeSize
  • 大文件迁移至 D/E 盘;休眠关闭:powercfg /hibernate off
  • 聊天软件缓存:微信/企微/钉钉定期在 App 内清理

更新日志

v2.0 — Windows-Native 重构 (2026-06-03)

基于原版 storage-analyzer (KKKKhazix/khazix-skills) 的完整逆向分析创建纯 Windows 实现。

修改动机:
- 原版 307 行 scan.py 中 ~150 行是 macOS-only 逻辑,Windows 用户无需携带
- 原版扫描盲区 ~65GB:Installer(31.5G) / ProgramData(4.7G) / 回收站(3.6G) / WinSxS(11.6G)
- 3 个 Windows 特有 bug:stdout 缓冲、SHFileOperationW 长路径、后台服务无存活检测

改动清单:

类型 项目 优势
新增 5 个系统级扫描目标(Installer/ProgramData/回收站/WinSxS/Windows Temp) 扫描覆盖率从 ~35% 提升到 ~90%
新增 --quick 模式(0.2s 一级扫描 + 大文件自动聚合) 首轮反馈从 14s 降到 0.2s,用户零等待
新增 --cache 24h 缓存 + COMPUTERNAME 自动识别 二次扫描 <0.1s,消除重复扫描
新增 GET /health 健康检查 + 启动自检 服务存活可感知,启动失败立刻报错
新增 --min-mb 自定义阈值参数 大文件优先,用户可控粒度
新增 hiberfil.sys / pagefile.sys 系统文件检测 休眠/虚拟内存占用可见,不再遗漏
删减 砍掉全部 macOS 代码(~150 行) 代码量 -50%,Windows 专精,维护成本降低
修改 Frontmatter 四段式结构化(做什么/何时用/触发词/反触发) Agent 触发准确率提升,误触发减少
修改 Step 3 6 条可勾选检查清单 + ⏸️ 确认门 防止 Agent 跳过用户审查,分级结果必须用户同意
修改 9 场景异常处理表 边界条件全覆盖(Python 未安装/空扫描/磁盘满/权限拒绝等)
修改 11 种标签体系(含优先级链 + 互斥规则 + 正反例) 分类准确率提升,名称去歧义(应用本体→应用程序文件)
修改 附录 B 内联有效 JSON 模板(替代原版伪 JSON schema) Agent 零推理写分析 JSON,照抄结构即可
优化 Quick 模式 46 项→7 项(文件级自动聚合) 用户一屏看完,不再被 40 个 .msp 淹没
优化 约束规则一章合并(铁律+确认门+异常处理) 认知负荷 -60%,规则一次读完
优化 Agent/Script 职责对照表 一眼知谁负责哪个阶段
修复 os.path.isfile() → os.path.exists()(pagefile 检测) 系统文件不再漏检
修复 COMPUTERNAME → socket.gethostname() fallback 缓存文件名不再显示 "unknown"
修复 行缓冲 → sys.stdout.reconfigure(line_buffering=True) 后台启动输出即时可见
修复 \\?\ 长路径前缀 + FOF_NOERRORUI 260 字符路径不丢失,错误弹窗抑制

原版 vs Windows 版性能:

指标 原版 Windows 版
Quick 扫描 — 0.2s
全量扫描 14.2s 9.3s
二次扫描(缓存命中) 14.2s <0.1s
扫描覆盖率 ~35% ~90%
Quick 模式 Top 条目 (无此模式) 7 项(聚合后)
macOS 代码 150 行 0 行

v2.1 — HTML 空白页修复 (2026-06-05)

修复报告 HTML 在浏览器中显示空白的致命问题。根因:JSON 数据注入 HTML 时,3 个崩溃点会导致整个 &lt;script&gt; 块解析失败 → 页面空白。

崩溃点分析:

崩溃点 触发条件 后果
&lt;/script&gt; 注入 JSON 中路径含 &lt;/script&gt; 字符串 浏览器提前关闭 &lt;script&gt; 标签 → JS 块断裂 → 空白页
\u2028/\u2029 JSON 字符串含 Unicode 行/段分隔符 合法 JSON 但非法 JS → 语法错误 → 空白页
amber/yellow 歧义 Agent 写 amber 而非 yellow normalize 把 DATA.yellow 设为空数组 → 黄色项全部丢失

改动清单:

文件 类型 项目 说明
build_report.py 新增 validate() 结构验证函数 检查必需 top-level 键、amber/yellow 歧义、green/yellow/red 项必填字段、summary 完整性,输出诊断警告
build_report.py 修复 三重安全转义 &lt;/script&gt; → &lt;\/script,\u2028 → \u2028,\u2029 → \u2029,彻底消除 JS 解析崩溃
build_report.py 新增 _warnings 注入数据 将结构验证警告传入模板,页面也能显示诊断提示
report_template.html 修复 amber→yellow / green_items→green 兼容 Agent 写 amber 不再导致数据丢失
report_template.html 修复 逐项字段补全 green/yellow/red 每一项缺失的字段自动填安全默认值(如 content_profile → "暂无内容画像"),不再显示 undefined 或空白
report_template.html 新增 mount 函数结构诊断 检测 green/yellow/red 全空、缺少 size_estimate、缺少 content_profile 等问题,页面顶部显示警告横幅
report_template.html 新增 build_report 警告透传 _warnings 数组中的验证警告也会在页面中显示
report_template.html 修复 catch 块增加调试信息 JS 解析失败时不再空白,显示错误详情和原始数据片段
server.py 修复 三重安全转义(同 build_report.py) 服务模式下也不会因 &lt;/script&gt; / \u2028 崩溃
server.py 修复 amber→yellow 兼容 load() 函数自动将 amber 键重命名为 yellow

测试验证:

测试场景 结果
标准 JSON(完全匹配附录B模板) ✅ 正常渲染
不完美 JSON(amber 代替 yellow + red 缺必填字段) ✅ 有警告横幅但正常渲染,数据不丢失
极端最小 JSON(只有 system 字段,无 green/yellow/red) ✅ 优雅降级,页面显示警告而非空白
含 \u2028/\u2029 的 JSON ✅ 正确转义为 \u2028/\u2029,不再触发 JS 语法错误

v2.2 — 一键清理绿色项(确认面板 + 串行删除 + 进度反馈) (2026-06-05)

在交互式网页中增加"一键清理"功能:确认面板让用户勾选要清理的绿色项,确认后逐项串行删除并实时显示进度,失败项跳过继续,最后显示结果摘要。

交互流程:

点击&quot;一键清理全部 N 项 (约 X GB)&quot; → 弹出确认面板
  → 面板列出所有绿色项(复选框 + 名称 + 路径 + 大小)
  → 用户勾选/取消 → 点击&quot;确认移到废纸篓&quot;或&quot;直接删除&quot;
    → 逐项串行调用 /action API
      → 每完成一项:更新进度条 + 状态标记(✓/✗)
      → 某项失败?跳过继续,记录错误
    → 全部完成:显示结果摘要(成功 N 项 / 失败 M 项 + 失败原因)
  → 用户点&quot;关闭&quot;

改动清单:

文件 类型 项目 说明
report_template.html 新增 确认面板 UI(modal) 半透明遮罩 + 居中弹窗 + 复选框列表 + 全选/取消全选
report_template.html 新增 openBatchModal() 收集可清理绿色项,构建确认面板列表
report_template.html 新增 executeBatchClean(mode) async 串行逐项删除,实时更新进度条 + 状态标记
report_template.html 新增 进度条 + 结果摘要 进度条动画 + 成功(绿)/部分成功(黄)/失败(红) 三色结果面板
report_template.html 改进 绿色区醒目大按钮 原 btn-sm 改为 btn-lg,显示"🗑 一键清理全部 N 项 (约 X GB)"
report_template.html 新增 逐项状态 CSS batch-cleaning(清理中)、batch-ok(✓)、batch-fail(✗) 三种卡片状态
report_template.html 新增 点击遮罩关闭面板 点击 modal 外部遮罩区域自动关闭
report_template.html 改进 "直接删除"选项默认隐藏 需手动勾选"显示直接删除选项"才出现,防止误操作
report_template.html 新增 静态模式提示 静态报告模式下点一键清理,提示用户使用 server.py 启动服务模式

关键设计决策:

  1. 串行而非并行删除:避免并发请求导致文件锁冲突或服务端过载
  2. 失败跳过而非中止:某项权限不足时跳过继续,最后汇总失败列表
  3. 默认只显示"移到废纸篓":安全可逆;"直接删除"需额外勾选才可见
  4. 确认面板可取消勾选:用户可以精确选择要清理哪些项,而非全有或全无

v2.2.1 — 修复 SHFileOperationW 类型错误 (2026-06-05)

修复"一键清理"全部失败的 bug。根因:_to_wide_null_terminated() 返回 bytes(encode(&quot;utf-16-le&quot;)),但 SHFILEOPSTRUCTW.pFrom 声明为 wintypes.LPCWSTR,ctypes 期望 str 而非 bytes,导致每次移到废纸篓都报错 unicode string or integer address expected instead of bytes instance。

修复:
- _to_wide_null_terminated() 返回 str 而非 bytes
- 注释同步更新:说明 ctypes 会自动将 Python str 转为 UTF-16
- 移除冗余的 import ctypes 语句(该函数不再需要 ctypes)
- move_to_trash() 增加错误码 120/124 回退逻辑:系统保护目录(如 C:\Windows\SoftwareDistribution\Download)或含被占用文件的目录无法移到回收站时,自动回退到 hard_delete(),避免清理失败
- ALLOWED_ROOTS 新增 C:\Program Files 和 C:\Program Files (x86):修复 🔴 项"在资源管理器打开"时 L7 root boundary 拦截(如 C:\Program Files\Autodesk)
- report_template.html 修复 onclick 属性中 Windows 路径反斜杠丢失:esc(p).replace(/&#x27;/g,&quot;\\&#x27;&quot;) 增加 .replace(/\\/g,&#x27;\\\\&#x27;),防止 JS 字符串中 \P 被当作无效转义序列吞掉反斜杠(如 C:\ProgramData\Autodesk 变成 C:ProgramDataAutodesk)

v2.3 — 设计级修复:JSON 解析方式 + 服务进程分离 (2026-06-05)

修复交互式网页始终显示为"静态模式"(DELETE = null)的根因问题,涉及两个独立 bug。

Bug 1:内联 JSON 赋值导致 JS 解析崩溃

因素 旧设计 新设计
数据注入方式 DATA = {json};(直接赋值) &lt;script type=&quot;application/json&quot;&gt; + JSON.parse()
DELETE 与 DATA 同一个 try/catch 块 分离为两个独立 try/catch
\u2028/\u2029 需手动转义(遗漏则 JS 语法错误) 不需要(JSON.parse 不经过 JS 语法解析器)
内嵌浏览器兼容 大内联 JSON 导致 try 块整体失败 JSON.parse 在所有浏览器中可靠

根因:旧设计把 JSON 直接当作 JS 表达式赋值(DATA = {json};),任何 JSON 合法但 JS 非法的字符(如 U+2028/U+2029)或某些内嵌浏览器对大内联 JSON 的处理差异,都会导致 try 块抛出异常 → catch 块设置 DELETE = null → 页面表现为"静态模式"。由于 DATA 和 DELETE 在同一个 try/catch 中,DATA 的错误连带使 DELETE 失效。

Bug 2:Bash run_in_background 超时杀进程

因素 旧方式 新方式
启动命令 Bash run_in_background PowerShell Start-Process
进程生命周期 绑定到 Bash 会话,2分钟超时被杀 完全独立,不受会话超时影响
端口发现 无 --port-file 写入文件,延迟读取
打开方式 preview_url(内嵌浏览器,交互功能不可用) Start-Process URL(用户默认浏览器)

改动清单:

文件 类型 项目 说明
report_template.html 重构 数据注入方式 DATA = {json} → &lt;script type=&quot;application/json&quot; id=&quot;__report_data__&quot;&gt; + JSON.parse(document.getElementById(&#x27;__report_data__&#x27;).textContent)
report_template.html 重构 DELETE 解析 与 DATA 分离为独立 try/catch,DATA 失败不影响 DELETE
report_template.html 移除 \u2028/\u2029 转义 不再需要(JSON.parse 不经过 JS 语法解析)
server.py 新增 --port 参数 可指定固定端口(默认随机)
server.py 新增 --port-file 参数 启动后写入 URL 到指定文件,供外部读取端口
server.py 修复 线程模型 daemon 线程 → 主线程 serve_forever + self-test 后台线程
server.py 简化 转义逻辑 移除 \u2028/\u2029 转义(不再需要),仅保留 &lt;/script&gt; 转义
build_report.py 简化 转义逻辑 同上
SKILL.md 更新 Step 4 改用 Start-Process 启动 + 默认浏览器打开

常见问题

5 问
答案由本站依据条目字段整理
storage-analyzer-windows怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_3a8d4fb8/storage-analyzer-windows。安装方式为未标注。装完刷新技能列表或重开客户端。

storage-analyzer-windows支持哪些客户端?

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

storage-analyzer-windows权限高吗,安全吗?

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

storage-analyzer-windows收费吗?

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

storage-analyzer-windows用什么许可证?

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

热门专题

按场景挑技能
全部专题 →

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