0x01 安装初始化
npm install -g @anthropic-ai/claude-code0x02 使用技巧
-
/clear:清除当前会话内容。 -
记忆功能:预先设定一些信息,分为了用户模式和项目模式,使用方法就是在输入内容之前添加一个
#符号。随着添加的记忆越来越多,如果想查看添加了哪些记忆,就可以输入内置命令/memory,就可以查看项目记忆或者用户记忆了,此时会打开相对应的文件(CLAUDE.md这个文件就是)。 -
Claude code 的三种工作模式:
- 普通模式:默认情况下的模式。
- 自动编辑模式:auto-accept edits,节省了我们手动授权的过程,在调用工具的时候,不再需要我们点击同意,Claude code会自动批准。
- 计划模式:plan mode,一般用在项目开发的初期规划阶段,可以先和AI进行充分的讨论,让它为我们制定一个完整的开发计划,等确认计划可行后,再动手实施。在计划模式下,AI只会输出文字和我们进行沟通,而不会立即去执行文件操作。
三种模式之间切换可以通过快捷键
Shift+Tab,
- 如果想要使用 LLM 的思考模式,也就是thinking模式,可以让 LLM 生成更深入更全面的回答,在Claude code中没有一个固定的按钮来开启它,而是通过关键字来触发的,触发的方式就是:在问题描述后面加上一个
think关键字。 think 模式也分好几个级别,分别是(思考的深度是依次递增的):
- think
- think hard
- think harder
- ultra think
-
在输入框中如果已经输入很多字了,但是突然发现描述不准确,想要全部删掉,此时可以快速双击
ESC键,输入框内的所有内容就会瞬间被清空。 -
在输入框中没有任何内容时,双击
ESC键,此时会展示出完整的历史对话记录,此时就可以通过上下方向键选择一个历史记录点,然后按下回车,此时就可以发现界面会立刻跳转到选中的那个时间点,在这个记录点之后的所有沟通内容都会消失,这其实就相当于回滚功能,但是需要注意的是:这个操作只会回滚对话记录,也就是上下文,所以不会撤销已经完成的文件操作。 -
狂飙模式:官方名称叫做 YOLO 模式。
- 这个模式的最大特点是:在开启之后,会在开发过程中一路狂飙,不会弹出任何关于文件读写、代码执行之类的权限提醒,会从头到尾一次性执行完毕。
- 要开启狂飙模式,不需要额外的做什么复杂的设置,只需要在终端中执行:
claude --dangerously-skip-permissions然后在右下角会出现 Bypassing Permisssions 字样,就说明开启成功了。
这个模式存在一定的风险:由于拥有所有的权限,一旦AI的理解出现偏差,它可能会在无意中修改甚至删除重要文件,对开发环境造成破坏,所以,需要谨慎使用。
- 在Claude code中插入图片
- 第一种:复制图片文件的路径,然后回到对话框中,按下 Command + V 粘贴进去。
- 第二种:直接在文件管理器中复制图片文件本身,然后用同样的方式粘贴到对话框中。
- 第三种:使用截图工具对屏幕进行截图,然后使用
Control + V快捷键直接将图片粘贴到对话框中。 - 第四种:可以直接将图片文件拖拽到对话框中。 通过各种方式将图片添加到对话框中以后,就可以针对这些图片对Claude进行发问。
- 引用文件
- 第一种:直接将文件从项目目录中拖拽到对话框中。
- 第二种:在对话框中先输入一个
@符号,输入之后下面马上就列出了当前目录根目录下的所有文件,按键盘的上下键进行选择,然后按回车或者Tab键就可以选中,但是这种方式只会显示当前文件夹的文件,不包含子文件夹,如果想要进入子文件夹,只需要在输入的时候@/xxx加上一个/就进入了全局文件搜索模式。 - 第四种:直接在对话框中输入文件的关键词,然后按下
Tab键,Claude code就会在整个项目中进行全局搜索,把包含输入的关键词的文件全部都列出。 - Claude code 自带具备自动检测激活的文件,我们只要在编辑器(例如cursor)中打开某个文件,让它处于激活状态,就可以看到Claude对话框的右下角显示出当前激活的文件名,这时候跟Claude对话,它就会自动把这个文件的内容带入到上下文中,不需要进行可以的引用操作。
- 如果我们不想把整个文件发送给AI,只想让它关注其中一小段代码,只需要在文件中用鼠标选中想要Claude分析的代码片段,可以看到对话框右下角有个提示,那么就可以直接基于这7行代码进行对话了。
- 全局安装MCP
Claude支持安装MCP来扩展能力,但是在默认情况下,MCP只在当前项目生效,换个项目就没有了,在全局安装MCP的方法: 以安装 context 为例,默认情况下安装的命令是:
claude mcp add --transport http context7 https://mcp.context7.com/mcp这种安装方式只对当前环境有效,如果想要让它全局生效,那么就需要加上 -s user 这个参数,这个参数的含义就是要求这个MCP是对user生效的,也就是全局为当前用户安装的,整体的命令就是:
claude mcp add --transport http -s user context7 https://mcp.context7.com/mcp
# 安装完成后,输入以下命令确认是否正确安装
claude mcp list- 手动切换模型
想要手动切换模型的话,在对话框中输入 /model 按下回车,就可以看到可以提供我们选择的模型的分类。
- 配置管理:个性化你的Claude
通过下面这个命令,可以显示当前使用的模型、API密钥等信息
claude config list0x03 Claude命令解读以及使用技巧
3.1 CLI命令(Command)
claude:在终端中输入,就启动了Claude code的交互式命令行(REPL)。claude -p "命令":这是一次性对话,执行后就会立即退出,不进入交互式命令行,通过相关的一个命令去执行。claude "命令":claude会执行相关的命令,这种方式会进入到交互式的模式。claude --help:查看帮助菜单claude mcp add:加载MCP,只在当前项目生效,不同文件夹下的Claude是不同的实例。claude -c:会直接进入到上一次(最近的)的历史对话中。claude -r:这种方式可以让我们选择对应的一个历史对话。claude --dangerously-skip-permissions:进入到YOLO模式,不需要工具的授权,但是这种模式下会消耗非常大的Tokenclaude mcp get playwright:查看某个MCP的详细配置claude mcp remove "playwright" -s user:删除某个MCP,这里指的是 playwright
3.1.1 管道功能
例如,我们可以通过以下方式直接执行一些命令
cat quicksort.py | claude "优化这段代码"
cat README.md | claude "翻译成中文"3.2 交互式命令行(REPL)
3.2.1 使用 Plan Mode
进入到Claude后,使用 Shift+Tab 就可以切换到Plan Mode模式下。
这个模式的作用是:在开始编写一个需求之前,特别是比较大的需求的时候,非常建议使用计划模式。他会让Claude Code做出接下来一个开发计划之后,再去进入到一个实际的开发阶段,这样可以确保Claude的开发是和预期一致的,并且能够节省很多的Token。
3.2.2 使用 / 唤起命令
以下是对各个命令的解读:
/add-dir:添加新的工作目录,让Claude能够访问和操作指定文件夹中的代码;/agents:管理代理配置,用于设置和调整Claude的工作行为和参数;/bashes:列出和管理后台运行的 bash shell 进程;/bug:提交关于 Claude code 的反馈和错误报告;/clear(reset):清空对话历史记录并释放上下文内存,重新开始对话,如果我们在使用过程中,出现了幻觉,那么就可以把刚才的那段对话上下文给清除掉,而且会帮助我们减少Token,因为当上下文足够多的时候,每次对话的时候Claude code都会把之前的对话以及对应的一些历史发送给AI大模型。建议在完成了一个大的需求的时候,可以去clear一下。/compact:也会清空对话历史,但保留对应的上下文的summary摘要信息,也就是把对应的上下文给浓缩一下,只保留浓缩过后的上下文的历史信息,可选择性的添加摘要指令;/resume:使用该命令可以进入一个对话的切换的状态,可以很方便的切换对应的历史对话。/config(theme):打开配置面板,用于调整主题和其他设置选项;/cost:显示当前会话的总费用和持续时间统计;/doctor:诊断和验证Claude code的安装状态及配置是否正确;/exit(quit):退出Claude code交互式命令行环境;/init:初始化并创建新的 CLAUDE.md 文件,用于记录代码库的文档说明;/install-github-app:为代码仓库设置 Claude GitHub Actions 集成,实现自动化工作流;/migrate-installer:从全局 npm 安装迁移到本地安装,更新安装方式;/compact:清空对话历史但保留摘要信息,可选择性的添加摘要指令;/ide:管理IDE集成功能并显示当前连接状态;/upgrade:升级到Max套餐以获得更高的使用限制和更多Ops模型访问权限;
3.2.3 如何复制图片?
- 将图片直接拖到对话框中;
- 如果是截图这种的,使用
Ctrl+V就可以粘贴图片到对话框中了。
3.2.4 如何使用网址?
将网站的URL地址直接复制到对话框中,Claude code 可以自动的帮助你分析或获取到网站的内容;
3.2.5 如何回到对应的检查点?
在Claude Code中,需要结合Git去进行一个回滚,建议在Claude Code中,每次执行了对应的一个文件操作的时候,最好去保存一条记录,也就是commit一次信息。
3.2.6 合理使用 /clear 和 /compact
上面已经提到了。
3.3 常用指令
下面这些是 claude code 日常使用中最重要的命令,应当全部掌握:
| 命令 | 功能 | 示例 |
|---|---|---|
| claude | 启动交互模式 | claude |
| claude “task” | 运行一次性任务 | claude “fix the build” |
| claude -p “query” | 运行一次性查询,然后退出 | claude -p “explain this function” |
| claude -c | 继续最近的对话 | claude -c |
| claude -r | 恢复之前的对话 | claude -r |
| claude commit | 创建Git提交 | claude commit |
| /clear | 清除对话历史 | >/clear |
| /help | 显示可用命令 | >/help |
| exit 或 Ctrl + C | 退出Claude Code | >exit |
3.4 操作示例:连接GitHub
3.4.1 安装GitHub MCP
claude mcp add github-server -e GITHUB_PERSONAL_ACCESS_TOKEN=YOUR_TOKEN -- npx "@modelcontextprotocol/server-github"注意的是要记得给一些权限。
0x04 CLAUDE.md
Claude.md 文件就类似于Cursor的Rules文件,规定了AI如何生成代码,用户可以在里面指定代码风格、开发环境、仓库规范等;
# Bash命令
- npm run build:构建项目
- npm run typecheck:运行类型检查
# 代码风格
- 使用ES模块语法(import/export),而非 CommonJS(require)
- 尽可能使用解构导入(例如:import { foo } from 'bar')
# 工作流程
- 完成一系列代码修改后,务必进行类型检查;
- 出于性能考虑,优先运行单个测试,而非整个测试套件;我们可以在项目根目录和子目录创建多个 CLAUDE.md,为每个上下文提供个性化配置;
| 文件路径 | 作用 |
|---|---|
| 项目根目录/CLAUDE.md | 团队共享的项目级配置,提交至Git供所有成员使用 |
| 项目根目录/CLAUDE.local.md | 个人本地覆盖配置,通常加入 .gitignore 避免影响他人 |
| 父目录 / CLAUDE.md | 在Monorepo 结构中自动继承的上级配置(递归向上查找) |
| 子目录 / CLAUDE.md | 针对特定子模块 / 功能的独立配置(优先于父级配置加载) |
| ~/.claude/CLAUDE.md | 用户全局默认配置,适用于所有Claude会话的基线设定 |
使用 /init 初始化一个 CLAUDE.md 文件,Claude 会分析这个项目目录,并且理解项目的结构,然后创建一个 CLAUDE.md文件。
这个文件会简单的介绍该项目是什么,以及有哪些开发命令、对应的架构、代码的模式,这个文件会作为每一次在Claude Code当中执行对应的一个对话时候会加入到上下文中,所以这个文件非常重要。
我们也可以在子文件夹中添加CLAUDE.md文件,此时如果子文件夹中也有相关的CLAUDE.md文件,那么也会加载子文件夹下的规则。
CLAUDE.md这个文件中应该存放一些核心的项目的结构、代码的风格以及一些重要的规则。可以理解为是一个简单的需求文档、技术文档以及类似Cursor Rules 的规则,需要注意的是,前期是Claude自动生成的,随着项目的迭代,我们也需要自己花时间去调整这个Claude.md文件。调整的方式有2种:
- 直接去编辑这个文件。
- 在对话框中,使用
# xxxxxx这种方式添加。
以下是一个 CLAUDE.md 的模板:
# 开发指南
## 理念
### 核心信念
- **渐进式改进胜过大刀阔斧** - 能编译和通过测试的小改动
- **从现有代码中学习** - 在实现前先研究和规划
- **实用主义胜过教条主义** - 适应项目现实
- **清晰意图胜过巧妙代码** - 选择朴实明显的方案
### 简洁意味着
- 每个函数/类单一职责
- 避免过早抽象
- 不玩技巧 - 选择朴实的解决方案
- 如果需要解释,说明过于复杂
## 流程
### 1. 规划和分阶段
将复杂工作分解为3-5个阶段。在 `IMPLEMENTATION_PLAN.md` 中记录:
## 阶段 N:[名称]
**目标**:[具体交付物]
**成功标准**:[可测试的结果]
**测试**:[具体测试用例]
**状态**:[未开始|进行中|完成]
- 随着进展更新状态
- 所有阶段完成后删除文件
### 2. 实现流程
1. **理解** - 研究代码库中现有模式
2. **测试** - 先写测试(红)
3. **实现** - 通过测试的最少代码(绿)
4. **重构** - 在测试通过的前提下清理代码
5. **提交** - 用清晰信息关联到计划
### 3. 遇到困难时(3次尝试后)
**关键**:每个问题最多尝试3次,然后停止。
1. **记录失败原因**:
- 你尝试了什么
- 具体错误消息
- 你认为失败的原因
2. **研究替代方案**:
- 找到2-3个类似实现
- 注意使用的不同方法
3. **质疑基本假设**:
- 这是正确的抽象层级吗?
- 能拆分成更小的问题吗?
- 是否有完全简化的方法?
4. **尝试不同角度**:
- 不同的库/框架特性?
- 不同的架构模式?
- 移除抽象而不是添加?
## 技术标准
### 架构原则
- **组合胜过继承** - 使用依赖注入
- **接口胜过单例** - 实现测试和灵活性
- **显式胜过隐式** - 清晰的数据流和依赖关系
- **尽可能测试驱动** - 绝不禁用测试,而是修复它们
### 代码质量
- **每次提交必须**:
- 编译成功
- 通过所有现有测试
- 包含新功能的测试
- 遵循项目格式化/linting
- **提交前**:
- 运行格式化程序/linter
- 自我审查更改
- 确保提交信息解释"为什么"
### 错误处理
- 快速失败并提供描述性消息
- 包含调试上下文
- 在适当层级处理错误
- 绝不静默吞咽异常
## 决策框架
当存在多个有效方法时,基于以下选择:
1. **可测试性** - 我能轻松测试这个吗?
2. **可读性** - 6个月后有人能理解这个吗?
3. **一致性** - 这符合项目模式吗?
4. **简洁性** - 这是有效的最简单解决方案吗?
5. **可逆性** - 后续更改有多困难?
## 项目集成
### 学习代码库
- 找到3个类似的功能/组件
- 识别常见模式和约定
- 尽可能使用相同的库/实用程序
- 遵循现有测试模式
### 工具
- 使用项目现有的构建系统
- 使用项目的测试框架
- 使用项目的格式化程序/linter设置
- 没有强烈理由不引入新工具
## 质量关卡
### 完成定义
- [ ] 测试已写完且通过
- [ ] 代码遵循项目约定
- [ ] 没有linter/格式化程序警告
- [ ] 提交信息清晰
- [ ] 实现符合计划
- [ ] 没有无issue编号的TODO
### 测试指南
- 测试行为,不是实现
- 尽可能每个测试一个断言
- 描述场景的清晰测试名称
- 使用现有测试工具/助手
- 测试应该是确定性的
## 重要提醒
**绝不**:
- 使用 `--no-verify` 绕过提交钩子
- 禁用测试而不是修复它们
- 提交不编译的代码
- 做假设 - 用现有代码验证
**总是**:
- 增量提交工作代码
- 随时更新计划文档
- 从现有实现中学习
- 3次失败尝试后停止并重新评估
0x05 一些高质量学习资料
- 官方文档
- 官方文章:《Claude Code最佳实践》
- 油管博主 Greg + Code :《9min看完Claude code的47个使用技巧》
- 志辉AI公众号文章:《10分钟掌握Claude code所有命令,从小白到高手》