第三章:Claude Code CLI 核心功能
掌握 CLI 内置的斜杠命令、工具系统和文件引用语法,是高效使用 Claude Code 的关键。本章从命令参考出发,深入工具系统原理,并介绍处理大型项目的实战策略。
3.1 斜杠命令完整参考
在交互式 REPL 中,以 / 开头的命令用于控制会话行为,而非发送给 Claude 处理。
| 命令 | 说明 |
|---|---|
/help | 查看所有可用命令列表 |
/clear | 清除当前会话的全部上下文,开启新对话 |
/compact | 压缩对话历史(保留摘要),释放上下文空间 |
/model | 切换当前会话使用的模型 |
/cost | 显示当前会话的 token 用量与估算费用 |
/status | 显示当前会话状态(模型、上下文使用量等) |
/memory | 查看或编辑 Memory 记录 |
/review | 请 Claude 审查当前工作区的变更 |
/init | 在当前目录生成 CLAUDE.md 项目说明文件 |
/bug | 上报 Claude Code 的 bug |
/doctor | 诊断 Claude Code 安装与配置问题 |
/upgrade | 升级 Claude Code 到最新版本 |
💡
自定义斜杠命令
除内置命令外,你可以在 .claude/commands/ 目录下创建 Markdown 文件来定义自己的斜杠命令。详见第四章 4.4 节。
3.2 内置工具系统
Claude Code 内置一套工具(Tools),Claude 在执行任务时会自主决定调用哪些工具。理解这些工具有助于你更精确地描述任务。
文件操作类
| 工具 | 功能 | 典型场景 |
|---|---|---|
Read | 读取文件内容 | 查看代码、配置文件 |
Write | 创建或完整覆写文件 | 生成新文件 |
Edit | 精确替换文件中的片段 | 修改现有代码 |
MultiEdit | 在一次操作中对文件做多处修改 | 批量重命名、重构 |
搜索类
| 工具 | 功能 | 典型场景 |
|---|---|---|
Grep | 在文件内容中搜索正则表达式 | 查找函数定义、API 调用 |
Glob | 按文件名模式匹配文件路径 | 找到所有 *.test.ts 文件 |
LS | 列出目录内容 | 了解项目结构 |
执行类
| 工具 | 功能 | 典型场景 |
|---|---|---|
Bash | 执行 shell 命令 | 运行测试、安装依赖、git 操作 |
WebFetch | 抓取网页内容 | 读取文档、API 参考 |
WebSearch | 搜索网络信息 | 查找解决方案、最新 API |
协作类
| 工具 | 功能 | 典型场景 |
|---|---|---|
Agent | 启动子 Agent 处理子任务 | 并行执行独立任务 |
TodoWrite | 创建和管理任务清单 | 复杂任务的进度跟踪 |
3.3 文件引用技巧
在消息中使用 @ 语法可以明确告诉 Claude 需要关注哪些文件,减少它"猜测"的成本。
基本语法
text
# 引用单个文件
审查 @src/api/auth.ts 中的 JWT 验证逻辑
# 引用多个文件
对比 @src/old-router.js 和 @src/new-router.ts 的实现差异
# 引用目录(Claude 会递归读取)
分析 @src/components/ 目录的组件结构,生成依赖关系图
# 混合引用
基于 @package.json 和 @src/index.ts 生成项目的架构说明文档
引用最佳实践
- 精确优于宽泛:引用具体文件比引用整个目录更高效,上下文消耗更少。
- 提前说明关联:如果多个文件有关联,先说明"这两个文件是同一模块的不同版本"。
- 大文件先摘要:对超过 500 行的文件,先让 Claude 生成摘要,再针对摘要提问。
text
# 大文件处理技巧
先读取 @src/legacy/core.js 并生成一个 100 字以内的功能摘要,
然后告诉我其中哪个函数负责处理用户认证
3.4 大型项目策略
在包含数百个文件的大型代码库中工作时,需要主动帮助 Claude 建立上下文,而不是期望它自动理解全局。
策略一:先让 Claude 建立地图
text
请先浏览项目的顶层目录结构和 package.json,
给我描述这个项目的技术架构:主要模块、数据流向、入口文件。
不需要读取具体实现代码,只看目录和配置文件。
策略二:任务拆解后逐步执行
text
# 不推荐:一次性大任务
把整个项目从 JavaScript 重构为 TypeScript
# 推荐:拆解后分步执行
第一步:列出所有需要迁移的文件,按依赖顺序排列
第二步:从没有其他依赖的叶子模块开始,先迁移 src/utils/
第三步:迁移完成后运行测试,确认无误再继续下一个模块
策略三:善用 CLAUDE.md
在项目根目录创建 CLAUDE.md,写入项目架构说明、代码规范和注意事项。每次启动 Claude Code 时会自动加载,无需重复说明。
markdown
# 项目说明
这是一个 NestJS + TypeScript 后端服务。
## 目录结构
- src/modules/ — 业务模块(每个模块独立 controller/service/dto)
- src/common/ — 共享工具、守卫、装饰器
- src/config/ — 环境配置
## 代码规范
- 所有 API 响应使用 ResponseDto 包装
- 数据库操作必须通过 Repository 层,禁止在 Controller 中直接操作 DB
- 新增功能必须附带单元测试
## 禁止操作
- 不要修改 src/migrations/ 下的文件
- 不要直接运行 npm run db:reset(会清空数据)
3.5 /compact 与上下文压缩
随着对话进行,上下文窗口会逐渐被填满。/compact 命令让 Claude 将当前对话历史压缩为摘要,释放空间以便继续工作。
何时使用
- 单次会话超过 1-2 小时,上下文接近上限
/status显示 token 使用量超过 70%- 完成了一个阶段性任务,准备开始新的子任务
- Claude 开始"遗忘"之前设定的规则或约定
使用方式
text
# 基本压缩
/compact
# 自定义压缩指令(指定保留重点)
/compact 请重点保留:已修改的文件列表、待解决的 3 个 bug、当前使用的技术约定
压缩后的影响
| 方面 | 影响 |
|---|---|
| 对话历史 | 早期详细内容被摘要替代,不可还原 |
| 文件状态 | Claude 仍知道哪些文件被修改过(通过摘要) |
| 任务状态 | TodoWrite 创建的任务清单会被保留在摘要中 |
| 上下文空间 | 通常可释放 60–80% 的已用空间 |
ℹ️
/compact vs /clear 的区别
/compact 保留会话摘要,Claude 仍知道"做了什么";/clear 完全清空上下文,相当于开启全新会话。长任务中途使用 /compact,阶段性切换任务时使用 /clear。