# 磁盘目录大小统计工具 **Repository Path**: ys_lzz/disk-directory-size-analyzer ## Basic Information - **Project Name**: 磁盘目录大小统计工具 - **Description**: 一款 Windows 平台下的磁盘目录大小统计工具,支持**本地规则引擎 + LLM 大模型**双重识别目录用途,可视化展示各目录占用情况,帮助你快速找出磁盘空间被谁占用。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-29 - **Last Updated**: 2026-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 磁盘目录大小统计工具 - 智能识别版 一款 Windows 平台下的磁盘目录大小统计工具,支持**本地规则引擎 + LLM 大模型**双重识别目录用途,可视化展示各目录占用情况,帮助你快速找出磁盘空间被谁占用。 --- ## 功能特性 ### 核心功能 - **目录大小统计**:递归扫描指定目录下所有子目录大小并按大小排序 - **大文件支持**:自动适配 B / KB / MB / GB / TB 单位 - **跳过无权限**:自动跳过无权限访问的目录和文件,显示跳过数 - **实时进度**:扫描时实时显示当前目录、进度条、预估剩余 ### 智能识别 - **本地规则引擎**:基于关键词匹配(`.git`、`.vscode`、`Documents` 等 18+ 类目),零网络依赖即可识别常见目录 - **LLM 大模型识别**:调用大模型 API 分析每个目录的用途,并给出简短的描述 - **混合识别**:先用 LLM 批量识别,未识别的用本地规则兜底 - **置信度分级**:本地规则按精确度分 4 个等级(精确匹配 0.95 / 子串匹配 0.75 / 路径匹配 0.50) ### UI / 交互 - **Tkinter 原生 GUI**:双击 exe 直接运行,无需安装 Python - **实时日志面板**:所有 LLM 调用、扫描进度、错误信息实时输出 - **两行统计栏**:总大小、子目录数、跳过数、耗时、识别进度、平均大小、最大目录、扫描时间范围 - **三种停止方式**: - 「停止」按钮:保留结果,可继续/重置 - 「重置」按钮:清空一切回到初始状态 - 识别断点续传:停止后再次点识别,自动跳过已识别目录 ### LLM 多厂商支持 按官方 OpenAI 兼容调用方式预置 8 家厂商 + 自定义:MiniMax、DeepSeek、OpenAI、Anthropic(需代理)、月之暗面 Kimi、智谱 GLM、通义千问 Qwen、豆包 Doubao。 --- ## 使用方法 ### 方式一:直接运行 exe(推荐) 1. 下载 [DiskDirSize.exe](dist/DiskDirSize.exe) 和 [config.json](dist/config.json) 2. 放在**同一目录**下 3. 双击 `DiskDirSize.exe` 运行 ### 方式二:从源码运行 ```bash python check_dir_size.py ``` 需要 Python 3.8+,仅依赖标准库。 --- ## LLM 配置 ### 快速开始 1. 启动程序 → 点击右上角「⚙️ LLM配置」 2. 选择厂商(如「DeepSeek」),URL 会自动填入 3. 选择模型(如 `deepseek-chat`) 4. 填入 API Key 5. 勾选「启用 LLM」→ 保存 ### 各厂商对照表 | 厂商 | URL(OpenAI 兼容完整端点) | 推荐模型 | 国内直连 | |---|---|---|---| | **MiniMax** | `https://api.minimaxi.com/v1/chat/completions` | `MiniMax-M3`、`M2.7`、`M2.5` | ✅ | | **DeepSeek** | `https://api.deepseek.com/chat/completions` | `deepseek-v4-pro`、`deepseek-v4-flash` | ✅ | | **月之暗面 Kimi** | `https://api.moonshot.cn/v1/chat/completions` | `kimi-k3`、`kimi-k2.7-code` | ✅ | | **智谱 GLM** | `https://open.bigmodel.cn/api/paas/v4/chat/completions` | `glm-5.2`、`glm-4.7-flash` | ✅ | | **通义千问** | `https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions` | `qwen3.7-max`、`qwen3.5-flash` | ✅ | | **豆包** | `https://ark.cn-beijing.volces.com/api/v3/chat/completions` | `doubao-seed-2-1-pro-260628` | ✅ | | **OpenAI** | `https://api.openai.com/v1/chat/completions` | `gpt-4o-mini` | ❌ | | **Anthropic** | `https://api.anthropic.com/v1/messages` | `claude-sonnet-5` | ❌ 需代理 | > Anthropic 官方 API 不兼容 OpenAI 协议(需 `x-api-key` 鉴权),建议通过兼容代理使用。 ### 直接编辑 config.json 也可以手动修改 exe 同目录下的 [config.json](dist/config.json): ```json { "llm_enabled": true, "llm_provider": "deepseek", "llm_api_url": "https://api.deepseek.com/chat/completions", "llm_api_key": "sk-xxx", "llm_model": "deepseek-chat", "llm_disable_thinking": true } ``` --- ## 常见问题 ### Q: 停止后怎么继续识别? A: 直接再次点「🔍 智能识别目录用途」按钮,**已识别的目录会自动跳过**,只识别剩余部分(断点续传)。 ### Q: 怎么完全重置? A: 点「🔄 重置」按钮,会清空日志、表格、统计信息和识别结果。 ### Q: 默认扫描哪个目录? A: 启动时默认填 `C:/`,**可手动改成任意路径**(支持 `D:\`、网络盘等)。扫描 C 盘会较慢,强烈建议先在「浏览...」中选子目录。 ### Q: LLM 调用失败怎么办? A: 打开「🧪 测试连接」按钮,UI 日志会显示详细错误。常见原因: - API Key 错误 → 检查 key 复制是否完整 - 余额不足 → 到对应厂商控制台充值 - 路径错误 → 在配置中改用下拉框选厂商,URL 会自动填入 - 网络问题 → 国内外厂商切换测试 ### Q: LLM 响应里有 `` 标签导致解析失败? A: 程序已自动处理(正则去除)。如仍有问题,可在 `config.json` 中确认 `"llm_disable_thinking": true`。 ### Q: 打包后 config.json 找不到? A: 必须把 `config.json` 和 `DiskDirSize.exe` 放在**同一目录**下。 --- ## 自行打包 ```bash # 安装 PyInstaller pip install pyinstaller # 打包(生成 dist/DiskDirSize.exe) python -m PyInstaller --noconfirm --onefile --windowed --name "DiskDirSize" check_dir_size.py # 复制 config.json 到 dist 目录 copy config.json dist\config.json ``` 打包参数说明: - `--onefile`:打包成单个 exe - `--windowed`:不显示控制台窗口 - `--name`:exe 文件名 --- ## 项目结构 ``` wx/ ├── check_dir_size.py # 主程序 ├── config.json # LLM 配置文件 ├── README.md # 本文档 ├── build/ # PyInstaller 临时目录 ├── dist/ # 打包输出 │ ├── DiskDirSize.exe # 主程序 │ └── config.json # 配置文件 └── 磁盘目录大小统计工具.exe # 旧版 exe(可删除) ``` --- ## 技术要点 - **多线程架构**:扫描和识别都在后台线程,UI 主线程通过 `queue.Queue` 接收消息,避免界面卡死 - **批量日志刷新**:所有日志消息先入 `ui_buffer`,主线程以 200ms 间隔批量刷新 UI - **节流机制**:进度条按 200ms 节流刷新,避免频繁触发重绘 - **OpenAI 兼容协议**:使用 `urllib.request` 裸调 HTTP,零依赖,支持任何 OpenAI 兼容 API - **JSON 解析容错**:自动去除 `` 标签、markdown 代码块、智能提取最大 JSON 对象 - **断点续传**:识别时复用已有结果,跳过已识别目录 --- ## 许可 仅供学习和个人使用。