第三章: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