乐于分享
好东西不私藏

别一头扎进源码里:我是怎么用 Antigravity 阅读 Claude Code 的

别一头扎进源码里:我是怎么用 Antigravity 阅读 Claude Code 的

在 2026 年 4 月 1 日愚人节的前一天,Claude Code 的源码被泄漏出来了。 从安全的角度看,这当然算不上什么好事。 但换个角度来说,对于全世界的 AI 爱好者而言,大家都想看看这样一个优秀的产品到底是怎么做出来的。 我也不例外,于是把 Claude Code 的源码下了下来,需要的可以联系我。

这篇文章并不打算去深度阅读 Claude Code 本身,而是想讲讲,怎么借助 Google 的 antigravity 这样的 AI 工具,更高效地理解一份复杂代码。

Antigravity 的多 agent 模式

我能想到的一种方式是:在 Antigravity 里先让一个 agent 把控整体,从最上层分析整个 Claude Code,先把大模块分出来。 然后,再让其他 agent 分别去分析各个模块。 这样做的好处是:

  • • 把控整体的 agent 只负责大的方向,不会陷入太多细节。
  • • 其他 agent 各自负责自己的模块,互相之间不容易干扰。
  • • 如果模块和模块之间存在耦合,或者有明显的相互关系,还可以再加一个 agent 专门分析它们之间的联系。
  • • 各个模块的分析结果,还可以继续喂给新的 agent,进一步增强它对整体的理解。

我觉得最关键的一点是:模块一旦拆清楚了,我们在看代码、分析代码时,就不容易因小失大,也不容易一头钻进牛角尖里出不来。 你可以随时切换视角,也可以随时往上回看。 不会一下子扎进太深的细节里,也不会飘到太虚的高层概念上。

而且,大模型的上下文也不会被拉得太长,不容易因此“降智”。

Claude Code 的总体分析

我在 Agent Manager 中创建了一个 agent,并直接告诉它:

我想深度学习这个代码。请由浅到深地分模块引导我去学习这个源码。

然后,它就给了我一个 源码学习路线图

  • • 第一层:入口与初始化阶段 (The Entry Point & Bootstrapping)
  • • 第二层:终端用户界面层 (The Terminal User Interface – TUI)
  • • 第三层:对话上下文与状态管理 (State & Context Management)
  • • 第四层:AI 引擎通信核心 (The AI Communication Engine)
  • • 第五层:工具链与智能体编排 (Tools & Agentic Capabilities)
  • • 第六层:高级特性与周边生态 (Advanced Features)

最后,它还会给一个简短点评,并告诉我下一步应该怎么做。

不过“下一步怎么做”我先放到一边,先把它回答的文字都丢给了 Gemini,用的是 Nano Banana2。 我让它把这些内容再整理一下,并画成图,结果还是很好看的,也很清晰。

这已经有点 PPT 级别的感觉了。 用 Nano Banana2 去生成总结图或者分析图,能让自己的分析笔记更清晰、更直观,也不会那么枯燥。

不同的 agent 阅读不同部分代码

我按上面的建议拆了 5 个 agent,每个 agent 负责阅读一部分。 我在 Agent Manager 里,Claude Code 源码对应的 workspace 下创建了 5 个 New Conversation,再把总结构里分出来的 5 个层次描述分别复制给它们。

当然,这并不是说一定要并发地让 agent 去阅读。 更准确地说,是通过大模型的不同会话来分别学习这份代码。 这样做的前提,是你已经先有了一张清晰的框架路线图。

当然,如果你不习惯用 Agent Manager,也可以直接在右上角打开这个 workspace 的会话。如下图:

分模块的技术级拆解

agent 不仅能较好地分析出这一部分的主要功能,也会顺手注意到这些功能分别落在哪些代码文件里。

如果我们想知道 Claude Code 在执行命令时到底发生了什么,就可以让 agent 去分析第一部分,也就是“终端启动与快速路径”。 比如一些简单的参数,像 --version,本身可以直接输出结果,那就没必要把整套主代码都导入进来。 这种设计其实就是一种懒启动,用来规避主代码的加载。

如果想继续了解别的子模块,就让 agent 接着往下分析。 当然,你也可以另外新建一个会话。

我们也可以让 agent 直接画流程图。如下图:

如果我想知道,为什么 Claude Code 在启动阶段要这样设计,同样也可以把这个问题抛给 agent。 它分析完代码之后,通常会给出一个比较完整的解释,甚至还能顺手画出一些挺有意思的图。

其他模块其实也都可以按同样的方法去分析。

把结果整理成知识库

以前我阅读代码,通常就是直接在代码上写注释,或者额外写个简单笔记,记下一些当时的思路,方便以后回头看。 现在用 antigravity 来辅助阅读代码,我更习惯把分析后的结果整理进知识库。 有时候我甚至会觉得,它整理出来的内容,比我自己写得还要完整。

我一般会直接这样和 agent 说:

请把刚才关于这个模块的分析,整理成一篇知识库笔记。要包含:模块职责、入口文件、核心文件、调用流程、依赖关系、关键设计、未解决问题。用我后面还能继续补充的格式来写,尽量结构化一点。

这样一来,它产出的内容通常就已经很像一份可以直接保存的笔记了。 如果有些地方我觉得还不够准确,自己再手动修一下就行。

我自己用下来,也慢慢总结出几个比较实在的小经验:
  • • 一次最好只整理一个主题,比如“启动流程”“配置系统”“插件机制”这种。不要一上来就想写成一篇大而全的总笔记,最后往往什么都沾一点,但不够深。
  • • 笔记最好有个固定写法,不然今天这样记,明天那样记,过几天自己再回来看也会乱。像模块职责、入口、核心文件、主流程这些,我现在都会尽量记上。
  • • 还有一个很有用的小习惯,就是顺手记一下“下次应该从哪个文件继续看”。这个东西看起来很小,但有时候比写一大段总结还顶用。
  • • 另外不要把 AI 给的内容原样贴进去就完了,最好还是补一句自己的理解。哪怕只写一句“我现在的理解是……”,后面再回来看也会清楚很多。
  • • 如果有图的话,最好和文字放在一起。因为流程图适合回忆路径,文字适合记细节,两边对着看会轻松很多。

防止被 AI 带偏

一定要记得,agent 只是辅助。 真正要学习代码、理解技术原理的人,始终还是我们自己。 AI 并不是你的学生,不是你教会了它怎么做事;它只是一个已经具备能力、但需要你去正确使用的工具。

很多人有一个不太好的“想法”,就是觉得等需要的时候再去问 AI 就行。 这个想法其实挺有毒的,因为最后很容易变成什么都没真正搞懂,连问题都提不明白。

只有我们自己先把基础技术原理学明白,再慢慢融会贯通,后面才能更好地去指挥 agent 干活。 不然就只能和 AI 不断拉扯: 你问了,它没完全明白你的意思;它答了很多,但又不是你真正想要的;然后你继续追问,它继续跑偏,最后陷入一个低效循环。

所以,我觉得下面这几个点一定要注意:

  • • 一定回源码:AI 给你的是导航,不是证据。 凡是关键结论,都要回到代码里确认。
  • • 警惕过度抽象:它很容易把普通实现讲成宏大架构,尤其是有些命名看起来很“高级”,实际实现却并不复杂,情绪价值很容易被它拉满。
  • • 约束范围:一次只给它一个目录、一个文件组、一个问题,否则它很容易泛泛而谈。
  • • 要它引用证据:最好要求它说清楚“这个结论对应哪些文件、哪些函数”,没有落点的结论可信度往往不高。
• 交叉问两次:第一次问“它在做什么”,第二次问“为什么这么做,有没有别的实现方式”,这样能发现不少误判。

    写在最后

    我的感受是,在使用 antigravity 这类工具时,它最适合做的,不是替你把代码“看完”,而是先帮你把整体框架搭起来,再陪你一层一层往下走。 先分模块,再追主链路;先形成理解,再沉淀到知识库。 这样一来,读代码就不再只是一次性的探索,而会慢慢变成一个可以持续积累的过程。

    以后不管是看一个新的开源项目,还是阅读公司内部的大型工程,我觉得都可以用类似的方法去做:先让 agent 帮你建立地图,再让不同的会话去拆不同模块,最后把真正有价值的结论沉淀到自己的知识库里。 这样时间花下去,理解就不会白费。

    工具会一直变,模型也会一直变。 但“先搭框架,再钻细节;边分析,边沉淀”这件事,我觉得会一直有用。

    本文为技术分享,文章纯手工写图片部分 Nano Banana 2 生成