Skip to content

环境搭建与代码库理解

本节信息

讲师 Elie Schoppik(Anthropic)· 时长 14:00 · ▶ 原视频

🎧 听本节
0:00 / 0:00

我们要做的第一个例子,是一个端到端的 RAG 聊天机器人。先用 Claude Code 来摸清这个代码库。

在让 Claude Code 帮我们狂写代码之前,先聊聊怎么用这个工具,快速搞懂一个更大的代码库

先看看这个应用本身

这里有个应用,我可以就 DeepLearning.AI 的课程资料和 Claude 聊天。我们试着问一门课的大纲,比如:「MCP: Build Rich-Context AI Apps with Anthropic 这门课的大纲是什么?」可以看到,它返回了相当详细的内容,列出了每节课和对应的描述。

带着这个印象,我们来看看怎么快速搞懂支撑这个应用的底层代码

用 Claude Code「聊」懂代码库

回到 VS Code,我这儿开着终端,输入 claude 回车,就进了 Claude Code。

进来后,我就能开始「和我的代码库对话」了。我先问一个高层次的问题,让它给我一个代码库的总览。

接下来你会看到 Claude Code 做的事:它会以 agent 的方式在代码库里自主搜索,找出几个最重要的文件,再告诉我这个应用里到底在发生什么。它不会一个文件一个文件地翻,而是自主地搜索、定位出最相关的那些。

下面这段回放,就还原了「让它追踪一次用户查询从前端到后端」的过程:

claude code · 读懂代码库0 / 6

点「下一步」开始这段会话回放 ↓

我们常说:Claude Code 是个很棒的、能和你并肩干活的工程师,但它更是个一流的「讲解员」。所以当你在熟悉新代码库、新数据集时,先把 Claude Code 当成讲解工具——这样等你真要它写代码时,你心里对整件事的来龙去脉会清楚得多。

这种「快速搞懂一个代码库」的能力,在你对底层技术或语言不熟的时候尤其值钱。你不用挨个进文件夹去琢磨发生了什么,而是可以问更具体的问题,甚至让它给你画图、做可视化。

让它画张图、问它怎么跑起来

假设我是那种「看图最容易懂」的人。那就让 Claude 画一张图,把这个流程画出来——它能画 ASCII 字符画,也能用 D3.js / recharts 画网页可视化。

带着这个思路,我们再问个特别简单的问题:「我怎么运行这个应用?」我能看到 API 文档、Web 界面,以及我需要的环境变量——齐活,可以开干了。

关键一步:/init 与 CLAUDE.md

当你开始在 Claude Code 里处理一个应用时,我们建议你做的头几件事之一,就是运行 /init 命令。在 Claude Code 里敲下斜杠,你会看到一长串可用的内置命令。/init 能帮我初始化一个带着代码库文档的 CLAUDE.md 文件。

CLAUDE.md 对于给 Claude Code 引入「记忆」是至关重要的——它让 Claude 知道在你的代码库里怎么干活最合适。这个文件很适合用来指定你希望东西「怎么跑」:比如怎么跑测试、怎么做代码检查(linting),以及任何你希望 Claude 每次处理这个项目时都长期记住的事情。

/init 不用你从零写起——它会分析代码库,从高层次搞清楚「每次处理这个应用时它都该知道些什么」。

三种 CLAUDE.md

CLAUDE.md 其实分三层,写进哪一层,决定了它影响谁、要不要进 git。点下面三张卡片看区别:

同样是「记忆」,写进哪一层,决定了它影响谁要不要进 git。点下面三张卡片看区别:

CLAUDE.md✓ 进 git · 团队共享
放在哪放在项目里(可在子目录嵌套多个)
作用范围提交进 git,全团队共享
写法举例“本项目用 UV 管理依赖;测试用 pytest。”

💡 `/init` 生成的就是这种。适合放「所有协作者都该遵守」的规则。

小提示:CLAUDE.local.md 现在仍然可用,但官方更推荐的做法是——在项目的 CLAUDE.md 里用 @路径 导入一个被 git 忽略的文件,效果一样、也更清晰。

在 VS Code 里配合 Claude Code 用,有个很爽的地方:文件一有改动,我就能在编辑器里直观看到。而且每次 Claude Code 要用某个工具,它都会向我请求权限。这种「人在回路」(human in the loop)在你刚上手时特别重要。

/ide 与编辑记忆

在 VS Code 里用 Claude Code,我能指定「我正在哪个文件里」,甚至能拿到具体某些行的信息。要打通这个,我用 /ide 命令——可以看到,我已经和 Visual Studio Code 连上了。连上之后,我一打开某个文件,它就会被标记出来。

想往 CLAUDE.md 里加规则,有两个顺手的办法:

  • 直接用自然语言让 Claude 改:比如说一句「把『永远用 UV 跑服务器,别用 pip』这条加进项目的 CLAUDE.md」,Claude 就会帮你写进去。(UV 是 Python 生态里的一个包管理器。)
  • /memory 命令:它会列出当前生效的所有记忆文件(项目级 / 本地级 / 用户级),你选一个,就在编辑器里打开来改。

与课程录像的差异

课程录制时,讲师用的是 # 内容 这个快捷方式来快速写记忆。该快捷方式在新版 Claude Code(v2.0.70 起)已被移除,上面两种是当前的等价做法。

几个常用命令:/help/clear/compact/memoryEsc

  • /help:给你所有命令的简短说明和摘要。刚熟悉 Claude Code 时很好用。
  • /clear:清空对话历史、从头开始(但保留项目记忆)。切换方向、做新功能时特别有用。
  • /compact:清掉历史、但留下一份「之前做了什么」的摘要,让你能在更小的上下文里继续推进。
  • /memory:列出并打开当前生效的记忆文件来编辑(注意:它只是「打开文件」,在它后面直接写规则是没用的)。
  • Esc:从当前正在跑的命令里跳出来。拿不到你要的东西,随时打断它再继续往下走。

收尾:让 Claude Code 帮你 commit

下课前,再说一个很有用的点:Claude Code 会用 Git。我对应用做了点小改动,想 add 并 commit——我不自己手敲 Git 命令、绞尽脑汁写提交信息,而是让 Claude Code 来干,它写出来的提交信息非常清楚、有描述性

这一点在两个时候极其有用:之后让 Claude Code 帮我们追溯 git 历史改动时,以及把代码推到 GitHub、别人来看我们改了什么时。

下一节,我们就开始用 Claude Code 帮我们大量地写东西了。