
Claude Code 实战(三):自定义斜杠命令与对话控制
斜杠命令将重复性工作流压缩为一行调用;$ARGUMENTS 让它支持参数化;而真正优秀的命令,会自然演变为团队共享的协作语言。
/clear 和 /init 这类内置斜杠命令,只是冰山一角。整个系统的核心设计,正是让你亲手编写属于自己的命令——它们就存放在你的代码仓库里。

什么是斜杠命令?#
一个位于 .claude/commands/<name>.md 的 Markdown 文件。文件内容即为向 Claude 发送的提示词(prompt),文件名就是命令名。创建后需重启 Claude Code(这是少数几个不支持热重载的功能)。
最简示例:新建 .claude/commands/audit.md:
| |
重启后,在任意会话中输入:
| |
整段提示词会立即执行,你将直接获得一份结构清晰的安全审计报告,无需手动回忆和逐条输入命令。
注意两点:
- 命令本质就是 prompt:没有 DSL,没有特殊语法,极简表面积,极大灵活性。
- 一次编写,全员复用:下次团队中任何人需要做安全审计,只需输入
/audit。
斜杠命令的内部工作机制#
当你输入 /audit 时,Claude Code 会执行以下步骤:
- 在当前项目中查找
.claude/commands/audit.md - 同时检查
~/.claude/commands/audit.md(个人全局命令目录) - 读取文件内容
- 将其作为 prompt 发送给 Claude,效果等同于你亲手输入了这段文字
项目级命令的优先级高于全局命令。这意味着团队可直接在项目中覆盖你个人的 /audit,提供更贴合当前项目的版本。
命令内容就是一段普通 prompt,因此支持以下能力:
- 使用
@引用项目内文件 - 插入思考层级指令(如 “think a lot”)
- 通过
$ARGUMENTS实现参数化 - 编写多步骤复杂指令
- 完整保留 Markdown 格式(加粗、列表、表格等)

目录结构规范#
一个成熟项目的 .claude/ 目录结构如下:
| |
个人全局命令则存放于:
| |
两者的核心区别在于作用域:
✅ 团队命令 → 放在项目 .claude/commands/ 下 → 仅对该仓库生效
✅ 个人命令 → 放在 ~/.claude/commands/ 下 → 在所有项目中均可使用
命名规范:短、直、准#
命令名即斜杠后的字符串,应简洁明确:
| 推荐 | 不推荐 | 原因 |
|---|---|---|
/review | /code-review-for-pr | 过长,影响输入效率 |
/test | /run-all-tests-and-report | 冗余,违背“一词一意”原则 |
/deploy | /deploy-to-staging-env | 环境应通过 $ARGUMENTS 指定,而非硬编码进命令名 |
/explain | /e | 对队友不友好,缺乏可发现性 |
/debug | /dbg | 新成员无法直观理解含义 |
黄金标准:单个英文单词,4–8 字符,团队新人第一次见就能猜中用途。如果有人看到 /review 却想不到是“代码评审”,那命名就失败了。
🚫 避免在名称中加入版本号(如 /review-v2、/test-new)。需要升级时,直接替换原文件即可。Git 历史会自动保留旧版本,随时可回溯。
$ARGUMENTS:让命令支持参数化#

斜杠命令内置一个魔法变量 $ARGUMENTS —— 它会被自动替换成你在命令名后输入的全部内容。例如,.claude/commands/explain.md:
| |
然后输入:
| |
$ARGUMENTS 即被替换为 rate limiter,Claude 将基于真实代码库生成一份三层嵌套的精准解释。
 *图:`$ ARGUMENTS` 仅做纯字符串替换——命令名后的全部内容会原样拼入 prompt。*
$ARGUMENTS 的典型用法模式#
$ARGUMENTS 本质是纯字符串替换 —— 命令名后所有内容原样填入。这种简单性正是其优势所在。以下是几种经实战验证的高效模式:
单参数:标识符或名称
| |
| |
多参数:自然语言句子
| |
| |
/compare 后的所有内容(axios vs fetch vs ky for HTTP requests)整体成为 $ARGUMENTS,Claude 将其视为一条自然语言指令处理。
参数为文件路径
| |
| |
无参数:默认行为兜底
若用户只输入 /coverage 而未带任何后续内容,$ARGUMENTS 将为空字符串。请在 prompt 中优雅处理:
| |
| |
这种“有参则聚焦,无参则全量”的设计,让一条命令同时满足通用与专用场景,无需拆分成多个命令。
我在每个项目中必配的核心命令集#
经过两年的实践沉淀,我提炼出一套高复用率的命令模板,以下是完整的 prompt 内容:
/audit —— 安全审计#
| |
/test —— 测试运行与分析#
| |
/review —— 代码评审#
| |
/explain —— 三层解释法#
| |
/onboard —— 新工程师入职指南#
| |
/deploy —— 部署前检查清单#
| |
/debug —— 结构化调试#
| |
/document —— 自动生成文档#
| |
构建团队级命令库#
斜杠命令是传播团队协作规范最轻量、最有效的方式,落地流程极其简单:
- 编写一个实用命令;
- 放入
.claude/commands/; - 提交至主干分支;
- 无需通知任何人。
第 4 步并非夸张。下一位同事在该仓库中启动 Claude Code,输入 / 时,命令会自动出现在补全列表中。他尝试输入 /audit,结果完美运行 —— 无需培训文档、无需 Confluence 页面、无需入职会议。
命令库的自然演化路径#
我观察过三个团队的命令库成长过程,规律高度一致:
第 1–2 周:一人添加 2–3 个基础命令,通常是 /test、/review 及一个项目专属命令(如 /api-docs)。
第 3–4 周:其他成员陆续发现并开始使用这些命令;有人主动补充 /deploy。
第 2 个月:命令开始精细化迭代 —— /review 的评审维度更全面;有人因频繁提问而新增 /explain。
第 3 个月起:命令库稳定在 5–10 个,新增极少,优化为主。此时,这些命令已成为团队与 AI 协作的事实标准语言。
命令即文档:隐性的团队知识库#
一个常被忽视的价值:命令库本身就是团队工作流的活文档。新人只需浏览 .claude/commands/ 目录,即可快速掌握:
- 部署流程长什么样(
/deploy) - 团队代码评审关注什么(
/review) - 测试策略如何执行(
/test) - 调试问题的标准路径(
/debug)
每个 .md 文件都是一份可执行的流程说明书。它比 Wiki 页面更有价值,因为永远与实践同步 —— 一旦过时,使用者当天就会更新它。
个人命令 vs 团队命令:边界必须清晰#

| 类型 | 存放位置 | 是否提交 Git | 示例 |
|---|---|---|---|
| 团队命令 | .claude/commands/ | ✅ 是 | /review, /test, /deploy |
| 个人命令 | ~/.claude/commands/ | ❌ 否 | /standup, /journal, /quickfix |
个人命令服务于你的工作习惯。以下是我的两个常用命令:
~/.claude/commands/standup.md:
| |
~/.claude/commands/changelog.md:
| |
这些命令是“个人化”的:描述个人工作节奏,而非团队共识;另一位同事的站会格式可能完全不同。
高级命令模式#
命令链式调用(组合其他命令)#
一个命令可在 prompt 中直接引用其他命令名,实现逻辑复用:
| |
这并非技术上“调用子命令”,而是让 Claude 基于已读取的 /test 命令内容,复现其行为。效果等同于真实调用。
结构化输出命令#
| |
面向特定工作流的命令#
PR 提交前检查清单:
| |
数据库迁移审查:
| |
命令调试指南#
当命令未按预期工作时,按此流程排查:
命令未出现在补全列表中?
→ 检查文件路径是否严格为 .claude/commands/<name>.md(注意复数 commands,且扩展名为 .md);
→ 创建后务必重启 Claude Code。
命令能运行但输出异常?
→ 最常见原因是 prompt 表述模糊。将命令内容直接粘贴为普通消息发送给 Claude,测试其独立表现。若 prompt 本身效果差,作为命令必然更差。
$ARGUMENTS 未被替换?
→ 确保你在命令后输入了内容(如 /explain foo)。仅输入 /explain 会导致 $ARGUMENTS 为空字符串。
→ 若命令强制要求参数,可在文件顶部添加说明性 HTML 注释(不影响 prompt 执行):
| |
命令过长?
→ 虽无硬性长度限制,但过长的 prompt 会挤占 Claude 的上下文空间。建议控制在 50 行以内。若需更多逻辑,说明你试图在一个命令中塞入过多职责——拆分为两个命令更合理。
命令在 A 项目有效,在 B 项目失效?
→ 检查是否硬编码了项目特有细节(如 npm test、src/api/)。解决方案:
✓ 用通用表述替代(如 “见 CLAUDE.md 中的测试命令”);
✓ 或坦然接受:这就是一个项目专属命令。
对话控制:三个必背内置命令#
以下内置命令值得肌肉记忆:
/compact —— 汇总当前对话。当模型响应变慢时使用,保留核心信息,剔除冗余细节。(详见第二篇详解)/clear —— 清空当前对话。保留记忆与设置,适用于切换任务场景。/init —— (详见第一篇)首次在新仓库中运行,用于自动生成 CLAUDE.md。
其余命令可通过 /help 查看全量列表,但这三个是日常高频组合。
其他值得掌握的内置命令#
| 命令 | 功能 | 使用场景 |
|---|---|---|
/help | 列出所有可用命令 | 忘记命令名时 |
/compact | 汇总并压缩上下文 | 长对话导致响应变慢 |
/clear | 开启全新对话 | 切换任务主题 |
/init | 生成 CLAUDE.md | 新仓库初始化 |
/config | 打开设置面板 | 修改偏好设置 |
/cost | 查看 token 消耗 | 监控使用成本 |
/doctor | 诊断 Claude Code 异常 | 感觉功能异常时 |
/login | 重新认证 | token 过期 |
/logout | 清除认证信息 | 切换账号 |
/permissions | 查看当前权限 | 调试 “为何它向我索要权限?” |
斜杠命令的适用边界#
斜杠命令不适合以下场景:
- 需要复杂运行时参数:
$ARGUMENTS仅支持单字符串参数。无法实现/deploy --env staging --skip-tests这类命名参数。此时应写 Shell 脚本,由 Claude 调用。 - 需跨多次调用维持状态:每次
/command都在全新 prompt 上下文中执行,无法实现/step1→/step2的数据传递。多步有状态工作流,请用 SDK 或单个长 prompt。 - 需要单元测试验证:无法为斜杠命令编写测试用例。若工作流需强保障,应封装为脚本,由 Claude 调用而非执行。
- 需按环境差异化执行:命令文件对所有人相同。若 staging 与 production 步骤不同,请用
$ARGUMENTS传入环境名,并在 prompt 中分支处理。
这些场景,请转向 Claude Code SDK(第六篇)。斜杠命令的本质,是为那些不值得写代码的高频快捷操作而生。
Claude Code 自动化层级金字塔#
| |

从第 1 层起步,仅当低层无法满足需求时,才向上跃迁。
绝大多数团队终身无需第 4 层;几乎所有团队都能从第 1–2 层显著受益。
真实命令库案例:一个生产级 API 项目#
来看一个成熟 .claude/commands/ 目录的实际结构:
| |

共 11 个命令。每一个,都曾是:
✅ 手动执行的多步骤流程,或
❌ 因过于繁琐而被长期忽略的环节。
创建总投入:分散在两个月内的约 2 小时。
每周节省时间:保守估计每位开发者 30 分钟。
5 人团队 = 每周 2.5 小时 → 首周即回本。
真正的价值远不止时间节省 —— 是稳定性。
每一次代码评审,覆盖相同的维度;
每一次调试,遵循相同的路径;
每一次部署,走过相同的检查点。
这些命令,已将团队的最佳实践,固化为可重复、可传承的工作流。
下一篇:MCP —— 让 Claude Code 与万物对话的协议。
Claude Code 实战 10 篇
- 01 Claude Code 实战(一):安装、三层配置体系,以及 `#` `@` `/init` 三剑客
- 02 Claude Code 实战(二):快捷键、四态切换与思考模式
- 03 Claude Code 实战(三):自定义斜杠命令与对话控制 当前
- 04 Claude Code 实战(四):MCP 服务器连接万物
- 05 Claude Code 实战(五):Hooks 与 Yolo 安全网
- 06 Claude Code 实战(六):SDK 与 GitHub CI
- 07 Claude Code 实战(七):十个实用 Hooks 配方
- 08 Claude Code 实战(八):Sub-Agent 与计划模式
- 09 Claude Code 实战(九):权限模型与环境变量
- 10 Claude Code 实战(十):Skills 与四种扩展机制