本章总览
Hooks 让用户在不 fork 源码的情况下拦截 Agent 行为:PreToolUse、PostToolUse、Stop 等。本章是扩展 Claude Code 最实用的机制之一。
总览图
渲染图表中…
学完本章你应该能
- 列出 Hook 类型与触发点
- 理解子进程 JSON 协议
- 知道 settings.json 配置位置
核心概念(先读懂这些)
Hook 是事件总线
spawn 用户脚本,stdin 传上下文,stdout 返回 allow/deny/modify。CI 与团队规范可强制挂载。
建议学习步骤
- 写一个 echo Hook 试验
- 读 hooks.ts 规模感受复杂度
Shell Hook vs React Hook
渲染图表中…
Hook 类型
| Hook | 触发时机 | 文件 |
|---|---|---|
| PreToolUse | 工具执行前 | utils/hooks/hookHelpers.ts |
| PostToolUse | 工具执行后 | utils/hooks/postToolUseHooks.ts |
| Stop | Agent 停止时 | query/stopHooks.ts |
| UserPromptSubmit | 用户提交输入时 | utils/hooks/userPromptSubmitHooks.ts |
执行流程
Hook 配置: ~/.claude/settings.json
执行: spawn 子进程 → JSON stdin → stdout
超时: 默认 60s
并行: 同类型 hooks 并行执行
hooks.ts (5023行)
规模
Hook 系统是 Claude Code 可扩展性的核心,允许用户在不修改源码的情况下拦截 Agent 行为。
本章小结与延伸
Hooks = 用户态插件。比改源码安全、可版本管理。 继续学习: