快照与撤销
适用 OpenCode V2 · 核验日期:2026-11-12。 来源:官方快照说明↗。本文为官方当前文档的中文操作指南;未在本站执行安装、认证或模型请求。
快照将近期会话回退与文件恢复结合,但不是 Git 提交、事务或备份。
# 使用流程#
/undo 暂存回退,恢复受影响文件,并将被移除的提示放回输入框。编辑提示并发送会确认回退;发送前 /redo 可以取消暂存回退。默认快捷键为 Ctrl+X 然后 U / R。也可选择早前消息并使用 Revert。
操作前先保存重要工作,之后检查:
bashgit diff --stat git diff
# 捕获范围#
每个模型步骤开始前、记录成功或失败时,OpenCode 尝试捕获快照并记录变化路径。捕获是尽力而为,缺少任一快照时会话仍可继续,但该步骤可能无法恢复文件。
| 内容 | 是否捕获 |
|---|---|
| Git worktree 内当前活动目录下的已跟踪文件 | 是 |
| 未被忽略、单个不超过 2 MiB 的未跟踪文件 | 是 |
| Git 忽略文件或大于 2 MiB 的未跟踪文件 | 否 |
| 当前活动目录之外的文件 | 否 |
| Git 分支、提交、数据库、进程和网络副作用 | 否 |
在 packages/app 开启会话并不意味着能恢复整个仓库。非 Git 目录可回退会话历史,但不能恢复文件。
# 恢复会覆盖什么#
回退只处理被归因于选定边界之后代理步骤的路径,恢复到首次被回退步骤之前的状态;后来创建的文件可能被删除。这些路径上你之后手动编辑的内容也可能被覆盖。会话运行时回退会被拒绝,但外部编辑器仍可能并发修改工作区。
快照在 OpenCode 数据目录的独立内部 Git 对象库保存,不创建项目提交、不移动分支。快照可能包含完整源码,应作为敏感本地数据保护。
# 关闭捕获#
json1{ 2 "$schema": "https://opencode.ai/config.json", 3 "snapshots": false 4}
V2 字段是复数 snapshots。关闭后不再捕获新的文件快照,但不会删除已有快照;会话回退仍存在。确认回退也不是安全擦除:持久会话历史和已有快照仍保留。