补全失效时先看语言服务有没有跑起来:VSCode补全依赖语言服务(LSP)运行,右下角需显示Python/TS/JS等正确语言模式而非Plain Text,Console中查Failed to start language server报错,确认Pylance或tsserver已启动且项目有tsconfig.json/jsconfig.json等必要配置。

补全失效时先看语言服务有没有跑起来
VSCode 的补全不是靠“开关”控制的,而是依赖背后的语言服务(Language Server)是否正常运行。常见现象是输入 console. 没反应、df. 不弹 dropna()、req. 看不到 body 或 query —— 这往往不是插件没装,而是语言服务压根没启动或挂了。
- 右下角状态栏检查语言模式:必须是
Python、TypeScript、JavaScript等,不能是Plain Text - 打开命令面板(
Ctrl+Shift+P),运行Developer: Toggle Developer Tools,切到 Console 标签页,看是否有类似Failed to start language server for python的报错 - 对 Python 项目,确认已安装
Python和Pylance扩展,并在设置中验证"python.languageServer": "Pylance" - 对 TS/JS 项目,确保工作区有
tsconfig.json或jsconfig.json;没有的话,补全退化为纯字符串匹配,不识别类型或跨文件引用
函数参数不显示?大概率缺类型锚点
补全能列出函数名,但光标停在括号里不显示参数名和类型(只显示 (args)),说明语言服务“知道有这个函数”,但不知道它长什么样。这不是插件问题,是类型信息缺失。
- Python 中未标注类型时,
Pylance只能靠 stubs 或运行时推断:给函数加类型注解最直接,例如def load_config(path: str) -> dict: - JS/TS 中没写
JSDoc或没导入模块,也会丢参数:补上/** @param {string} url */或确认import axios from 'axios'已存在 - 第三方库(如
pandas、express)需安装对应类型包:pip install types-pandas或npm install @types/express - 避免用
any、Function或eval,它们会切断类型链,让参数提示彻底消失
AI 补全插件之间会打架,别同时开 Copilot 和 TabNine
两者都监听 onType 事件、劫持 editor.suggest 面板,同时启用后常见症状:输入 use 弹空白框、按 Ctrl+Space 卡顿 2 秒、内联建议和下拉列表互相覆盖。
- 只留一个主力:前端项目优先选
Github Copilot(React/Vue/TS 上下文理解更强);纯脚本或隐私敏感场景用TabNine(支持本地模型,不传代码) - 关掉另一个的自动触发:设
"tabnine.experimentalAutoImports": false或"github.copilot.inlineSuggest.enable": false - 冲突验证方法:DevTools Console 里输入几下触发补全,看是否出现
Extension host terminated unexpectedly -
IntelliCode和Dify属于“增强型”,不抢主控权,可与 Copilot 共存,但 Dify 需确保本地模型已加载(首次使用会延迟 1–2 秒)
跨文件补全失败?检查路径解析和 AST 索引是否到位
比如在 main.py 里输入 user_service. 却看不到 get_user_by_id(),或者 TS 中调用 utils/formatDate 不提示参数 —— 这不是补全“坏了”,是项目结构没被语言服务正确索引。
- Python 的
Pylance默认只索引当前工作区,若模块在子目录或通过sys.path动态添加,需在settings.json加"python.defaultInterpreterPath"或配置pyrightconfig.json - TS/JS 的路径别名(如
@/hooks)补全失效,通常因eslint-plugin-import的import/resolver没配:确保.eslintrc.js里有node: { paths: ['src'] } - Dify、Copilot 等 AI 插件依赖 AST 解析实现跨文件理解,若项目含大量动态 import 或
require()字符串拼接,它们会跳过这些调用链,不提供补全 - Monorepo 场景下,每个子包必须单独有
tsconfig.json或pyproject.toml,父级配置不继承
真正卡住补全的,从来不是“怎么开开关”,而是语言服务拿不到足够上下文——类型没写、配置漏了、路径没认对、模型没加载。补全越智能,对项目结构和类型完备性的依赖就越硬。


















