Hooks
Hooks是一种事件驱动的自动化机制,通过监听特定触发事件(如文件保存、代码提交等)来自动执行预定义的操作或工作流。其核心特征包括:与开发流程深度集成、支持自定义触发条件与响应动作,以及无需人工干预即可完成测试、格式化、构建等任务。Hooks广泛应用于开发工具和IDE中,用于提升自动化程度和开发效率。
核心事实
时间轴 (近 90 天)
PreToolUse hook 返回非零退出码即可阻止对应的工具调用。
MCP、Skills、SubAgent、Hooks 配合权限模式使用,才能发挥 Claude Code 作为可编排系统的能力。
提示词本质上是请求而非保证,模型可能忘记执行其中的要求;Hooks 通过到点自动执行脚本提供强制保证。
当 Claude Code 等待用户确认或输入时会触发通知事件,可以配置命令发送桌面通知。
在“工具调用前”事件中配置检查脚本,当命中保护名单时以退出码 2 拦截操作,可以实现敏感文件的门禁,且拦截仅针对本次操作而非永久禁止。
在“工具调用后”事件中配置匹配文件编辑类工具的钩子,可以实现文件修改后自动格式化,并且格式化错误信息可以回传给模型供其自我修正。
Hooks 脚本文件需要添加可执行权限,否则会静默失败。
Hooks 配置写在设置文件的 hooks 块中,用户级、项目级和本地级三层设置均适用,多层钩子会合并并各自触发,互不覆盖。
Hooks 脚本以退出码 0 表示正常放行,以退出码 2 表示阻止本次操作,此时标准错误输出会作为拦截理由回传给模型;其他非零退出码通常只被视为脚本自身出错,不一定拦截。
每个 Hooks 事件会携带结构化的 JSON 输入,包含会话 ID、工具名、工具参数等信息,脚本通过标准输入读取。
还有 23 条时间轴事件
全部知识事实 (20)
Hooks 是一种事件驱动的自动化触发机制,当特定操作完成时自动触发预设的后续动作
65%已验证Hooks采用按需加载(懒加载)设计,只在触发时才加载到上下文中,平时不占据上下文空间
65%已验证Gemini CLI的密钥扫描钩子能自动拦截包含硬编码API密钥的文件写入操作
65%待验证Plugin将Skills、Hooks和MCP配置打包成单个可安装包,新工程师安装后可立即拥有与资深同事相同的上下文和能力
90%待验证Hooks的stop hook可以在会话结束时反思发生了什么并提出CLAUDE.md更新建议,start hook可以动态加载团队特定的上下文
90%待验证Kiro提供Hooks开发钩子机制,将Git Hooks和CI/CD流水线的自动化能力与AI能力结合,在本地开发阶段触发
90%待验证Claude Code的Hooks机制是确定性的,每次都会执行,而Claude.md中的提示词指令是概率性的,可能被遗漏
85%待验证Hooks和Skills的核心区别在于:Skill是模型主动调用的拉模式(Pull),Hook是外部系统被动触发的推模式(Push)
85%待验证Claude Code的Hooks机制包括停止钩子(会话结束时自动提议更新CLAUDE.md)和启动钩子(自动加载最新上下文信息)
85%待验证Claude Code的Hooks系统提供29个事件钩子,借鉴了Git Hooks的事件驱动架构设计
80%待验证Claude Code的Hooks机制是AI完全无法绕过的硬性约束,可在AI行动链中设置强制检查点,防止因模型幻觉或误判导致的越权操作
80%待验证用好Hooks能减少大量不必要的返工,开发效率至少提升一倍
60%待验证Hooks是程序化的硬约束,通过事件驱动机制强制执行,不依赖模型的自觉性,比CLAUDE.md的软约束方式更可靠
60%待验证Claude Code Hooks中退出码0表示放行,退出码2表示硬拦截(AI不会重试),其他非零退出码表示软警告
60%待验证Claude Code的工具链(harness)由五个扩展点构建而成:CLAUDE.md文件、Hooks、Skills、Plugins、LSP集成与MCP服务器
60%待验证Kiro的两大核心功能是Specs(规范)和Hooks(开发钩子)
60%待验证Gemini CLI的钩子机制能在AI生成内容写入磁盘之前完成拦截,属于左移安全(Shift-Left Security)实践
60%待验证Gemini CLI通过三个关键特性解决AI编码控制问题:钩子(Hooks)、技能(Skills)和计划模式(Plan Mode)
60%待验证PreToolUse hook 返回非零退出码即可阻止对应的工具调用。
50%待验证MCP、Skills、SubAgent、Hooks 配合权限模式使用,才能发挥 Claude Code 作为可编排系统的能力。
50%