/ 開頭的特殊命令。這些命令可以透過 SDK 發送,以執行諸如壓縮上下文、列出上下文使用情況或調用自訂命令等操作。只有在不需要互動式終端的情況下才能工作的命令才能透過 SDK 分派;system/init 訊息列出了您會話中可用的命令。
發現可用的 Slash Commands
Claude Agent SDK 在系統初始化訊息中提供有關可用 slash commands 的資訊。在您的會話開始時存取此資訊:發送 Slash Commands
透過在您的提示字串中包含 slash commands 來發送它們,就像常規文字一樣。作用於對話歷史記錄的命令,例如/compact,需要先前的訊息才能運作,因此下面的範例首先提出一個問題,然後將命令作為後續訊息發送到同一對話:
查詢可能以錯誤結果結束,例如當
maxTurns / max_turns 限制在工作完成前達到時。最終結果訊息則具有 is_error: true 和錯誤子類型(例如 error_max_turns)而不是 success。在產生該最終結果訊息後,SDK 會拋出錯誤,因為 CLI 程序以非零代碼退出。如果您的命令可能達到限制,請在 TypeScript 中使用 try/catch 或在 Python 中使用 try/except 包裝迴圈,如 Single Message Input 中所示,或設定 maxTurns 足夠高以完成工作。在 Python 中,捕捉 Exception:SDK 將錯誤結果表示為純 Exception。常見的 Slash Commands
/compact - 壓縮對話歷史
/compact 命令透過總結較舊的訊息同時保留重要上下文來減少您的對話歷史的大小。壓縮需要至少有兩次先前交換的現有對話才能進行總結。此範例首先進行對話,然後壓縮它並讀取報告結果的 compact_boundary 系統訊息:
compact_boundary 訊息只在壓縮執行時才會到達。如果沒有任何內容可以總結,/compact 會報告原因而不是引發錯誤:執行仍然以 success 結果結束,不會發出 compact_boundary 訊息,結果文字會帶有訊息,例如在單一簡短交換後的 Not enough messages to compact.。全新的一次性 query() 呼叫開始時具有空上下文,因此請在具有先前輪次的會話中使用此模式,例如在串流輸入模式中或恢復會話時。/clear - 重設對話上下文
/clear 命令將對話重設為空上下文,因此後續提示會從沒有先前對話歷史的狀態開始。先前的對話保存在磁碟上,可以透過將其會話 ID 傳遞給 resume 選項 來返回。
這在串流輸入模式中很有用,您可以在單一連線上傳送多個提示。對於一次性的 query() 呼叫,每個呼叫已經開始時具有空上下文,因此傳送 /clear 沒有實際效果;請改為開始一個新的 query()。
SDK 中的
/clear 需要 Claude Code v2.1.117 或更新版本。在較早的版本中,它會從 slash_commands 中省略。建立自訂 Slash Commands
除了使用內建 slash commands 外,您還可以建立自己的自訂命令,這些命令可透過 SDK 使用。自訂命令定義為特定目錄中的 markdown 檔案,類似於子代理的配置方式。.claude/commands/ 目錄是舊版格式。建議的格式是 .claude/skills/<name>/SKILL.md,它支援相同的 slash command 調用(/name)加上 Claude 的自主調用。請參閱 Skills 以了解目前的格式。CLI 繼續支援兩種格式,下面的範例對於 .claude/commands/ 仍然準確。檔案位置
自訂 slash commands 根據其範圍儲存在指定的目錄中:- 專案命令:
.claude/commands/- 僅在目前專案中可用(舊版;建議使用.claude/skills/) - 個人命令:
~/.claude/commands/- 在您的所有專案中可用(舊版;建議使用~/.claude/skills/)
檔案格式
每個自訂命令都是一個 markdown 檔案,其中:- 檔案名稱(不含
.md副檔名)成為命令名稱 - 檔案內容定義命令的功能
- 可選的 YAML frontmatter 提供配置
基本範例
在您的專案中建立.claude/commands 目錄(如果不存在),然後建立 .claude/commands/refactor.md:
/refactor 命令,您可以透過 SDK 使用。
使用 Frontmatter
建立.claude/commands/security-check.md:
在 SDK 中使用自訂命令
一旦在檔案系統中定義,自訂命令就會自動透過 SDK 可用:進階功能
引數和佔位符
自訂命令支援使用佔位符的動態引數: 建立.claude/commands/fix-issue.md:
Bash 命令執行
自訂命令可以執行 bash 命令並包含其輸出: 建立.claude/commands/git-commit.md:
檔案參考
使用@ 前綴包含檔案內容:
建立 .claude/commands/review-config.md:
使用命名空間組織
在子目錄中組織命令以獲得更好的結構:實用範例
Pull Request 審查命令
建立.claude/commands/review-pr.md:
Claude Code 包含捆綁的
code-review 和 verify skills。如果您以其中一個命名自訂命令,例如 .claude/commands/code-review.md,您的命令會遮蔽捆綁的 skill,而 slash_commands 列表會列出該名稱一次。測試執行器命令
建立.claude/commands/test.md:
另請參閱
- Slash Commands - 完整的 slash command 文件
- SDK 中的子代理 - 子代理的類似檔案系統配置
- TypeScript SDK 參考 - 完整的 API 文件
- SDK 概述 - 一般 SDK 概念
- CLI 參考 - 命令列介面