最近被 C 盘空间不足折腾得不轻,打开资源管理器看到红色警告条,编译依赖、安装 IDE 插件、导出构建产物全都受影响。也试过网上各种“一键清理”和“深度优化”工具,要么不敢下手,要么清理效果聊胜于无。后来切换思路,把 Codex 请进来做磁盘分析的辅助工具,让它帮我梳理空间占用、生成清理脚本、预演删除风险,最终给 C 盘腾出了 300 多 GB。这篇实战笔记完整记录整个过程,从 Codex 安装配置,到磁盘扫描脚本编写,再到高频缓存目录的清理策略,最后附上常见问题与排坑清单。内容对开发者和普通用户都适用,照着操作即可。
1. C 盘为什么会越用越满
很多人的 C 盘从 128GB 逐渐变成红色,再从 256GB 变成红色,甚至 1TB 的固态盘也会被占满。这不是某个单一软件的问题,而是多个方向同时累积的结果。
1.1 临时文件与缓存机制
Windows 系统运行时会产生大量临时文件,C:\Windows\Temp、C:\Users\用户名\AppData\Local\Temp 是两大主要位置。除此之外,应用程序的缓存目录分布在多个路径下:
- 浏览器缓存:
C:\Users\用户名\AppData\Local\Google\Chrome\User Data\Default\Cache - 开发工具缓存:npm、pip、Gradle、Maven 等工具会把下载过的依赖包缓存在本地
- 系统更新缓存:Windows Update 下载的安装包残留在
C:\Windows\SoftwareDistribution\Download - 软件安装残留:卸载软件后没有清理干净的临时文件和日志文件
这些目录中的文件单个体积不大,但数量极多,累计起来非常惊人。特别是长期开发的机器,npm 缓存、pip 缓存、Docker 镜像、虚拟机磁盘文件很容易突破几十 GB。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
1.2 用户数据的隐形占用
部分软件在安装时默认把数据目录放到用户目录下,即使后来把软件本体安装到了 D 盘,数据依然写在 C 盘。
典型场景包括:
- 企业微信、钉钉等办公软件的聊天记录和文件缓存
- 微信 PC 版的缓存文件
- Steam 游戏存档
- Android SDK、VMware 虚拟机、Docker 桌面版的数据目录
- Eclipse、IDEA 等开发工具的索引和本地历史记录
- Windows 分页文件(pagefile.sys)和休眠文件(hiberfil.sys)
休眠文件通常占用物理内存的 75% 左右,16GB 内存的机器,这一个文件就能占 12GB。软件开发中常见的 %LOCALAPPDATA%、%APPDATA%、%USERPROFILE% 这几个环境变量指向的目录,往往是空间黑洞的重灾区。
1.3 传统清理工具的不足
市面上的清理工具主要扫描固定的临时目录和注册表项目,对于开发类软件的自定义缓存目录覆盖不足。还有部分工具在清理时会误删文件,导致软件需要重建缓存甚至出现异常。调用系统自带的“磁盘清理”又过于保守,只能清理 Windows 自己认识的部分文件。
因此,需要一种更灵活的方式:先分析磁盘空间分布,列出可清理的目录,再由使用者决定删除哪些内容。Codex 在这个过程中可以扮演“脚本工程师”的角色——把分析需求描述给它,它生成对应的 PowerShell 或 Python 脚本,我们只需要审核脚本逻辑并执行。
2. Codex 能帮你做什么
2.1 Codex 是什么
Codex 是 OpenAI 推出的 AI 编程辅助工具,可以理解自然语言描述并生成代码。它支持通过命令行界面(CLI)或桌面版运行,能够读取本地文件、执行终端命令、运行测试代码。对于“写一个磁盘扫描脚本”这类任务,Codex 能直接生成可运行的版本。
它的工作原理是:用户通过自然语言描述需求,Codex 调用底层模型理解需求并生成代码。生成的代码可以在本地执行环境里运行,执行结果会被 Codex 继续分析,形成“分析 - 生成 - 执行 - 再修正”的工作循环。
2.2 在 C 盘清理场景中的价值
C 盘清理不是一个简单的“删除临时文件”操作,它涉及多个决策点:
- 哪些目录可以放心删除?
- 哪些目录需要保留但可以迁移?
- 哪些大文件需要用户人工确认?
- 删除后如果出现异常如何恢复?
Codex 的价值在于,它可以快速扫描这些目录并生成结构化报告,而不是凭经验猜测。例如,输入一句话“扫描用户目录下大于 100MB 的文件,按大小降序输出”,Codex 就能生成对应的 Python 脚本,扫描结果直接呈现给用户。
同时,Codex 生成脚本时会考虑边界条件。例如:跳过正在被占用的文件、排除系统关键目录、记录删除前的文件清单、创建日志文件。这些细节如果手写,需要一定经验才能处理完善,而 Codex 在这方面的表现比较稳定。
2.3 适用范围与局限
Codex 适合做辅助分析和脚本生成,但不应该让它直接无限制地删除文件。删除操作前,必须经过人工审核,确认要删除的内容确实是缓存或临时文件。对于不确定的文件,应当在沙箱环境先模拟运行,或在系统还原点建立好之后再执行。
如果你只想快速释放空间、不想折腾脚本,也可以直接使用清理命令和系统工具,本文第 5 章会补充这些内容。两种方式并不冲突,可以互相补充。
3. 环境准备与安装配置
3.1 基础环境说明
以下操作以 Windows 11 系统为例,Python 使用 3.10 以上版本。整个流程涉及:
text复制操作系统:Windows 11(64 位)
编程语言:Python 3.10+
辅助工具:Codex CLI / Codex 桌面版
磁盘类型:NTFS 固态硬盘
如果你的环境是 Windows 10 或 macOS,操作思路相同,只是个别路径和环境变量有差异。版本需要根据实际情况对应调整。
3.2 安装 Python 与验证
磁盘扫描脚本采用 Python 编写,主要原因是它对文件遍历和大小统计的支持比较简洁,且运行环境容易搭建。如果还没有安装 Python,可以从官网下载安装包,安装时勾选“Add Python to PATH”。安装完成后打开命令行,验证版本:
bash复制python --version
正常情况下会输出类似:
text复制Python 3.12.4
如果提示找不到命令,说明没有把 Python 加入 PATH,需要重新安装或手动配置环境变量。
3.3 安装 Codex
Codex 可以使用 npm 安装 CLI 版本,也可以安装桌面版。这里以 npm 方式为例,因为它更轻量,适合不需要图形界面的场景。打开终端执行:
bash复制npm install -g @openai/codex
安装完成后校验版本:
bash复制codex --version
看到版本号输出后,说明 CLI 安装成功。如果你的环境中没有 Node.js/npm,需要先安装 Node.js 18 以上版本。桌面版的安装包可以从 Codex 官网获取,安装流程与普通 Windows 软件一致,但需要注意安装路径不要选择 C 盘的系统目录,建议安装到 D 盘或其他数据盘,避免 Codex 自身产生新的缓存占用。
3.4 登录与基本配置
首次运行时,Codex 会引导登录。登录确认身份后,会在用户目录下生成配置文件。查看配置目录:
bash复制codex instructions
配置文件路径一般为:
text复制C:\Users\用户名\.codex
这个目录中包含 Codex 的历史记录和配置缓存,大小通常不大,但长时间使用后也可能累积一些数据,后文会提到如何处理。
在提示用户输入系统提示词(instructions)时,可以写清楚你的使用偏好,例如:
text复制生成脚本时请添加详细的注释,并在删除操作前进行确认提示。
这样后续 Codex 生成代码时会自动遵守这个约定。如果有自定义需求,例如使用外部模型服务,需要根据 Codex 对第三方服务支持的配置项进行调整,不同版本支持的配置项名称可能不同,遇到提示 “unrecognized configuration setting” 的时候,检查配置键的拼写是否与当前版本一致。
3.5 准备演示项目目录
为了方便管理脚本,建议在 D 盘创建一个独立目录,例如:
text复制D:\disk-cleaner
把后续生成的脚本都放在这个目录中。这样既不会污染 C 盘,也方便后续追溯和执行日志管理。
4. 实战:让 Codex 生成磁盘分析脚本
这是整个方案的核心环节。我们让 Codex 生成一个磁盘扫描脚本,用于找出 C 盘上占用空间最多的文件。
4.1 明确需求描述
在终端启动交互会话。
bash复制codex
进入交互环境之后,输入一段自然语言需求。需求描述得越具体,生成结果越符合预期。这里给出参考需求:
text复制写一个 Python 脚本,扫描指定目录下的所有文件,输出占用空间最大的前 50 个文件的完整路径、大小。结果使用表格形式打印,大小按 GB/MB 自动格式化。跳过 Windows 系统目录和用户目录中的隐藏文件。
Codex 收到需求后,会生成对应的脚本,可能还会附带说明。我们需要重点关注两个点:脚本是否使用了合理的遍历方式,以及是否对权限问题做了容错处理。
4.2 生成脚本示例
Codex 生成的脚本大致如下。由于每次生成的细节有所差异,这里给出实际功能等效的完整代码:
python复制# 文件路径:D:\disk-cleaner\scan_disk.py
import os
import fnmatch
from pathlib import Path
def format_size(size):
"""将字节转换为易读的格式"""
if size >= 1024 ** 3:
return f"{size / 1024 ** 3:.2f} GB"
elif size >= 1024 ** 2:
return f"{size / 1024 ** 2:.2f} MB"
else:
return f"{size / 1024:.2f} KB"
def scan_directory(root_dir, top_n=50, skip_patterns=None):
"""
扫描指定目录,返回占用空间最大的前 N 个文件。
参数:
root_dir: 要扫描的根目录
top_n: 展示前 N 个文件
skip_patterns: 需要跳过的文件名模式
"""
if skip_patterns is None:
skip_patterns = ["pagefile.sys", "hiberfil.sys", "swapfile.sys", "$Recycle.Bin"]
files = []
for dirpath, dirnames, filenames in os.walk(root_dir):
# 跳过系统保护目录
dirnames[:] = [d for d in dirnames if d not in skip_patterns and not d.startswith("$")]
for filename in filenames:
if any(fnmatch.fnmatch(filename, pattern) for pattern in skip_patterns):
continue
file_path = os.path.join(dirpath, filename)
try:
size = os.path.getsize(file_path)
files.append((size, file_path))
except (PermissionError, FileNotFoundError, OSError):
# 某些系统文件没有权限访问,直接跳过
continue
files.sort(reverse=True, key=lambda item: item[0])
print(f"{'大小':<12} {'路径':<80}")
print("-" * 92)
for size, path in files[:top_n]:
print(f"{format_size(size):<12} {path}")
if __name__ == "__main__":
target = input("请输入要扫描的目录(例如 C:\\Users\\用户名\\AppData\\Local):").strip()
scan_directory(target, top_n=50)
这个脚本的思路:通过 os.walk 递归遍历目录,记录每个文件的路径和大小,最后排序输出。权限不足的文件会被跳过而不是终止程序,这在实际扫描中非常重要,因为 Windows 系统目录里总有部分文件不具备读取权限。
4.3 运行与结果解读
运行脚本:
bash复制python scan_disk.py
输入要扫描的目录,例如:
text复制C:\Users
输出结果会显示占用空间最大的文件列表。根据输出的路径,我们就能判断哪些目录值得进一步清理。
更高效的用法是依次扫描多个高频占用目录,并汇总结果:
bash复制python scan_disk.py
分别输入以下目录进行扫描:
C:\Users\用户名\AppData\LocalC:\Users\用户名\AppData\RoamingC:\Windows\TempC:\Users\用户名\DownloadsC:\Users\用户名\DocumentsC:\Users\用户名\.codex
将每次的扫描结果合并观察,基本就能锁定 C 盘空间的大头。
4.4 针对发现的问题做定向清理
某台开发机的实际扫描结果显示,以下三类文件占据了主要空间:
- 微信和钉钉的用户缓存
- IDEA 和 Eclipse 的索引目录
- Python 包管理器的缓存(
%LOCALAPPDATA%\pip\cache) - 浏览器下载目录中的旧安装包
针对这些位置,让 Codex 生成定向清理脚本。输入需求:
text复制写一个 Python 脚本,清理以下目录中的所有文件和子目录:C:\Users\用户名\AppData\Local\Temp、C:\Windows\Temp、C:\Users\用户名\AppData\Local\pip\cache。删除前先列出将要删除的文件数量和总大小,要求使用者输入 YES 进行最终确认。
Codex 生成的清理脚本会包含安全确认逻辑。同样的思路,我们可以让 Codex 为微信、钉钉等软件的缓存目录生成迁移脚本,把缓存目录通过软链接映射到 D 盘,实现“不删除数据但释放 C 盘空间”的效果。
5. 系统级 C 盘清理命令与操作
Codex 生成的脚本负责处理自定义缓存,Windows 系统本身还有一批内置清理命令。两者结合效果更好。
5.1 磁盘清理工具
运行系统自带的“磁盘清理”:
bash复制cleanmgr
在弹窗中选择 C 盘后,系统会计算可清理的空间,包括 Windows 更新清理、临时文件、缩略图等。如果需要更全面的清理项,可以用管理员身份运行:
bash复制cleanmgr /d C
磁盘清理工具的特点是安全,系统会自行判断哪些文件可以删除。
5.2 组件存储清理
针对 Windows 更新残留,可以使用 Dism 命令。管理员身份打开命令行:
bash复制Dism.exe /Online /Cleanup-Image /StartComponentCleanup
这条命令会清理 Windows 组件库中的过期版本,部分机器可以释放数 GB 到十几 GB 空间。运行时间取决于更新历史和磁盘性能,耐心等待即可。
5.3 用户级临时文件清理
尝试清理当前用户的临时目录:
bash复制del /q /f /s %TEMP%\*.*
rd /s /q %TEMP%
需要注意,%TEMP% 目录中如果有文件被占用,会提示删除失败,重启后再执行一次即可。这个命令不会影响系统稳定性,但仍建议在执行前关闭正在运行的软件。
5.4 休眠文件与页面文件策略
休眠文件占用的空间很大,如果不需要快速启动功能,可以关闭休眠:
bash复制powercfg /hibernate off
这条命令执行后,休眠文件会被删除。再次开启则使用:
bash复制powercfg /hibernate on
页面文件一般不建议关闭,但可以迁移到非系统盘。在系统属性 - 高级 - 性能设置 - 高级 - 虚拟内存中,把自动管理取消,将 C 盘设置为“无分页文件”,再在 D 盘设置“系统管理的大小”。这一操作需要重启生效,适合空间严重不足的场景。
5.5 清理 Windows 更新缓存
Windows Update 下载的安装包有时无法通过磁盘清理工具完全处理,可以手动检查目录:
text复制C:\Windows\SoftwareDistribution\Download
如果确认所有更新均已安装,该目录下的文件可以安全删除:
bash复制net stop wuauserv
rd /s /q C:\Windows\SoftwareDistribution\Download
net start wuauserv
这里停掉了 Windows Update 服务再删除文件,删除完成后重新启动服务,避免文件被占用。
6. 常见问题与排查思路
6.1 清理后 C 盘空间没有变化
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 删除大量文件后空间未明显增加 | 文件被系统还原点占用 | 清理系统还原点,保留最近一次 |
| 删除文件时提示被占用 | 有后台进程正在使用该文件 | 记录占用程序,结束后再次删除 |
| 临时文件删除后迅速重新生成 | 软件在运行时会自动重建缓存 | 先退出软件再清理 |
| 空间数字不刷新 | 资源管理器缓存未更新 | 重启资源管理器或重启电脑 |
最容易被忽略的是“系统还原点”。磁盘清理工具的高级选项里可以删除除最近还原点之外的所有还原点,有时一下能释放几十 GB。
6.2 Codex 安装与登录问题
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| codex 命令无法识别 | npm 全局目录未加入 PATH | 将 npm 全局安装目录写入 PATH |
| 登录时一直转圈 | 网络服务不可用 | 确认本机对 Codex 服务端的访问正常 |
| 配置文件中出现 unrecognized setting 告警 | 配置键拼写错误或版本不支持 | 删除失效配置项,按当前版本说明填写 |
| 模型调用返回 not supported | 使用了当前账号不支持的模型标识 | 切换配置文件中的模型参数,或通过终端切换模型 |
| 执行脚本时提示 local proxy failed | 本地代理配置异常 | 检查本地代理配置项,清理后重新配置 |
Codex 使用过程中的很多报错,都来源于配置文件中参考了旧版本的写法。遇到问题时,优先查看官方配置说明,并使用当前版本支持的字段名。网络连通性同样关键,请确认你的网络环境可以正常访问 Codex 所需服务,再继续排错。
6.3 Codex 缓存目录占用空间
Codex 本身会在用户目录下创建缓存,路径大致为:
text复制C:\Users\用户名\.codex
包含会话历史、日志、配置备份等信息。通常占用不大,但如果长期未清理也可能积累一定空间。处理方式与普通缓存类似:退出 Codex 后,删除其中的历史会话记录和日志子目录。需要注意,不要在运行状态下删除,否则可能导致会话状态异常。
6.4 清理脚本误删文件后的补救
如果出现了误删情况,立即停止一切写入操作。原本存放文件的目录不要继续写入新文件,尝试用恢复软件扫描已删除文件。但恢复成功率并不固定,因此强烈建议在批量删除前先建立文件清单,并输出到 D 盘。Codex 生成的脚本已经包含“列出文件数量与大小”的步骤,执行删除前可以保留一份清单文件,方便追溯。
7. 最佳实践与工程建议
7.1 脚本工程化要求
清理脚本不应只是临时写一段就删除。建议建立固定目录存放脚本,配合日志记录,保持脚本的可维护性。
推荐的脚本规范:
- 所有删除操作前输出日志,记录文件路径、大小、删除结果
- 使用白名单机制,只清理明确标记为缓存和临时文件的目录
- 禁止递归删除用户文档目录、桌面、图片等个人数据目录
- 每次执行至少保留一个撤销清单,清单保存到非系统盘
- 在脚本开头声明适用系统版本和注意事项
7.2 磁盘空间管理的长期方案
清理只是一次性动作,长期来看,还需要建立预防机制:
路径迁移:将微信、企业微信、钉钉等软件的缓存和数据目录手动迁移到 D 盘。大多数软件在设置项里支持修改文件保存位置。
开发工具缓存控制:将 npm、pip、Gradle、Maven 的缓存路径通过环境变量指向 D 盘。以 pip 为例:
powershell复制[Environment]::SetEnvironmentVariable("PIP_CACHE_DIR", "D:\pip-cache", "User")
npm 则是在用户目录下创建 .npmrc 文件:
properties复制cache=D:\npm-cache
这类操作可以将开发工具的缓存积累从 C 盘剥离。
定期巡检:每个月执行一次磁盘扫描脚本,把新增的大文件识别出来。避免等到 C 盘变红才处理。
系统还原点管理:合理配置系统还原空间的用量上限,而不是默认占用整个磁盘。
7.3 Codex 使用过程中的工程建议
把 Codex 应用到日常维护时,有几个实践原则值得注意:
- 生成的脚本必须人工审核后再执行
- 使用 Codex 处理系统文件时,不确定的路径先在测试环境验证
- 不要给 Codex 授予多余的系统权限,不必要时不要用管理员运行
- 删除操作要先走“生成清单 -> 人工确认 -> 执行删除”的流程
- 涉及生产环境、服务器、数据库相关操作时,Codex 只建议用于辅助生成,执行必须遵守自身公司的变更流程
这不仅是使用 Codex 的原则,也是使用任何 AI 辅助编码工具的原则。
7.4 遇到“清理后又满了”的情况怎么办
部分用户遇到过清理后空间很快又占满的情况。这通常不是缓存重新生成,而是有其他文件在持续增长。常见原因包括:
- Windows 错误报告(WER)文件在 C 盘不断累积
- 有程序在后台频繁写日志
- 虚拟机磁盘文件被设置为动态增长
- 浏览器以缓存优先模式持续写入 SSD
排查时可以运行系统自带的存储感知,在“设置 -> 系统 -> 存储”中查看各类文件的占用趋势。如果发现某个程序日志异常增长,需要从根本上解决程序问题,而不是持续清理。
8. 总结与下一步
操作到这里,C 盘从几百 GB 的紧张状态恢复到充足水平。回顾整个过程:先安装配置 Codex,利用它生成磁盘扫描脚本定位大文件;随后针对缓存、临时文件、更新残留等目录进行定向清理;同时配合 Windows 系统自带的清理命令和休眠文件处理,完成了一次比较彻底的空间释放;最后通过迁移数据目录和配置开发工具缓存路径,防止后续再次积压。
Codex 的价值在于把“分析需求”翻译成“可执行脚本”的过程变得非常快。过去手动编写扫描脚本、处理权限异常、格式化结果,需要花不少时间;现在只需要用自然语言描述清楚需求,Codex 就能生成可用的代码。对于不经常接触编码的用户,这也降低了分析磁盘空间的门槛。
后续继续优化时,有几个方向值得探索:
- 把自动分析脚本和清理脚本做成一个源,与任务计划程序结合,实现月度自动化巡检
- 在清理脚本中接入磁盘空间告警,当 C 盘剩余空间低于阈值时自动触发扫描
- 把 Codex 生成的清理脚本同步到版本仓库,方便在多台电脑上复用
实践过程中最重要的是安全性。无论工具多智能,删除操作的最终责任人仍然是人。只要把握住“先分析、再确认、后清理”的原则,Codex 就能成为系统维护中高效且可靠的助手。
