# Claude Code 学习教程 —— 从入门到熟练

> 本教程将带你一步一步掌握 Claude Code CLI 工具的使用方法。

---

## 目录

1. [什么是 Claude Code](#1-什么是-claude-code)
2. [安装与环境配置](#2-安装与环境配置)
3. [第一个项目](#3-第一个项目)
4. [核心概念](#4-核心概念)
5. [常用命令速查](#5-常用命令速查)
6. [实战练习](#6-实战练习)
7. [进阶技巧](#7-进阶技巧)
8. [常见问题](#8-常见问题)

---

## 1. 什么是 Claude Code

Claude Code 是 Anthropic 公司推出的**命令行 AI 编程助手**。它不是一个普通的聊天机器人，而是一个可以直接在你的项目目录中工作的智能代理。

### 它能做什么？

| 功能 | 说明 |
|------|------|
| 读写文件 | 直接创建、修改、删除项目中的文件 |
| 运行命令 | 执行 shell 命令（编译、测试、安装依赖等） |
| 搜索代码 | 在项目中搜索文件、函数、关键字 |
| Git 操作 | 创建提交、查看日志、管理分支 |
| 代码审查 | 检查代码的正确性和安全性 |
| 网页搜索 | 查询最新文档和资料 |

### 工作原理

```
你发出指令 → Claude 分析需求 → 调用工具执行 → 查看结果 → 给你反馈
                                          ↑__________________|
                                          可能多轮迭代，直到完成
```

---

## 2. 安装与环境配置

### 2.1 系统要求

- **操作系统**: macOS、Windows、Linux
- **网络**: 需要能访问 Anthropic API
- **终端**: 任意终端模拟器

### 2.2 安装步骤

**macOS / Linux:**
```bash
# 使用 npm 安装（推荐）
npm install -g @anthropic-ai/claude-code

# 或使用 Homebrew (macOS)
brew install claude-code
```

**Windows:**
```bash
# 使用 npm 安装
npm install -g @anthropic-ai/claude-code

# 或下载安装包
# 访问 https://claude.ai/download 下载 Windows 安装程序
```

### 2.3 首次启动

```bash
# 进入你的项目目录
cd /path/to/your/project

# 启动 Claude Code
claude
```

首次启动时会引导你完成：
1. 登录 Anthropic 账号
2. 授权 Claude Code 访问权限
3. 选择偏好的模型

### 2.4 初始化项目

```bash
# 在项目根目录运行
claude
```

然后在交互界面中输入：
```
/init
```

这会在你的项目中创建一个 `CLAUDE.md` 文件，记录项目的关键信息。

---

## 3. 第一个项目

让我们从零开始，用 Claude Code 创建一个 Python 小项目。

### 3.1 进入项目目录

```bash
cd D:\claude_project2
claude
```

### 3.2 试试基础对话

在 Claude Code 的交互界面中，直接输入你的需求：

```
帮我创建一个计算器程序，支持加减乘除
```

Claude 会：
1. 分析你的需求
2. 创建 `calculator.py` 文件
3. 编写完整代码
4. 运行并测试

### 3.3 让 Claude 运行代码

```
运行 calculator.py 看看效果
```

### 3.4 添加功能

```
给计算器加上求幂（x的y次方）的功能
```

Claude 会修改现有文件，添加新功能。

### 3.5 让 Claude 写测试

```
为 calculator.py 写单元测试
```

---

## 4. 核心概念

### 4.1 对话上下文

Claude Code 会记住**当前会话**中的所有内容：
- 你之前的指令
- 它读取过的文件
- 执行过的命令及其结果

```
# 你可以这样连续对话
你: "读一下 hello.py"
你: "把输出改成中文"      ← Claude 知道你在说 hello.py
你: "再加一行注释"        ← Claude 仍然记得上下文
```

### 4.2 工具调用

Claude Code 通过**工具**来操作你的项目：

| 工具 | 用途 | 示例场景 |
|------|------|----------|
| `Read` | 读取文件 | 理解现有代码 |
| `Write` | 创建/覆盖文件 | 创建新文件 |
| `Edit` | 精确修改文件 | 修改某个函数 |
| `Bash` | 执行命令 | 运行测试、安装包 |
| `Glob` | 按模式匹配文件 | 查找所有 `.py` 文件 |
| `Grep` | 搜索文件内容 | 查找函数定义位置 |
| `WebSearch` | 网页搜索 | 查最新文档 |

### 4.3 权限控制

Claude Code 有三种权限模式：

| 模式 | 行为 |
|------|------|
| 🔴 严格 | 每次工具调用都需要审批 |
| 🟡 智能 | 读取操作自动放行，写入操作需审批 |
| 🟢 宽松 | 大部分操作自动执行 |

你可以在设置中调整，或在对话中用 `!` 前缀临时授权：

```
! rm temp.log        # 直接执行，无需确认
```

### 4.4 CLAUDE.md 文件

`CLAUDE.md` 是项目的"说明书"，告诉 Claude：
- 项目是做什么的
- 构建和运行命令
- 代码风格和约定
- 特殊注意事项

示例 `CLAUDE.md`：
```markdown
# 项目概述
这是一个 Flask Web 应用，用于管理用户待办事项。

## 常用命令
- 启动开发服务器: `flask run --debug`
- 运行测试: `pytest`
- 数据库迁移: `flask db upgrade`

## 代码风格
- 遵循 PEP 8
- 使用类型注解
- 函数文档使用 Google 风格 docstring
```

---

## 5. 常用命令速查

### 5.1 斜杠命令

在交互界面中，以 `/` 开头的命令：

```bash
/help           # 显示帮助
/clear          # 清空对话，开始新会话
/compact        # 压缩上下文（当对话很长时）
/config         # 打开设置面板
/cost           # 查看本次会话的 token 用量和费用
/doctor         # 诊断环境问题
/init           # 为当前项目创建 CLAUDE.md
/review         # 审查当前分支的 PR
/run            # 运行你的应用
/fast           # 切换快速模式
```

### 5.2 快捷操作

```bash
# 直接执行命令（在提示符中输入）
! git log --oneline -5    # 运行 git 命令
! npm test                 # 运行测试
! pip install requests     # 安装依赖
```

### 5.3 键盘快捷键

```
Ctrl+C    — 中断 Claude 的当前操作
Ctrl+D    — 退出 Claude Code
Ctrl+O    — 显示调试面板
```

---

## 6. 实战练习

按照以下练习，逐步提升你的 Claude Code 使用技能。

### 练习 1：代码阅读理解（5分钟）

```
# 让 Claude 读一个文件并解释
"解释 hello.py 中每一行代码的作用"

# 深入理解某个概念
"Python 中的 if __name__ == '__main__' 是什么意思？"

# 让它找代码中的问题
"分析这个文件的代码质量，有什么可以改进的地方？"
```

### 练习 2：创建新功能（10分钟）

```
# 创建完整的模块
"帮我创建一个 user.py，包含 User 类，有 name、email 属性，
 以及一个 save() 方法将用户信息保存到 JSON 文件"

# Claude 会：
# 1. 创建 user.py
# 2. 编写完整的类定义
# 3. 添加错误处理
# 4. 运行测试确认可用
```

### 练习 3：调试与修复（10分钟）

```
# 故意创建一个有 bug 的文件，然后让 Claude 修复

# 1. 先让它创建文件
"创建一个文件 buggy.py，写一个计算平均值但包含除以零错误的函数"

# 2. 让它找问题
"buggy.py 有什么 bug？"

# 3. 让它修复
"修复这些 bug，并添加输入验证"
```

### 练习 4：重构代码（15分钟）

```
# 让 Claude 改进现有代码
"重构 hello.py:
 - 把功能拆分成独立的函数
 - 添加类型注解
 - 添加 docstring
 - 使代码符合 PEP 8 规范"
```

### 练习 5：Git 工作流（10分钟）

```
# 初始化 git 仓库
! git init

# 让 Claude 帮你提交
"帮我提交所有代码，写一条合适的 commit message"

# 查看历史
! git log --oneline
```

### 练习 6：完整项目搭建（20分钟）

```
# 搭建一个完整的 Flask 待办事项应用
"创建一个 Flask 待办事项应用，包含：
 1. app.py — 主应用文件
 2. templates/ — HTML 模板目录
 3. 支持添加、删除、标记完成待办事项
 4. 数据存储在 SQLite 中
 5. 写清楚如何运行"
```

---

## 7. 进阶技巧

### 7.1 编写高效的提示词

**不好:** "修一下那个 bug"
**好:** "在 calculator.py 的 divide 函数中，当除数为 0 时没有正确处理，应该返回一个错误信息而不是崩溃"

**不好:** "加个登录功能"
**好:** "在 app.py 中添加用户登录功能：使用 Flask-Login，支持邮箱+密码登录，登录成功后跳转到 /dashboard"

### 7.2 利用上下文链

```
# 第一步：理解现状
"分析项目中所有的 API 路由"

# 第二步：基于上一步结果继续
"把 /users 相关的路由提取到一个单独的 blueprint 中"

# 第三步：继续深入
"给这个 blueprint 加上认证中间件"
```

### 7.3 使用探索模式

当你需要了解大型项目时，Claude 会使用 Agent 工具并行搜索：

```
"找出项目中所有处理用户认证的文件，总结它们之间的关系"
```

### 7.4 任务规划

对于复杂任务，Claude 会自动创建任务列表：

```
"帮我完成以下工作：
 1. 把数据库从 SQLite 迁移到 PostgreSQL
 2. 更新所有的查询语句
 3. 更新配置文件
 4. 更新测试
 5. 写一份迁移指南"
```

### 7.5 代码审查

```
# 审查当前改动
/review

# 或直接让 Claude 审查
"审查 app.py 中的安全问题"
```

### 7.6 处理长对话

对话太长时，使用压缩：

```
/compact    # 压缩上下文，保留关键信息
```

压缩后 Claude 会记住之前的**结论**和**决定**，但会释放掉阅读文件、搜索结果等中间信息。

---

## 8. 常见问题

### Q: Claude Code 和 Claude.ai 网页版有什么区别？
**A:** Claude Code 是命令行工具，可以直接操作你的本地文件和运行命令。网页版更适合普通的问答和文本处理。

### Q: 我的代码会被上传到 Anthropic 的服务器吗？
**A:** Claude Code 的对话内容会发送到 Anthropic API 进行处理。如果你有隐私顾虑，可以查看 Anthropic 的隐私政策和数据处理条款。

### Q: 如何控制费用？
**A:** 使用 `/cost` 查看当前消耗，使用 `/compact` 压缩长对话以减少 token 消耗，选择合适的模型（Sonnet 比 Opus 便宜）。

### Q: Claude 修改了我的文件，怎么撤销？
**A:** 强烈建议使用 Git 管理项目。修改前确保代码已提交，不想要的修改可以用 `git checkout` 撤销。

### Q: 可以离线使用吗？
**A:** 不可以。Claude Code 需要网络连接到 Anthropic API。

### Q: 支持哪些编程语言？
**A:** Claude Code 支持几乎所有主流编程语言，包括但不限于 Python、JavaScript、TypeScript、Go、Rust、Java、C/C++、Ruby、PHP 等。

---

## 下一步

恭喜你完成了基础教程！建议的学习路径：

1. **第 1-3 天**: 完成练习 1-3，熟悉基本操作
2. **第 4-7 天**: 完成练习 4-6，体验完整工作流
3. **第 8-14 天**: 在真实项目中使用 Claude Code
4. **第 15 天+**: 探索进阶技巧，编写自己的 CLAUDE.md

> 记住：Claude Code 是一个**协作工具**，最好的使用方式是把它当作一个有经验的同事——清晰地描述你的需求，给它足够的上下文，审查它的产出，然后在它的基础上继续改进。
