
1. 为什么 Codex 在 Windows 上会留下这么多“看不见”的垃圾如果你在 Windows 上用过 OpenAI Codex 这类 AI 编程助手大概率遇到过一种很迷惑的情况软件明明已经卸载了C 盘空间却一点没回来甚至还在持续变少。用系统自带的磁盘清理、第三方管家扫一遍报告里干干净净可C:\Users\你的用户名下面就是实打实少了好几个 GB。原因在于这类 AI 编程工具的运行机制和传统软件完全不同。它不是一个单文件 exe而是一整套“运行时 沙箱 会话归档 插件市场”的组合体。为了跨平台兼容它会在用户目录里拉取独立的 Python、Node.js 和原生二进制依赖为了排查问题它会持续写 SQLite 调试日志为了让你随时回看历史对话它把每次交互都按月份归档成.jsonl。这些目录大多以点号开头在资源管理器里默认隐藏普通清理工具根本不认识它们。我实测下来一个用了两三个月的 Codex 环境.codex加.cache\codex-runtimes两个目录加起来轻松突破 10 GB重度使用能到十几个 GB。更麻烦的是卸载程序通常只删AppData\Local\Programs下的宿主程序用户根目录下的.codex会被完整保留。所以“卸载了但没清干净”是常态不是你的错觉。这篇内容聚焦三件事第一把 Codex 在 Windows 上的高占用目录逐个拆开标清楚哪些能删、哪些碰不得第二给出可复制的 PowerShell 清理脚本和config.toml/settings.json骨架第三把 TaoToken 作为统一 Key 和 API 通道接进来让清理后的新会话有一个干净、稳定的入口避免旧配置残留干扰。适合所有在 Windows 上跑 AI 编程工具、被 C 盘空间折磨过的开发者。2. 清理前先接好 TaoToken统一 Key 与 API 通道清理缓存最怕的一件事是清完之后发现原来的 API 配置也跟着没了或者旧配置里残留的 base_url、key 指向了已经失效的地址导致新会话一直报错。所以在动手删文件之前先把接入层固定下来用一套统一的 Key 和 API 通道后面无论怎么清缓存配置骨架都能快速重建。TaoToken 在这里扮演的角色就是“统一入口”你只需要在官网拿到一个 Key然后在 Codex 的配置里把 API 地址指向 TaoToken 的 API 端点模型对话、编码任务都走同一条通道。这样清理时你只需要关心数据目录不用反复去翻各个工具的零散配置。具体操作路径如下。先访问官网注册并进入控制台官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content控制台创建 Keyhttps://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteAPI Keys 管理页https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite在 API Keys 页面新建一个 Key复制出来先存到密码管理器里。注意Key 只在创建时完整显示一次关掉页面就看不到了。如果你同时用多个 AI 编程工具建议按工具分别建 Key方便后面排查是哪个工具在消耗额度。拿到 Key 之后API 端点统一用https://taotoken.net/api这个地址不加任何查询参数直接作为 base_url 填进配置。下面两节会分别给出 Codex 的config.toml和通用settings.json骨架你照着填就行。提示清理缓存和重建配置建议分两步走。先把配置骨架写好、验证能通再去删缓存目录。这样万一清理过程中误删了配置你手里还有一份可复制的骨架。3. 可复制配置config.toml 与 settings.json 骨架Codex 在 Windows 上的配置主要落在%USERPROFILE%\.codex\config.toml。这个文件是纯文本清理缓存时它属于“必须保留”的核心配置不要跟着日志一起删。下面是一份可直接复制的骨架把api_key换成你自己的即可。# %USERPROFILE%\.codex\config.toml # TaoToken 统一 API 通道配置骨架 [api] # 统一走 TaoToken 的 API 端点不要带任何查询参数 base_url https://taotoken.net/api api_key sk-你的TaoToken密钥 # 请求超时单位秒网络波动时可适当调大 timeout 120 [model] # 默认模型按你实际可用的模型名填写 default gpt-4o # 编码类任务单独指定避免和对话任务抢上下文 coding gpt-4o [session] # 会话归档目录清理 sessions 时保留此配置指向 dir ~/.codex/sessions # 单个会话文件上限超过后自动滚动避免单文件无限膨胀 max_file_mb 50 [logging] # 调试日志级别日常用 info 即可排查问题时临时改 debug level info # 日志保留天数配合清理脚本使用 retain_days 7如果你用的是其他支持settings.json的 AI 编程工具比如某些 CLI 或编辑器插件可以用下面这份通用骨架。核心思路一样base_url 指向 TaoTokenkey 单独放模型名按需覆盖。{ api: { baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, timeout: 120 }, model: { default: gpt-4o, coding: gpt-4o }, session: { dir: ~/.codex/sessions, maxFileMb: 50 }, logging: { level: info, retainDays: 7 } }两个文件里的api_key/apiKey是唯一需要你手动替换的地方。其余参数可以先用默认值跑通之后再按需微调。把这两个骨架存一份到你的笔记或密码管理器里以后换机器、重装系统都能五分钟重建环境。注意不要把 Key 直接提交到 Git 仓库。如果配置文件在项目目录里记得加进.gitignore。放在用户根目录的.codex下相对安全但也要避免截图外发。4. 九大高占用目录逐个拆解与清理脚本这一节是全文的核心。下面这张表把 Codex 在 Windows 上的主要占用目录、实测体积、风险等级和清理后果列清楚。删除前务必先完全退出 Codex 进程包括后台的 runner 和插件宿主。目录 / 文件实测占用风险清理后果.cache\codex-runtimes\codex-primary-runtime约 1.1 GBSAFE清空内容保留目录下次调用重新下载依赖.codex\logs_*.sqlite*约 3.2 GBSAFE全删仅丢失调试日志不影响使用.codex\sessions约 2.5 GBOPTIONAL 高危历史对话彻底消失不可恢复.codex\plugins\.plugin-appserver约 1.8 GBSAFE整个目录可删自动重建.codex\.sandbox\sandbox*.log约 1.6 GBSAFE只删 .log保留元数据.codex\.tmp约 1.5 GBSAFE清空内容保留目录.codex\.sandbox-bin\codex-command-runner*.exe约 1.2 GBSAFE 需规则只删旧版本保留最新和 codex.exe.codex\plugins\cache约 450 MBSAFE清空内容保留目录.codex\vendor_imports约 350 MBSAFE清空内容保留目录几个关键判断点展开说。sessions目录是唯一需要你停下来想一想的里面是你所有和 AI 的对话上下文、代码片段按2026\04、2026\05这样的月份分层存成.jsonl。如果你只是嫌占空间可以只删半年前的旧月份如果是转手电脑或重装那这个目录必须清空。.sandbox-bin下的 runner 是垃圾重灾区但绝对不能全删——必须按修改时间保留最新一份同时避开同目录的codex.exe本体误删会导致功能直接瘫痪。下面是可复制的 PowerShell 清理脚本。先关进程再执行。脚本里对 runner 做了时间排序保护只删旧的。# 1. 先关闭所有 Codex 相关进程 Get-Process | Where-Object { $_.ProcessName -like *codex* } | Stop-Process -Force # 2. 清理 SQLite 调试日志及附属文件-wal / -shm Remove-Item -Path $env:USERPROFILE\.codex\logs_*.sqlite* -Force -ErrorAction SilentlyContinue # 3. 清空 .tmp 同步残余保留目录本身 Remove-Item -Path $env:USERPROFILE\.codex\.tmp\* -Recurse -Force -ErrorAction SilentlyContinue # 4. 删除插件宿主程序副本 Remove-Item -Path $env:USERPROFILE\.codex\plugins\.plugin-appserver -Recurse -Force -ErrorAction SilentlyContinue # 5. 只删沙箱日志保留元数据 Remove-Item -Path $env:USERPROFILE\.codex\.sandbox\sandbox*.log -Force -ErrorAction SilentlyContinue # 6. 清空插件缓存保留目录 Remove-Item -Path $env:USERPROFILE\.codex\plugins\cache\* -Recurse -Force -ErrorAction SilentlyContinue # 7. 清空 vendor_imports保留目录 Remove-Item -Path $env:USERPROFILE\.codex\vendor_imports\* -Recurse -Force -ErrorAction SilentlyContinue # 8. 清空 primary-runtime 内容保留目录 Remove-Item -Path $env:USERPROFILE\.cache\codex-runtimes\codex-primary-runtime\* -Recurse -Force -ErrorAction SilentlyContinue # 9. 安全清理旧版 runner按修改时间排序保留最新一份 $runnerDir $env:USERPROFILE\.codex\.sandbox-bin $runners Get-ChildItem -Path $runnerDir -Filter codex-command-runner*.exe | Sort-Object LastWriteTime -Descending if ($runners.Count -gt 1) { $runners | Select-Object -Skip 1 | Remove-Item -Force -ErrorAction SilentlyContinue }脚本执行完用下面这行统计释放了多少空间# 统计 .codex 和 codex-runtimes 当前占用 {0:N2} GB -f ((Get-ChildItem $env:USERPROFILE\.codex,$env:USERPROFILE\.cache\codex-runtimes -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1GB)如果你不想手写这些匹配规则也可以用开源工具cx-clear做自动化扫描。它内置了对logs_*.sqlite通配符、runner 版本比对、目录保护清空内容保留目录的预设逻辑默认配置会避开sessions这类高危数据。获取方式在 GitHub 上搜moumoum0/cx-clear即可。手动脚本和自动化工具二选一核心原则都是SAFE 的放心删OPTIONAL 的想清楚再删受保护的一个都别碰。5. 验证请求确认清理后新会话能正常跑通清理完缓存最怕的是新会话起不来或者报一堆看不懂的错。所以清理后必须做一次完整的验证请求确认 TaoToken 通道和本地配置都正常。第一步检查配置文件还在不在。清理脚本没有动config.toml但保险起见确认一下Test-Path $env:USERPROFILE\.codex\config.toml # 返回 True 说明配置还在第二步用 curl 直接打一次 TaoToken 的 API验证 Key 和端点是否可用。这一步绕开 Codex 本身单独测通道curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -H Content-Type: application/json \ -d { model: gpt-4o, messages: [{role: user, content: ping}], max_tokens: 10 }如果返回里带choices字段说明 Key 和通道都没问题。如果返回 401检查 Key 是否复制完整返回 404检查 base_url 是不是多写了路径。第三步启动 Codex 发起一次真实会话观察三件事会话能否正常建立、模型回复是否正常、.codex\sessions下是否生成了新的.jsonl文件。新文件生成说明会话归档机制工作正常清理没有破坏目录结构。第四步如果你用的是支持模型对话的入口可以直接在 TaoToken 的模型对话页面做一次快速验证确认模型侧可用模型对话https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite这一步的好处是不依赖本地环境纯浏览器就能确认账号和模型权限正常。本地和线上都通了才算真正验证完成。6. 本篇常见错排查清理过程中最容易踩的坑基本集中在“删多了”和“删错了”两类。下面按现象倒推原因。现象一清理后 Codex 启动报错提示找不到 runtime。大概率是codex-primary-runtime目录本身被删了而不是只清空内容。这个目录启动时会做完整性校验目录必须存在。补救办法是手动重建空目录让 Codex 重新下载依赖New-Item -ItemType Directory -Path $env:USERPROFILE\.cache\codex-runtimes\codex-primary-runtime -Force现象二清理后插件列表加载不出来。这是.tmp或plugins\cache被清空后的正常现象下次同步时会自动重建。如果长时间不恢复检查网络是否能正常访问插件源或者手动触发一次同步。现象三误删了最新 runner功能瘫痪。这是最严重的情况。如果你执行脚本时没保留最新版本或者手动删了codex.exe需要重新安装 Codex 宿主程序来恢复。所以脚本里那段按时间排序保留最新的逻辑千万别图省事改成全删。现象四清理后 API 报 401 或 403。先确认config.toml里的api_key没有被误删或截断。如果 Key 本身没问题去 TaoToken 的 API Keys 页面确认这个 Key 是否还在启用状态、额度是否充足。排查入口API Keyshttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite现象五清理后空间没怎么变。检查是不是漏了sessions目录。这个目录往往占 2 GB 以上但因为它属于高危数据脚本默认没动。如果你确认不需要历史对话可以手动清空内容保留目录Remove-Item -Path $env:USERPROFILE\.codex\sessions\* -Recurse -Force -ErrorAction SilentlyContinue现象六.sandbox目录清理后沙箱起不来。说明你误删了setup_marker或 ACL 状态文件。这个目录只删.log文件其他一律保留。如果已经删了重新安装 Codex 或让它自动重建沙箱环境。7. 长期编码场景用 Coding Plan 固定通道减少反复清理如果你不是偶尔用一下而是每天都要跑编码任务、挂 Agent 长时间工作那清理缓存这件事会变成周期性动作。每次清完都要重新确认配置、重新验证通道很烦。更省事的做法是把接入层固定下来用 TaoToken 的 Coding Plan 作为长期编码任务的统一通道配置骨架一次写好之后清理只动数据目录不碰接入层。Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite这样分工很清晰TaoToken 负责 Key 管理、API 通道和额度Codex 本地只负责运行和会话归档。清理时你只需要按第 4 节的脚本处理 SAFE 目录config.toml和 Key 完全不用动。新会话起来直接走同一条通道不会因为旧配置残留而报错。最后给一个实用习惯把第 3 节的config.toml骨架存成一份config.toml.bak放在同目录每次大清理前复制一份。万一配置被误删一条命令就能恢复Copy-Item $env:USERPROFILE\.codex\config.toml.bak $env:USERPROFILE\.codex\config.toml -Force清理不是目的让环境保持干净且随时可用才是。把接入层固定住把数据层定期清这套组合跑下来C 盘空间和会话稳定性都能兼顾。