离线环境vscode智能补全需同步部署lsp、类型定义、本地模型及路径映射;仅装.vsix无效,必须用marketplace api批量下载含microsoft.visualstudio.code.native依赖的最新版本,并彻底退出vscode刷新缓存。

离线环境里想让 VSCode 补全真正“智能”,光下几个 .vsix 文件远远不够——关键得把语言服务器(LSP)、类型定义、本地模型和路径映射一起带进来,否则补全会卡在 “Downloading…” 或只显示变量名。
怎么批量下载插件及其 native 依赖
手动点 Marketplace 的 Download 按钮不可靠:链接 24 小时失效、版本滞后、不包含 LSP 二进制。必须用 Marketplace API 批量拉取最新版 + 依赖清单。
- 调用
_apis/public/gallery/extensionquery接口,传入filters和flags,能拿到每个插件的versions[0].files列表,其中含downloadUrl和assetType: "Microsoft.VisualStudio.Code.VSIX"或"Microsoft.VisualStudio.Code.Native" - 重点抓
Microsoft.VisualStudio.Code.Native类型的 asset:比如ms-python.python对应的pyright,esbenp.prettier-vscode对应的prettierCLI,这些才是离线补全生效的命脉 - 别信
package.json里的engines.vscode字段就完事——还得比对extensionPack里声明的子插件版本,比如ms-python.python依赖ms-toolsai.jupyter,漏一个,Jupyter 单元格内 Python 补全就残缺
装完插件但 os. 或 axios. 不出方法?检查这三处
不是插件没装上,是类型信息链断了。VSCode 补全靠的是“LSP → 类型定义 → 项目配置”三级传导,任一环离线缺失都会退化为仅词典式补全。
-
python.languageServer必须设为"Pylance"(不能是"Default"或"Jedi"),且python.defaultInterpreterPath指向已安装types-requests等 stubs 的虚拟环境 - JS/TS 项目根目录必须有
jsconfig.json或tsconfig.json,哪怕内容只有{}——没有它,VSCode 就不会加载@types/node或@types/react,process.env.就永远空着 - 确认
typescript.tsdk路径指向工作区实际使用的tsc版本目录(如./node_modules/typescript/lib),而非全局安装路径;否则Array.prototype.map能补,但MyCustomHook类型完全不出现
editor.inlineSuggest.enabled 开了但没建议?优先关掉冲突插件
多个 inline suggest 插件同时启用会抢通道,导致建议面板空白、输入卡顿或状态栏一直转圈。这不是性能问题,是事件监听器打架。
- Windsurf、Copilot、TabNine 都走
editor.inlineSuggest通道,但 Copilot 默认开启github.copilot.inlineSuggest.enable,Windsurf 默认监听onType,二者共存时按.后建议框常为空白 - 验证方式:打开命令面板 → 运行
Developer: Toggle Developer Tools→ 切到 Console 标签,输入await vscode.languages.getInlineCompletions,若返回undefined或报错Multiple providers registered,就是冲突了 - 强制指定主力:设
github.copilot.inlineSuggest.enable为false,tabnine.experimentalAutoImports为false,只留windsurf.inlineSuggest.enable为true;重启 VSCode 后再试fetch(是否自动补全参数签名
离线复制插件目录后补全仍失效?别忘了刷新 extension host 缓存
VSCode 不会自动 reload 已安装插件的 native 依赖路径。你拷了整个 ms-python.python-2024.6.0/ 目录,但它可能还在用旧缓存里的 pyright 地址。
- 必须彻底退出 VSCode:右键任务栏图标 → 退出,或 macOS 上执行
killall -9 Electron,Windows 上用任务管理器杀掉所有Code.exe进程(包括后台托盘进程) - 启动后不要立刻开文件——先按
Ctrl+Shift+P输入Developer: Reload Window,等窗口闪一下再打开.py或.ts文件 - 验证是否真加载:打开命令面板 →
Developer: Toggle Developer Tools→ Console 里搜Starting language server,看到类似Starting Pyright language server...且无ENOENT报错才算成功











