你有没有遇到过这种情况:一个 Agent 已经理解了项目,换个会话就全忘了;另一个人接手时,只能看你手写的总结;想回退某次对话,又担心把项目文件一起弄乱。
Agit 的思路很直接:Git 管代码,Agit 管 Agent 会话。它保存会话、记忆、技能和 Agent 的操作记录,让你可以分支、提交、推送、回退和协作。
先把 Git 的几个词对上
Git 用 commit 保存项目变化,用 branch 做隔离实验,用 push 把本地记录传到远端。多人协作时,每个人可以在自己的分支工作,再合并回主版本。
Agit 把“项目代码”换成了“Agent 对话”。每个会话是一条分支;一次保存记录一轮提示和 Agent 的响应;仓库里同时保留对话、记忆和技能。

注意:回退 Agit 的会话,不等于回退应用代码。应用文件保持原样,变化的是 Agent 接下来能看到的上下文。
从零跑起来
1. 安装并确认版本
两种安装方式。这里使用 npm,因为另一种安装器在测试时没有成功。
安装后先检查版本,确认命令已经进入当前终端环境。
agit --version
命令名以你下载的版本文档为准;字幕中有部分转写错误,复制前先看官方仓库里的实际命令。
2. 登录账号
在 Agit 网站创建账号,然后在终端运行登录命令。选择浏览器登录,完成网页授权。
登录后用 who-am-I 类命令确认当前账号。这一步会显示登录邮箱和账号信息。
3. 初始化项目
进入你的项目目录,再运行初始化命令:
cd your-project
agit init
交互界面里要确认几件事:仓库名、项目路径、是否查看要保存的指令和技能、是否自动 push,以及把指令写进哪一个文件。
如果你只用一个编码 Agent,选它对应的指令文件即可。如果 Codex 和 Claude Code 都会用,就把两份都加上,减少换工具时的上下文差异。

三个真正有用的操作
看历史:log
先查看会话列表。每个提示和响应会有编号,后面的 revert 和 cherry-pick 都要用到这些编号。
回到某个对话节点:revert + resume
Agit 的回退对象是会话记录。你需要先从 log 找到目标位置,再执行 revert,之后用 resume 继续。
有个容易踩坑的点:命令里填写的是“从末尾往回要移除多少轮”,不是你想回到的那一轮绝对编号。回退后,被移除的记录仍会保留在日志里,只是 Agent 不再看到它们。
把另一段上下文带过来:cherry-pick
如果另一个会话里有一段有用的排查过程,先从 log 找到消息编号,再 cherry-pick 到当前会话。消息和 Agent 的响应会一起加到当前会话末尾。
它只复制对话历史,不会自动应用那段对话里提到的应用改动。这个边界要记住。

跨 Agent 接着做
最实用的一点,是从一个 Agent 继续到另一个 Agent。比如你在 Claude Code 里做了一半,想让 Codex 接手,不用再让 Claude 写一份交接说明。
用 fork 选择目标 Agent,Agit 会创建一个新会话,把原来的对话转换成目标 Agent 能读的格式。原会话还在,你可以保留两条线并行推进。
但命令通常要在终端里执行。你可以让当前 Agent 帮你拼命令,却不要把“执行跨 Agent 切换”也交给它代跑。
密钥问题别大意
Agit 会在保存和 push 前检查一部分密钥格式,把识别到的值替换成占位符。可普通英文单词组成的密码没有固定格式,可能漏检。
这里的做法,是在会话开始前注册项目里已有的密码,并要求 Agent 在收到新密码时先注册再继续。已经写进历史的密码,事后添加技能不一定能清除。
所以实际操作顺序应该是:先准备脱敏规则,再开始会话;涉及客户项目时,保存前和 push 前各检查一次。

你可以这样练习
拿一个不含真实密钥的 demo 项目,完成一次 init、一次保存、一次 log,再试一次 revert 和 resume。熟悉后,再用 cherry-pick 把一段排错记录带到新会话里。
跑通这条小流程,你就理解 Agit 了:它保存的不是代码快照,而是 Agent 如何理解项目、如何做决定、如何继续工作的上下文。