接手祖传代码三个月,我最后悔的是没早点让AI读Git日志
先说一次失败的经历
去年接手一个跑了五年的老项目,交接文档只有半页纸。产品经理问我:“这个优惠券功能是什么时候加的?当时为什么限制只能用一张?”我打开代码,注释里没有,文档里没有,问了三个已经离职的前同事,得到的答案互相矛盾。
于是我决定自己啃 Git 历史。git log 拉出来八千多条提交,我花了一个周末,逐条翻提交信息,试着按时间排列功能演进。结果呢?产出一份自己都看不下去的时间线:提交信息一半是“fix bug”、“修改”、“临时处理”,另一半中英混杂。我手工整理的时间线,错误率极高——把重构误判成新功能,把实验性代码当成正式上线,还漏掉了一个被 revert 掉的重要分支。
更常见的失败做法还有几种,你大概率也见过:
失败做法一:直接把几万行日志扔给AI,不给任何规则。 AI会产出一篇看似流畅的“演进史诗”,时间张冠李戴,功能凭空脑补。看起来很美,全是编的。
失败做法二:只看提交信息,不看代码 diff。 提交信息是人的主观描述,diff 才是客观事实。“优化登录”这条提交,diff 里可能藏着一个新注册流程。
失败做法三:一次性让AI总结三年历史。 上下文塞爆,模型只能挑着看,时间线中间出现大段“失忆”,恰好漏掉你最关心的那个季度。
这三个坑我全都踩过。下面是踩完之后摸出来的正确路径。
正确路径:分而治之,证据说话
核心思路三句话:按时间切片、按 diff 取证、让AI只做归纳不做猜测。
第一步:清洗和切片
先用 git 命令把原始日志变成结构化数据,按季度或按里程碑切片,每次只喂给AI一段:
git log --pretty=format:"%h|%ad|%an|%s" --date=short > git_log.txt五年的项目切成十几个片段,每段几百条,AI读得完、读得准。
第二步:给AI“证据”,不给AI“自由”
对关键节点(大版本、疑点提交),把 diff 摘要一并给AI:
git show <commit> --stat让AI同时看到“人怎么说”和“代码做了什么”,两边对照,脑补率大幅下降。
第三步:用提示词模板约束输出
这是整个流程里最关键的一环。我用的模板长这样,你可以直接复制改造:
你是一名熟悉 Git 工作流的代码考古助手。我会提供一段项目的 Git 提交记录(可能附带部分 diff 摘要),请帮我梳理这段时期的功能演进时间线。
规则:
1. 只基于我提供的提交记录和 diff 摘要推断,禁止推测未提及的功能或动机;
2. 区分四类变更:新功能、功能增强、重构、缺陷修复,不确定的归入"待确认";
3. 将零散提交聚合为"功能事件",每个事件标注:起止时间、涉及的核心提交哈希、演进脉络(如何从首个提交走到最终形态);
4. 提交信息含糊时(如"fix bug""修改"),结合 diff 摘要判断真实意图;无法判断则明确标注"信息不足",不要编造;
5. 输出末尾附"疑点清单":可疑的时间断层、被 revert 的提交、语义矛盾的提交信息。
输出格式:按时间排序的事件列表 + 疑点清单。
以下是提交记录:
{粘贴 git_log 片段}
以下是关键提交的 diff 摘要(可选):
{粘贴 git show --stat 输出}第四步:追问验证
第一轮输出后,针对疑点清单追问:“commit a1b2c3 和 d4e5f6 间隔两个月但改的是同一个模块,中间发生了什么?”用 git log -- path/to/module 补充证据再问一轮。通常两轮之后,时间线就足够扎实了。
前后对比:一次周末 vs 一个下午
| 维度 | 纯手工整理 | AI辅助流程 |
|---|---|---|
| 耗时 | 一整个周末起步 | 一个下午 |
| 覆盖率 | 大量遗漏 | 切片遍历,无遗漏 |
| 准确性 | 重构误判为新功能 | 四类变更分类+疑点标注 |
| 产出形态 | 一份混乱笔记 | 事件化时间线,可直接入文档 |
| 可维护性 | 新提交来了重头再来 | 重跑切片流程,增量更新 |
最有价值的其实是那个“疑点清单”。手工整理时我以为自己没发现问题;AI列出的疑点里,有两条后来被证实是当年一次上线事故的回滚痕迹——这是产品经理都不知道的信息。
几点提醒
- 模型选择:长日志解析对上下文长度和指令遵循能力都有要求,建议通过统一网关做模型切换和对比,哪个模型对你的代码库归纳得更准,试一次就知道。费用方面,以官网价格页为准。
- 不要跳过清洗步骤:直接
git log全量粘贴,等于把前面三个坑重新踩一遍。 - 时间线要人审:AI标注的“待确认”项,花十分钟人工核对,时间线就能从“基本靠谱”变成“可以写进交接文档”。
- 独立开发者也适用:哪怕项目只有你一个人,半年后你也会忘记“当时的权限系统是怎么长成这样的”。每次大版本后跑一遍,就是自动生成的项目编年史。
写在最后
代码考古这件事,难的不是整理,而是记忆的不可靠和信息的碎片化。AI改变不了历史,但它能把散落在八千条提交里的证据,在一下午之内拼成一条你敢拿去开会的演进时间线。
如果你还没试过用AI处理代码库层面的工作,不妨从梳理一次自己项目的 Git 历史开始,门槛低、见效快,还能顺便检验不同模型在长文本归纳上的真实表现。想在同一个流程里切换和对比多个模型的话,可以先在 https://api.thistoken.ai/register 注册一个统一网关账号,把模型选择的成本降到最低。
---
不想折腾多家供应商的接入差异?在 https://api.thistoken.ai/register 注册,用一个 base_url 调用所有模型。