插件更新卡在99%时,.extensions-tmp是罪魁祸首;需彻底退出vscode后删除该临时目录及extensions下以-cache结尾的残留文件夹,再重启以触发重新下载解压。

插件更新卡在99%时,.extensions-tmp 是罪魁祸首
VSCode 显示“Installing…”停在 99%,不是下载慢,而是解压 .vsix 包时写入临时目录失败。它会在 %USERPROFILE%\.vscode\.extensions-tmp(Windows)或 ~/.vscode/.extensions-tmp(macOS/Linux)里创建未完成的解压内容,一旦被杀软拦截、权限不足或进程残留占用,就会静默卡住。
常见表现:Extensions: Install from VSIX 拖入后进度条走完但无反应;在线安装按钮变灰、右下角提示一直挂着;任务管理器中 Code Helper 进程 CPU 突增后停滞。
- 删前必须彻底退出 VSCode:Windows 查
Code.exe、Code Helper.exe、node.exe;macOS 用活动监视器搜Code;Linux 执行pkill -f "code" - 删完别急着重启——要清空该目录后再启动,否则 VSCode 可能复用损坏缓存继续卡住
- 若反复卡住,顺手检查
~/.vscode/extensions/下是否残留-cache或-old后缀的半成品文件夹(如ms-ceintl.v-2024.1-cache),一并清理
插件更新中断后,-cache 后缀文件夹必须手动删
Python、TypeScript 等语言类插件(如 ms-python.python、ms-vscode.vscode-typescript-next)更新失败时,不会删掉旧的 -cache 目录,反而会留下损坏的解压副本。VSCode 启动时优先加载它,结果就是“无法启动语言服务器”“跳转定义失败”“格式化无响应”。
这些目录不是插件本体,只是运行时缓存产物,和主扩展目录完全分离:
-
~/.vscode/extensions/ms-python.python-2024.12.0-cache→ 必须删 -
~/.vscode/extensions/ms-python.python-2024.12.0→ 绝对不能碰,这是插件本身 - 路径规律统一:所有平台都落在
~/.vscode/extensions/下,只匹配-cache$结尾的文件夹名 - 删完重启,VSCode 会自动重下最新版、重新解压,比禁用再启用更干净
卸载插件后,settings.json 和 globalStorage 里的残留还在
插件卸载不等于配置清除。很多插件(比如 esbenp.prettier-vscode、hediet.vscode-drawio)会在全局 settings.json 里写配置项,卸载后这些键值仍存在,重装时直接继承,甚至引发冲突。
同样,API 密钥、历史对话、语言服务器快照等私有数据,会藏在 globalStorage 里,不清就“复活”:
- 打开
Preferences: Open Settings (JSON),搜索插件 ID(如prettier.、python.defaultInterpreter),整行删除;注意嵌套结构(比如"python": { ... }下的子字段) -
globalStorage路径:%APPDATA%\Code\User\globalStorage(Windows)、~/Library/Application Support/Code/User/globalStorage(macOS)、~/.config/Code/User/globalStorage(Linux)→ 按插件 ID 搜索子文件夹,直接删 - 部分插件还会在
%LOCALAPPDATA%(Windows)或/tmp(Linux/macOS)建独立缓存目录,得查文档确认
命令行一键清理比手动翻路径靠谱,但要注意平台差异
手动找路径容易漏,尤其你用过 Remote - WSL、Insiders 版,或多用户共用一台机器。PowerShell(Windows)或 Bash(macOS/Linux)一行命令就能覆盖关键点,且不误伤配置。
Windows PowerShell 示例:
Get-ChildItem "$env:APPDATA\Code\Cache" -Recurse | Remove-Item -Force -Recurse
Get-ChildItem "$env:APPDATA\Code\GPUCache" -Recurse -ErrorAction SilentlyContinue | Remove-Item -Force -Recurse
Get-ChildItem "$env:USERPROFILE\.vscode\extensions" | Where-Object {$_.Name -match '-cache$'} | Remove-Item -Recurse -Force
macOS/Linux Bash 示例:
rm -rf ~/.cache/Code
rm -rf ~/.config/Code/WorkspaceStorage/*
find ~/.vscode/extensions -name "*-cache" -type d -exec rm -rf {} +
- 务必先杀光所有 Code 进程,否则命令看似执行成功,空间却没释放(文件句柄被锁)
- Linux/macOS 上
rm -rf不会提示确认,建议加-v参数先看删了哪些 - 如果用过 Remote - WSL,必须先在 VSCode 里执行
Remote-WSL: Close Remote Connection,再终端运行wsl --shutdown
真正难清理的不是缓存目录,而是插件自己写的、不在标准路径下的私有数据——比如某些终端增强插件会在 %LOCALAPPDATA% 建独立目录,这类得查源码里 context.globalStoragePath 或 context.storagePath 的实际落盘逻辑。











