简而言之:打开 编辑 → AI 历史记录(或按 ⌘⇧Z),选择你想回退到的智能体操作轮次。LingCode 的预编辑快照会将 project.pbxproj、Info.plist、build.gradle 以及所有被修改的文件恢复至该轮次操作前的状态——无需执行 git checkout。
当智能体损坏了 Xcode 项目文件或清空了你的权限配置时,你不需要求助于 git。LingCode 为每次受保护的更改保留了按文件维度的快照,让你能在两次点击内完成回滚。
AI 智能体编辑的大多数内容都是普通源代码,这些内容通常可以用 git checkout 轻松撤销。但智能体也会触碰一小部分危险得多的文件——那些维系着项目结构的关键配置文件。.pbxproj 将 Xcode 的目标与文件关联在一起;Info.plist 声明了你应用的身份信息;.entitlements 授予了你所依赖的每项能力。AndroidManifest.xml 和 build.gradle 在 Android 侧扮演着同样的角色。这里哪怕一个错位的键值,都可能是"项目正常编译"与"项目拒绝构建却找不到原因"之间的分水岭。
git 不够用的原因在于时机。git 只能记录你已提交的内容。而 AI 的错误编辑发生在提交之间,发生在一个已经混有你自己正常改动的工作区里。等你发现问题时——通常是因为构建报错——错误编辑和你正常的修改已经缠绕在一起。这时用 git checkout 会把上次提交以来的所有内容一并回滚,包括你本来想保留的工作。
LingCode 的解决方案是按文件维度的快照:智能体对受保护文件的每次修改,都会在落盘前被捕获一份快照。所以当某个文件出了问题,你不必在丢失工作和交付一个损坏的项目之间二选一——只需回滚那个出问题的单个文件即可。
git checkout 有何本质区别AI 智能体在编辑普通源代码时往往胸有成竹。真正让它们惹出麻烦的,是项目的配置文件:将 Xcode 项目组织在一起的 .pbxproj、Info.plist、.entitlements、scheme 文件,以及 Android 等价文件(AndroidManifest.xml、build.gradle)。
这里哪怕一个错位的键值,就可能让项目拒绝构建,或静默地移除推送通知等关键能力。LingCode 会自动为这些文件的每次变更创建快照——每当智能体触碰其中一个文件,就会在写入前保存一个带版本号的副本。
git checkout 只能看到你已暂存的内容。
在编辑器顶部找到标有 恢复 的盾牌图标,点击它。一个侧边面板会滑出,列出所有拥有快照的受保护文件,最近编辑的文件排在最上方。
每个条目会显示文件路径、现有快照的数量,以及最新快照的创建时间。未被智能体触碰过的文件不会出现在这里——这个面板专注于真正有风险的内容。
选中一个文件后,会展开一个按时间排列的快照列表,显示时间戳、触发该快照的智能体操作(例如"通过 Claude 的 edit_file"),以及与当前磁盘版本的差异对比。
回滚前请先阅读差异内容。智能体可能做了一个合理的修改,同时又犯了一个独立的小错误——差异视图会准确告诉你哪里发生了变化。
选择你想要的快照,然后点击恢复。LingCode 会将该版本写回磁盘,编辑器随即重新加载。如果该文件当前处于打开状态,编辑缓冲区会就地更新。
恢复操作本身也是可撤销的——在被覆盖之前,当前状态会先成为一个新的快照,所以如果需要,你可以撤销这次撤销。
.pbxproj 和某个 Swift 文件),需要逐一恢复每个你想回滚的文件。批量回滚功能已在路线图中。
最省事的恢复是根本不需要恢复。当智能体提议对配置文件进行编辑时,系统会弹出一个权限对话框,在应用前显示文件路径和差异内容。点击拒绝,该更改就永远不会落盘——无需任何快照。
如果将权限模式设置为 default,每次配置文件编辑都会弹出提示。acceptEdits 会自动接受,但仍然创建快照。plan 模式则会在不实际执行的情况下,向你展示智能体将要做什么。
快照覆盖的是受保护的文件集合——它是针对智能体最常破坏的那些特定内容的精细安全网。对于更大范围的恢复(比如智能体触碰了数十个源文件),请使用 git:git status 显示发生了哪些变化,git restore <file> 回滚单个文件,git stash 将整个工作区暂存起来。
对于高风险实验,请参阅使用 worktrees 安全地进行实验——这是一种更强的隔离模式,能将有风险的智能体运行完全隔绝在主分支之外。
.lingcode/snapshots/ 目录下——如有需要,可以手动将文件复制回去。