认识 Claude Code

Claude Code 是 Anthropic公司 基于 Claude 模型打造的终端 AI 编程 Agent。它不是简单的聊天机器人,而是一个可以直接操作你代码仓库的 AI智能体,他不仅是一个帮你写代码的大神,还可以帮你描述需求、审查结果等。

具体他有哪些能力:

  • 理解整个代码库(多文件、多语言、多层依赖)
  • 自主规划任务,跨文件编写和修改代码
  • 执行 Shell 命令、运行测试、验证结果
  • 处理 Git 工作流(commit / PR / merge conflict)
  • 通过 MCP 协议连接数据库、API 等外部工具

与cursor、Trae这种AI IDE 不同,Claude Code 是一种CLI Agent,一般在终端命令行使用。为什么说一般,因为通过插件还可以再其他ide中使用,比如vs code。

总的来说呢,与其他AI Coding工具比,Claude Code 更适合大任务自动化。很多高阶开发者会同时使用Claude Code和 Cursor:Claude Code 负责大块任务,Cursor 负责精细打磨。

安装

参考上一篇文章:Claude Code + cc Switch 配置国产大模型 入门使用指南

文章详细介绍了安装和配置步骤,这里就不在赘述了。

工作模式

一共有4种工作权限模式:

模式 (Mode) 核心特点 适用场景
default 风险操作(如写文件、执行Shell命令)都需要你批准。 日常开发,兼顾效率与安全。
plan 只分析,不执行。会先生成一份执行计划,等你确认后再动手。 复杂任务的预演、代码审查和架构决策。
auto 由一个 LLM 分类器自动判断操作是否安全。 需要 Team 或 Enterprise 计划。
acceptEdits 自动批准文件编辑,但Shell命令仍需确认。 大规模重构,减少频繁点击“确认”的干扰。

怎么切换:通过按 Shift+Tab 快捷键快速切换。也可以在对话中输入 /plan,直接进入计划模式。CLI 启动参数也可退指定:claude --permission-mode plan
状态栏隐藏了怎么办:按一次 Shift+Tab,状态栏会闪现。
怎么看是哪种?在最下方会显示工作模式,如下图:
在这里插入图片描述

可能的坑:

  1. 当你描述一个稍微复杂需的求,可能它会自己调用 EnterPlanMode 工具进入计划模式。这时看到一个权限弹窗问"是否允许?"你要是允许后就会创建 plan 文件、会话会被标记。如果你确实不需要plan模式,可以在弹窗出现时点拒绝,然后口头告诉 Claude “先给方案,不用进计划模式”。或后续用 Shift+Tab 随时退出。

使用场景和模式推荐:

你的状态 / 任务类型 推荐模式 一句话理由
第一次接触这个项目 Plan 先摸清家底,再动手。
新功能开发(架构未定) Plan → Default 先规划,再执行。
日常小改动 Default 安全第一。
批量替换/大规模重构 AcceptEdits 省去反复点“确认”的麻烦。
跑测试 + 自动修复 Auto 无人值守闭环。
想先审阅再动手 Plan 只读模式最安全。
发现 Claude 在 Plan Mode 里无限分析 切回 Default 手动干预,让它停止分析开始干活。

一些使用建议:

  1. 对于一些复杂的工作需求,最好先用 Plan Mode 理清架构 → 然后确认方案 → 最后切换 Auto 执行。
  2. 不要每次都用 Auto Mode,它虽然快,但你也失去了对每一处改动的审查机会。敏感项目建议保持 Default。
  3. 如果 Claude 犯错,修正后记得更新 CLAUDE.md,让这次错误成为“最后一次”。后面学习 CLAUDE.md。

快速入门一个案例

  1. 创建项目

也就是创建一个工作目录,即一个文件夹,这里我先创建一个 \greedy-snake

  1. 启动claude

进到工作目录,claude命令启动:
在这里插入图片描述

  1. 需求文档

假如现在有一个想法,做一个贪吃蛇的小游戏,让他先给我们出需求文档和技术架构,再去真正写代码,当然这个项目比较小,只是一个例子。
在这里插入图片描述

可以看到,我们一开始需求只是一句话,他会和我们确定一些细节,才能最终开始写需求文档,如技术平台、功能复杂度等。我们按上下键选择,然后enter确认选择即可。

这里技术平台我就选第一个web实现。

然后功能复杂度我们就先选基础经典版:
在这里插入图片描述

这里如果想重新选技术平台,可以按左右键。

文档范围选择精简功能版:
在这里插入图片描述
全部选择完之后,点击提交:
在这里插入图片描述
注意,这里claude会自己使用后plan模式做规划再写文档,plan完成或让我们退出plan模式:
在这里插入图片描述

但是注意看这里有个坑:我们刚刚是在目录E:\AiProjects\greedy-snake下,他怎么把计划写到/Users/jiangli/Codes/claude-code-practice 去了?这里我也一开始也没搞明白,搜了下说新建的文件夹无法识别为git仓库,识别到的 Git 仓库根目录了。需要git init。但是我git init了也不行。

然后我问他当前目录是什么:
在这里插入图片描述

让再次让他帮我写需求文档就行了:
在这里插入图片描述

有个快捷键可以学一下,就是终端输出的内容很多倍折叠了,要展开来的话使用 ctrl + o

  1. 技术设计文档

接下来让他帮我写技术设计文档:
在这里插入图片描述

  1. plan模式使用

接着不让他直接写代码,而是下你使用plan模式,写出具体的实施计划。

接下来可以使用shift + tab 切换到plan,或者命令行使用 /plan 开头,告诉他使用plan,或者直接告诉他使用plan。我们使用第二种方式。

小技巧:当你打出一部分命令时,下面会有提示,有时候记不住可以根据他们的提示:
在这里插入图片描述

接着我们的需求:
在这里插入图片描述

接着会让我们确认
在这里插入图片描述

可以选择第二项,后面不用每次都确认了。
在这里插入图片描述
这样plan就写完了,可以退出plan模式。

  1. 开始写代码

接着就开始按计划写代码了:
在这里插入图片描述

开始按计划帮我们写代码了:
在这里插入图片描述

  1. 项目启动

claude code还可以帮我们启动项目:
在这里插入图片描述

选择yes:
在这里插入图片描述

接着我们在浏览器打开http://localhost:8080
在这里插入图片描述
启动完成!

  1. 需求更改

claude可以直接基于项目修改需求。比如让他把蛇的头部改为圆形:
在这里插入图片描述

修改完让你确认:
在这里插入图片描述
确认后就可以了。

常用命令行和快捷键

CLI 终端命令

命令 简写 说明
claude 默认启动(交互模式)
claude --model opus / sonnet / haiku 启动时指定模型
claude --permission-mode plan 以 Plan Mode 启动
claude --worktree feature-xxx 在隔离 Worktree 中启动
claude --continue claude -c 继续最近一次对话
claude --resume claude --r 选择历史对话恢复
claude --from-pr 123 从指定 PR 恢复会话
claude --dangerously-skip-permissions 跳过所有权限检查(仅限 CI/CD)
claude -p "指令" 一次性执行指令,执行后退出
claude --version 查看版本
claude update 升级到最新版本

斜杠命令(会话内使用)

命令 说明
/clear 清空对话历史(切换任务前必须执行)
/compact [说明] 压缩对话:/compact 保留数据库 schema 和 API 变更
/context 可视化查看上下文窗口使用情况
/cost 查看当前会话 token 用量
/export 将当前对话导出为文件
/rename [名称] 给当前会话命名,方便后续恢复
/rewind 打开回退菜单(同 Esc+Esc)
/plan 直接进入规划模式
/model [名称] 切换模型
/config 打开设置界面
/btw 主任务运行时并行提问,不打断当前流程
/export 把当前对话导出为 Markdown
/permissions 管理工具权限白名单
/doctor 运行健康检查
/init 分析当前项目,生成 CLAUDE.md 模板
/memory 查看 Claude 自动保存的项目记忆
/hooks 查看已配置的自动化钩子
/mcp 管理 MCP 服务器连接
/agents 管理 Subagents
/install-github-app 安装 GitHub Actions 集成
/bug 向 Anthropic 报告 bug
/vim 开启 Vim 键位绑定模式
/exit 退出 Claude Code

键盘快捷键

快捷键 功能
Shift + Tab 切换模式
Ctrl + C 中断当前操作
Ctrl + G 用系统编辑器编写多行提示词,保存后发送
Ctrl + B 将运行中的任务切到后台(释放前台交互)
Alt + T 切换 Extended Thinking(扩展思维模式)
Esc 中断当前操作
Esc + Esc 打开回退菜单
↑ / ↓ 方向键 浏览历史输入记录
! + 命令 直接执行 Shell 命令
@ + 文件名 引用文件加入上下文

CLAUDE文件

CLAUDE文件是什么

Claude Code每次对话开始时都会自动读取CLAUDE.md文件。这个文件不是说明书,它更像一份契约,告诉AI怎么去干活的约定。构建命令、目录结构、monorepo 结构、编码约定和团队规范,都很适合放在这里。

所以CLAUDE.md是非常重要的文件!Claude Code每次启动新会话,第一件事就是读这个文件,项目结构、代码风格、测试命令、常见陷阱,Claude都从这里了解。

一般项目中使用时,CLAUDE.md应该从小开始,后面允许Claude做错事,但是要记录到CLAUDE.md。正确做饭是不要想着预先就写一本完整手册,而是每次Claude犯错,就加一条规则。

在做大型项目时,在代码审查时可以在同事的PR上@.claude,让它自动把某条规则加到CLAUDE.md里。团队共享一个CLAUDE.md文件,check进git,每周都有人贡献。这个文件是活的,不是写完就放那不管的。

其实有几个地方可以写CLAUDE.md,他们是分级的,他们的作用范围一般是不同的:

文件位置 作用范围 适合存放的内容
项目根目录/CLAUDE.md 当前项目,提交到 git 技术栈、编码规范、常用命令、架构说明(团队共享)
项目根目录/.claude/CLAUDE.md 当前项目(更整洁) 同上,推荐结构
子目录 /src/module/CLAUDE.md 仅在该目录下工作时加载 模块特有的约定
~/.claude/CLAUDE.md 全局,所有项目 个人习惯、语言偏好、通用工作流

所以我们一般写的话也就两个就差不多了。

一个是项目根目录/.claude/CLAUDE.md,写针对当前项目的一些规范架构,团队共享,推到git。

一个是~/.claude/CLAUDE.md,写一些通用的个人习惯,不推到git。

子目录的根据需要写,可能一些大型项目才需要。

怎么创建

  1. 使用命令行工具 /init ,在会话中执行,Claude 自动分析项目生成模板。生成后手动补充你最重要的规范。
  2. 手动创建对应的文件,自己写文件内容。

怎么写

一个通用性的原则是:Claude自己能从代码里读出来的,不要写;Claude猜不到的,必须写。

核心原则:只写"模型不知道但需要知道"的事。

而且不是写的越多越好,一般最好控制在几十行,最长也不要超过200行。

具体写哪些内容可以参考:

✅ 该写 (应该放在 CLAUDE.md 中的内容) ❌ 不该写 (不应该放在 CLAUDE.md 中的内容)
项目特殊约定(如"PR 必须关联 Issue") 通用规范(如"用 camelCase")
当前模型会犯的错(如"不要用 deprecated API") 模型已经会的事
团队特有的流程(如"部署前跑回归测试") 行业通用最佳实践
项目特有的坑(如"这个接口返回格式不标准") 编程语言基础知识
Claude 猜不到的 Bash 命令,如自定义构建脚本 Claude 读代码就能知道的事(如「这是一个 React 项目」)
与默认不同的代码风格偏好 标准语言规范(Claude 已经知道)
测试命令和偏好的测试框架 详细 API 文档(给链接,不要全文粘贴)
项目架构决策和背景 频繁变化的信息(每次都要改的东西不适合放这里)
开发环境的坑(如特殊的环境变量) 文件逐一描述(Claude 会自己看文件树)
常见陷阱和修复方式 「写整洁代码」「遵循最佳实践」这种废话

一份简单的CLAUDE.md应该包含以下:

# 项目概述
项目目标、愿景、核心业务逻辑的简要说明

# 技术栈和环境
使用的语言、框架、版本、依赖管理方式、运行环境等

# 代码规范和风格
命名规范、代码风格、文件组织结构、导入顺序等

# 开发约定和模式
常用设计模式、架构约定、目录结构约定等

# 构建、测试和运行
构建命令、测试命令、运行命令、代码检查命令等

# 项目特定的注意事项
重要的业务规则、边界条件、特殊约定、已知问题等

# 协作偏好
回答风格偏好、沟通方式偏好、输出格式偏好等

以项目级的CLAUDE.md为例,假如我有一个Java后端的项目,下面给一个示例:

# 项目名称 — Claude 工作指南

> 本文档用于指导 Claude Code 在本项目中的行为。所有规则在会话启动时自动加载。

# 1. 项目概述
**项目目标**:[一句话描述,如:一个面向中小企业的订单管理系统]

**核心业务逻辑**:
- 用户认证与权限管理(RBAC)
- 商品 SKU 管理与库存扣减
- 订单创建、支付、履约全流程
- 消息通知(短信/邮件/站内信)

**愿景**:支撑日均 [XX] 万订单,系统可用性 99.95%

# 2. 技术栈和环境

| 类别 | 技术选型 | 版本 | 备注 |
|------|----------|------|------|
| 语言 | Java | 17 | 必须使用 LTS 版本 |
| 框架 | Spring Boot | 3.x | 已升级到 Jakarta EE |
| ORM | MyBatis Plus | 3.5.x | 使用 Lambda 式查询 |
| 数据库 | MySQL | 8.0 | 事务隔离级别 READ-COMMITTED |
| 缓存 | Redis | 7.x | 使用 Lettuce 客户端 |
| 消息队列 | RocketMQ | 5.x | 事务消息保证最终一致性 |
| 依赖管理 | Maven | 3.9+ | — |
| 运行环境 | JVM | 17 | 生产环境内存 4GB+ |

## 模块划分
order-service/
├── order-api/ # API 定义(DTO、Feign 接口)
├── order-common/ # 公共工具类、常量
├── order-service/ # 核心业务服务(启动入口)
└── order-task/ # 定时任务(独立部署)

# 3. 代码规范和风格
## 命名规范

| 类型 | 规范 | 示例 |
|------|------|------|
| 包名 | 全小写 | `com.example.order.service` |
| 类名 | PascalCase | `UserService`、`CreateOrderRequest` |
| 接口 | 无前缀 `I` | `PaymentProcessor`(而非 `IPaymentProcessor`) |
| 实现类 | 后缀 Impl | `PaymentProcessorImpl` |
| 方法/变量 | camelCase | `getUserById` |
| 常量 | UPPER_SNAKE_CASE | `MAX_RETRY_COUNT` |
| 枚举 | 全大写 | `OrderStatus.PENDING` |
| 数据库表名 | snake_case | `order_detail` |
| API 路径 | kebab-case | `/api/order-details` |
| JSON 字段 | camelCase | `userId` |

## 代码风格
- **缩进**:4 空格(禁止使用 Tab)
- **行宽**:120 字符(超行换行,运算符放行首)
- **注解风格**:方法注解与签名同行(`@Override` 单独一行)

# 4. 开发约定和模式
## 架构约定
| 层级 | 职责 | 禁止事项 |
|------|------|----------|
| **Controller** | 参数校验、调用 Service、返回 Result | 禁止编写业务逻辑、禁止直接操作数据库 |
| **Service** | 核心业务逻辑、事务管理 | 禁止直接操作 Mapper(通过 Service 调用) |
| **Mapper** | 数据访问、SQL 执行 | 禁止编写业务逻辑 |

## 统一响应格式
```java
public class Result<T> {
    private Integer code;    // 0 成功,其他失败
    private String message;
    private T data;
}

# 5. 构建、测试和运行
- 构建:mvn clean compile
- 打包:mvn clean package -DskipTests=true
- 单测:mvn test

# 6.禁止事项
- IMPORTANT: 不要修改 prisma/migrations/ 下的文件
- IMPORTANT: 所有数据库改动通过 Flyway Migration 文件

定期清空重写

Claude Code 之父建议每隔一段时间(比如一个月),把 CLAUDE.md 清空重写。

为什么要清空?

• 模型更新了,旧规则可能不再需要

• 项目演进了,旧约束可能已经过时

• 你对项目的理解加深了,旧配置可能有偏差

怎么清空?

• 把当前 CLAUDE.md 备份

• 从零开始,只写当前最痛的 3-5 个问题

• 用一周时间观察效果

• 根据实际表现逐步调整

清空检查清单:

• 这条规则,当前模型是否已经默认遵守?是 → 删

• 这条规则,最近一个月有没有触发过?没有 → 删

• 这条规则,是否和项目当前状态一致?不确定 → 删

• 这条规则,是否只是个人偏好?是 → 删

小结:ok,本章只是一个入门级的教程,想要用好Claude Code,还有很多要学。比如如何写好一个CLAUDE.md文件,如何使用skill,什么是Hooks、Subagents,怎么使用MCP,一个企业级大型项目如何维护.claude/ 文件下的目录等。敬请期待!

关注wx,同步更新!
在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐