codex通过静态语法树解析与动态执行路径分析交叉验证,精准区分运行依赖和闲置依赖;运行依赖需满足模块初始化路径、条件分支覆盖及导出符号可达性三重条件,闲置依赖则仅存在于导入语句中且无调用链指向其导出项。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要准确识别项目中哪些依赖是运行时真正加载的、哪些只是被声明却从未实际调用的,不能只看package.json里的dependencies列表——Codex通过多层静态与动态分析交叉验证来区分运行依赖和闲置依赖。
依赖分类的底层逻辑
CodeX不会把import语句或require()调用直接等同于“运行依赖”。它先做语法树解析,再结合模块初始化路径、条件分支覆盖、导出符号可达性三重判断。比如一个模块A里写了import { unusedFn } from './utils',但整个项目没有任何地方调用unusedFn,且utils模块的default导出也未被引用,这个导入就会被标记为【闲置依赖】,不计入运行依赖图。
动态导入(import())和环境判断导入(如if (process.env.NODE_ENV === 'dev') require('eslint'))会被归入“弱依赖池”,仅当Codex检测到对应环境变量真实生效、或该动态路径在运行时被实际触发过,才提升为运行依赖。
查看当前项目的依赖分类结果
在Codex桌面应用中打开项目,点击左下角“项目上下文”面板 → “依赖分析”标签页 → 点击右上角刷新按钮。
界面会立即展示两个并列卡片:“运行依赖(Active)”和“闲置依赖(Idle)”。前者列出所有被至少一个执行路径实际加载的模块,后者显示仅存在于源码导入语句中、但无任何调用链指向其导出项的模块。
注意:闲置依赖卡片顶部有一行小字提示:“含未启用的devDependencies与peerDependencies”。这意味着它不会把仅用于开发构建的包(如vite、@types/react)误判为运行依赖,也不会因peer依赖缺失而报错。
用CLI命令精准提取闲置依赖列表
方法一:导出纯文本清单
在项目根目录终端中执行:codex analyze --idle-deps --format=text
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
方法二:生成可删除建议脚本
运行:codex analyze --idle-deps --suggest-remove
这会输出一段npm rm命令组合,例如:npm rm @babel/polyfill lodash-es --save-dev。执行前请确认这些包确实未被任何构建插件或运行时代码引用——【误删peer依赖可能导致TypeScript类型检查失败】。
验证某个模块是否属于运行依赖
第一步:在Codex中打开任意一个引用了该模块的文件
第二步:将光标悬停在import语句或require()调用上,等待3秒
第三步:弹出的悬浮窗中若显示“✅ 已在启动路径中解析”或“✅ 被3个入口文件加载”,即为运行依赖;若显示“⚠️ 仅声明,无调用链”或“? 未发现导出项使用”,则为闲置依赖
第四步:点击悬浮窗右下角的“追踪调用链”按钮,可跳转至首个实际调用该模块导出函数的位置。如果跳转失败或列表为空,基本可判定为闲置依赖。










