Skip to content

时光旅行

像看录像一样回放整个 AI 编程过程,看到代码随对话变化的每一刻。

什么是时光旅行?

想象你和 AI 结对编程了一整天,写了几百行代码。现在你想知道某个函数是什么时候加上去的,或者想看看 AI 是怎么一步步重构你的代码的。

时光旅行 就是 Mantra 提供的"回放"能力:

  • 点击任意一条对话消息
  • 立刻看到那个时间点的代码状态
  • 就像视频播放器的进度条,随意拖动到任何时刻

简单理解

如果说 Git 是代码的"存档点",那时光旅行就是让你在这些存档点之间自由穿梭的"时光机"。

为什么需要时光旅行?

当你使用 AI 编程助手(如 Cursor、Copilot Chat)时,可能会遇到这些问题:

问题时光旅行如何帮助
想知道某个功能是什么时候实现的沿着对话记录点击,找到对应的时间点
代码改坏了,想回顾之前的版本点击之前的消息,查看当时的代码
想理解 AI 是怎么一步步改的逐条点击消息,观察代码的演变过程
和同事分享编程思路从头回放整个编程过程

界面布局

Mantra 采用左右分栏的布局,让你同时看到对话和代码:

对话面板(左侧)

左侧面板显示完整的 AI 对话记录:

  • 消息列表:你和 AI 的所有对话,按时间顺序排列
  • 时间标记:每条消息都有精确的时间戳
  • 消息类型:可以区分用户消息、AI 回复、代码执行等
  • 当前位置:高亮显示你正在查看的消息

小技巧

对话记录可能很长,使用 消息过滤 功能可以只显示你关心的内容。

代码快照面板(右侧)

右侧面板显示选中时间点的代码状态:

  • 文件树:展示项目的目录结构
  • 代码内容:显示选中文件的完整代码
  • 高亮显示:用不同颜色标记代码的变化
  • 多文件切换:可以浏览项目中的任意文件

注意

代码快照显示的是对话发生时的代码状态,而非你电脑上的当前文件内容。

基本操作

点击消息查看代码变化

这是时光旅行最核心的操作:

  1. 在左侧对话面板中找到你想查看的消息
  2. 点击这条消息
  3. 右侧代码面板会立即更新为该时间点的代码状态

体验"顿悟时刻"

第一次尝试时,找两条相隔较远的消息来回点击。看到代码瞬间切换的效果时,你会真正理解时光旅行的魔力!

时间线导航

除了直接点击消息,你还可以使用时间线进行导航:

  1. 在界面上方找到时间线组件
  2. 拖动时间轴到你想查看的位置
  3. 代码会随着时间线位置自动更新

时间线上会显示关键节点,帮助你快速定位重要的代码变更。

文件树浏览历史版本

时光旅行不仅能看单个文件,还能浏览整个项目在某个时间点的状态:

  1. 使用时光旅行跳转到某个时间点
  2. 在右侧代码面板展开文件树
  3. 点击任意文件查看其当时的内容
  4. 切换文件时,时间点保持不变

使用场景

当你想了解某次重构同时改了哪些文件时,这个功能特别有用。

Git 集成

代码快照与 Git 历史的关系

你可能会问:Mantra 是怎么知道每个时间点的代码状态的?

答案是 Git。Mantra 会分析你项目的 Git 提交历史,结合对话的时间戳,自动匹配最接近的代码版本。

工作原理

  1. Mantra 读取对话记录中的时间戳
  2. 查找这个时间点之前最近的 Git 提交
  3. 从 Git 历史中提取该提交的代码快照
  4. 在界面上展示这个版本的代码

Git 仓库要求

时光旅行需要你的项目满足以下条件:

  • 必须是 Git 仓库:项目根目录需要有 .git 文件夹
  • 有提交历史:至少需要一些 Git 提交记录
  • 提交频率影响精度:提交越频繁,时光旅行越精确

最佳实践

在使用 AI 编程助手时,养成频繁小提交的习惯。这样 Mantra 能更精确地还原每个时间点的代码状态。

Git 工作区的影响

如果你有未提交的修改(工作区改动),时光旅行的表现会有所不同:

情况时光旅行显示内容
查看最新时间点显示 Git 最近提交的代码
查看历史时间点显示该时间点对应的 Git 版本
未跟踪的新文件不会出现在代码快照中

注意

时光旅行显示的是 Git 中的版本,不是你本地文件的实时状态。如果你刚写的代码还没提交,时光旅行是看不到的。

进阶技巧

快捷键

使用快捷键可以更高效地浏览对话历史:

快捷键功能
Cmd/Ctrl + J在消息之间跳转
Cmd/Ctrl + K打开搜索

连续浏览

反复按 Cmd/Ctrl + J 可以快速在消息之间跳转,像快进/快退视频一样。配合 Cmd/Ctrl + K 搜索功能,可以快速定位到特定对话。

更多快捷键请参考 快捷键参考

结合消息过滤使用

当对话记录很长时,时光旅行配合 消息过滤 效果更好:

  1. 先用消息过滤筛选出关键消息(比如只看代码相关的)
  2. 在过滤后的结果中使用时光旅行
  3. 这样可以跳过无关的闲聊,直接看代码的演变过程

文件树浏览技巧

充分利用文件树可以获得更全面的代码视角:

  1. 折叠无关目录:只展开你关心的代码目录
  2. 对比多个文件:在同一时间点切换查看不同文件
  3. 追踪文件创建:观察新文件是在哪个时间点出现的
  4. 追踪文件删除:发现文件在某个时间点后消失

常见问题

代码快照不显示?

可能的原因:

  1. 项目没有 Git 仓库

    • 解决方法:在项目根目录运行 git init 初始化仓库
  2. 没有任何 Git 提交

    • 解决方法:至少创建一个提交 git add . && git commit -m "Initial commit"
  3. Git 仓库损坏

    • 解决方法:检查 .git 目录是否完整,必要时重新克隆仓库
  4. 文件路径问题

    • 解决方法:确保项目路径不包含特殊字符或过长的路径
Git 历史匹配失败?

可能的原因:

  1. 对话时间早于最早的提交

    • 说明:如果对话发生在第一次 Git 提交之前,无法找到对应的代码版本
    • 解决方法:只能查看有 Git 记录覆盖的时间段
  2. 时间戳不准确

    • 说明:系统时间错误可能导致匹配不准
    • 解决方法:检查电脑的系统时间设置
  3. 提交频率太低

    • 说明:如果两次提交之间间隔很长,可能无法精确还原中间状态
    • 解决方法:养成频繁小提交的习惯
文件显示为空?

可能的原因:

  1. 该时间点文件尚未创建

    • 说明:你在查看文件被创建之前的时间点
    • 解决方法:跳转到文件创建之后的时间点
  2. 文件已被删除

    • 说明:在后续的某个提交中该文件被删除了
    • 解决方法:跳转到文件删除之前的时间点查看
  3. Git 未跟踪该文件

    • 说明:该文件在 .gitignore 中或从未被添加到 Git
    • 解决方法:确保重要文件已被 Git 跟踪
时光旅行与 IDE 中的代码不同步?

这是正常现象。

Mantra 显示的是 Git 历史中的代码版本,而 IDE 显示的是你本地文件的当前状态

两者的区别:

  • Mantra 时光旅行:Git 已提交的历史版本
  • IDE/编辑器:本地文件的实时内容(可能包含未提交的修改)

如果你想在 Mantra 中看到最新代码,需要先 git commit 提交你的修改。

下一步

掌握了时光旅行后,探索更多功能: