Codex: Codex 规则与钩子

最后更新:2026-08-31

AGENTS.md 和钩子机制让你精确控制 Codex 在项目中的行为——什么能做、什么不能做、按什么规则做。

📋 前置知识:了解 Codex 基本配置

1. 你将学到


2. AGENTS.md 详解

AGENTS.md 是项目根目录的规则文件,Codex 启动时自动读取,作为持久上下文。

(1) 基本结构

MARKDOWN
# AGENTS.md

## 项目概述
项目名称:E-Commerce API
技术栈:FastAPI + PostgreSQL + Redis
代码规范:PEP 8 + Black formatter

## 代码规则
- 所有函数必须有类型注解
- 所有 API 端点必须有输入验证
- 使用 dependency injection
- 错误处理使用自定义异常类

## 文件结构
- src/api/ - API 路由
- src/models/ - 数据模型
- src/services/ - 业务逻辑
- src/tests/ - 测试文件

## 禁止操作
- 不要修改 .env 文件
- 不要删除现有测试
- 不要安装新依赖(需人工确认)
- 不要修改 database/migrations/ 中的已有迁移

(2) 规则类型

类型 说明 示例
代码风格 编码规范 "使用 TypeScript strict 模式"
架构约束 设计限制 "所有 API 必须通过 service 层"
禁止操作 不可做的事 "不要修改 .env 文件"
验证要求 完成标准 "确保 pytest 通过"
项目上下文 背景知识 "项目使用微服务架构"

▶ 示例 1: Alice 的 AGENTS.md

MARKDOWN
# AGENTS.md

## 项目概述
Next.js 14 电商网站,使用 App Router + TypeScript + Prisma

## 代码规则
- 组件使用函数式组件 + TypeScript
- 使用 server actions 而非 API routes
- 数据获取使用 RSC (React Server Components)
- 样式使用 Tailwind CSS
- 表单使用 React Hook Form + Zod 验证

## 目录约定
- app/ - 页面和路由
- components/ - 可复用组件
- lib/ - 工具函数和配置
- types/ - TypeScript 类型定义

## 禁止操作
- 不要使用 'use client' 除非必要
- 不要安装新的 UI 库(使用已有的 shadcn/ui)
- 不要修改 prisma/schema.prisma 中的已有模型(只添加新的)
- 不要修改 middleware.ts

3. 钩子(Hooks)机制

钩子是在特定事件触发时自动执行的脚本。

(1) 钩子类型

钩子 触发时机 用途
pre-task 任务执行前 准备环境、加载上下文
post-task 任务完成后 运行测试、格式化代码
pre-commit 提交前 Lint 检查、代码审查
on-error 出错时 错误报告、回滚

(2) 配置钩子

TOML
# .codex/config.toml

[hooks]
# 任务完成后自动运行测试
post-task = "npm test"

# 提交前自动格式化
pre-commit = "npm run format && npm run lint"

# 出错时发送通知
on-error = "curl -X POST https://hooks.slack.com/xxx -d 'Codex error'"

(3) 钩子脚本

BASH
# .codex/hooks/post-task.sh
#!/bin/bash

# 运行测试
npm test
if [ $? -ne 0 ]; then
  echo "Tests failed! Fixing..."
  codex --full-auto "修复所有失败的测试"
fi

# 格式化代码
npm run format

# 检查 lint
npm run lint

▶ 示例 2: Bob 的自动化钩子

TOML
# Bob 的钩子配置
[hooks]
post-task = "bash .codex/hooks/post-task.sh"

# .codex/hooks/post-task.sh
#!/bin/bash
npm test                    # 运行测试
npm run lint -- --fix       # 修复 lint
npm run format              # 格式化
echo "Hook: post-task completed"

4. 多级 AGENTS.md

Codex 支持多级 AGENTS.md,从根目录到子目录逐级生效:

TEXT 📖 仅展示
project/
├── AGENTS.md              # 全局规则
├── src/
│   ├── AGENTS.md          # src 目录规则
│   ├── api/
│   │   └── AGENTS.md      # API 模块规则
│   └── auth/
│       └── AGENTS.md      # Auth 模块规则

(1) 优先级

TEXT 📖 仅展示
子目录 AGENTS.md > 父目录 AGENTS.md > 根目录 AGENTS.md

(2) 实际使用

MARKDOWN
<!-- src/api/AGENTS.md -->
# API 模块规则
- 所有端点必须有 Swagger 文档
- 使用 Pydantic 做请求/响应验证
- 返回标准响应格式:{ data: ..., error: ... }

5. 规则优先级

TEXT 📖 仅展示
AGENTS.md 子目录 > AGENTS.md 根目录 > Skills > 配置文件 > 默认行为

❓ 常见问题

Q AGENTS.md 必须放在项目根目录吗?
A 根目录 AGENTS.md 是必须的,子目录 AGENTS.md 是可选的。Codex 会自动读取当前工作目录及其父目录的所有 AGENTS.md。
Q 钩子可以跳过吗?
A 可以。使用 --no-hooks 参数启动 Codex 会跳过所有钩子。
Q AGENTS.md 会占用上下文窗口吗?
A 会,但占用很小。Codex 会压缩 AGENTS.md 的内容以减少 token 消耗。
Q 钩子脚本出错怎么办?
A 钩子出错不会影响 Codex 的主任务。Codex 会记录错误并继续执行。
Q 可以给不同文件类型设不同规则吗?
A 可以。在 AGENTS.md 中按文件类型或目录分别定义规则,Codex 会根据操作的文件匹配对应规则。

📖 小节


📝 作业

  1. 基础题(难度⭐):为你的项目创建 AGENTS.md,定义代码风格和禁止操作。
  2. 进阶题(难度⭐⭐):配置 post-task 钩子,实现任务完成后自动运行测试和格式化。
  3. 挑战题(难度⭐⭐⭐):设计多级 AGENTS.md 方案——根目录通用规则 + 各模块专用规则。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏