本页由自动投喂流水线编译生成,尚未经人工复核——置信度以页面标注为准,引用前请自行核实。
Claude Code 确定性扩展:slash command 与 hooks
属性
Claude Code 确定性扩展:slash command 与 hooks
CLAUDE.md 里的规则是劝告性的——它是上下文,Claude 读了可以遵循也可能在长会话里淡忘。当你需要某个操作每次必然发生、不依赖模型的判断时,就要用确定性机制。课程点出了两条:
hooks:生命周期事件上挂 shell 命令(确定性)
hooks 让你在 Claude Code 的特定生命周期事件上注入 shell 命令,事件触发即执行。典型用途:改完文件自动跑测试、commit 前自动 lint、装依赖后自动跑安全扫描。用 /hooks 管理,配置落 settings.json / settings.local.json。
配置结构(经 Anthropic 官方文档 code.claude.com/docs 核实——课程第三方整理的事件名与 schema 有错,勿照抄):
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "node ./tools/lint.mjs --quick", "timeout": 30 }
]
}
]
}
}
- 事件是键名。常用的有
PreToolUse/PostToolUse(工具调用前后)、UserPromptSubmit(用户提交提示时)、Stop/SubagentStop、SessionStart、PreCompact。完整事件列表以官方 hooks 文档为准——课程第三方整理写的OnUserSubmit、BeforeSubagentResponse是错的、官方无此事件(详见 课程增量 的原课纠错栏)。 - matcher 是字符串或正则(如
"Edit|Write"匹配这两个工具),不是课程写的那种对象 schema。 - 命令挂在
hooks: [{ type: "command", command: "..." }]数组里。
hooks 与 CLAUDE.md 的本质区别就是确定性 vs 劝告性:要“总是执行”用 hook,要“建议 Claude 这样做”用 CLAUDE.md。这条区分本项目已在实践——lint 是硬门(可做成 PostToolUse hook 强制),而写作语言、风格约定放 CLAUDE.md 让 Claude 遵循。
slash command:把工作流封装成显式调用
.claude/commands/*.md 里每个文件即一条命令(文件名 = 命令名),$ARGUMENTS 等占位符捕获用户输入。它与 CLAUDE.md 的关键区别:CLAUDE.md 每次会话自动载入常驻,slash command 只在你显式 /命令 调用时才生效——所以适合封装“特定场景才用、不必全程占上下文”的工作流。
版本提示:Anthropic 已把
.claude/commands/归并进 skills 系统(.claude/skills/<name>/SKILL.md,支持 frontmatter、参数声明、附带文件),旧的commands/目录仍有效。占位符除$ARGUMENTS外还有$0/$1(按位)、命名参数、${CLAUDE_PROJECT_DIR}等。具体以官方 skills 文档为准。本知识库的 wiki-ingest/query/lint 等操作集正是这种“命令封装工作流”的实例。
关联
- 与 Claude Code 的扩展机制一节相承(CLAUDE.md/skills/subagent/hooks 四件套)。
- “确定性验证手段”的精神见 官方最佳实践——给 Claude 可运行的验证(测试/exit code/linter),hook 是把它自动化的一种形式。
- 出处:课程增量lesson 6/8;hooks/命令细节经官方文档校正。
被引用于 3
- DeepLearning.AI《Claude Code》课程增量
- 确定性扩展— lesson 6/8。hooks 确定性 vs CLAUDE.md 劝告性。
- 用 MCP 给 Claude Code 接感官:视觉验证与 design-to-code
- MCP 是 Claude Code 接外部能力的标准通道;与 hooks(确定性扩展)互补——hooks 管"事件触发的确定动作",MCP 管"接入外部感官与工具"。
- 高效协作
- Claude Code 确定性扩展:slash command 与 hooks — 概念
本页由自动投喂流水线编译生成、待人工复核;原始资料保留在私有工作区。