斜杠命令以 / 开头,用于控制 Claude Code 会话。通过 SDK 发送时与普通 prompt 相同,直接在字符串中包含命令即可。只有不依赖交互式终端的命令才能通过 SDK 分发。

核心机制

发现可用命令:会话初始化时,SystemMessage(subtype="init") 的 slash_commands 字段列出所有可用命令(内置 + 自定义)。

发送命令:直接在 prompt 中包含命令字符串:

async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):
    ...

内置命令:

  • /compact:压缩对话历史,释放上下文空间
  • /context:查看当前上下文使用情况
  • /usage:查看 token 用量

自定义命令:在 .claude/commands/ 目录下创建 Markdown 文件定义(旧格式,推荐改用 .claude/skills/)。

关键细节

自定义命令文件格式:

---
allowed-tools: Read, Grep, Glob
description: Run security vulnerability scan
model: claude-opus-4-7
---
 
Analyze the codebase for security vulnerabilities including:
- SQL injection risks
- XSS vulnerabilities

支持的 frontmatter 字段:

  • allowed-tools:限制可用工具
  • description:命令描述
  • model:指定模型
  • argument-hint:参数提示

参数传递:命令文件中用 $1、$2 或 $ARGUMENTS 作为占位符:

/fix-issue 123 high  # $1="123", $2="high"

Bash 命令执行:在命令文件中用 ! 前缀执行 Bash 并注入输出:

## Context
- Current status: !`git status`
- Current diff: !`git diff HEAD`

文件引用:用 @ 前缀引用文件内容:

Review: @package.json

命令位置:

  • 项目命令:.claude/commands/(通过 git 共享)
  • 个人命令:~/.claude/commands/(跨项目)

与其他概念的关联

  • skills - 推荐的新格式(.claude/skills/),支持自动调用 + 斜杠命令
  • claude-code-features - settingSources 控制命令加载
  • agent-loop - /compact 触发上下文压缩

实践要点

  • /clear 在 SDK 中不可用,每次 query() 调用已经是新会话
  • 自定义命令需要通过 settingSources 加载项目配置才能使用
  • 新项目推荐使用 Skills(.claude/skills/)而非 Commands(.claude/commands/),Skills 支持自动调用
  • 命令可以通过子目录组织,但命令名本身不含目录前缀