大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
CLI 与会话
这一课你将能做到
- 熟练使用高频斜杠命令(/clear、/compact、/cost、/resume 等)管理会话与上下文
- 掌握
claude -p、-c、-r、--model等命令行参数,把交互式任务变成脚本能力 - 用
#、!、@、Ctrl+R、双击 Esc 等快捷键完成快速记忆、直跑命令、引用文件与回退
为什么要学
同样用 Claude Code,有人一天要手敲几百字重复描述,有人一个 claude -c 接续昨天的现场。差距来自对 CLI 表面的熟悉程度:会话是它的「工作内存」,命令行参数是它的「遥控器」,斜杠命令是「仪表盘」。这层熟练度不改变模型智力,但直接决定你的操作成本,也是后续 headless、CI 集成(进阶课内容)的地基。
人话:会话像「游戏存档」,斜杠命令像「游戏菜单」,命令行参数像「启动参数」。存档管理好了,换地图、读进度、重开一局都不心疼。
先建立图像
一次完整的使用循环:
启动 会话内
claude /help 查命令
claude "帮我看看构建脚本" /clear 清空上下文
claude --model opus /compact 压缩历史保留要点
claude -c ← 接着上次继续 /cost 看本次花费
claude -r ← 挑历史会话 /resume 会话内切换/挑历史
claude -p "..." ← 不进界面直接出结果
claude --version / claude doctor
跟着做
步骤 1:摸清启动参数
claude # 交互模式
claude "解释 pom.xml 的依赖树" # 带初始提问启动
claude -c # continue:恢复最近一次会话
claude -r # resume:列出历史会话挑选恢复
claude -p "统计 src 下 java 文件数" # print/headless:输出结果即退出
claude -p "总结这个仓库" --output-format json
claude --model opus # 指定模型启动(详见模型课)
claude --verbose # 显示更完整的工具调用细节
步骤 2:会话内高频斜杠命令
逐个体验(输入 / 会弹出自动补全):
/help 所有命令一览,忘了就查
/clear 清空当前上下文,开新话题前用,能省大量 token
/compact 压缩历史对话,保留结论,上下文过大时用
/cost 查看当前会话的 token 用量与花费
/resume 在会话内切换到其他历史会话
/export 把当前对话导出为文件保存
/doctor 安装与配置体检,出问题先跑它
/terminal-setup 开启换行键支持(Shift+Enter 等)
步骤 3:四个前缀快捷键
在输入框的第一个字符决定行为:
# 记忆 输入 "# 项目统一用 pnpm,不要用 npm" → 弹出选择写入哪个 CLAUDE.md
! 命令 输入 "!git status" → 直接在本地执行,结果进入上下文(不经过模型)
@ 引用 输入 "@src/services/OrderService.java 这个类有什么问题"
→ 把该文件作为引用注入
步骤 4:编辑与回退快捷键
Esc 中断当前生成/工具执行
双击 Esc 打开回退菜单(checkpoint),恢复到之前的对话或代码状态
Ctrl+R 搜索历史会话内容,找回之前讨论过的结论
上下箭头 翻阅自己的输入历史
\ + 回车 输入多行
步骤 5:headless 初体验
claude -p "用一句话概括 src 目录的职责划分"
claude -p "列出所有 TODO 注释" --output-format text | sort | uniq -c
-p 执行完即退出、只吐结果,这是把 Claude Code 接进脚本和 CI 的入口(进阶课展开)。
讲清楚要点
- /clear 与 /compact 是成本开关:上下文越长,每轮输入 token 越多、响应越慢。换话题就
/clear;话题要继续但太长就/compact。这是最实用的省钱手段。 - -c/-r 解决「会话丢了」:关终端、断网、误退出都不丢历史,会话持久化在本地。隔天继续用
-c,跨项目找旧讨论用-r或 Ctrl+R 搜索。 !是你自己的手,工具是它的手:!前缀命令由你直接执行并注入结果,适合「我知道确切命令」的场景;不写!让它执行则走权限流程,适合「让它来」的场景。#记的是长期约定,不是临时话:#写入 CLAUDE.md 的是「以后所有会话都要遵守」的规则(如构建命令、代码风格),一次性要求直接说就行。- checkpoint 回退 ≠ git 回滚:双击 Esc 回退的是「对话与文件改动状态」,是会话级的安全网;仓库级的安全网永远是 git,两者互补。
你可能会懵的地方
-
-c 和 -r 到底选哪个?
-c接「最近一次」,肌肉记忆按顺序用;-r接「任意一次」,有列表挑选。拿不准就直接-r,第一个通常就是刚才那个。 -
/compact 之后它「变笨了」怎么办? 压缩必然有信息损耗。补偿办法:压缩前让它把关键结论写进文件(方案文档、CLAUDE.md),或压缩后用一段话重述核心约束再继续。
-
!执行的命令结果模型能看到吗? 能。命令输出会注入上下文,模型后续可以基于它推理。这是「人跑命令给模型看」的高效协作方式。 -
headless 模式下权限确认谁来做? 无法交互确认,所以必须预先声明:用
--allowedTools白名单放行安全工具,危险操作默认拒绝。细节在进阶课与权限课展开。 -
命令太多记不住? 只需先记四个:
/help(忘了就查)、/clear(省钱)、/cost(看账)、Esc(刹车)。其余用到再查,一周自然形成肌肉记忆。
错法对照
| 错法 | 问题 | 正解 |
|---|---|---|
| 一个会话从早聊到晚不清理 | 上下文膨胀,变慢变贵还降智 | 换话题 /clear,长话题 /compact |
| 出错就关终端重开会话 | 上下文与现场白丢 | Esc 纠偏,-c/-r 恢复 |
| 该它执行的命令你自己抢着做 | 结果没进上下文,它还得问 | 需要它看到结果时让它执行或用 ! 注入 |
用 # 存一次性需求 | CLAUDE.md 被垃圾信息污染 | 长期约定才进 CLAUDE.md |
| headless 里期待弹窗确认 | 无人交互,任务卡死或被拒 | 预先 --allowedTools 白名单 |
卡点急救
- claude 命令异常、版本太旧:先
/doctor或终端跑claude doctor;升级用claude update或重新执行 npm 安装命令。 - 会话历史找不到:Ctrl+R 全文搜索关键词;仍找不到可能是切换了启动目录,会话按项目目录归档存储。
- 输出被截断/响应中断:Esc 后说「继续」,或把大任务拆小;频繁截断说明单步要求太重。
面试常问
-
headless 模式(-p)的典型用途? 非交互场景:脚本批量处理(对多个文件生成摘要)、CI 中自动 code review、定时任务、管道组合(与 grep/sort 等 Unix 工具串联)。关键是配好
--output-format与工具白名单。 -
为什么 /clear 能降低成本? 大模型按上下文总 token 计费,每轮请求都携带全部历史。历史越长,输入成本线性增长且延迟增加。清理不相关历史可减少无效 token,也降低模型被噪声干扰的概率。
-
会话持久化与回退机制的意义? 把「试错」成本降到接近零:agent 工作本质是探索,可回退(checkpoint、会话恢复)让大胆尝试成为可能,配合 git 构成双层安全网。
自测三问
/clear和/compact分别适合什么场景?#、!、@三个前缀各自做什么?- 如何恢复昨天中断的会话?如何搜索历史会话里的某段结论?
小结一句话
会话管理是 Claude Code 的「操作系统技能」:-c/-r 管存档、/clear 与 /compact 管内存、# ! @ 管输入效率、Esc 与双击 Esc 管刹车与倒车。
延伸
- CLI 参考文档
- 下一课:模型与定价——搞懂 Opus/Sonnet/Haiku 三档模型怎么选、订阅与 API 怎么算钱、如何主动控制成本。