首先要明确:CodeGeex 并没有清理 import 的功能。许多开发者习惯在 VS Code 中输入 /clean-imports 命令,期待一键删除未使用的引用,但实际上这只是一种误解——CodeGeex 是由远端大模型驱动的代码生成插件,它无权访问当前文件的 AST(抽象语法树),无法判断某个 import 是否被实际引用。它不监听保存事件,不接入 VS Code 的 code action 机制,也不与 TypeScript 或 Python 的语言服务进行通信。当你输入该指令时,它最多只能补全一段包含 import 的新代码,甚至可能将已删除的模块重新引入。
虽然状态栏显示“CodeGeex Ready”,但这只是一个连接成功的提示,与 ESLint、Pylance 等静态分析工具有本质区别。要实现有效的 import 清理,必须依靠原生工具链。

CodeGeex 为何无法清理 import 的深层原因
根本原因在于,CodeGeex 插件本质上只是一个远程代码生成模型的外壳。它既没有读取当前文件 AST 的权限,也无法判断某个 import 是否被实际引用;它不监听保存事件,不响应 editor.codeActionsOnSa ve 配置,也不与 TypeScript 或 Python 的语言服务进行通信。当你在编辑器中输入 /clean-imports 或类似指令时,CodeGeex 只会尝试补全一段包含 import 的新代码——甚至可能将以前已删除的模块重新写回。这也正是不少用户在论坛上反馈“CodeGeex 越清理越乱”的主要原因。
这里需要注意一个细节:当状态栏显示“CodeGeex Ready”时,不少用户会直观地认为它具备重构能力。但实际上那只是一个心跳信号,表明它已连接至服务器,与 ESLint、Pylance 等静态分析工具存在本质区别。
彻底清理 import 的可靠方案
如果你正在使用 TypeScript 或 TSX,最简便的方式是让 VS Code 在保存文件时自动执行清理操作。
方法一:启用保存时自动组织导入(适用于 TS/TSX)
第一步:按下 Ctrl + , 打开设置面板,然后点击左下角的「打开 settings.json」。
第二步:在打开的 JSON 文件中添加以下配置(注意必须使用对象结构,而非布尔值):
"editor.codeActionsOnSa ve": {
"source.organizeImports": true
}
第三步:保存 settings.json 文件,然后重新打开一个已保存的 .ts 文件,进行修改后按下 Ctrl + S 保存,观察 import 行是否被自动重排并删除未使用的项。
此功能仅对 .ts 和 .tsx 文件提供原生支持,由 TypeScript 服务自动处理。如果是 .js 文件,则需要配合 JSDoc 注解才有可能生效,否则很可能直接跳过删除操作——可以理解为 TypeScript 团队默认开发者在编写 .js 文件时对 import 整洁度的要求不那么严格。
方法二:手动触发 Organize Imports(支持多种语言)
在操作前,请确保当前文件已保存,并且右下角的语言模式正确(例如显示“TypeScript”,而非“Plain Text”)。然后按下 Ctrl + Shift + P 打开命令面板,输入“Organize Imports”,回车执行。如果该命令显示为灰色不可用,说明语言服务未正常加载:请检查文件是否为 untitled-1,是否缺少 tsconfig.json 或 jsconfig.json,以及 Pylance 是否已启用 Python 支持。上述任何一个条件不满足,该命令都可能无法执行。
方法三:Python 项目的专门清理流程
Python 并未提供像 TypeScript 那样开箱即用的 import 组织功能,但我们可以组合多种工具来实现类似的清理效果。
首先安装 pylint:pip install pylint。接着在 settings.json 中启用 linting 功能:
"python.linting.enabled": true,
"python.linting.pylintEnabled": true
Pylance 可以帮助检测未使用的 import,并将其显示为灰色,但不会自动删除。你需要根据 pylint 报告的 W0611 警告逐行手动移除,或者直接使用 autopep8 进行批量处理:
autopep8 --in-place --aggressive --aggressive your_file.py
使用两个 --aggressive 选项可以让 autopep8 更加彻底地清理,包括移除那些不常用的 import。但建议在执行前先备份文件——autopep8 有时可能会误删你确定有用的模块。
综上所述,清理 import 的任务,依赖 AI 代码补全插件并不可靠。踏实地使用 VS Code 内置功能,或者结合 pylint 与 autopep8,才是切实可行的解决方案。
