Local History插件是VSCode唯一落地的自动快照方案,它在项目根目录生成.history/文件夹,每次保存前存带时间戳副本,但仅监控已打开文件、依赖files.autoSave配置、不兼容软链接、需排除.gitignore且须手动备份settings.json等配置。

VSCode 插件私有云部署本身不提供自动备份能力,所有备份必须由你主动配置本地机制或借助插件实现;所谓“私有云部署”只影响插件后端服务位置,不影响 VSCode 本体的配置存储逻辑。
Local History 插件是唯一能落地的自动快照方案
它不依赖网络、不上传云端,在项目根目录生成 .history/ 文件夹,每次保存前自动存一份带时间戳的副本。适合防误删、回退局部修改,但有几个硬限制必须清楚:
- 只监控「当前已打开」的文件——没在编辑器里打开的
.js或.py不会记录 - 快照触发严格绑定
files.autoSave行为:设成"onFocusChange"最稳妥;"afterDelay"有崩溃丢修改风险 - 不兼容符号链接(symlink)目标文件,如果项目用软链指向
src,.history/不会跟踪真实路径 -
.history/必须被排除在.gitignore外,否则git clean -fd会清空全部快照
settings.json 和插件私有配置必须手动留底
私有云部署时,你大概率要批量修改多个插件的 baseURL、apiKey、model 字段。这些都写在 settings.json 或插件专属配置文件里(如 CodexChat 的 codex.dataPath),改错后无法靠重启恢复:
- 备份命令建议用带时间戳的脚本:
cp "$HOME/Library/Application Support/Code/User/settings.json" "settings-$(date +%Y%m%d-%H%M%S).json"(macOS) - 别只备份
settings.json:还要抓keybindings.json、snippets/目录、以及插件可能写的独立 JSON(比如taotoken.net配置常存在taotoken.settings.json) - 恢复时先关掉 Settings Sync(
"sync.enable": false),否则云端会覆盖你刚还原的本地配置
插件数据目录迁移需同步更新配置项
像 CodexChat 这类管理本地会话的插件,其读取路径由 codex.dataPath 控制,默认是 $HOME/.codex。如果你把私有云后端部署在内网 NAS 上,并把历史会话挪到了 /mnt/nas/codex-history,光拷贝文件不够:
- 必须进 VS Code 设置,搜
codex.dataPath,改成新路径;否则插件仍读旧目录,列表为空 - 路径中含空格或中文时,VS Code 会静默失败,建议全用英文下划线命名
- 权限问题常见:NAS 挂载点若用
uid=1000,gid=1000挂载,但当前用户 UID 不是 1000,插件会无权限读取——用ls -l /mnt/nas/codex-history确认属主
最易被忽略的是插件私有配置与 VS Code 版本的耦合性:比如 volar.enableTakeOverMode 在 1.110+ 版本后才支持 Vue 3.3 宏推导,而你的私有云部署脚本若固化了旧版配置,恢复后类型提示就直接失效。这类细节不会报错,只会让你花半天排查“为什么智能提示没了”。


















