Claude Code 101【译】
Table of Contents
- Claude Code 101
- 课程简介
- 课程结构
- 什么是 Claude Code?
- Claude Code 的工作原理
- 安装 Claude Code
- 你的第一个提示词
- Explore → Plan → Code → Commit 工作流
- 上下文管理
- 代码审查
- CLAUDE.md 文件
- 子代理
- Skill
- MCP
- 钩子
- 课程测验
- Q1. Claude Code works as an AI agent. What is an AI agent?
- Q2. What happens when Claude Code reaches its context window limit?
- Q3. What is the recommended workflow for using Claude Code effectively?
- Q4. How does Claude Code use the CLAUDE.md file?
- Q5. How satisfied are you with the content provided in this course?
- Q6. How likely are you to recommend this course to a friend or coworker?
- Q7. Is there any feedback you'd like to provide based upon your experience with this course so far?
Claude Code 101
来源:Anthropic Courses — Claude Code 101
声明:本文档爬取自 Anthropic 官方 Skilljar 课程平台,包含全部 12 篇课程正文与课程测验,翻译全由 AI 完成。
课程简介
AI 编码智能体正在改变「编写软件」这件事本身。过去要花一个下午的任务——在大型代码库中追踪一个 bug、搭建一个新服务的脚手架、审阅一摞 pull request——如今可以在一次专注的会话中完成:有一个智能体陪你一起读代码、跑命令、改文件。但要从智能体身上获得真正的价值,光安装它、敲一句请求是不够的。你需要理解智能体是如何思考的、它能访问哪些上下文(context),以及在它跑偏时如何把它拉回正轨。
本课程教开发者如何高效使用 Claude Code,无论你是刚踏入软件工程的新人,还是尚未接触过 AI 编码智能体的资深工程师。我们从第一性原理讲起——智能体循环(agentic loop)究竟是什么、上下文窗口(context window)如何决定 Claude 能看到什么、工具(tools)与权限模式如何决定它能做什么——这样后面课程中的各种技巧才会顺理成章,而不是一堆死记硬背的招式。
你将学会如何在多种环境中安装 Claude Code(终端、VS Code、JetBrains、Claude Desktop 以及网页版),如何借助批准模式(approval mode)、自动接受(auto-accept)和计划模式(Plan Mode)写出第一次就能得到好结果的提示词。课程的核心是 Explore → Plan → Code → Commit 工作流:一套可复用的节奏——拆解任务、让 Claude 提出方案、在工作推进的过程中随时审查、最后干净利落地落地。我们还会介绍如何用 Claude Code 做代码审查,以及让长会话保持高效的上下文管理命令(/compact、/clear、/context)。
最后一部分讲的是把 Claude Code 变成你自己的工具。你会编写 CLAUDE.md 文件,让 Claude 跨会话记住你项目的约定;为你经常重复的任务构建自定义子代理(subagent)和 Skill;通过 MCP 服务器接入外部系统;以及编写钩子(hook),为 Claude 的行为加上确定性的护栏。学完之后,你将得到一套贴合自己实际工作方式的配置——而不是一个千篇一律的默认安装。
推荐前置要求
熟悉代码编辑器和命令行的基本操作。你还需要一个 Claude 账号(Pro、Max 或 Enterprise)或一个 API key。不要求有任何 AI 工具的使用经验。
适合谁学
刚进入软件工程、想从一开始就用上 AI 辅助工作流的新开发者,以及对编码智能体好奇但还没迈出第一步的资深工程师。如果你以前试过编码助手但觉得效果平平,这门课程正是要让你看到:与智能体协作(而不是与它对着干)会有什么不同。
课程结构
| # | 章节 | 课程 |
|---|---|---|
| 1 | 什么是 Claude Code? | 什么是 Claude Code? / Claude Code 的工作原理 |
| 2 | 你的第一个提示词 | 安装 Claude Code / 你的第一个提示词 |
| 3 | 日常工作流 | Explore → Plan → Code → Commit / 上下文管理 / 代码审查 |
| 4 | 自定义 Claude Code | CLAUDE.md 文件 / 子代理 / Skill / MCP / 钩子 |
| 5 | 测验 | 课程测验 |
什么是 Claude Code?
什么是 Claude Code?
Claude Code 是一款智能体编码工具,它能理解你的代码库、编辑你的文件、运行命令,并与你现有的开发工具集成,帮你更快地把事情做完。它可在终端、Visual Studio Code、Claude Desktop 桌面应用、网页版以及 JetBrains IDE 中使用。
Claude Code 与 Claude 有何不同?
如果你用过 Claude.ai,可能会好奇 Claude Code 有什么不一样。与 Claude.ai 不同,Claude Code 可以直接访问你的文件、你的终端和你的整个代码库。不需要来回复制粘贴代码,它自己钻进去把活干完。
关键区别在于:Claude Code 是作为一个 **AI 智能体(AI Agent)**工作的。
什么是智能体(Agent)?
AI 智能体是一种能够与环境交互、并执行动作以达成既定目标的软件。它的核心原理是让一个大语言模型在循环中实时运转。AI 智能体可以使用工具、外部服务,甚至其他 AI 智能体来帮助达成目标。
Claude Code 到底能做什么?
以下是它在实际中的样子:
- 阅读并理解你的代码库。 你可以让 Claude Code 解释某个功能,或在你的代码中追查一个 bug。
- 编辑项目中的文件。 Claude Code 可以重构一个函数,并更新所有引用它的文件。
- 运行终端命令。 它能执行你的构建脚本、跑测试、安装软件包,并根据输出决定下一步做什么。
- 搜索网络。 如果它需要文档或最新的 API 参考,它可以替你查。
高效使用 Claude Code
要高效使用 Claude Code,请记住这三个概念:
上下文窗口。 把它想象成 Claude 的工作记忆。它能装下很多内容,但没法一次装下所有东西。「智能体」的特性正体现在这里——Claude 会用策略性的办法在你的代码库中定位答案,而不是把整个代码库塞进上下文。
它会请求许可。 默认情况下,Claude Code 在运行命令或做出更改之前会先征得你的同意。无论你喜欢亲力亲为还是放手让它干,主动权始终在你手上。
它会犯错。 和任何工具一样,Claude Code 并不完美。它可能误解你的意图、引入 bug,或把方案做得过度复杂。保持参与能帮你尽早发现这些问题。
小结
Claude Code 是一款智能体编码工具。它读取你的代码库、编辑你的文件、运行命令,并连接外部工具,帮你更快地交付。你现在就可以在终端、VS Code、JetBrains 和 Claude Desktop 桌面应用中使用它。
Claude Code 的工作原理
Claude Code 的工作原理
Claude Code 与典型的聊天应用不同。了解它背后的工作原理,能帮你更有效地使用它。
智能体循环
用**智能体循环(agentic loop)**来解释 Claude Code 最为贴切:
- 你向 Claude Code 输入一条提示词。
- Claude 通过与模型交互来收集所需的上下文,模型返回文本或一个 Claude Code 可以执行的工具调用。
- 它采取行动——例如编辑文件或运行命令。
- 它验证结果,判断是否达成了你的提示词所设定的目标。
- 如果达成了,Claude 就结束并等待下一条提示词;如果没有,它会回头重试,直到结果完整且可验证。
在整个循环过程中,你随时可以补充上下文、打断它,或引导模型朝着你的目标前进。
上下文
Claude 有一个上下文窗口,决定它能存储和引用多少对话内容、文件内容、命令输出等等。一旦达到上限,Claude Code 会压缩(compact)你的对话——自动判断哪些内容可以删除或摘要,把上下文窗口降回可用的大小。
工具
工具是智能体运作方式的支柱。大多数 AI 助手只是文本进、文本出。工具则让 Claude Code 能够判断_何时_执行代码来推进任务。它可以是一个读文件的工具、一个网络搜索工具,或者其他各种能力。Claude Code 通过语义理解来决定何时调用工具、如何使用工具的输出。
权限
Claude Code 有几种权限模式:
- 默认行为: Claude 在编辑文件或运行 shell 命令之前,会先请求你的明确许可。
- 自动接受: 文件编辑不再询问,但运行命令仍需批准。
- 计划模式: 在开始任何工作之前,只用只读工具制定一份行动方案。
以上这些都可以在你的设置文件中配置。跳过权限时请务必谨慎——让 Claude Code 对运行命令拥有完全的自由,意味着错误可能在发生之前更难被拦住。
小结
Claude Code 融合了几个智能体概念:智能体循环、受管理的上下文窗口、工具,以及可配置的权限——全都装在你的终端里。它能读取你的代码库、采取行动、并验证自己的工作。这正是它从根本上区别于聊天窗口的地方。
安装 Claude Code
安装 Claude Code
无论你想在终端、网页还是 IDE 中使用,安装 Claude Code 都很简单。
终端
在 macOS、Linux 或 WSL 上,使用 curl 命令一步安装。如果你偏好 Homebrew,也可以用 brew install,但注意这种方式不支持自动更新。
在 Windows 上有几种选择。在 PowerShell 中使用 Invoke-RestMethod 命令;在 CMD 中使用 curl 命令。还有 winget 命令可用,不过和 Homebrew 一样,它不会自动更新。
安装完成后,你应该就能运行 claude 命令了。如果不行,重启你的终端。进入你的项目目录并运行:
claude
你会经历一些初始设置步骤,比如选择配色主题、用你的 Claude 账号(Pro、Max 或 Enterprise)登录,或者使用 API key。如果你的组织有 Claude Enterprise 账号,请务必选择该选项。
你在哪个目录运行 claude,它就能访问那个目录及其所有子文件夹。
Visual Studio Code
打开扩展面板,搜索「Claude Code」。找到 Anthropic 出品、带蓝色认证对勾的扩展,点击安装。
安装后可能需要重启 VS Code。启动后,用 Ctrl/Cmd + Shift + P 打开命令面板,搜索「Claude Code Open in New Tab」。如果侧边栏里能看到 Claude 的图标,也可以直接点击它。
VS Code 扩展的体验与终端非常接近。你也可以在设置中选择不用这套 UI,直接使用终端体验。
JetBrains
从 JetBrains Marketplace 安装 Claude Code 插件。安装后重启 IDE。重新打开时你会看到 Claude 的图标,点击它会打开一个面板,其中是与你编辑器并排工作的终端体验。
桌面应用
安装并登录 Claude Desktop 后,你会在顶部看到一个标着「Code」的开关。它的外观和感觉与聊天界面类似,但它让你能在指定文件夹中工作、更改权限,甚至可以在云端环境中工作。
网页版
在网页上,访问 claude.ai/code 即可使用 Claude Code,或者点击聊天应用侧边栏中的「Code」标签。它与桌面应用的工作方式类似,但只能操作 GitHub 仓库。
该用哪一个?
如果你想站在最前沿,终端是最佳选择——新功能总是最先登陆终端。IDE 集成提供几乎完全相同的体验,适合希望 Claude Code 与代码编辑器结合得更紧密的人。
桌面应用适合让 Claude 在后台跑任务,而你去处理别的事情。
网页版 Claude Code 则是适合想通过 GitHub 仓库远程处理项目的人的稳妥选择。
你想怎么用 Claude Code,完全由你决定。
你的第一个提示词
你的第一个提示词
你与 Claude Code 对话,就像与任何 AI 助手对话一样。在输入提示词时,有几点值得考虑,它们既能保护你,也能让事情更顺利。
自动接受 vs. 批准
你可以选择让 Claude 自动接受它提出的每一个文件改动,还是每次都请求你的明确许可。按 Shift + Tab 在各模式之间切换。
- 批准模式: Claude 每次要编辑文件或运行命令时都会请求许可。
- 自动接受模式: 文件编辑自动通过,但运行命令仍需你的许可。
没有标准答案——你自己舒服就好。
计划模式
Shift + Tab 菜单里还有计划模式(Plan Mode)。计划模式接收你的提示词,使用只读工具分析你的代码库、研究你建议的实现方式。它会一路提出澄清问题,最后给出一份它可以执行的详细计划。
计划模式非常适合规划复杂的改动,或者做一次安全的代码审查。很多时候你会让 Claude 处理一个功能的多步实现——这正是计划模式的用武之地。
示例:添加深色模式开关
我们来走一个例子。假设你有一个应用,需要加一个深色模式开关。打开项目根目录并运行 claude。连按几次 Shift + Tab 进入计划模式,然后写一条类似这样的提示词:
My app needs a dark mode implemented across the entire app. Can you create a toggle switch on the header that allows a user to toggle between light mode and dark mode? I need you to find a good contrast color that works based on my existing light theme.
让 Claude 把方案规划出来。审查完计划后,如果觉得不错,就接受它,并让 Claude 在每一步都请求你的批准。最后,你能清楚地看到 Claude 做了什么、以及它是如何得出结论的。
小结
使用 Claude Code 时,尽量把提示词写得具体详尽。如果你想每一步都保持在决策圈内,你完全可以做到。在执行任何代码之前,先用计划模式让 Claude 深入挖掘你想实现目标的细节。
Explore → Plan → Code → Commit 工作流
Explore → Plan → Code → Commit 工作流
如果这门课你只能带走一样东西,那就是这个工作流:Explore、Plan、Code、Commit。没有它,大多数人会直接让 Claude 写代码——这意味着后面要花更多功夫纠正方向。
探索与规划
处理前两步最快的方式就是计划模式。在计划模式下,Claude 不能编辑文件——它只读取文件,收集信息以确定如何着手实现。
要进入计划模式,按 Shift + Tab,直到在文本输入框下方看到「Plan Mode」。然后写一条类似这样的提示词:
I need to add WebP conversion to our image upload pipeline. Figure out where in the pipeline it should happen, whether we need new dependencies, and how to approach it.
Claude 会阅读相关文件、做一些网络搜索,然后给你一份行动方案。审查它,判断是否符合你的标准;不符合的话,让它修改具体的地方。
这是纠正方向的最佳时机,因为此时还没有写任何代码。如果你并不打算接着做改动,只是想要一份对代码库的整体概览,也可以不进计划模式、直接运行 explore 子代理。
编码
计划看起来没问题后,选择「approve」接受它,让 Claude 按清单逐项推进。你可以选择让 Claude 自动接受文件编辑,还是每次都询问你。
在宣布计划「完成」之前,Claude 会尽力排查问题,但有时你需要亲自介入。这正是与计划模式协作的好处——执行之后,你还保有「结果是如何得出的」这一层上下文,它能帮你引导 Claude 的后续决策。
几个让编码阶段更顺畅的技巧:
-
定义成功标准。 要让 Claude 对结果有信心,它得清楚「正确」长什么样。写计划时就把这一点写明确。
-
添加工具。 能帮 Claude 达成目标的工具能省去大量来回。例如,如果你在做 Web UI,安装 Claude in Chrome 扩展,Claude Code 就能控制一个浏览器标签页、直接测试 UI。
-
准备一套测试。 给 Claude 一套它可以持续对照验证的测试。Claude 甚至可以帮你写测试。交付之前,确保这些测试是可靠的事实来源,避免误报。
小提示: 如果你发现 Claude 反复踩同一个坑,让它把解决办法存进它的 CLAUDE.md 文件。
提交
在你亲自测试过改动、并对结果满意之后,就该推送代码了。提交之前,先运行一个子代理代码审查者来看看你的工作。子代理会带着一对「新眼睛」审视代码库——它不会带着主代理在本次会话中可能积累的偏见。
然后让 Claude 用你的风格生成一条提交信息。如此循环往复。
小结
要高效使用 Claude Code,请遵循 Explore、Plan、Code、Commit 工作流:
- Explore 让 Claude 获得项目所需的相关上下文。
- Plan 制定一份 Claude 用来衡量成败的行动方案。
- Code 是你与 Claude 之间反复打磨、直至敲定最终结果的过程。
- Commit 帮你审查并推送代码,好让你开始下一个功能。
上下文管理
上下文管理
上下文是 Claude 的工作记忆。它读的每个文件、跑的每条命令、你发的每条消息——都会占用上下文窗口的空间。
什么是上下文窗口?
把上下文窗口想象成 Claude 记忆里能容纳的空间总量。你每输入一条提示词、Claude 每读一个文件、每发起或接收一次工具调用结果,都会增加上下文窗口的占用。由于空间有限,优化使用方式就变得很重要。
上下文满了会发生什么
当接近上限时,上下文窗口会被自动压缩(compaction)。压缩会把重要细节做成摘要、并移除不必要的工具调用结果,以腾出空间。注意,这个过程可能会丢失一些细节。
命令
你可以用 /compact 命令手动执行压缩。它会把到那一刻为止的所有内容压缩。当你想在腾出上下文空间的同时保留之前工作的记忆时,它很顺手。
如果你想彻底从零开始、不留任何上一个会话的记忆,运行 /clear。它会移除一切。
要查看上下文的状态,运行 /context 命令。你会得到一份上下文大小的总览、占用空间最多的类别,以及一张展示分布的可视化图。
什么时候用哪个
一条通用的经验法则:
- 用
/compact:当你在做一个具体的功能、即将撞上上下文上限、但还需要继续干的时候。让上下文与当前功能保持相关很重要。 - 用
/clear:当你要开始一个新功能的时候。你不会想让上一段对话给新任务带入偏见。对于希望 Claude 跨会话记住的内容,放进 CLAUDE.md 文件,这样它就不必从零重新摸索。
节省上下文空间的技巧
写得具体。 模糊的提示词看起来更短,但从长远看反而消耗更多上下文。没有明确的指令,Claude 被迫更多地探索你的代码库、自己做推理——这比一条详尽的提示词占用的上下文空间多得多。
管理你的 MCP 服务器。 MCP 服务器默认会把它们所有可用的工具都加载进上下文,哪怕你根本没在用它们。如果你配置了一些与当前项目无关的服务器,考虑把它们关掉。你也可以试试「Skill」,它的工作方式与 MCP 服务器类似,但不会一开始就把所有内容加载进上下文。
使用子代理。 子代理与你的主代理并行运行,但拥有完全独立的上下文窗口。对于你只需要一个答案的任务——比如「鉴权端点在哪里?」——子代理去干活,只把一份摘要返回给主代理,让你的主上下文保持干净。
小结
在 Claude Code 中管理上下文至关重要。用 /compact 摘要长会话,用 /clear 从头开始。要高效利用上下文窗口:提示词写具体、留意什么在消耗你当前的上下文、并把你只需要结果的任务委托给子代理。
代码审查
代码审查
Claude Code 内置了几个能让你的 git 工作流更快的功能。我们逐一来看。
用子代理做审查
在推送 PR 之前,让 Claude 用一个子代理来审查你的改动。子代理在自己的上下文窗口中运行,视角是全新的——它不会带着刚刚写了一整个会话代码的主代理的偏见。
创建 code-reviewer 子代理时,把它限制在只读工具上。审查者应该标记问题,而不是编辑文件。把子代理的配置提交到你的仓库里,让整个团队用同一个审查者。
/commit-push-pr Skill
/commit-push-pr 这个 Skill 把提交、推送和创建 PR 合成一步完成。不用再一步步手动操作,只需运行这个 Skill,Claude 会替你搞定。
如果你配置了 Slack MCP 服务器、并在 CLAUDE.md 里列出了频道,它还会自动把 PR 链接发到你团队的频道里。
用 --from-pr 关联回会话
当 Claude 通过 gh pr create 创建 PR 后,会话会自动与该 PR 关联。如果你之后需要回到它——比如处理审查意见或修复失败的构建——运行:
claude --from-pr <PR_NUMBER>
它会从你上次停下的地方继续。
小结
推送之前,用子代理做一次无偏见的代码审查。用 /commit-push-pr 一步完成从提交到 PR 的全流程。再用 --from-pr 在之后恢复某个 PR 上的工作。这些都是小功能,但它们能为你日常工作流省掉大量摩擦。
CLAUDE.md 文件
CLAUDE.md 文件
Claude Code 最有用的功能之一就是 CLAUDE.md 文件。它为 Claude Code 提供关于你项目的持久记忆。
它解决的问题
没有 CLAUDE.md 文件时,你每次打开 Claude Code,它都是从零开始。它得重新探索你的代码库、弄清楚需要哪些依赖、理解哪些功能已经实现。有时它还会自行假设,这会让你更难把 Claude 引向正确的方向。
CLAUDE.md 解决了这个问题。它是你放在项目根目录的一个 Markdown 文件,Claude Code 会在你每次开始会话时自动读取它。把它想成你代码库的入职手册。CLAUDE.md 文件的内容会被附加到你的提示词后面。
一个示例
一个典型的 CLAUDE.md 文件长这样:
# Project
This is a Next.js 15 app using the App Router, Tailwind, and Drizzle ORM.
# Commands
- Dev server: `pnpm dev`
- Run tests: `pnpm test`
- Lint: `pnpm lint`
# Code Style
- Use 2-space indentation
- Prefer named exports
- All API routes go in app/api/
- Use server actions instead of API routes where possible
非常直白。现在如果你让 Claude Code 创建一个 React 组件,它已经知道要用 Tailwind 做样式、并遵循你的代码约定。
CLAUDE.md 是给团队用的
你可以(也应该)把 CLAUDE.md 提交到版本控制,让整个团队受益。记忆文件实际上有层级之分,取决于它是给谁用的:
-
项目级 CLAUDE.md 放在你项目的根目录。与团队共享。
-
用户级 CLAUDE.md 放在你的配置文件夹里。它只属于你,并对你所有的项目生效。把个人偏好放在这里。
技巧
把纠正存进记忆。 如果你发现自己在反复纠正 Claude——比如总是要提醒它用 server actions 而不是 API routes——就明确让 Claude 把这条规则存进记忆。下次打开项目时,它就知道了。
引用项目文档。 如果项目中有你想让 Claude 参考的文档,用 @ 符号加文件路径:
## README.md
Please read if you need more info: @README.md
先从没有它开始。 我们建议在项目初期不建 CLAUDE.md 文件,这样你能观察到自己在哪些地方不得不不断纠正模型。这能让你的 CLAUDE.md 保持精炼,只写必要的信息。等你准备好了,运行 /init 让 Claude 帮你生成一份。
小结
一次令人沮丧的 Claude Code 会话和一次高效的会话,差别往往就在上下文——而 CLAUDE.md 文件正是你提供上下文的方式。从你的技术栈、你的偏好、你的命令开始,然后在使用过程中逐步完善。
子代理
子代理
Claude 可以把任务委托给子代理,由它们把任务拆解、并行运行各个子任务,从而改善你的上下文管理。每个子代理都在自己隔离的上下文窗口中运行。
工作原理
在 Claude Code 中管理上下文很重要。上下文窗口的很大一部分会被探索代码库的工具调用、或做调研的网络搜索消耗掉。而 Claude 在探索过程中的发现,并不总是与你正在开发的主功能相关。
这就是子代理的用武之地。Claude 会生成一个子代理来处理诸如「帮我探索这个代码库」的任务。子代理用它自己的上下文窗口并行运行,完成所有探索工作,结束后把发现总结成摘要、返回给 Claude。
结果是:你得到了想要的答案,而找到答案的整个过程不会弄乱你的主上下文。
创建你自己的子代理
子代理用带 YAML frontmatter 的 Markdown 文件定义。上手最简单的方式是让 Claude 帮你生成一个。运行:
/agents
然后选择「Create new agent」。你会走过几个步骤,包括选择代理的作用范围、定义它的用途、选择它能使用的工具,甚至还能给它挑个颜色。
Claude 会为子代理生成名称、描述和提示词。这同时也告诉 Claude,根据你给的提示词,什么时候该调用这个子代理。
进一步自定义
子代理还可以进一步定制。以下是几个亮点:
- 持久记忆让你的子代理跨对话保留记忆。如果你一直在同样的项目上使用它,这非常有用。
- 预加载 Skill:通过添加
skill键并按名称列出 Skill,把它们预加载进子代理。注意,与主对话中的 Skill 不同,这里会把整个 Skill 完整加载进上下文。
小结
保持上下文窗口干净,是在 Claude Code 中保持高效的最佳方式之一。有了子代理,你可以让一个智能体在后台干重活,只把答案返回到你的主上下文窗口。
想深入了解? 看看我们的专门课程:子代理入门
Skill
文章
想深入了解? 看看我们的专门课程:智能体 Skill 入门
MCP
MCP
模型上下文协议(Model Context Protocol,MCP)是一个开放标准,让 Claude Code 能够连接外部工具和数据源。当你提问时,Claude 会自动判断何时该使用这些工具来更好地处理你的请求。
你的很多上下文其实生活在代码库之外——在数据库、效率工具或公开仓库里。MCP 弥合了这道鸿沟。
用它能做什么?
首先,要理解智能体 AI 中「工具」的概念。工具赋予像 Claude Code 这样的智能体执行动作的能力,帮它们更有效地完成任务。这与典型的 AI 不同——后者只会给你返回一段文本。
例如,如果你的团队用 Linear 做项目管理,你可以添加一个 Linear MCP 服务器,把你具体 issue 的细节带进来。如果你需要某个依赖的最新文档,像 Context7 这样的文档 MCP 服务器可以提供给它。
添加 MCP 服务器
你可以用 claude mcp add 命令添加 MCP 服务器。主要有两种类型:
- HTTP 服务器用于远程服务。它们由服务提供方托管,通过网络连接。
- Stdio 服务器用于在你本机上运行的本地进程。
你可以在 Claude Code 会话中用 /mcp 管理你的服务器:查看连接了什么、检查状态、禁用你不需要的服务器。
服务器的作用域
MCP 服务器可以用三种方式限定作用域:
- Local(本地)——只在当前项目中可用,仅对你自己。
- User(用户)——对你所有的项目可用。
- Project(项目)——使用一个
.mcp.json文件并提交到版本控制,这样任何使用这个代码库的人都会自动获得完全相同的服务器。
上下文成本
MCP 服务器会把工具定义加进你的上下文窗口——即使你并没有在实际使用它们。如果你配置了很多服务器,这会吃掉你可用的上下文。运行 /mcp 看看连接了什么,把没在用的都禁用掉。
如果某个工具有等价的 CLI(比如 GitHub 的 gh 或 AWS 的 aws),CLI 更省上下文,因为它不会添加常驻的工具定义。
你也可以考虑改用 Skill。一个 Skill 只把名称和描述加载进上下文,Claude 只有在判断需要用到它时才加载完整内容。
如果你的 MCP 工具超过了上下文窗口的 10%,Claude Code 会自动切换到工具搜索模式,按需发现合适的工具——不过这种方式可能没那么可靠。
小结
MCP 把 Claude Code 连接到你的外部工具和数据源。用 claude mcp add 添加服务器。用 .mcp.json 把它们限定到项目作用域,让团队自动获得。并留意上下文占用,禁用没在用的服务器。
钩子
钩子
钩子(hook)让你在 Claude Code 生命周期的特定时点运行命令。钩子与本课程讲过的其他一切的关键区别在于:钩子是确定性的——它们总会运行。
为什么要用钩子
你可以在 CLAUDE.md 里告诉 Claude 每次文件编辑后运行 Prettier。大多数时候它会照做。但有时不会。钩子则能让这件事每一次都发生,没有例外。
常见用例包括:
- 文件编辑后自动格式化
- 记录所有执行过的命令以备合规审查
- 阻止危险操作,比如修改生产环境文件
- 在 Claude 完成任务时给你发通知
工作方式
钩子配置在你的 settings.json 里。你选定一个事件,可选地为它适用的工具设置一个匹配器(matcher),再提供一条要运行的命令。可用的事件有:
- PreToolUse — 在工具调用之前运行
- PostToolUse — 在工具调用完成后运行
- UserPromptSubmit — 在你提交提示词之后、Claude 处理之前运行
- Stop — 在 Claude 结束响应时运行
- Notification — 在 Claude 发出通知时运行
你可以在 Claude Code 里通过 /hooks 命令配置它们,或直接编辑 settings.json。
一个实用示例
最常见的钩子:编辑后自动格式化。设置一个 PostToolUse 钩子,匹配器为 "Edit|MultiEdit|Write",这样每当 Claude 修改文件时它就会触发。命令检查文件扩展名,运行相应的格式化工具——TypeScript 用 Prettier,Go 用 gofmt,你的项目用什么就用什么。
用 PreToolUse 阻止操作
PreToolUse 钩子可以在工具调用执行之前阻止它。你的钩子会以 JSON 形式从标准输入(stdin)收到工具名称和输入,退出码决定行为:
- 退出码 0 — 正常继续。
- 退出码 2 — 阻止该操作。标准错误(stderr)上的消息会作为反馈回传给 Claude,让它知道自己为什么被阻止、并做出调整。
- 其他任何退出码 — 一个非阻断性错误,会展示给你,但不会阻止任何事。
这就是你执行硬性规则的方式。阻止对生产配置目录的写入。阻止包含 rm -rf 的 bash 命令。阻止向 main 提交。你的团队需要得到_保证_的事情,而不是仅仅被建议的事情,都用这个。
与团队共享钩子
配置在 .claude/settings.json 中的钩子是项目级的,可以提交到你的仓库——这意味着整个团队会自动获得相同的钩子。在命令中使用 CLAUDE_PROJECT_DIR 环境变量来引用存放在项目中的脚本,这样无论 Claude 当前的工作目录在哪里,它们都能正常工作。
小结
钩子让你对 Claude Code 的行为拥有确定性的控制。用 PostToolUse 做自动格式化和日志记录。用 PreToolUse 阻止危险操作。用 /hooks 或在 settings.json 中配置。并把它们提交到仓库,让团队也能用上。
如果一件事必须每次都无一例外地发生,别把它写进提示词。把它写进钩子。
课程测验
共 7 题:Q1–Q4 为知识选择题(判分),Q5–Q6 为满意度调查(不计分),Q7 为开放反馈。通过线 75%(至少 4/5)。
Q1. Claude Code works as an AI agent. What is an AI agent?
- 实时回答问题的聊天机器人
- 带内置自动补全功能的代码编辑器
- 托管你开发项目的云服务
- 能够采取行动完成目标的 AI ✅(正确答案)
Q2. What happens when Claude Code reaches its context window limit?
- 它会切换到更小、更快的模型以节省内存
- 它会删除你最旧的文件来为新文件腾地方
- 它会自动压缩你的对话以腾出空间 ✅(正确答案)
- 它会停止工作并要求你重启会话
Q3. What is the recommended workflow for using Claude Code effectively?
- Code → Test → Deploy → Monitor
- Explore → Plan → Code → Commit ✅(正确答案)
- Write → Review → Merge → Ship
- Prompt → Accept → Push → Repeat
Q4. How does Claude Code use the CLAUDE.md file?
- 只在你运行 /init 命令之后才读取它
- 只在你首次创建项目时读取一次
- 在每个会话开始时自动读取 ✅(正确答案)
- 只在你明确要求时才读取它
Q5. How satisfied are you with the content provided in this course?
- 完全不满意
- 不太满意
- 不好说
- 满意
- 非常满意
Q6. How likely are you to recommend this course to a friend or coworker?
- 完全不可能
- 不太可能
- 不好说
- 可能
- 非常可能
Q7. Is there any feedback you'd like to provide based upon your experience with this course so far?
(开放文本题)