你在终端里已经敲了不少Prompt,但有没有注意过,输入框里按下一个/会弹出什么?如果这个动作对你来说很陌生,那你大概率还停留在“把Claude Code当成一个话痨版代码生成器”的阶段。
这没什么丢人的,我一开始也是这样:把需求写成长段落,按回车,等它改完代码再人工检查。时间一长就发现问题——对话越来越长,上下文越来越满,AI开始记不住前面的约定,改代码也越来越“忘事”。后来我才意识到,Claude Code真正好用的地方并不只是打字,而是它内置的那套斜杠命令和快捷键。会话怎么开、怎么压、怎么恢复,上下文怎么控制,权限怎么收,全都可以用命令完成,根本不需要反复用自然语言去“求”它。
这篇文章就是一份速查手册。不绕弯子,直接把Claude Code里值得记住的内置命令按功能拆开讲,每条命令说清楚是什么、什么时候用、有什么坑。适合刚开始接触Claude Code的新手,也适合那种天天在用但只靠打字对话的“熟手”。你不需要一次背下所有命令,先挑几个跟自己工作流最相关的,用熟了再扩展。
1. 为什么说“只会打字”是入门误区
1.1 自然语言是入口,命令系统才是方向盘
很多人把Claude Code理解成一个“能看懂文件的聊天窗口”,觉得只要把话说清楚,它就该自己搞定一切。这个理解不算错,但远远不够。Claude Code本质上是一个在终端里运行的交互式开发环境,它能读文件、执行命令、改代码,所以它需要的不是“一段话”,而是持续的控制信号——告诉它该看哪里、该做什么、不该做什么。
内置命令就是这个控制信号的一部分。自然语言适合描述模糊目标,比如“帮我优化这个模块的接口设计”;内置命令则适合触发精确行为,比如“把当前对话历史压缩一下”“回到刚才那个检查点”“把某个目录加进上下文”。这两件事混着用,效率最高。
Claude Code的命令大致可以分成四类:会话生命周期管理(/init、/clear、/export、/resume、/rewind)、上下文控制(/compact、/context、/add-dir)、执行模式与权限(Shift+Tab、/permissions、/model)、信息查询(/cost、/status、/help)。其中任何一类没掌握,都会在特定场景下卡住。
提示:任何时候你都能在输入框里单独敲一个
/,Claude Code会弹出当前可用的命令列表。不用记全,但得知道“它有哪些命令可选”。
1.2 命令能帮你省下哪些隐性成本
先说最现实的:上下文就是钱。Claude Code按token计费,上下文占用越多,单轮对话的成本越高;上下文一旦超出窗口限制,AI还会“丢弃”早期内容,直接表现为失忆。用/compact压缩、用/context实时监控,等于给钱包装了一个阀门。
再说操作成本。如果你每个新任务都要把“请先看README,再跑一下测试,然后按现有代码风格修改”这段话重新打一遍,说明你还没用上自定义命令。斜杠命令可以把这种重复性要求固化成一条指令,以后敲/加一个词就触发,省下的不是几秒钟,而是每天的反复劳动。
最后是可维护性。改错代码、方向跑偏、会话崩溃,这些是终端AI工具绕不开的日常。/export备份会话、/rewind回退状态、/resume恢复现场,这些命令能让你的工作过程像git一样可回溯。只靠自然语言对话的话,这些操作根本无从谈起。
1.3 命令不是给“高手”准备的,菜鸟更需要
有个错觉是“新手先把prompt写好,再用命令”。我见过不少反例:一个人prompt写得贼溜,但会话开了三天不清理,上下文爆掉之后AI开始瞎编,他还在那怀疑模型变蠢了。其实模型没变,是上下文里堆了太多无关信息。
命令系统的价值恰恰在它“机械、确定、不依赖状态”。你不需要理解上下文窗口的内部机制,只需要知道上下文快满了就/compact;不需要懂文件权限模型,只需要知道危险操作之前先用/permissions收紧授权。对新手来说,命令是安全网;对熟手来说,命令是加速器。
2. 会话类命令:从初始化到恢复
2.1 /init:先把项目底细交给AI
我见过太多人打开Claude Code就开始扔需求,却忘了告诉它“这个项目是干什么的、有什么约定、怎么跑测试”。结果AI给出的代码风格跟项目现有代码完全不一致,或者调用了错误的构建命令。
/init就是解决这个问题的。它会在当前目录创建或更新CLAUDE.md文件,里面记录项目的核心信息:项目目标、技术栈、目录结构、常用命令、代码规范、团队约定等。Claude Code在每次新会话启动时会自动加载这个文件,相当于给AI一份“入职手册”。
在我自己的习惯里,第一次进入项目就用/init,它会引导我回答一些关于项目的问题。回答越具体越好,比如“测试命令是pnpm test”“后端在server/目录下”“命名规范是驼峰”这类信息,比“我们的项目很复杂”有用得多。回答完之后生成的CLAUDE.md,我会手动检查一遍,删掉那些“废话”,只留稳定且关键的事实。
2.2 CLAUDE.md的写作尺度
这里有个非常容易踩的坑:很多人把CLAUDE.md当成了任务备忘录,今天写“正在重构登录模块,完成60%”,明天写“记得修某个bug”。这种会频繁变化的内容,放进CLAUDE.md只会白白占用上下文,还会让AI产生混乱。
CLAUDE.md适合放的是长期稳定的项目事实:项目要解决什么问题、有哪些目录、构建和测试命令是什么、代码风格有什么约定、有没有历史包袱需要注意。原则很简单:三个月后还用得上,才值得写进去。临时任务信息请放在普通文件里,比如NOTES.md,用到时再让AI去读。
我自己维护的CLAUDE.md一般控制在150行以内。太长的CLAUDE.md会吃掉不少上下文额度,而且AI加载大段文字时,真正重要的信息反而容易被淹没。好的CLAUDE.md应该像一张索引卡,一眼扫过去就能知道项目全貌,而不是一份冗长的设计文档。
2.3 /compact:给对话历史做一次深度提炼
聊多了你一定会遇到这个场景:AI开始忘记几分钟前你跟它达成的约定,或者它引用一个变量名时明显用了错误的名字。这时候打开上下文面板一看,使用率已经90%以上了。此时最有效的操作是/compact。
/compact会把当前对话历史压缩成一份摘要,释放出上下文空间。压缩之后,AI依然知道这个会话大致聊过什么,但细节会丢失。比如一段完整的报错日志,压缩后可能只剩“遇到了一个Python导入异常”;一段详细的需求讨论,压缩后可能只剩“用户希望对接口做限流”。
所以我的习惯是:压缩之前,先让AI把当前进展、结论、未完成事项写到一个文件里。等/compact执行完,再把这个文件的内容喂给AI,它就能无缝接上。这个动作看起来多了一步,实际上能避免大量“失忆后重新解释”的扯皮。
注意:/compact之后,早期对话的原始内容就没了。如果你觉得自己可能需要完整的对话记录做复盘,先/export再/compact,两个动作配合使用。
2.4 /clear、/export、/resume:会话的备份与恢复
/clear用来彻底清空当前会话,上下文归零。它适合“当前任务已经完结,我要开一个新任务”的场景。很多人舍不得清,结果旧任务里的无关讨论一直占着上下文。我现在的原则是:一件事聊完了,就/clear,绝不心软。
/export会把整个会话导出成JSON文件。这个文件相当于“聊天版本库”,可以用来复盘、存档、甚至分享给同事。我的用法是每完成一个功能点,就/export一份带日期的存档,比如export-2025-06-01-login-module.json,留着以后翻查当时的决策过程。
/resume会列出最近的历史会话,输入编号就能恢复。配合/export,等于给你所有的AI工作流做了一套“版本控制”。第二天早上继续干活时,一条/resume命令就能回到昨天的战场,不用从零开始重新描述需求。
3. 流程控制类命令:让AI按你的节奏干活
3.1 执行模式切换:Shift+Tab
Claude Code默认的工作方式是“AI每做一步关键操作都会先征求你同意”,比如“我可以修改这个文件吗”。这个模式安全,但也有点啰嗦。当你已经信任AI的处理能力时,可以切换执行模式,让整个流程更顺畅。
在终端里按Shift+Tab,可以循环切换几种执行模式。我常用的是三种:普通模式(每次操作都确认)、自动接受编辑模式(AI改代码文件时不再逐次询问)、规划模式(只做分析不碰文件)。模式之间用Shift+Tab切换,不需要输入任何自然语言。
什么时候用哪种模式?我的经验是,小范围、低风险的改动,比如修一个CSS样式、补一段注释,用自动接受编辑模式会很爽;涉及重构、跨模块修改、删逻辑、改数据结构这种高风险操作,一定要切到规划模式,让AI先给出方案和影响范围,我自己确认之后,再切换到普通模式让它逐步执行。
3.2 规划模式的价值
很多新手不敢用规划模式,觉得“多此一举”。但我的实际体验是,规划模式能避免80%的翻车现场。让AI先读代码、分析依赖、列计划,比直接让它开工要稳妥得多。
比如你让它“把这个模块从同步改成异步”,它如果直接动手,可能连带着改了一堆调用方,项目直接编译不过。但如果你先切到规划模式,它会告诉你“需要改动哪些文件、会不会影响外部调用、有没有兼容性风险”,你拿到这个清单后再决定要不要执行。
这一套流程特别适合那种“你自己也不太清楚该怎么改”的场景。AI的规划不是给你一个标准答案,而是帮你把问题拆开,让你能在动手之前先看到全局。
3.3 /rewind:给自己留后悔药
Claude Code在执行过程中会自动保存一些“检查点”。/rewind命令可以把对话回退到之前的某个位置,然后从那里继续。这个功能我喜欢类比成“游戏存档”——你觉得走错了路,就读档重来。
什么时候会用到?最典型的情况是AI改了一堆文件,你发现方向根本就是错的。与其手动撤销一个又一个文件,不如用/rewind回到“方向还没错”的那一刻。
使用/rewind有一个重要前提:回退会丢掉那之后的所有对话记录和文件变更。所以我每次回退前都会先/export保存现场。这样做的好处是,万一发现“其实刚才的方向是对的”,还能从导出的会话记录里找回来。我在实际工作中,/rewind和/export几乎总是成对出现,已经成了肌肉记忆。
3.4 中断与重试:Esc、Ctrl+C
不要觉得只有“出错”才需要中断。很多时候,AI正在沿着错误方向滚雪球,你越早打断,损失越小。
Esc的优先级最高,立即打断当前正在进行的工具调用或输出。比如AI准备执行一个会修改数据库的脚本,而你意识到路径不对,直接按Esc;Ctrl+C一般用于打断AI当前的整个回合,中断后你可以重新输入指令纠正方向,不需要完全重开会话。
这里分享一个我的习惯:AI动手改代码之前,我会盯着它下一步要编辑哪个文件。发现它正要动一个不该动的文件,立刻打断,比事后去回滚要省力得多。不要觉得打断AI不礼貌,工具是替你干活的,方向得由你把控。
3.5 /review和/todos:把审查和任务追踪拉进终端
/review会对最近的代码改动做一次自动审查,然后列出它发现的问题。这个命令不需要AI去“写方案”,更像是触发一次专项检查。我常在提交代码之前跑一遍/review,把它当成一个免费的Code Review前置环节,能抓出不少“变量命名不清”“忘记处理边界情况”这类小问题。
/todos用来管理任务清单。你可以在会话开始时就要求AI把任务拆成多步并写入/todos,中间用/todos随时查看进度。这个命令尤其适合“大功能拆小步”的场景:AI每完成一个子任务,就更新一下清单,你随时能看到整体进度,不会出现它埋头干了半小时改到一个偏离方向的状态。
4. 上下文与权限控制:花小钱办大事
4.1 /add-dir:精确投喂上下文
Claude Code并不会自动把你的整个代码库都读进上下文。它在需要时才会去读具体文件。这个机制很聪明,但也有个问题:有时候你需要AI对某个目录形成一个整体认识,而它只零散地读了几个文件。
/add-dir就是干这个的。你输入命令后指定一个目录,Claude Code会把这个目录下的文件信息纳入上下文。比如你要改src/utils这个模块,直接用/add-dir把src/utils加进去,AI就能对模块内所有工具函数有一个全局理解。
但这里有个成本意识必须建立:目录越大,读入上下文的文件越多,单轮消耗的token也越高。把整个node_modules加进去会直接爆掉上下文,这不是开玩笑。我的原则是“按需加、用完就清”,尽量把范围控制在“这次任务真正需要了解的目录”。
4.2 /permissions:把权限管起来
Claude Code执行bash命令、修改文件时,默认会询问你。但如果你每次都无脑点击“允许”,就等于把门全敞开了。一旦AI被诱导执行了rm -rf或者不经确认就推送代码,后果不堪设想。
/permissions命令可以让你集中管理授权规则,比如预先允许某些安全操作(运行测试、查看文件内容),同时拒绝敏感操作(删除文件、执行git push)。配置一次之后,AI在遇到这些操作时就不会反复打扰你,危险操作也会被直接挡下来。
安全建议很简单:不要对整个项目目录无条件信任。特别是涉及删除、覆盖、推送这类不可逆操作时,宁可多点击一次确认,也不要嫌麻烦。我在项目里会把git push、rm这类命令设为默认拒绝,真有需要时再单独授权。
4.3 /model、/cost、/context:实时监控三件套
/model可以查看当前用的是哪个模型,也可以切换到别的模型。不同模型在速度、推理能力、成本上差异不小,根据任务难度切换模型是一个被低估的省钱技巧。简单任务用轻量模型,复杂重构再切到更强的模型。
/cost显示当前会话的累计费用,/context显示上下文使用率。这两个命令我建议养成“每隔一段时间看一眼”的习惯。特别是在开一个长会话之前,先看一眼/cost,心里有数;在AI开始“变傻”的时候,立刻看一眼/context,如果使用率已经很高,就该/compact了。
这三条命令本身不复杂,但它们代表了一种意识:把Claude Code当成一个有预算、有边界的工具,而不是无限免费的许愿机。花小钱办大事的前提,是你知道自己正在花多少钱、上下文水位在哪里。
5. 自定义斜杠命令:打造自己的高频操作
5.1 自定义命令的存放位置与基本格式
内置命令再全,也不可能覆盖每个人的工作流。Claude Code允许你创建自己的斜杠命令,方法是在项目根目录下建一个.claude/commands/目录,目录里的每个Markdown文件名就是一个命令名。比如你新建一个commit.md,那么就可以用/commit触发它。
每一个命令文件就是一段“系统指令”。AI会把你写入的Markdown内容当作指令来执行,所以你可以把那些“每次都要打三遍”的长篇要求,一次性固化到文件里。命令文件的顶部可以用YAML格式的说明区,配置命令的描述信息、参数提示、允许使用的工具等。
这个机制的本质是把AI的指令“模板化”。你不再每次敲一大段需求,而是敲一个斜杠命令,AI自动套用你写好的完整指令,它输出的稳定性也会明显提升。
5.2 一个实用的自定义命令示例
我先拿一个“生成提交信息”的命令当例子。很多人的工作流是:git diff之后,手动写commit message。这个完全可以交给AI。在.claude/commands/commit.md里写:
--- description: 根据当前改动生成符合规范的git提交信息 argument-hint: "可选:补充本次提交的额外说明" allowed-tools: Bash(git status, git diff, git diff --cached) --- 先运行 `git status` 和 `git diff --stat`,了解本次改动的总体情况。 再运行 `git diff`,查看具体代码变更。 根据改动的范围和内容,生成一条提交信息。 提交信息需要符合约定式提交规范,比如 feat: 新功能、fix: 修复、refactor: 重构。 如果用户提供了额外说明,请一并考虑进去。保存之后,在终端里输入/commit,AI就会按这套流程走一遍,最后给你一个格式规范的提交信息。如果你还想补充点上下文,可以在命令后面直接带参数,比如/commit 这次主要是重构了登录部分的错误处理,AI会把它也纳入考虑。
5.3 参数注入与shell命令执行
自定义命令支持两个“高级玩法”。第一个是参数注入,在命令文件里写$ARGUMENTS,它代表用户在斜杠命令后面输入的所有文本。比如上面的/commit 这次主要是重构了登录部分的错误处理,那$ARGUMENTS的值就是“这次主要是重构了登录部分的错误处理”。
第二个是直接执行shell命令,在命令文件里用!开头的行,表示这一行直接交给shell执行,不经过AI解释。比如你可以在命令文件里写:
!git log --oneline -5然后告诉AI“参考最近的提交风格,生成新的提交信息”。这样的命令把真实命令输出和AI分析结合在了一起,比纯自然语言的描述精确得多。
自定义命令是Claude Code里最值得花时间研究的模块。我自己的.claude/commands/目录里固定放着几个:/commit生成提交信息、/spec写接口文档、/test生成单测、/daily汇总当天改动。每个命令都是一次性搭好、长期复用,换算下来省下的时间相当可观。
6. 高频踩坑与经验速查
6.1 常见问题快查表
| 问题描述 | 可能原因 | 解决思路 |
|---|---|---|
| AI开始忘事,答非所问 | 上下文使用率过高 | /context查看水位,/compact压缩,或先/export再/clear |
| 压缩后AI丢失关键细节 | /compact把细节提炼没了 | 压缩前先把结论和未完成事项写入文件,压缩后再读取 |
| /rewind之后成果全没了 | 回滚前没有保存现场 | 回滚前先/export,再用导出文件找回内容 |
| AI擅自执行危险命令 | 权限放得太宽 | 用/permissions提前拒绝rm、git push等敏感操作 |
| 自定义命令总是“跑偏” | 指令写得太含糊 | 把命令文件改写成明确的操作步骤,少用模糊形容词 |
| 切到自动接受模式后被AI带偏 | 小改动模式用在了大工程上 | 高风险任务切回普通模式或规划模式,逐步确认 |
6.2 我踩过的几个坑和调整
最常踩的坑是“压缩后接不上茬”。早期我习惯在上下文快满时才/compact,结果压缩完AI对我的项目进度一脸陌生。后来我改成“先落文件,再行压缩”:每次AI完成一个里程碑,我就让它把当前状态写进NOTES.md,再做压缩。这个习惯帮我解决了很多上下文丢失的麻烦。
第二个坑是“不敢打断”。一开始我怕按Esc或Ctrl+C会“搞坏”会话,结果经常看着AI往错误方向狂奔。后来我发现中断是极其安全的操作,它只是停止当前这一轮的动作,并不会删除对话历史、不会改变项目文件。你中断后输入新的指令,AI会直接照做。对这个工具有更多掌控感的转折点,就是当我开始习惯性地打断它。
第三个坑跟权限有关系。所有目录的读取权限我都点了允许,图省事。结果有一次AI读到了production配置文件里的敏感信息,然后把它写进了注释里。虽然最后没有造成事故,但那种后怕让我后来把所有敏感目录的读取权限都单独收紧了。
6.3 我现在的日常命令流
最后分享一下我目前比较舒服的一套操作流。早上开工,先/resume找回昨天的会话,必要时/init重新核对一下项目记忆,看一眼/context了解上下文水位,然后开始干活。中间遇到任务切换,就/export存档,再/clear开新会话。
做比较大的代码改动之前,先切到规划模式让AI列出方案;确认没问题后,用/rewind在这个“开始改”的时间点留下一个检查点;改完以后跑/review做一次自动审查,再更新/todos标记进度。
这套流程看起来步骤多,实际上每条都是几秒钟的操作。但正是这几秒钟的操作,帮我避免了无数“AI改到一半方向跑偏”“上下文爆了只能从头再来”“改错了文件只能手动恢复”的糟心时刻。工具的使用效率,往往不是由某一条“神级指令”决定的,而是由这些日常的小习惯垒起来的。
要说Claude Code里最值得记住的一句话,我想是:自然语言负责表达意图,命令系统负责控制系统。你把这两套功夫都练起来,才算真正开始用它,而不是被它用。