时光旅行
像看录像一样回放整个 AI 编程过程,看到代码随对话变化的每一刻。
什么是时光旅行?
想象你和 AI 结对编程了一整天,写了几百行代码。现在你想知道某个函数是什么时候加上去的,或者想看看 AI 是怎么一步步重构你的代码的。
时光旅行 就是 Mantra 提供的"回放"能力:
- 点击任意一条对话消息
- 立刻看到那个时间点的代码状态
- 就像视频播放器的进度条,随意拖动到任何时刻
简单理解
如果说 Git 是代码的"存档点",那时光旅行就是让你在这些存档点之间自由穿梭的"时光机"。
为什么需要时光旅行?
当你使用 AI 编程助手(如 Cursor、Copilot Chat)时,可能会遇到这些问题:
| 问题 | 时光旅行如何帮助 |
|---|---|
| 想知道某个功能是什么时候实现的 | 沿着对话记录点击,找到对应的时间点 |
| 代码改坏了,想回顾之前的版本 | 点击之前的消息,查看当时的代码 |
| 想理解 AI 是怎么一步步改的 | 逐条点击消息,观察代码的演变过程 |
| 和同事分享编程思路 | 从头回放整个编程过程 |
界面布局
Mantra 采用左右分栏的布局,让你同时看到对话和代码:
对话面板(左侧)
左侧面板显示完整的 AI 对话记录:
- 消息列表:你和 AI 的所有对话,按时间顺序排列
- 时间标记:每条消息都有精确的时间戳
- 消息类型:可以区分用户消息、AI 回复、代码执行等
- 当前位置:高亮显示你正在查看的消息
小技巧
对话记录可能很长,使用 消息过滤 功能可以只显示你关心的内容。
代码快照面板(右侧)
右侧面板显示选中时间点的代码状态:
- 文件树:展示项目的目录结构
- 代码内容:显示选中文件的完整代码
- 高亮显示:用不同颜色标记代码的变化
- 多文件切换:可以浏览项目中的任意文件
注意
代码快照显示的是对话发生时的代码状态,而非你电脑上的当前文件内容。
基本操作
点击消息查看代码变化
这是时光旅行最核心的操作:
- 在左侧对话面板中找到你想查看的消息
- 点击这条消息
- 右侧代码面板会立即更新为该时间点的代码状态
体验"顿悟时刻"
第一次尝试时,找两条相隔较远的消息来回点击。看到代码瞬间切换的效果时,你会真正理解时光旅行的魔力!
时间线导航
除了直接点击消息,你还可以使用时间线进行导航:
- 在界面上方找到时间线组件
- 拖动时间轴到你想查看的位置
- 代码会随着时间线位置自动更新
时间线上会显示关键节点,帮助你快速定位重要的代码变更。
文件树浏览历史版本
时光旅行不仅能看单个文件,还能浏览整个项目在某个时间点的状态:
- 使用时光旅行跳转到某个时间点
- 在右侧代码面板展开文件树
- 点击任意文件查看其当时的内容
- 切换文件时,时间点保持不变
使用场景
当你想了解某次重构同时改了哪些文件时,这个功能特别有用。
Git 集成
代码快照与 Git 历史的关系
你可能会问:Mantra 是怎么知道每个时间点的代码状态的?
答案是 Git。Mantra 会分析你项目的 Git 提交历史,结合对话的时间戳,自动匹配最接近的代码版本。
工作原理
- Mantra 读取对话记录中的时间戳
- 查找这个时间点之前最近的 Git 提交
- 从 Git 历史中提取该提交的代码快照
- 在界面上展示这个版本的代码
Git 仓库要求
时光旅行需要你的项目满足以下条件:
- 必须是 Git 仓库:项目根目录需要有
.git文件夹 - 有提交历史:至少需要一些 Git 提交记录
- 提交频率影响精度:提交越频繁,时光旅行越精确
最佳实践
在使用 AI 编程助手时,养成频繁小提交的习惯。这样 Mantra 能更精确地还原每个时间点的代码状态。
Git 工作区的影响
如果你有未提交的修改(工作区改动),时光旅行的表现会有所不同:
| 情况 | 时光旅行显示内容 |
|---|---|
| 查看最新时间点 | 显示 Git 最近提交的代码 |
| 查看历史时间点 | 显示该时间点对应的 Git 版本 |
| 未跟踪的新文件 | 不会出现在代码快照中 |
注意
时光旅行显示的是 Git 中的版本,不是你本地文件的实时状态。如果你刚写的代码还没提交,时光旅行是看不到的。
进阶技巧
快捷键
使用快捷键可以更高效地浏览对话历史:
| 快捷键 | 功能 |
|---|---|
Cmd/Ctrl + J | 在消息之间跳转 |
Cmd/Ctrl + K | 打开搜索 |
连续浏览
反复按 Cmd/Ctrl + J 可以快速在消息之间跳转,像快进/快退视频一样。配合 Cmd/Ctrl + K 搜索功能,可以快速定位到特定对话。
更多快捷键请参考 快捷键参考。
结合消息过滤使用
当对话记录很长时,时光旅行配合 消息过滤 效果更好:
- 先用消息过滤筛选出关键消息(比如只看代码相关的)
- 在过滤后的结果中使用时光旅行
- 这样可以跳过无关的闲聊,直接看代码的演变过程
文件树浏览技巧
充分利用文件树可以获得更全面的代码视角:
- 折叠无关目录:只展开你关心的代码目录
- 对比多个文件:在同一时间点切换查看不同文件
- 追踪文件创建:观察新文件是在哪个时间点出现的
- 追踪文件删除:发现文件在某个时间点后消失
常见问题
代码快照不显示?
可能的原因:
项目没有 Git 仓库
- 解决方法:在项目根目录运行
git init初始化仓库
- 解决方法:在项目根目录运行
没有任何 Git 提交
- 解决方法:至少创建一个提交
git add . && git commit -m "Initial commit"
- 解决方法:至少创建一个提交
Git 仓库损坏
- 解决方法:检查
.git目录是否完整,必要时重新克隆仓库
- 解决方法:检查
文件路径问题
- 解决方法:确保项目路径不包含特殊字符或过长的路径
Git 历史匹配失败?
可能的原因:
对话时间早于最早的提交
- 说明:如果对话发生在第一次 Git 提交之前,无法找到对应的代码版本
- 解决方法:只能查看有 Git 记录覆盖的时间段
时间戳不准确
- 说明:系统时间错误可能导致匹配不准
- 解决方法:检查电脑的系统时间设置
提交频率太低
- 说明:如果两次提交之间间隔很长,可能无法精确还原中间状态
- 解决方法:养成频繁小提交的习惯
文件显示为空?
可能的原因:
该时间点文件尚未创建
- 说明:你在查看文件被创建之前的时间点
- 解决方法:跳转到文件创建之后的时间点
文件已被删除
- 说明:在后续的某个提交中该文件被删除了
- 解决方法:跳转到文件删除之前的时间点查看
Git 未跟踪该文件
- 说明:该文件在
.gitignore中或从未被添加到 Git - 解决方法:确保重要文件已被 Git 跟踪
- 说明:该文件在
时光旅行与 IDE 中的代码不同步?
这是正常现象。
Mantra 显示的是 Git 历史中的代码版本,而 IDE 显示的是你本地文件的当前状态。
两者的区别:
- Mantra 时光旅行:Git 已提交的历史版本
- IDE/编辑器:本地文件的实时内容(可能包含未提交的修改)
如果你想在 Mantra 中看到最新代码,需要先 git commit 提交你的修改。
下一步
掌握了时光旅行后,探索更多功能:
