必须同时设"update.mode":"none"和"update.enablewindowsbackgroundupdates":false(win)或对应平台后台禁用项,否则vs code仍会偷偷下载;部分扩展如remote-server还绕过主更新机制独立拉取组件。

禁用自动更新后,VS Code 还会偷偷下载吗
会。即使关闭了自动更新 UI 提示,update.mode 设为 none 仅阻止弹窗和界面检查,但后台仍可能触发静默下载——尤其是当 Remote-WSL、GitHub Pull Requests 等扩展自带更新逻辑时。
根本原因在于 VS Code 的更新机制分两层:主程序更新由 update.mode 控制;而部分扩展(如 ms-vscode.remote-server)会独立拉取服务端组件,不走主更新通道。
- 验证是否真被禁用:打开命令面板
Ctrl+Shift+P,执行Developer: Open Process Explorer,观察是否有update或electron-updater相关进程在后台运行 - 彻底阻断方法:在
settings.json中同时设置两项
"update.mode": "none", "update.enableWindowsBackgroundUpdates": false
后者是 Windows 平台专属开关,禁用系统级后台服务;macOS/Linux 用户需额外检查 ~/Library/Application Support/Code/Cache(macOS)或 ~/.config/Code/Cache(Linux)中是否存在持续增长的 update 目录。
为什么关掉自动更新后内存反而升高
常见于 WSL2 环境:VS Code 启动时若检测到有可用更新,会预加载更新检查模块并缓存元数据,但因网络策略或代理限制无法完成下载,导致该模块长期驻留、反复重试,RSS 内存缓慢爬升至 400MB+。
这不是“没关掉”,而是“卡在半途”。典型表现是:Extension Host 进程内存稳定在 600–900MB,且 Developer: Open Process Explorer 中能看到 update 子进程 CPU 占用忽高忽低。
- 临时缓解:完全退出 VS Code(包括托盘图标),再以
code --disable-updates启动 - 永久生效:在
.vscode/settings.json(项目级)或用户级settings.json中加入上文双配置,并确保remote.SSH.enableAgentForwarding等远程扩展未开启自动升级钩子 - WSL2 用户额外操作:编辑
/etc/wsl.conf,添加[boot] command="systemctl stop apt-daily.service apt-daily.timer",防止 Linux 侧定时任务干扰
替代方案:用离线包 + 手动更新更省资源
自动更新本质是持续轮询 + 下载 + 解压 + 校验,对带宽、磁盘 I/O 和内存都是负担。尤其在 CI/CD 流水线或开发机无外网时,手动更新反而更可控、更轻量。
- 获取离线安装包:访问 https://www.php.cn/link/9c0d831dc32bb90f9dfb3796b21cb313,找到对应平台版本号(如
1.93.1),下载.tar.gz(Linux)、.zip(Windows)或.tar.gz(macOS)包 - 替换流程(Linux/macOS):解压后直接覆盖原安装目录,无需卸载;Windows 用户可解压到新路径,修改快捷方式指向新
Code.exe - 关键优势:跳过所有后台检查逻辑,启动瞬间完成,
update模块零加载,实测渲染进程内存下降 120–180MB
真正要防的不是“更新”本身,而是它引发的不可见后台行为——比如静默下载卡住、失败重试堆积、跨进程校验锁竞争。手动更新把控制权拿回来,反而最接近“零开销”。











