快照与撤销

适用 OpenCode V2 · 核验日期:2026-11-12。 来源:官方快照说明↗。本文为官方当前文档的中文操作指南;未在本站执行安装、认证或模型请求。

快照将近期会话回退与文件恢复结合,但不是 Git 提交、事务或备份。

# 使用流程#

/undo 暂存回退,恢复受影响文件,并将被移除的提示放回输入框。编辑提示并发送会确认回退;发送前 /redo 可以取消暂存回退。默认快捷键为 Ctrl+X 然后 U / R。也可选择早前消息并使用 Revert。

操作前先保存重要工作,之后检查:

bash
git diff --stat
git diff

# 捕获范围#

每个模型步骤开始前、记录成功或失败时,OpenCode 尝试捕获快照并记录变化路径。捕获是尽力而为,缺少任一快照时会话仍可继续,但该步骤可能无法恢复文件。

内容是否捕获
Git worktree 内当前活动目录下的已跟踪文件是
未被忽略、单个不超过 2 MiB 的未跟踪文件是
Git 忽略文件或大于 2 MiB 的未跟踪文件否
当前活动目录之外的文件否
Git 分支、提交、数据库、进程和网络副作用否

在 packages/app 开启会话并不意味着能恢复整个仓库。非 Git 目录可回退会话历史,但不能恢复文件。

# 恢复会覆盖什么#

回退只处理被归因于选定边界之后代理步骤的路径,恢复到首次被回退步骤之前的状态;后来创建的文件可能被删除。这些路径上你之后手动编辑的内容也可能被覆盖。会话运行时回退会被拒绝,但外部编辑器仍可能并发修改工作区。

快照在 OpenCode 数据目录的独立内部 Git 对象库保存,不创建项目提交、不移动分支。快照可能包含完整源码,应作为敏感本地数据保护。

# 关闭捕获#

json
1{
2  "$schema": "https://opencode.ai/config.json",
3  "snapshots": false
4}

V2 字段是复数 snapshots。关闭后不再捕获新的文件快照,但不会删除已有快照;会话回退仍存在。确认回退也不是安全擦除:持久会话历史和已有快照仍保留。