Hooks 是什么,为什么不能一上来乱配
Hooks 是什么,为什么不能一上来乱配
Section titled “Hooks 是什么,为什么不能一上来乱配”学到这里,你已经会把经验放到不同层:
- 当前提示词:管这一次任务。
AGENTS.md:管项目长期规则。config.toml:管 Codex 运行配置。- MCP:连接外部工具和资料。
- Skills:沉淀可复用工作流程。
Hooks 是另一种更“硬”的能力。
前置教程:第一次做一个 instruction-only Skill
如果你还不清楚 Skill 是什么,先看前置教程。很多时候先用 Skill 提醒流程即可,不一定需要 Hooks。
Hooks 是 Codex 在关键生命周期事件发生前后自动触发的检查或动作。比如:
- Codex 准备调用工具前。
- Codex 请求权限时。
- Codex 调用工具后。
- Codex 准备压缩上下文前。
这比提示词更接近“自动化约束”。
所以它也更需要谨慎。
一个直观例子
Section titled “一个直观例子”你在 AGENTS.md 里写:
不要把 API Key 写进仓库。这是提醒。
你在 Skill 里写:
提交前检查是否包含 API Key、Token、密码。这是流程。
你用 Hook 在文件修改后自动运行一个敏感信息扫描脚本。
这是自动检查。
三者力度不同:
提示词/AGENTS.md/Skill:告诉 Codex 应该怎么做。Hooks:在关键动作前后插入自动检查或动作。Hooks 适合解决什么问题
Section titled “Hooks 适合解决什么问题”Hooks 适合处理:
- 每次工具调用前都要检查的规则。
- 每次权限请求时都要审查的规则。
- 每次文件修改后都要跑的检查。
- 某些高风险命令需要额外拦截或记录。
- 团队希望稳定执行的安全或合规检查。
比如:
- 检查命令是否包含危险删除。
- 检查是否试图读取敏感路径。
- 检查修改后是否引入密钥。
- 在权限请求时输出更清楚的提示。
Hooks 不适合解决什么问题
Section titled “Hooks 不适合解决什么问题”不要用 Hooks 解决这些:
| 需求 | 更合适的方式 |
|---|---|
| 当前任务只改一个页面 | 当前提示词 |
| 项目写作规则 | AGENTS.md |
| 修 Bug 的标准步骤 | Skill |
| 查询外部文档 | MCP |
| 默认模型配置 | config.toml |
| 只是想让 Codex 更认真 | 好任务描述和验收标准 |
如果只是提醒 Codex 怎么做,用提示词、AGENTS.md 或 Skill 就够。
Hooks 适合“必须自动检查”的地方。
Hooks 从哪里加载
Section titled “Hooks 从哪里加载”官方手册里,Codex 可以从活动配置层旁边加载 Hooks。
常见形式有两种:
hooks.json或者 config.toml 里的:
[hooks]常见位置包括:
| 位置 | 作用 |
|---|---|
~/.codex/hooks.json | 用户级 Hooks |
项目里的 .codex/hooks.json | 项目级 Hooks |
config.toml 里的 [hooks] | 内联 Hooks 配置 |
新手不要一上来写项目级 Hooks。
先学会查看、理解、审查。
项目级 Hooks 为什么要谨慎
Section titled “项目级 Hooks 为什么要谨慎”项目级 Hooks 只在项目 .codex/ 层受信任时加载。
这很重要。
因为 Hooks 核心是可能会运行命令。
如果一个陌生项目里藏着恶意 Hook,而 Codex 不做信任边界,就可能带来风险。
所以你要记住:
陌生项目里的 Hooks 不要随便信任。Hooks 需要审查和信任
Section titled “Hooks 需要审查和信任”非托管命令 Hooks 在运行前需要你审查并信任。
当 Hook 发生变化后,Codex 会把它当作新的定义,需要重新审查。
这很合理。
因为 Hook 改一行命令,风险就可能完全不同。
常见事件类型
Section titled “常见事件类型”不用现在背。
先认识几个名字:
| 事件 | 大概含义 |
|---|---|
PreToolUse | 工具调用前 |
PostToolUse | 工具调用后 |
PermissionRequest | Codex 请求权限时 |
PreCompact | 上下文压缩前 |
后面实操会先从“查看 Hooks”开始,不会一上来让你写执行脚本。
Hooks 和审批不是一回事
Section titled “Hooks 和审批不是一回事”审批策略回答:
Codex 什么时候需要问你能不能做?Hooks 回答:
在某个生命周期事件发生时,要不要自动运行额外检查或动作?它们可以配合,但不是同一个东西。
新手学习 Hooks 的顺序
Section titled “新手学习 Hooks 的顺序”建议按这个顺序:
- 先理解 Hooks 是生命周期自动化。
- 先学会判断什么时候不需要 Hooks。
- 先用
/hooks查看当前有没有 Hooks。 - 学会审查 Hook 来源、命令和触发事件。
- 再做只读或低风险 Hook。
- 最后才考虑项目级团队 Hooks。
这一篇的验收标准
Section titled “这一篇的验收标准”读完后你应该能说清楚:
- Hooks 是在什么时机触发的。
- Hooks 和
AGENTS.md、Skills 的区别。 - 为什么陌生项目里的 Hooks 不能随便信任。
- 为什么新手应该先查看和审查,而不是直接写 Hook。
下一篇看:什么时候应该用 Hooks,什么时候不要用。