什么时候应该用 Hooks,什么时候不要用
什么时候应该用 Hooks,什么时候不要用
Section titled “什么时候应该用 Hooks,什么时候不要用”Hooks 很强,但不是越早用越好。
这一篇只解决一个问题:
这个需求到底该不该用 Hooks?前置教程:Hooks 是什么,为什么不能一上来乱配
如果你还不清楚 Hooks 的风险边界,先看前置教程。
只有当你需要在 Codex 的关键动作前后做稳定、自动、可审查的检查时,才考虑 Hooks。
如果只是工作流程,优先用 Skill。
如果只是项目规则,优先用 AGENTS.md。
| 需求 | 更合适的方式 |
|---|---|
| 当前任务只改一个文件 | 当前提示词 |
| 项目里不要修改某个目录 | AGENTS.md |
| 修 Bug 时按固定步骤走 | Skill |
| 查询外部 issue 或文档 | MCP |
| Codex 每次请求权限时做额外审查 | Hooks |
| 工具调用后自动扫描敏感信息 | Hooks |
| 高风险命令执行前拦截或提示 | Hooks |
适合 Hooks 的 5 类场景
Section titled “适合 Hooks 的 5 类场景”场景 1:安全检查必须自动发生
Section titled “场景 1:安全检查必须自动发生”比如:
- 文件修改后扫描密钥。
- 命令执行前检查危险参数。
- 读取文件前检查是否涉及敏感目录。
这些如果只靠提示词,很容易漏。
场景 2:每次权限请求都要统一处理
Section titled “场景 2:每次权限请求都要统一处理”比如 Codex 请求更高权限时,你希望自动输出:
- 请求来源。
- 要执行的命令。
- 为什么需要权限。
- 是否命中团队规则。
这类适合 PermissionRequest 相关 Hooks。
场景 3:团队有固定合规要求
Section titled “场景 3:团队有固定合规要求”比如:
- 不能读取某些路径。
- 不能执行某些命令。
- 不能把某些文件发给外部工具。
如果这是团队硬规则,可以考虑 Hooks。
场景 4:需要记录关键动作
Section titled “场景 4:需要记录关键动作”比如记录:
- 调用了哪些工具。
- 运行了哪些高风险命令。
- 哪些 Hook 拦截过操作。
这属于生命周期审计。
场景 5:项目已经很成熟
Section titled “场景 5:项目已经很成熟”如果项目已经有:
- 清晰的
AGENTS.md。 - 稳定的 Skills。
- 明确的构建和检查命令。
- 团队安全规则。
这时再加 Hooks,价值更高。
不适合 Hooks 的 7 类场景
Section titled “不适合 Hooks 的 7 类场景”场景 1:你只是想让 Codex 更听话
Section titled “场景 1:你只是想让 Codex 更听话”不要用 Hooks 解决模糊要求:
让 Codex 更认真。应该改进任务描述和验收标准。
场景 2:流程还没跑通
Section titled “场景 2:流程还没跑通”如果一个流程还在试错,不要直接做成 Hook。
先用提示词和 Skill 跑稳定。
场景 3:只是教程写作结构
Section titled “场景 3:只是教程写作结构”教程结构适合 Skill,不适合 Hook。
场景 4:只是项目说明
Section titled “场景 4:只是项目说明”项目说明适合 AGENTS.md。
场景 5:你看不懂 Hook 命令
Section titled “场景 5:你看不懂 Hook 命令”如果一个 Hook 的命令你看不懂,不要信任。
先问 Codex:
请解释这个 Hook 会在什么事件触发,会执行什么命令,可能有什么风险。不要信任,也不要运行。场景 6:Hook 需要高权限但收益不明确
Section titled “场景 6:Hook 需要高权限但收益不明确”高权限 Hook 要非常谨慎。
如果收益只是“可能方便一点”,先不要配。
场景 7:你不知道如何关闭
Section titled “场景 7:你不知道如何关闭”配置任何 Hook 前,都要知道:
- 它在哪里。
- 怎么禁用。
- 怎么撤销信任。
- 怎么排查失败。
不知道就先不配。
配 Hooks 前的 10 个问题
Section titled “配 Hooks 前的 10 个问题”每次准备配置 Hook 前,先问:
- 这是提醒、流程,还是必须自动执行的检查?
- 当前提示词能不能解决?
AGENTS.md能不能解决?- Skill 能不能解决?
- 是否真的需要在工具调用前后触发?
- Hook 会执行什么命令?
- 命令是否只读或低风险?
- Hook 来自用户级还是项目级?
- 项目是否可信?
- 我能不能解释如何关闭它?
如果你答不上第 6、7、10 条,不要配。
推荐提示词:判断是否需要 Hooks
Section titled “推荐提示词:判断是否需要 Hooks”可以复制:
请帮我判断下面这个需求是否适合用 Codex Hooks。
需求:【写你的需求】
要求:1. 判断它更适合当前提示词、AGENTS.md、Skill、MCP、config.toml 还是 Hooks。2. 如果适合 Hooks,请说明应该在哪个生命周期事件触发。3. 判断它应该用户级还是项目级。4. 判断第一次应该做只读、低风险还是高风险 Hook。5. 如果不适合 Hooks,请说明原因。6. 不要创建或修改任何配置。推荐提示词:审查一个 Hook
Section titled “推荐提示词:审查一个 Hook”请帮我审查下面这个 Codex Hook。
Hook 配置或命令:【粘贴 hooks.json 片段或命令】
要求:1. 解释它在哪个事件触发。2. 解释 matcher 会匹配什么。3. 解释它会执行什么命令。4. 判断是否会读取、修改、删除文件,或访问网络。5. 判断是否适合信任。6. 如果有风险,请给出不运行的替代方案。7. 不要执行这个 Hook。这一篇的验收标准
Section titled “这一篇的验收标准”读完后你应该能判断:
- 什么时候提示词就够。
- 什么时候用 Skill。
- 什么时候才需要 Hooks。
- 为什么看不懂 Hook 命令不能信任。
- 配 Hook 前必须问哪几个安全问题。
下一篇看:第一次查看和审查 Hooks。