ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

C盘爆红用Codex做空间体检:AppData缓存精准清理与避坑指南

C盘爆红用Codex做空间体检:AppData缓存精准清理与避坑指南 C盘爆红是电脑故障里最能逼人动手的那种。红条顶格、系统反复弹“磁盘空间不足”很多人第一反应是打开C盘窗口挨个删除看着不顺眼的文件。结果呢要么删完没几天又红了要么某个软件突然打不开才发现删错了配置目录。我这次没有走这条老路。发现C盘又快满的时候我直接打开 Codex让它帮我做了一次完整的空间体检。扫描结果摆出来AppData 独占 87.81GB——这数字比很多人整个系统分区都大。这篇文章就记录这次完整的排查和清理过程怎么用 Codex 做诊断、AppData 里到底藏着什么、哪些能删哪些绝不能动以及清理之后如何防止它再涨回来。1. 为什么C盘爆红后先别急着删而是先做空间体检1.1 C盘爆红背后不止是“文件太多”C盘爆红看着像一个“存储满了”的问题实际是多个因素叠加的结果。Windows 系统分区本来就很重系统组件库 WinSxS、休眠文件 hiberfil.sys、页面文件 pagefile.sys这三样在正常的系统安装里就能吃掉几十 GB。再加上 Windows 更新下载包、系统还原点、各类软件在后台写的缓存空间不知不觉就见了底。我以前也犯过“看到满就乱删”的错。打开 C 盘见一个文件夹不顺眼就删最后把某个软件的数据目录给弄没了软件启动直接报错重装才恢复。那次之后我养成一个习惯C盘爆红先查账不查账不动手。查账的意思很简单——把C盘顶层目录和用户目录下各个子目录按体积排序找出真正的大户再决定怎么处理。这个过程和公司查账单一样先搞清楚钱花在哪儿再谈削减预算。还有一个容易忽略的点C盘“爆红”往往不是突然出现的。大部分时间是 Temp 目录、pip/uv/npm 缓存、浏览器缓存这类“临时数据”在慢慢涨。等你看见红条说明它已经涨到临界值了。这时候如果只是随便删几个文件夹治标不治本删完十天半个月又红了。所以我现在的做法是先把空间账跑出来一层层往下拆直到看清每一个大户的真实身份。1.2 我为什么用 Codex 当“体检医生”Codex 是 OpenAI 出的编程智能体可以在终端里直接对话也能读代码、分析日志、执行命令。它和普通对话式 AI 最大的区别是它不是你问一句它答一句而是会结合你本地的文件、目录结构和命令输出去迭代分析像一个能干活、能解释、能复盘的技术助手。我这次拿它做磁盘体检起因很简单我不想一个个去翻 AppData 底下几百个子目录也不想装一堆第三方清理软件。Codex 能帮我生成 PowerShell 扫描命令把输出粘回去让它分析还能多轮追问。我只需要给它方向“扫一下C盘谁最大”“AppData 里再往下一层”“超过 1GB 的单独列出来”。它就会把命令、结果和结论一起整理好比我自己翻文件夹省太多事。需要说清楚的是Codex 不是专业的磁盘清理工具它本身不占这个职能。我拿它做的是“诊断 脚本生成 结果解读”。真正执行删除还是用系统命令而且每一条删除命令我都会先看一遍。AI 给我的是判断依据不是免死金牌。这个边界想清楚用起来就很舒服。1.3 第一次体检C盘顶层目录大小排行第一次扫描我让 Codex 给我一条能统计 C 盘各顶层目录体积的 PowerShell 命令。最终用的是这条Get-ChildItem C:\ -Directory -Force -ErrorAction SilentlyContinue | ForEach-Object { $sum (Get-ChildItem $_.FullName -Recurse -File -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum [PSCustomObject]{ 目录 $_.Name; 大小GB [math]::Round($sum / 1GB, 2) } } | Sort-Object 大小GB -Descending | Select-Object -First 10注意几个细节。第一必须以管理员身份打开 PowerShell否则很多子目录没有读权限统计结果会偏小第二整个命令是只读操作不会删任何文件可以放心跑第三第一次全盘递归扫描会比较慢机械硬盘可能要跑好几分钟等它跑完就行。跑出来的结果在预期之中Windows 目录占大头Program Files 次之排第三的就是 C:\Users\Administrator 这个用户目录。继续往下拆用户目录发现 AppData 就占了 87.81GB。到这里我已经基本确定这次清理的主战场就是 AppData。提示如果机器的 C 盘和用户目录不在同一个盘用户目录路径可能不是 C:\Users直接用 $env:USERPROFILE 更保险。我在的这台机器用户目录就在C盘所以直接写了路径。2. AppData凭啥吃掉87.81GB三个子目录逐个拆2.1 先认清 AppData 的三层结构AppData 的全称是 Application Data是 Windows 给每个用户准备的“应用数据存放区”。它按权限和作用分成三个子目录Local、Roaming、LocalLow。Local 目录是本机专属数据不会跟着用户配置文件漫游。Temp 临时文件、pip/uv/npm 缓存、显卡着色器缓存都在这里。这是 AppData 里体积最大、最容易膨胀的区域因为软件觉得“这些数据反正是临时的”写起来毫不心疼。Roaming 目录是按用户漫游的数据比如软件的设置、全局包、账号相关的配置文件体积通常是三者里最小的但里面的数据一旦删错影响比 Local 严重。LocalLow 目录是给低完整度进程用的常见是浏览器插件、游戏组件之类日常体积不大。打个比方。Local 是家里仓库什么东西都往里堆脏了乱了定期清就行Roaming 是随身行李箱里面装着你常用的配置不能乱倒LocalLow 是儿童房东西少但零件精贵。这样理解就清楚多了。还有一个容易忽视的位置C:\Windows\ServiceProfiles\NetworkService\AppData。这是系统服务的用户目录里面放着网络服务相关缓存不是普通用户该碰的地方。有的教程让人把整个 AppData 迁走我强烈不建议尤其是系统服务账户的目录乱改会导致奇怪的权限问题。2.2 大户清单哪些缓存正在悄悄涨我让 Codex 把 AppData 里超过 1GB 的子目录单独列出来结果非常典型。这里整理成一张表覆盖了大多数 Windows 用户会遇到的缓存大户。路径用途能否清理清理后果AppData\Local\Temp安装残留、解压缓存、编辑器临时文件能正在使用的文件会删不掉重启后可补删AppData\Local\pip\Cachepip 下载缓存能下次装包需要重新下载AppData\Local\uv\Cacheuv 包管理器缓存能下次解析项目需要重新下载AppData\Roaming\npm\node_modulesnpm 全局模块谨慎直接删会导致全局命令失效AppData\Local\NVIDIA\DXCache显卡着色器缓存能游戏首次启动时会重新编译会卡一下AppData\Local\Temp.arduinoide-unsaved*Arduino IDE 崩溃时未保存的文件能未保存草稿永久丢失AppData\Roaming\Code\UserVS Code 配置与扩展不建议配置丢失扩展要重装AppData\Local\Microsoft\Windows\INetCache系统/浏览器缓存能基本无感这张表里的每一项我都见过实物。Temp 目录是重灾区里面经常躺着几十个格式各异的临时目录有的甚至占几个 GBpip 和 uv 都是 Python 生态里的下载缓存开发环境跑得越久缓存越大我这台机器上 uv 缓存一个就干了接近 20GBnpm 全局包不是“缓存”是真正安装到系统里的命令所以不能当缓存删。关键是分辨“缓存”和“数据”。缓存删了之后最多再下载一遍数据删了就是真没了。把每个路径想要搞清楚再动手这是 AppData 清理的基本功。2.3 让 Codex 逐级下钻还原 87.81GB 的构成大方向锁定 AppData 后我继续让 Codex 生成 Local 和 Roaming 两个目录的子目录体积排行。命令长这样Get-ChildItem $env:LOCALAPPDATA -Directory -Force -ErrorAction SilentlyContinue | ForEach-Object { $size (Get-ChildItem $_.FullName -Recurse -File -Force -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum [PSCustomObject]{ 目录 $_.Name; 大小GB [math]::Round($size / 1GB, 2) } } | Sort-Object 大小GB -Descending | Select-Object -First 15同样的命令把$env:LOCALAPPDATA换成$env:APPDATA就是 Roaming 的统计。跑出来后结果很直观Temp 占了 23GB 左右uv 缓存接近 19GBnpm 全局包和 pip 缓存加起来接近 15GBDXCache 大概 6GB剩下的是一堆几十到几百 MB 的零散目录。到这一步87.81GB 的构成基本清楚了。它不是某一个软件的锅而是十几个软件的缓存叠出来的。这类空间没有“单一凶手”所以你指望删一个文件夹解决问题是不可能的必须分级分批处理。Codex 在这轮的价值是把“哪个目录大、大多少、是什么”一次讲明白省掉了我挨个查看属性的时间。3. 实操记录分级清理Codex全程核对3.1 清理前的三个准备动作清理前先做三件事缺一不可。第一重启一次电脑。重启的意义在于释放被占用文件。Temp 目录里很多文件正被某个后台进程锁着不重启直接删删不掉不说还可能让正在跑的程序出问题。第二关闭大型软件。浏览器、IDE、游戏平台这一类会持续写缓存的程序清理期间最好全部退出。第三备份关键文档。虽然这次清理主要针对缓存但万一误判某个“数据类”目录备份就是后悔药。不建议在清理前创建系统还原点不我建议创建。如果担心删出问题系统还原点是成本最低的保险。虽然缓存类清理一般不会影响系统但 Adobe、NVIDIA 这类软件偶尔会写一些奇奇怪怪的注册表关联有还原点兜底心里踏实很多。3.2 第一级系统自带安全区第一级清理全部使用系统自带工具不需要装任何第三方软件。先打开磁盘清理按 WinR 输入 cleanmgr选择 C 盘勾选“临时文件、回收站、Windows 更新清理”这些项目让它自己跑。如果系统是旧版本Windows 更新清理可能不显示可以先用系统更新清理命令Windows 10/11 一般自带了。随后我用 DISM 清理组件库命令是DISM.exe /Online /Cleanup-Image /StartComponentCleanup这条命令干的是 WinSxS 组件的旧版本回收。Windows 每次更新都会保留旧版本组件以便卸载还原时间久了就成了好几个 GB 的“历史包袱”。DISM 会把这些旧版本组件安全回收。过程可能持续十几分钟期间不要强制关机。再往后是回收 Windows 更新下载包。更新包默认存在 C:\Windows\SoftwareDistribution\Download里面的文件是可以重新下载的直接删可能因为权限拒绝建议在磁盘清理里勾选“Windows 更新清理”让系统自己删。3.3 第二级开发者缓存区第二级开始处理 AppData 里的开发者缓存。先清 Temp。我用的命令是Get-ChildItem $env:TEMP -Force -Recurse -ErrorAction SilentlyContinue | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue这条命令会把 Temp 下能删的文件全删掉。加了-ErrorAction SilentlyContinue意思是遇到被占用或权限不足的文件就跳过不会中断。如果某几个文件删不掉不要硬删下次重启后可以再跑一次。Python 开发者的两个缓存大户用官方命令清pip cache purge uv cache cleanpip cache purge 会把 pip 的下载缓存清空uv cache clean 则是清 uv 的全局缓存。我在清理时 uv 缓存释放了近 19GB是这次清理最大的单笔收益。npm 的缓存用npm cache clean --force清。注意这个命令清的是 npm 的下载缓存不是全局包。全局包是下面要说的“谨慎区”不能一起删。3.4 第三级必须谨慎的区域AppData 里有些目录看着像缓存实际是真数据。最典型的是 Roaming\npm\node_modules。全局 npm 包安装到这里之后等于你系统里多了很多命令行工具比如 typescript、eslint、nodemon。直接删除 node_modules 目录会留下断链命令找不到只能重新安装。正确做法是在终端里逐个卸载npm uninstall -g 包名。如果你只是想清理空间npm cache clean --force就够全局包一般不会特别大我建议保留除非你确定某个包再也不会用。浏览器缓存也别直接在文件管理器里删。Chrome、Edge 的缓存都在 AppData 下但直接删文件容易导致浏览器数据错乱。进浏览器设置里清缓存才是正道。VS Code 的配置目录 Roaming\Code 更不用多说里面有你所有扩展和设置删了重装都救不回来我从来不动它。那个 .arduinoide-unsaved 开头的目录是 Arduino IDE 崩溃时留下的未保存文件。这种目录可以删但删之前想一下里面是不是有你想抢救的代码。一般如果 IDE 已经正常关闭过这就是纯粹的垃圾可以放心清理。3.5 清理后的复盘与体检清理完成不等于结束。我的习惯是再跑一次扫描把清理前后的数据对比一下。这次 MySQL 清理完AppData 从 87.81GB 降到 22GB 左右释放了大约 66GB。主力贡献者还是 uv 缓存、Temp、pip 缓存和 DXCache。复检命令还是之前那两条不换。跑完看到空间回来了心里才踏实。顺手再做两件事第一用chkdsk /f C:检查一下系统盘有没有文件系统错误这条命令需要重启后执行会修复文件系统层面的问题第二去事件查看器里看一眼有没有反复报错的应用如果有大概率是某个软件缓存被误伤需要重新登录或者重新下载。这一步里 Codex 的作用是帮我快速对比两份清单。它比我眼力好能一眼指出哪个目录清理前多少、清理后多少差额和预期是不是一致。如果某个目录明明报了“清理完成”但体积没变说明有进程还在写文件那就得检查后台有没有常驻程序。4. 高频问题与避坑笔记4.1 C盘清理高频疑问速查我整理了一个速查表把这次排查前后网上高频出现的问题都放进去。如果你也遇到相似情况可以直接对照。问题一句话结论详细说明Temp 目录能直接删吗能但不能物理删除正在用的文件重启后再删最稳妥无需管理员权限AppData 整个文件夹能搬走吗不建议改用户目录指向会导致一堆软件权限异常C 盘满了开不了机怎么办进安全模式或 WinPE 清理别反复强制重启避免文件系统损坏恢复分区在 C 盘后面怎么办只能先处理恢复分区才能扩展涉及一键恢复功能操作前备份uwfmgr 怎么开启 C 盘保护适合公用电脑不建议个人主力机用写入重定向到内存重启还原Temp 能不能删答案是能。它是 Windows 给程序和用户放临时文件的地方删了不会影响系统。唯一要注意的就是有程序正在使用它的文件时删除会提示占用。最简单省事的做法是重启电脑后立刻清理因为刚开机时后台进程最少。AppData 整体不要搬。网上有教程让用户把 AppData 用符号链接转移到别的盘目的是给 C 盘瘦身。理论可行实际坑太多很多软件不认链接目录更新时会重新写回 C 盘还有的系统服务目录根本动不了。折腾半天不如清理缓存来得实在。4.2 Codex 使用中的配置坑Codex 本身不是这次清理的难点但我在用它排查的时候确实遇到几个配置问题正好一起记录。第一次遇到的是“无法加载组织设置”。排查下来是 config.toml 里的 organization 字段写错了——我抄了一个旧文档的字段名新版本里已经改了命名规则。这类的解法很简单打开 Codex 的配置文件对照官方文档把字段名逐项核对一遍别用网上找来的老配置直接贴。第二次遇到配置文件解析错误。当时是 config.toml 里少了一个引号Toml 格式非常严格少个符号就会导致整个配置读不出来。排查方法是在终端执行codex --help它会提示具体是哪一行出了问题照着改就行。还有一次是 codex 切换配置时直接报 local 连接失败。我先用netstat -ano查看了本地占用情况发现是端口被另一个程序占用了关掉那个进程后恢复正常。排查原则很简单先确认本地端口是否被占用再检查接口地址是否配置正确。如果你想在 Codex 里接入 DeepSeek 这类 OpenAI 兼容接口配置段大概长这样model deepseek-chat model_provider deepseek [model_providers.deepseek] name DeepSeek base_url https://api.deepseek.com api_key_env_var DEEPSEEK_API_KEY核心是base_url指向兼容接口地址api_key_env_var指定环境变量名然后启动前设置好DEEPSEEK_API_KEY环境变量。这类配置改动看起来简单但每次改完都建议运行codex --version或者直接发起一个极小的测试请求确认配置能正常被读取。4.3 怎么处理捆绑的“C盘瘦身专家”这次热搜里有个词叫“C盘瘦身专家”我多说两句。这类软件一部分是用户自己下载的但更常见的是从某个全家桶安装包里带进来的。它一开机就往系统里塞服务和自启动项然后再用“扫码清理”的界面诱导你下载更多软件属于典型的捆绑软件。卸载方式有顺序。先进“设置—应用—已安装的应用”搜一下名字能正常卸载就先卸载。卸完别急着完事因为卸载程序可能留着“护城河”——任务计划、服务项和开机自启。按 CtrlShiftEsc 打开任务管理器在“启动”页禁用可疑项再按 WinR 输入 services.msc查看有没有它留下的服务。如果这两个地方都找不到对应项那就去它的安装目录看一下。一般会在 Program Files 或者用户目录 AppData 下。先结束进程再删除目录。这步有风险删错目录会导致某个正常软件出问题所以动之前先确认路径里的名字和软件名对得上。我的核心态度是清理 C 盘优先用系统自带的磁盘清理、DISM 和开发者工具自带的缓存命令。第三方清理大师看着方便但绝大多数功能系统本身就有而捆绑的风险远大于那点便利。4.4 C盘扩容和恢复分区清理只能解决“缓存太多”如果整个磁盘分区本身就小早晚还会满。这次清理让我重新考虑要不要扩容分区。磁盘管理里看C 盘右侧是恢复分区导致“扩展卷”按钮是灰色的这是最典型的情况。想扩容得先把 C 盘右侧的恢复分区处理掉。恢复分区是厂商用来一键恢复系统的如果机器已经过了保修期、或者你自己做了完整系统备份可以考虑删掉它腾出空间。用管理员身份运行 diskpart列分区、确认编号、执行删除diskpart list disk select disk 0 list partition select partition 3 delete partition override删除之后C 盘右侧变成未分配空间回到磁盘管理就能用“扩展卷”把空间并进 C 盘。这里必须提醒这条命令会永久删除恢复功能操作前一定要确认自己用不到并且先做系统备份。如果你不想动恢复分区也可以用第三方分区工具把恢复分区整体挪到磁盘末尾然后扩展 C 盘。原理一样只是图形界面操作更直观风险也小一些。扩展分区这种东西一次做好终身受益做之前别怕麻烦多备份一次总是没错的。我个人在实际操作中的体会是C盘爆红这件事永远应该先算账再动手。Codex 帮我节省了大量翻目录的时间但真正让我安心的是那几次只读扫描——空间去哪了、谁是源头、删完还剩多少每一步都有据可查。清理过程里最值钱的不是那 66GB 空间而是养成了“定期检查空间账本”的习惯。最后再分享一个小技巧把这次用到的扫描命令存成一个文本需要的时候直接用不用重新想。甚至可以做成一个简单的批处理脚本每月双击一次让它把 Temp、pip、uv 的缓存都清一遍。这样 C 盘基本不会再有突然爆红的惊喜。等你下次走到扩容那一步再做分区规划也来得及。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进