Codex长期使用会缓存冗余类型定义,导致TS服务卡顿、跳转错乱或“Duplicate identifier”报错;需通过tsc诊断识别未引用文件,用codex-typedef prune清理~/.codex/types_cache中临时/过期缓存,并手动比对删除node_modules/@types中未声明的孤立包。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Codex在长期使用过程中会自动缓存大量类型定义(Type Definitions),尤其是通过npm install @types/、tsc --init自动生成、或AI补全时临时注入的.d.ts文件,这些定义若未被项目引用却保留在node_modules/@types或~/.codex/types_cache中,会导致TS语言服务卡顿、跳转错乱、甚至编译报错“Duplicate identifier”。
识别并定位冗余类型定义
先确认哪些类型定义是真正被项目引用的:在项目根目录下运行 tsc --noEmit --watch --diagnostics,观察输出中是否出现类似File 'node_modules/@types/lodash/index.d.ts' is not required by any source file的提示——这类就是可清理目标。
接着检查 Codex 自建的类型缓存目录:【~/.codex/types_cache 是 Codex 独立维护的类型索引库,与 node_modules/@types 完全隔离,删错不会影响 npm 安装的类型,但会重置 Codex 的智能补全上下文】。
执行 find ~/.codex/types_cache -name "*.d.ts" -type f | head -20 查看前20个缓存文件名,重点留意含 temp_、fallback_、unnamed_ 或时间戳早于30天的文件。
用 codex-typedef CLI 批量清理未引用类型
方法一:按项目路径精准清理
进入你的项目目录 → 运行 codex-typedef prune --cwd . --dry-run 查看将被删除的类型列表 → 若无误,去掉 --dry-run 参数执行真实清理。
方法二:全局扫描并保留最近7天活跃项目所用类型
运行 codex-typedef prune --keep-recent 7。该命令会遍历所有已知项目工作区,提取其 tsconfig.json 中 types 字段和 node_modules/@types 引用关系,仅保留与之匹配或被 Codex 最近7天内主动加载过的类型定义。
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
注意:此操作会同步更新 ~/.codex/types_cache/index.db,删除后首次启动 Codex 可能有1~2秒延迟重建索引。
手动清除 node_modules/@types 中的孤立包
第一步:生成当前项目实际依赖的类型包白名单
在项目根目录运行:npx ts-node -e "console.log(Object.keys(require('./package.json').devDependencies || {}).filter(k => k.startsWith('@types/')).join('\n'))" → 复制输出结果。
第二步:比对并删除未列在白名单中的 @types 包
进入 node_modules/@types 目录 → 执行:ls -1 | grep -v -F -f /dev/stdin → 将上一步复制的白名单内容粘贴进终端 → 回车 → 终端将列出所有未被声明但实际安装的类型包。
第三步:安全删除
对上一步输出的每个包名(如 lodash-es),执行:rm -rf lodash-es。这一步不涉及 package.json 修改,也不会触发 npm uninstall 的依赖解析,【务必确保当前目录确实是 node_modules/@types,否则可能误删项目源码】。

















