同步失败时必须删除sessions目录,因其存储待同步变更快照,损坏或残留冲突哈希会导致同步卡死、插件不启用、settings.json自动还原;而extensions目录无需全删,仅需针对性清理问题插件缓存子目录。

需要清理本地缓存——但仅在出现同步异常、插件不更新、设置反复回滚或登录后配置未拉取时才必须做。正常同步状态下直接开启不会出问题,强行清理反而可能丢掉未上传的本地变更。
同步失败时为什么必须删 sessions 目录
VSCode 的 Settings Sync 在本地维护一个会话快照机制,所有待同步变更都先写入 %APPDATA%\Code\User\sessions(Windows)或 ~/Library/Application Support/Code/User/sessions(macOS)。这个目录一旦损坏或残留旧设备的冲突哈希,就会卡住同步流程,表现为:
- 登录后“正在同步…”状态持续数分钟无进展
- 扩展列表显示已安装,但实际未启用或图标灰显
- 修改
settings.json后几秒内自动还原为旧值
删掉整个 sessions 文件夹是最直接的重置方式,VSCode 重启后会重建干净会话,强制从云端拉取最新快照。
extensions 缓存要不要清
不需要清 %USERPROFILE%\.vscode\extensions 整个目录,除非你确认是某个插件的本地缓存导致行为异常(比如 Prettier 格式化突然失效、ESLint 报错路径找不到)。更安全的做法是:
- 用
code --list-extensions检查已安装列表是否与云端一致 - 对疑似问题插件单独执行
code --uninstall-extension author.name再重装 - 只清理插件自己的缓存子目录(如
.vscode/extensions/esbenp.prettier-vscode-9.12.0/cache/),而非整个extensions
全删 extensions 会导致所有插件重装,耗时且可能触发版本兼容问题——尤其当你用的是 Insiders 版本时。
同步前最该检查的三个配置项
很多“同步后配置不对”的问题,其实和缓存无关,而是以下三项在同步前没手动校验:
-
"python.defaultInterpreterPath":路径硬编码了旧机器的 Python 位置,同步后在新设备上直接失效,应改用python.defaultInterpreterPath": "./venv/bin/python"或留空让 VSCode 自动探测 -
"files.associations":比如把.ts关联到javascript语言模式,会破坏 TypeScript 特性,这类项目级关联应写在.vscode/settings.json而非全局 -
"editor.fontFamily":字体名在 macOS / Windows / Linux 上拼写不同(如"Fira Code"vs"FiraCode"),同步前建议统一用引号包裹并确认目标系统已安装
这些字段不会报错,但会让同步后的编辑器“看起来一样,用起来不对”——比缓存问题更难定位。
真正麻烦的不是缓存本身,而是缓存掩盖了配置逻辑错误。删完 sessions 能解决 70% 的同步卡死,但剩下 30% 的“同步成功却不好用”,几乎都出在路径、关联、字体这类跨平台敏感字段上。











