必须同时设置"extensions.autocheckupdates": false和"extensions.autoupdate": false并完全重启vscode,否则启动时仍会同步请求marketplace.visualstudio.com导致卡顿10–30秒。

VSCode在离线状态下启动卡住,**几乎全是网络探测行为未被禁用导致的同步阻塞**,不是插件没装好,也不是机器慢。核心问题就一个:它默认要连 marketplace.visualstudio.com 检查扩展更新,而断网时这个请求会卡死 10–30 秒,UI 完全无响应。
为什么“正在检查扩展更新”会卡住整个启动
VSCode 主进程在启动初期会同步发起 HTTP 请求,遍历所有已安装扩展(不管是否启用),向 https://marketplace.visualstudio.com 查询版本信息。离线时 DNS 解析失败或 TCP 连接超时,系统级 socket 阻塞无法被 JS 层中断,UI 线程就被挂起。
- 即使你从没开过自动更新,只要
extensions.autoCheckUpdates是true(默认值),就一定会触发 - 禁用插件没用——只要插件已安装,VSCode 就会尝试连市场
- 开发者工具 Network 标签页能看到大量
pending的 marketplace 请求
必须同时关闭两个配置项才有效
只关 extensions.autoUpdate 不够,必须连带关掉 extensions.autoCheckUpdates。GUI 设置容易漏掉后者,推荐直接改 settings.json:
"extensions.autoCheckUpdates": false, "extensions.autoUpdate": false
- 路径:Windows 是
%APPDATA%\Code\User\settings.json,macOS 是~/Library/Application Support/Code/User/settings.json,Linux 是~/.config/Code/User/settings.json - 改完必须完全退出 VSCode(包括托盘图标右键「退出」),再重启,热加载不生效
- 若公司用了组策略(GPO/MDM),还需确认
extensions.gallery.serviceUrl是否被设为空或内网镜像地址;否则解析失败可能更卡
离线环境还可能触发的其他卡点
除了市场检测,语言类插件和调试器也会在离线时静默卡住,但表现不同:
-
ms-python.python或volarjs.volar首次打开文件卡在 “Starting…”:不是插件没装,是它试图拉取pyright或volar-serverLSP 二进制,需整目录迁移(含node_modules和dist) - 调试器(
pwa-node)F5 后断点灰掉、无输出:在launch.json里加"skipFiles": ["<node_internals>"]</node_internals>和"resolveSourceMapLocations": [] - 启动后欢迎页空白或无限转圈:检查用户目录路径是否含中文或 OneDrive 同步文件夹,可临时用
code --user-data-dir="/tmp/vscode-test"测试
真正麻烦的从来不是“怎么关联网”,而是关完之后发现某个插件内部还藏着没暴露的网络调用——比如语言服务器硬编码了 registry 地址,或者 source map 路径指向远程 CDN。这些得靠启动时开开发者工具(Ctrl+Shift+P → Developer: Toggle Developer Tools),切到 Console 或 Network 才能揪出来。











