Claude Code 从入门到精通(4):命令系统与会话管理

上一节介绍了 settings.jsonCLAUDE.md 与 Auto Memory。它们解决的是会话开始前的问题:Claude 可以做什么,以及它进入项目时应该知道什么。

配置完成后,接下来要掌握的是如何控制一次真实的开发会话。你需要知道怎样启动或恢复任务,什么时候规划、压缩或清空上下文,如何撤销错误修改,以及完成开发后应该用哪个命令审查代码。

Claude Code 为这些操作提供了两类入口:

  • CLI 命令和参数 :在终端中启动 Claude Code 时使用,例如 claude -cclaude -p
  • 会话内命令 :进入交互会话后,以 / 开头使用,例如 /compact/rewind

两者不要混用。claude --resume 是终端启动参数,/resume 则是会话内部命令。

一、先掌握 6 种启动方式

大多数时候,在项目根目录运行 claude 就够了。1

复制代码
# 在当前目录启动交互会话
claude

# 带着第一个问题进入交互会话
claude "解释这个项目的目录结构"

# 执行一次任务后退出,适合脚本和自动化
claude -p "列出当前目录中的 JavaScript 文件"

# 继续当前目录最近一次会话
claude -c

# 从会话选择器或指定 ID/名称恢复会话
claude -r
claude -r "auth-refactor"

# 使用指定模型启动
claude --model sonnet

如果要在另一个项目中工作,最明确的方式仍然是先进入该目录:

复制代码
cd /path/to/your/project
claude

当前官方 CLI 没有 --project-dir 参数。--add-dir 的含义也不同:它是在主工作目录之外,再授予 Claude 访问其他目录的权限,并不会把那个目录变成当前项目。1

复制代码
claude --add-dir ../shared-lib

1. 交互模式和 -p 模式怎样选择

两种模式适合不同任务:

模式 适合的任务 特点
claude 探索代码、开发功能、调试、持续修改 保留多轮上下文,可以随时纠正方向
claude -p 查询、批处理、CI 和脚本调用 输出结果后退出,便于与其他命令组合

-p 模式还可以输出 JSON,并限制代理最多执行多少轮:1

复制代码
claude -p \
  --output-format json \
  --max-turns 3 \
  "检查当前改动是否存在明显错误"

如果任务可能修改文件或需要你在中途判断方案,优先使用交互模式。不要为了"自动化"而把一个边界不清晰的大任务直接交给 -p 模式。

二、斜杠命令不是提示词

进入交互会话后,在输入框开头输入 /,Claude Code 会列出当前环境可用的命令。继续输入字符可以过滤列表。2

斜杠命令与普通提示词的区别是:

  • 普通提示词告诉模型"完成什么任务";
  • 斜杠命令直接控制会话、上下文、权限或某个预定义工作流。

命令必须出现在消息开头。不同平台、套餐和版本显示的命令可能不同,因此 /help 和输入 / 后出现的列表,比网上长期不更新的命令清单更可靠。2

与其一次记住上百个命令,不如按开发阶段掌握下面几组:

阶段 常用命令 主要用途
开始任务 /init/memory/plan 初始化项目说明、检查记忆、先规划后修改
控制会话 /model/effort/permissions/status 调整模型和推理强度,管理权限,查看状态
管理上下文 /context/compact/clear/btw 查看、压缩、清空上下文,提出支线问题
恢复和回退 /rewind/resume/branch 撤销修改、恢复或分支会话
检查结果 /diff/code-review/review/security-review 查看差异并进行不同类型的审查
扩展能力 /skills/agents/plugin/mcp 管理 Skill、子代理、插件和 MCP

下面重点解释最容易混淆、也最影响使用质量的命令。

三、/context/compact:管理长会话

Claude Code 的上下文不只有聊天记录,还包括系统提示、CLAUDE.md、Skill 描述、MCP 工具定义、读取的文件和工具输出。随着任务推进,可用于新工作的空间会逐渐减少。3

不要把"上下文窗口还没满"等同于"当前信息仍然清晰"。一段已经结束的排错过程、重复读取的大文件或冗长日志即使仍在窗口内,也可能成为后续任务的噪声。

1. 先用 /context 看占用

/context 会以可视化方式展示当前上下文的使用情况,并提示较重的工具定义、记忆文件或容量风险。需要展开详细项目时可以使用:2

复制代码
/context all

它适合回答两个问题:

  1. 当前会话是否已经很长,需要压缩或重开?
  2. 占用主要来自聊天历史、项目记忆,还是大量 MCP 和 Skill?

具体界面会随版本变化,不要依赖固定的 token 数字或布局。

2. 用 /compact 保留结论,压缩过程

/compact 会把到目前为止的对话总结成更短的上下文,从而释放空间。它不会简单删除全部历史,而是尽量保留目标、已完成工作、重要决策和当前状态。2

复制代码
/compact

还可以给摘要指定重点:

复制代码
/compact 保留最终接口约定、失败测试及其原因,省略已经排除的调试尝试

这比无条件压缩更可靠,因为你明确告诉 Claude 哪些信息会影响后续工作。

适合主动执行 /compact 的时机包括:

  • 一个独立阶段已经结束,即将进入实现、测试或文档阶段;
  • 刚完成一段冗长排错,已找到根因;
  • Claude 开始重复讨论已经确定的方案;
  • /context 显示对话或工具结果占用了大量空间。

不过,压缩是有损总结。摘要可能遗漏某个边界条件、文件名或中间证据。关键约定应保存在代码、测试、任务清单或 CLAUDE.md 中,而不是只存在于聊天历史里。

3. /compact/clear 的边界

这两个命令解决的问题不同:2

命令 发生什么 什么时候用
/compact 总结当前对话,继续同一任务 任务没结束,只是上下文变长
/clear 用空上下文开始新对话,旧会话仍可恢复 当前任务已结束,要处理无关任务

如果刚完成登录模块,接下来要继续修复同一模块的测试,使用 /compact。如果接下来要研究一个完全无关的部署问题,使用 /clear 更干净。

不要让一个会话永久承载所有工作。任务边界清晰时,新会话通常比反复压缩旧会话更容易保持目标一致。

四、/rewind:回退对话和 Claude 的文件编辑

Claude Code 会在每次用户提示前创建检查点,并跟踪 Claude 通过文件编辑工具产生的改动。输入 /rewind,或在输入框为空时连续按两次 Esc,可以打开回退菜单。4

当前菜单主要提供以下操作:

  • 恢复代码和对话:两者都回到选定节点;
  • 仅恢复对话:保留当前文件,只回退聊天;
  • 仅恢复代码:保留当前聊天,只撤销文件编辑;
  • 从这里开始总结总结到这里:只压缩选定范围的对话。

例如,Claude 已经完成了正确的代码修改,但后续解释越来越偏离目标,此时可以只恢复对话;如果讨论方向正确,但最新一轮改坏了文件,可以只恢复代码。

注意:回退不是 Git 的替代品

/rewind 有明确边界:4

  • 它只跟踪 Claude 文件编辑工具产生的改动;
  • rmmv、代码生成器和格式化工具等 Shell 命令造成的文件变化可能无法恢复;
  • 你在外部编辑器中的修改,以及其他并发会话的修改,通常不受它保护;
  • 检查点会随会话保留,但不是永久版本历史。

因此,大范围修改前仍然应该保持工作区可识别,并使用 Git 提交重要节点。/rewind 适合快速撤销当前会话中的一次错误尝试,Git 负责可审计、可长期恢复的版本管理。

五、/memory:查看和维护跨会话信息

/memory 会列出当前会话加载的 CLAUDE.mdCLAUDE.local.md 和规则文件,同时提供 Auto Memory 的开关与查看入口。5

复制代码
/memory

它最适合做三件事:

  1. 验证预期的项目指令是否真的加载;
  2. 打开并编辑项目或用户级 CLAUDE.md
  3. 审计 Claude 自动保存了哪些长期记忆。

这里要区分两个系统:

机制 谁维护 适合保存
CLAUDE.md 你和团队 编码规范、测试命令、架构边界和稳定工作流
Auto Memory Claude 调试发现、项目模式、你反复纠正的偏好

Auto Memory 不是绝对正确的事实库。模型可能把一次性现象总结成长期规律,因此仍要定期检查并删除过时内容。团队必须遵守的规则应在人工确认后写进版本控制中的 CLAUDE.md,而不是只留在 Auto Memory。

如果项目还没有 CLAUDE.md,可以运行:

复制代码
/init

它会分析代码库并生成起始文件;如果文件已经存在,则提出改进建议,而不是直接覆盖。5

六、/plan/permissions/model:控制工作方式

1. /plan:复杂修改先建立可验证方案

/plan 会进入 Plan Mode。这个模式适合需求仍需拆解、改动范围较大或必须先理解架构的任务。2

复制代码
/plan 修复登录后偶发跳回首页的问题

一个有效计划不应该只是"分析、修改、测试"三句话,而应写出:

  • 要验证的根因假设;
  • 预计修改的文件和边界;
  • 不应改变的现有行为;
  • 每一步的验证方式。

小范围、方案明确的修改不必强行先写长计划。Plan Mode 的价值是降低方向性错误,不是给每个任务增加仪式。

2. /permissions:管理允许、询问和拒绝规则

/permissions 会打开权限管理界面,可以查看或修改 allowaskdeny 规则以及附加工作目录。2

复制代码
/permissions

日常使用中,不要因为确认弹窗多就直接跳过所有权限。更稳妥的做法是观察反复出现的低风险操作,再把精确规则加入允许列表;写入生产数据、推送远端和读取敏感文件仍应保留确认或拒绝规则。

3. /model/effort:按任务调整成本

/model 用于切换模型,/effort 用于调整当前模型的推理强度。可用选项取决于模型、账户和组织策略。2

复制代码
/model
/effort

选择时可以遵循一个简单原则:

  • 文件查找、格式调整和明确的小修改,不需要最高推理强度;
  • 跨模块设计、复杂调试和高风险审查,再提高模型能力或 effort;
  • 切换后仍要用测试、类型检查和实际运行结果验证,不要把更强模型当成正确性证明。

七、代码审查:/code-review 不等于 /review

草稿里最容易造成误用的是 /review。当前 Claude Code 把本地差异和 GitHub PR 分成了不同入口:2

命令 审查对象 是否修改文件
/diff 当前未提交改动 否,只查看差异
/code-review 当前 diff 或指定目标 默认只报告;加 --fix 可应用修复
/review [PR] GitHub Pull Request 只读审查
/security-review 当前分支待提交改动 只读安全审查
/simplify [target] 已修改代码中的复用、简化、效率和抽象问题 会应用清理

完成本地功能开发后,可以先运行:

复制代码
/diff
/code-review

如果希望 Claude 自动处理确认过的发现,再显式使用:

复制代码
/code-review --fix

对已经创建的 GitHub PR,则使用:

复制代码
/review 123

/simplify 也不是通用的"修复所有问题"。当前版本会让四个审查代理分别关注复用、简化、效率和抽象层级,并直接应用清理,但它不以查找正确性缺陷为目标。先用测试和 /code-review 检查行为,再决定是否运行 /simplify2

任何 AI 审查都不能替代测试和人工判断。审查输出应被视为待验证的问题清单,而不是已经成立的结论。

八、恢复会话、支线问题与扩展能力

1. /resume:回来继续之前的任务

/resume 会按 ID 或名称恢复会话,不带参数时打开选择器;/continue 是它的别名。2

复制代码
/resume

在终端启动阶段也可以使用:

复制代码
claude -c
claude -r "auth-refactor"

一个实用习惯是用 /rename 给长期任务命名:

复制代码
/rename auth-refactor

相比依赖自动生成的摘要,稳定的会话名称更容易在几天后找回工作。

2. /btw:不污染主对话的临时问题

/btw 适合询问当前上下文中已经存在的信息,而不把问题和回答加入主对话历史。6

复制代码
/btw 刚才确认的配置文件名是什么?

它可以在 Claude 正在工作时独立回答,但没有工具权限,不能读取新文件、运行命令或搜索网页;回答也只有一轮。如果问题需要调查或会影响主任务决策,直接在主对话中提问更合适。

3. /skills/agents/plugin/mcp

这四个命令分别管理不同扩展入口:

  • /skills:列出当前可用 Skill;具体 Skill 通过 /skill-name 调用,而不是 /skill <名称>7
  • /agents:管理子代理配置;
  • /plugin:安装、启用、禁用或查看插件;
  • /mcp:管理 MCP 服务器连接和认证。2

它们会增加能力,也可能增加上下文和工具暴露面。只启用当前项目确实需要的扩展,并通过 /context 检查长期占用。

九、几个比命令更高频的快捷操作

除了斜杠命令,下面几个交互操作值得形成肌肉记忆:6

操作 作用
Esc 中断当前响应或工具调用,已完成的工作会保留
空输入时双击 Esc 打开 /rewind 菜单
Shift+Tab 循环切换可用权限模式
Ctrl+R 反向搜索命令历史
Ctrl+O 展开或收起详细工具调用记录
Ctrl+G 在默认文本编辑器中编辑较长提示词
\ + EnterCtrl+J 输入多行内容

还可以在输入开头使用 ! 直接进入 Shell 模式:

复制代码
! git status
! npm test

命令和输出会进入当前对话上下文。它适合执行你已经确定的命令;如果希望 Claude 先判断应该运行什么、解释风险或根据结果继续处理,就用普通提示词。

十、一套可复用的会话工作流

把上面的命令串起来,一次中等规模开发任务可以按下面的节奏进行:

  1. 在项目根目录运行 claude,用 /memory 确认项目规则已经加载;
  2. 对高不确定性任务使用 /plan,明确范围、风险和验收方式;
  3. 开发过程中用 /diff 查看实际改动,方向错误时尽早按 Esc
  4. 阶段结束后运行测试,把结果留在上下文中;
  5. 对话明显变长时先看 /context,再用带重点的 /compact
  6. 修改不满意时用 /rewind,但重要节点仍交给 Git;
  7. 完成后依次检查测试、/code-review 和必要的 /security-review
  8. 任务结束后使用 /clear 开始无关工作,或退出并在下次用 claude -c 恢复。

这里真正重要的不是记住多少命令,而是建立三个边界:

  • 任务边界 :同一任务用 /compact,无关任务用 /clear
  • 状态边界 :临时撤销用 /rewind,长期版本管理用 Git;
  • 验证边界:模型可以实现和审查,但测试结果与可观察行为才是完成证据。

掌握这些边界后,Claude Code 才不只是一个"能聊天的终端",而是一套可以被你控制、回退和验证的开发工作流。

参考资料

  1. Claude Code Docs:CLI reference
  2. Claude Code Docs:Commands
  3. Claude Code Docs:Explore the context window
  4. Claude Code Docs:Checkpointing
  5. Claude Code Docs:How Claude remembers your project
  6. Claude Code Docs:Interactive mode
  7. Claude Code Docs:Extend Claude with skills