Anthropic 出了官方认证 Claude Certified Architect(CCA),120 分钟 60 题,前 5000 名 partner 公司员工免费,之后 $99。考纲和学习资源都是公开的,一共包括五个方向:

  1. • Agentic 架构设计 27%
  2. • Tool 设计 + MCP18%
  3. • Claude Code 配置 20%
  4. • Prompt Engineering20%
  5. • Context 管理 15%

这不是一个 "会用 Claude" 的考试,它考的是 Agent SDK 编程、MCP 错误处理标准、CI/CD 集成这些生产级的细节。日常用 Claude Code 再熟,和写 SDK 代码是两回事。配置层靠提示词引导、SDK 层靠代码强制 —— 考的就是这个区别。

官方建议学习的内容都整理到了以下四节课程里:

image

考试报名及学习资源地址https://anthropic.skilljar.com/claude-certified-architect-foundations-access-request

本文是 Claude Code 实战(Claude Code in Action)的中文版,并且对国内大模型 GLM 进行了适配,方便国内朋友一步一步跟着动手学习!为了避免整体文章太长影响阅读体验,我将官方的 Claude Code 实战课程划分成三部分:

    1. 第一部分:Claude Code 工作原理和快速上手,就是本文
    1. 第二部分:Claude Code 集成 GitHub 实战(国内适配版)
    1. 第三部分:Claude Code 使用 Hooks 和 SDK 实战(国内适配版)

剩余两部分会在接下来的两篇文章当中分享,敬请期待。

编程助手是怎么工作的

当你让编程助手帮你干活,比如根据报错信息修 bug,它会像程序员一样思考和处理问题:

image

编程助手工作流程示意图

三个核心步骤

    1. 收集信息 - 先搞清楚报错是什么意思,影响了代码库的哪些部分,哪些文件跟这事儿相关
    1. 制定方案 - 决定怎么解决问题,比如改哪些代码,跑哪些测试来验证修复效果
    1. 动手执行 - 通过修改文件和运行命令来落实解决方案

关键点:第 1 步和第 3 步都需要助手跟外部环境打交道——读文件、检索文档、运行命令或者修改代码。

工具使用面临的挑战

问题来了。语言模型本质上就是个文本处理黑盒,输入文本、输出文本——它没法真正去读文件或运行命令。你直接让一个光杆语言模型去读文件,它会老实告诉你:"臣妾做不到啊"。

那编程助手是怎么破局的呢?它们用了一套叫做 工具使用(tool use)的巧思。

工具使用的运作机制

当你向编程助手发消息时,它会自动在你消息里塞一些指令,教语言模型怎么请求操作。比如,它可能会加上这样的提示:"如果想读文件,就回复 ReadFile: main.go"

完整工作流程

    1. 你问:"main.go 里写了啥?"
    1. 编程助手在你的请求里加上工具使用说明
    1. 语言模型回复:"ReadFile: main.go"
    1. 编程助手去读真实文件内容,然后发给模型
    1. 语言模型根据文件内容给出最终答案

原理:这套机制让语言模型看起来好像能够"读文件"、"写代码"、"跑命令",但实际上它只是在生成纯文本的回复罢了。

为什么 Claude 的工具能力这么重要

并不是所有语言模型都擅长用工具。Claude 系列模型(Opus、Sonnet 和 Haiku)在理解工具功能和有效使用工具方面特别强,能搞定复杂任务。

image

Claude 工具能力示意图

核心优势

  1. 能啃硬骨头 - Claude 可以组合不同工具来处理复杂任务,甚至能用它从没见过的新工具
  2. 平台可扩展 - 你可以轻松给 Claude Code 加新工具,Claude 会学着用它们,跟着你的工作流一起进化
  3. 更安全 - Claude Code 可以在不索引的情况下浏览代码库,通常意味着不用把整个代码库暴露到外部服务器

核心要点

理解编程助手,抓住这几条就够了:

  1. • 编程助手用语言模型来干活
  2. • 语言模型需要工具才能处理大部分实际编程任务
  3. • 不同语言模型用工具的能力参差不齐
  4. Claude 强大的工具使用能力让 Claude Code 更安全、更可定制、更有长期价值

正是这种工具使用能力,把一个简单的文本生成模型变成了强大的编程助手——它能读你的文件,理解你的代码库,并对你的项目做出有意义的改动。

Claude Code 配置

是时候在本地搭建 Claude Code 了! 完整的安装指南请参考官方文档:https://code.claude.com/docs/en/quickstart。我建议直接参考我自己写的《Claude Code 入门指南》

简而言之,你需要完成以下步骤:

安装步骤

    1. 安装 Claude Code
    1. MacOS (Homebrew): brew install --cask claude-code
    1. MacOS、Linux、WSL:curl -fsSL https://claude.ai/install.sh | bash
    1. Windows CMD:curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
    1. 安装完成后,在终端运行 claude 命令。首次运行时会提示你进行身份验证

额外配置

如果你要使用 AWS Bedrock 或 Google Cloud Vertex,还需要一些额外配置:

  1. • AWS Bedrock 特殊说明:https://code.claude.com/docs/en/amazon-bedrock
  2. • Google Cloud Vertex 特殊说明:https://code.claude.com/docs/en/google-vertex-ai

如果你有一个实际项目可以操作,使用 Claude Code 会更有趣。

我准备了一个小项目来探索 Claude Code 的功能。这是之前视频中展示的同一个 UI 生成应用。

注意:你不一定要运行这个项目。如果你想用自己的代码库,完全可以跟着课程的其余部分继续学习!

项目设置

这个项目需要少量设置:

    1. 确保你在本地安装了 Node.js。安装指南链接
    1. 下载本讲附件中的 uigen.zip 压缩包并解压
    1. 在项目目录中,运行 npm run setup 来安装依赖并设置本地 SQLite 数据库
    1. 可选:这个项目通过 Anthropic API 使用 Claude 来生成 UI 组件。如果你想完整测试应用,需要提供一个 API Key 来访问 Anthropic API。

提示:这是可选的。如果不提供 API key,应用仍会生成一些静态的示例代码。

设置方法如下

    1. https://console.anthropic.com/ 获取 Anthropic API Key
    1. 将你的 API Key 放入项目根目录下的 .env 文件中(与 package.json 同级)

下载资源

如果你使用的是 Anthropic 官方大模型,请下载:uigen.zip

如果你使用的是 GLM 等国产官方大模型,请下载:github/uigen

使用其他大模型(如 GLM-4.7)

如果你想使用 GLM-4.7 或其他第三方模型,.env 配置如下:

GLM-4.7 配置示例

# 获取 API Key: https://open.bigmodel.cn/usercenter/apikeys
ANTHROPIC_API_KEY=your-api-key
ANTHROPIC_BASE_URL=https://open.bigmodel.cn/api/anthropic/v1
ANTHROPIC_MODEL=glm-4.7

注意:智普官方给出的 Claude API 兼容站点为 https://open.bigmodel.cn/api/anthropic/ ,但是这里需要再加一个 /v1 后缀。其他大模型可以调试试一下。

其他常见大模型

你需要去模型官网查阅:该模型是如何适配 Claude API 的,将 ANTHROPIC_BASE_URL 替换为他的开发文档中的链接即可。如果找不到,发现只有 OpenAI 的兼容方式,那可能就需要让你的大模型对代码做一点小小的改动。

    1. 运行 npm run dev 启动项目

添加上下文

在使用 Claude 处理编程项目时,上下文管理至关重要。你的项目可能有几十甚至上百个文件,但 Claude 只需要合适的信息就能有效地帮助你。太多无关的上下文反而会降低 Claude 的性能,所以学会引导它关注相关文件和文档非常重要

image

上下文管理示意图

/init 命令

在新项目中首次启动 Claude 时,运行 /init 命令。这会让 Claude 分析整个代码库并理解:

  1. • 项目的目的和架构
  2. • 重要的命令和关键文件
  3. • 编码模式和结构

image

init 命令执行示例

分析完代码后,Claude 会创建一个总结并写入 CLAUDE.md 文件。当 Claude 请求创建这个文件的权限时,你可以按 Enter 逐一批准每个写入操作,或者按 Shift+Tab 让 Claude 在整个会话中自由写入文件。

CLAUDE.md 文件

CLAUDE.md 文件主要有两个作用:

  1. • 引导 Claude 了解你的代码库,指出重要的命令、架构和编码风格
  2. • 允许你给 Claude 提供具体或自定义的指令

这个文件会包含在每次你对 Claude 发起的请求中,所以它就像一个为项目量身定制的持久化系统提示。

CLAUDE.md 文件位置

Claude 会识别三个常见位置的不同 CLAUDE.md 文件:

image

CLAUDE.md 文件位置示意图

  1. CLAUDE.md - 通过 /init 生成,提交到源代码控制,与其他工程师共享
  2. CLAUDE.local.md - 不与其他工程师共享,包含个人指令和对 Claude 的自定义设置
  3. ~/.claude/CLAUDE.md - 用于你机器上的所有项目,包含你希望 Claude 在所有项目中都遵循的指令

添加自定义指令

你可以通过在 CLAUDE.md 文件中添加指令来自定义 Claude 的行为。例如,如果 Claude 在代码中添加了太多注释,你可以通过更新文件来解决这个问题。

使用 # 命令进入"记忆模式"——这让你能够智能地编辑 CLAUDE.md 文件。只需输入类似这样的内容:

# 节制使用注释,只为复杂代码添加注释。

Claude 会自动将这条指令合并到你的 CLAUDE.md 文件中。

使用 @ 提及文件

当你需要 Claude 查看特定文件时,使用 @ 符号后跟文件路径。这会自动将该文件的内容包含在你对 Claude 的请求中。

例如,如果你想问关于认证系统的问题,并且知道相关文件,可以输入:

认证系统是如何工作的?@auth

Claude 会显示一个与认证相关的文件列表供你选择,然后将选定的文件包含在对话中。

在 CLAUDE.md 中引用文件

你也可以直接在 CLAUDE.md 文件中使用相同的 @ 语法来提及文件。这对于与项目多个方面相关的文件特别有用。

例如,如果你有一个定义数据结构的数据库模式文件,可以这样添加到 CLAUDE.md:

数据库 schema 在 @prisma/schema.prisma 文件中定义。每当你需要了解数据库中存储的数据结构时,都可以参考它。

当你以这种方式提及文件时,它的内容会自动包含在每个请求中,这样 Claude 可以立即回答关于数据结构的问题,而无需每次都搜索和读取 schema 文件。

实施修改

在开发环境中使用 Claude 时,你经常需要对现有项目进行修改。本指南涵盖有效实施变更的实用技巧,包括通过截图进行视觉交流,以及利用 Claude 的高级推理能力。

使用截图进行精确沟通

与 Claude 沟通最有效的方式之一就是通过截图。当你想修改界面的特定部分时,截图能帮助 Claude 准确理解你指的是什么。

要将截图粘贴到 Claude 中,使用 Ctrl+V(在 macOS 上 Cmd+V 也可以)。这个键盘快捷键专门用于将截图粘贴到聊天界面中。粘贴图片后,你可以让 Claude 对应用的该区域进行具体修改。

提示:如要删除粘贴的截图,使用 ⬆️ 键,然后可以切换图片,通过删除键删除。

启动服务后访问 http://localhost:3000 ,现在我想将选中的内容垂直居中:

image

直接将要居中的内容截图,粘贴到 Claude Code,然后告诉它让它将内容垂直居中:

image

紧接着就是帮我们修改代码:

image

官方原视频中作者一次就修改好了,实际我使用的 GLM-4.7 用了 3 次才修好唉!

经验分享:这就是差距 —— 从这一点讲,有条件的还是上更好的模型吧!我把 GLM 的 Lite 套餐升级到了 Pro 之后切换成 glm-5 发现解决问题利索了很多!当然,如果你有条件上 Claude 官方大模型那更好!大多数国内大模型可以解决我们日常开发中 80% 的问题,而剩下 20% 比较复杂的问题可能对于 Claude 这类大模型更擅长。

然后在模型对话框输入"制作一张带有标题和内容的冷笑话卡片",大模型就帮我们生成了!

image

但是这里有一个小问题,就是 AI 回复的对话框中有个小组件 str_replace_editor,它本来的意图是告知用户文件正在编辑中,但是这里展示的文案是这个组件的技术名词,我们需要给它修改的对用户更友好。

计划模式

为了让 Claude 能够更清晰地理解我的诉求,我们仍然对要修改的区域进行截图,并提出修改意图:

使用更友好的文案替换 str_replace_editor(仍然沿用英文),表明使用该工具的意图。例如,可能表示正在创建或编辑文件,再加上操作的文件名称,封装一个新的组件并编写测试用例验证。

这是一个比较复杂的问题,Claude 可能需要较长的时间和算力去解决。对于需要在整个代码库中进行广泛研究的复杂任务,你可以启用计划模式。这个功能让 Claude 在实施变更之前对项目进行彻底的探索。

通过按两次 Shift + Tab 来启用计划模式(如果你已经自动接受编辑,则按一次)。在此模式下,Claude 将:

  1. • 读取项目中的更多文件
  2. • 创建详细的实施计划
  3. • 准确展示它打算做什么
  4. • 等待你的批准后再继续

这给你一个审查计划的机会,如果 Claude 遗漏了重要内容或没有考虑特定场景,你可以重新引导它。

思考模式

Claude 通过"思考"模式提供不同层次的推理。这些模式让 Claude 在提供解决方案之前花更多时间对复杂问题进行推理。

可用的思考模式包括:

  1. • Think - 基础推理
  2. • Think more - 扩展推理
  3. • Think a lot - 全面推理
  4. • Think longer - 扩展时间推理
  5. • Ultrathink - 最大推理能力

每个模式为 Claude 提供逐渐更多的 token,允许对具有挑战性的问题进行更深入的分析。直接在对话过程中告诉 Claude 让它使用对应的模式即可,例如:

这是一个比较复杂的问题,使用 ultrathink 思考模式去探索最佳实现方案。

何时使用计划模式 vs 思考模式

这两个功能处理不同类型的复杂性:

计划模式最适合:

  1. • 需要对代码库有广泛了解的任务
  2. • 多步骤实施
  3. • 影响多个文件或组件的变更

思考模式最适合:

  1. • 复杂的逻辑问题
  2. • 调试困难问题
  3. • 算法挑战

你可以结合使用两种模式来处理既需要广度又需要深度的任务。请记住,这两个功能都会消耗额外的 token,所以使用它们时需要考虑成本。所以,我们上面的示例提示词可以写成:

使用更友好的文案替换 str_replace_editor(仍然沿用英文),表明使用该工具的意图。例如,可能表示正在创建或编辑文件,再加上操作的文件名称,封装一个新的组件并编写测试用例验证。这是一个比较复杂的问题,使用 ultrathink 思考模式去探索最佳实现方案。

image

然后它就开始思考,形成最终的修改计划,等待你的同意,同意后开始执行修改:

image

中间涉及 npm test 等命令执行时还需要你的授权。执行完成后我们重新输入对话后的效果:

image

可以看到已经展示了优化后的文案。

控制上下文

在使用 Claude 处理复杂任务时,你经常需要引导对话,保持专注和高效。有几种技巧可以用来控制对话流程,帮助 Claude 保持正确的方向。

使用 Escape 键中断 Claude

有时候 Claude 会走偏方向,或者试图同时处理太多事情。你可以按 Escape 键在 Claude 回复过程中停止它,然后重新引导对话。

这在你想让 Claude 专注于某个具体任务,而不是同时处理多个事情时特别有用。例如,如果你让 Claude 为多个函数编写测试,而它开始为所有函数制定一个综合计划,你可以打断它,让它一次只专注于一个函数。

告诉 Claude:

给 @src/lib/auth.ts 文件写测试类

此时 Claude 会为 auth.ts 文件内所有方法都会生成测试方法,但如果你此时仅想为 createSession 方法生成测试方法,就可以在它生成过程中按下 Escape 键中断:

image

然后告诉 Claude Code:

只给 createSession 方法写测试类

会发现 Claude Code 会删除之前生成的多余的测试类,仅为 createSession 方法写测试类:

image

结合 Escape 和记忆功能

Escape 技巧最强大的应用之一是修复重复性错误。当 Claude 在不同对话中反复犯同样的错误时,你可以:

  1. • 按 Escape 停止当前回复
  2. • 使用 # 快捷键添加一条关于正确做法的记忆
  3. • 用正确的信息继续对话

这样可以防止 Claude 在你项目的未来对话中再犯同样的错误。

回退对话

在长对话中,你可能会积累一些不相关或令人分心的上下文。例如,如果 Claude 遇到错误并花时间调试,那段来回讨论的对话历史对下一个任务可能没什么用处。

你可以通过按两次 Escape 来回退对话。这会显示你发送的所有消息,让你可以跳回到更早的时间点,从那里继续。这个技巧可以帮助你:

  1. • 保留有价值的上下文(比如 Claude 对你代码库的理解)
  2. • 移除令人分心或不相关的对话历史
  3. • 让 Claude 保持专注于当前任务

image

注意:当你回退到某个节点时:

  1. • ✅ 对话历史恢复到那个节点
  2. • ❌ 文件系统不会自动回滚
  3. • ❌ 已创建的文件不会被删除

这是设计如此,因为:

    1. 文件可能已经被用户或其他工具修改
    1. 自动删除文件风险太大
    1. 会话回退主要是为了恢复对话上下文,而非文件状态

上下文管理命令

Claude 提供了几个命令来有效管理对话上下文:

/compact

/compact 命令会总结你的整个对话历史,同时保留 Claude 学到的关键信息。这在以下情况下非常理想:

  1. • Claude 已经获得了关于你项目的宝贵知识
  2. • 你想继续处理相关任务
  3. • 对话已经变得很长,但包含重要的上下文

当 Claude 对当前任务已经了解很多,并且你想在它转到下一个相关任务时保持这些知识,就使用 compact。

典型场景:例如上面写完测试类之后,Claude Code 会花一些时间进行反复调试,期间会产生大量上下文,其实后续 Claude Code 并不需要去关注这些调试内容,只需要关注它的任务即可。所以完成测试类编写后就可以执行 /compact。

/clear

/clear 命令会完全移除对话历史,给你一个全新的开始。这在以下情况下最有用:

  1. • 你要切换到一个完全不同的、不相关的任务
  2. • 当前对话上下文可能会让 Claude 对新任务产生困惑
  3. • 你想在没有任何先前上下文的情况下重新开始

何时使用这些技巧

这些对话控制技巧在以下情况下特别有价值:

  1. • 长时间运行的对话,上下文可能变得杂乱
  2. • 任务转换时,先前的上下文可能令人分心
  3. • Claude 反复犯同样错误的情况
  4. • 复杂项目,你需要保持专注于特定组件

通过策略性地使用 Escape、双击 Escape、/compact 和 /clear,你可以让 Claude 在整个开发工作流程中保持专注和高效。这些不仅仅是便利功能——它们是维持高效 AI 辅助开发会话的必备工具。

自定义命令

Claude Code 自带了一些内置命令,你可以通过输入斜杠 / 来访问它们。但你也可以创建自己的自定义命令,来自动化那些你经常运行的重复性任务。

创建自定义命令

要创建自定义命令,你需要在项目中设置一个特定的文件夹结构:

    1. 找到项目目录中的 .claude 文件夹
    1. 在其中创建一个名为 commands 的新目录
    1. 创建一个新的 markdown 文件,文件名就是你想要的命令名称(比如 audit.md)

文件名就是你的命令名称——所以 audit.md 会创建 /audit 命令。

示例:审计命令

这里有一个实用的自定义命令示例,用于审计项目依赖中的安全漏洞:

请帮我执行以下操作:

1. 运行 `npm audit` 检查已安装包中的安全漏洞
2. 运行 `npm audit fix` 应用更新
3. 运行测试验证更新没有破坏任何功能

创建命令文件后,你必须重启 Claude Code 才能让它识别新命令。

带参数的命令

自定义命令可以使用 $ARGUMENTS 占位符来接受参数。这让命令更加灵活和可复用。

例如,一个 write_tests.md 命令可能包含:

为以下内容编写全面的测试:$ARGUMENTS

测试规范:
* 使用 `Vitest` 和 `React Testing Library`
* 将测试文件放在源文件同目录的 `__tests__` 文件夹中
* 测试文件命名为 `[filename].test.ts(x)`
* 导入时使用 `@/` 前缀

覆盖范围:
* 测试正常路径
* 测试边界情况
* 测试错误状态

然后你可以用文件路径来运行这个命令:

/write_tests hooks 目录下的 use-auth.ts 文件

参数不一定是文件路径——它可以是任何你想传递给 Claude 的字符串,用于为任务提供上下文和方向。

核心优势

  1. 自动化 - 将重复性工作流程转化为单个命令
  2. 一致性 - 确保每次都遵循相同的步骤
  3. 上下文 - 为 Claude 提供项目特定的指令和规范
  4. 灵活性 - 使用参数让命令适用于不同的输入

自定义命令对于项目特定的工作流程特别有用,比如运行测试套件、部署代码,或按照团队规范生成样板代码。

在 Claude Code 中使用 MCP 服务器

你可以通过添加 MCP(Model Context Protocol,模型上下文协议)服务器来扩展 Claude Code 的能力。这些服务器可以在远程或本地机器上运行,为 Claude 提供它原本不具备的新工具和能力。

最流行的 MCP 服务器之一是 Playwright,它让 Claude 能够控制网页浏览器。这为 Web 开发工作流程开启了强大的可能性。

安装 Playwright MCP 服务器

要将 Playwright 服务器添加到 Claude Code,在终端中运行以下命令(不是在 Claude Code 内部):

claude mcp add playwright npx @playwright/mcp@latest

这个命令做了两件事:

  1. • 将 MCP 服务器命名为"playwright"
  2. • 提供在本地机器上启动服务器的命令

改进组件生成

下面是一个关于 Playwright MCP 服务器如何改进开发工作流程的真实示例。你可以让 Claude:

    1. 打开浏览器并导航到你的应用
    1. 生成一个测试组件
    1. 分析视觉样式和代码质量
    1. 根据观察结果更新生成提示
    1. 用新组件测试改进后的提示

例如,你可能会让 Claude:

导航到 `localhost:3000`,生成一个基础组件,审查样式,然后更新 @src/lib/prompts/generation.tsx 中的生成提示,以便后续生成更好的组件。

Claude 会使用浏览器工具与你的应用交互,检查生成的输出,然后修改你的提示文件以鼓励更具原创性和创意的设计:

image

授权后 Claude Code 自己就会调用 playwright 这个 MCP 工具打开浏览器,并输入指令。

管理权限

image

当你首次使用 MCP 服务器工具时,Claude 每次都会请求权限。如果你厌倦了这些权限提示,可以通过编辑设置来预先批准服务器。

打开 .claude/settings.local.json 文件,将服务器添加到 allow 数组中:

{
  "permissions": {
    "allow": ["mcp__playwright"],
    "deny": []
  }
}

注意 mcp__playwright 中的双下划线。这允许 Claude 使用 Playwright 工具而无需每次都请求权限。

结果和优势

在实践中,这种方法可以带来显著更好的结果。Claude 可能会更新提示以鼓励以下设计,而不是千篇一律的紫蓝渐变和标准 Tailwind 模式:

  1. • 暖色调日落渐变(橙-粉-紫)
  2. • 海洋深度主题(青-翠绿-青色)
  3. • 非对称设计和重叠元素
  4. • 创意间距和非常规布局

关键优势在于 Claude 可以看到实际的视觉输出,而不仅仅是代码,这使它能够对样式改进做出更明智的决策。

image

探索其他 MCP 服务器

Playwright 只是 MCP 服务器功能的一个例子。生态系统包括用于以下方面的服务器:

  1. • 数据库交互
  2. • API 测试和监控
  3. • 文件系统操作
  4. • 云服务集成
  5. • 开发工具自动化

考虑探索符合你特定开发需求的 MCP 服务器。它们可以将 Claude 从代码助手转变为能够与整个工具链交互的综合开发伙伴。

最后修改:2026 年 06 月 06 日
如果觉得我的文章对你有用,请随意赞赏