效率提升 10 倍:我用了 30 天 Codex,总结出这些 99% 的人不知道的隐藏技巧
前几天,团队里有同事问我:“你怎么用 Codex 一天能干完我一周的活?你是不是偷偷加了什么外挂?”
说实话,我一开始也觉得 Codex 就是个"高级版的 Copilot"。
直到我花了整整 30 天深度使用,踩了无数坑之后,才发现——大多数人只用了 Codex 不到 20% 的能力。
你可能会遇到这些情况:每次让 Codex 写代码都要反复纠正风格,改了半天还不如自己写;明明是个简单任务,它却生成了一堆不必要的复杂代码;让它跑测试,结果把不相关的测试也改了;更离谱的是,有时候它会"自作主张"地创建 git 分支、提交代码,搞得一团糟。
但其实,这些问题全都是因为——你不会"教" Codex。
本文将分享我在 30 天高强度使用中总结出的 12 个实战技巧,从入门配置到高级玩法,每一个都经过真实项目验证。
📊 先看看效果
在我优化完所有配置之后:
| 指标 | 优化前 | 优化后 | 提升 |
|---|---|---|---|
| 首次生成正确率 | ~40% | ~85% | 2 倍+ |
| 平均任务完成时间 | 15-30 分钟 | 3-8 分钟 | 3-5 倍 |
| 不必要的文件修改 | 频繁 | 几乎为零 | 95% ↓ |
| 代码风格一致性 | 每次都要纠正 | 自动遵守 | 100% |
| 无效 token 消耗 | 高 | 低 | 60% ↓ |
💡 核心结论:Codex 的能力上限,取决于你给它的"上下文质量"。
技巧 1:AGENTS.md — 你的项目"说明书"
这是 最被低估 的功能,没有之一。
AGENTS.md 是放在项目根目录的一个文件,Codex 每次启动时都会自动读取它。你可以在里面写项目的编码规范、架构说明、常用命令等等。
创建你的第一个 AGENTS.md:
# 项目规范
## 技术栈
- 语言:TypeScript 5.4
- 框架:Next.js 14 (App Router)
- 数据库:PostgreSQL + Prisma ORM
- 测试:Vitest + Testing Library
## 编码规范
- 使用函数式组件,禁止 class 组件
- 变量命名:camelCase
- 组件命名:PascalCase
- 常量命名:UPPER_SNAKE_CASE
- 每个函数不超过 50 行
## 常用命令
- 启动开发服务器:`pnpm dev`
- 运行测试:`pnpm test`
- 运行单个测试文件:`pnpm test -- path/to/file.test.ts`
- 类型检查:`pnpm typecheck`
- Lint 检查:`pnpm lint`
## 目录结构
- `src/app/` — 页面路由
- `src/components/` — 共享组件
- `src/lib/` — 工具函数
- `src/server/` — 服务端逻辑
- `prisma/` — 数据库 schema
为什么这么重要?
没有 AGENTS.md 的时候,Codex 每次都要"猜"你的项目规范,猜错了你还得纠正它。有了这个文件,一次配置,永久生效。
⚠️ 注意: AGENTS.md 支持嵌套放置。子目录中的 AGENTS.md 会覆盖父目录的同名配置。比如你可以在 src/components/ 下放一个专门针对组件开发的规范。
技巧 2:用"角色 + 约束"模式写提示词
大多数人给 Codex 的提示词是这样的:
❌ 反面示例:
“帮我写一个用户注册功能”
这种提示词太模糊了,Codex 会按自己的理解随意发挥。
✅ 正确姿势:
"你是一个资深 Next.js 全栈工程师。请基于现有的 Prisma schema,实现用户注册的 API 路由。要求:
- 使用
src/app/api/auth/register/route.ts路径- 输入验证使用 zod
- 密码使用 bcrypt 哈希
- 返回标准 JSON 响应格式
- 添加对应的 Vitest 单元测试"
公式: 角色定义 + 具体任务 + 技术约束 + 输出要求
为什么有效?
- 🎯 角色定义:让 Codex 进入"专家模式",生成更专业的代码
- 📋 具体任务:明确要做什么,避免发散
- 🔒 技术约束:限制技术选型,和项目保持一致
- ✅ 输出要求:确保结果可验证
技巧 3:善用"不要做"指令
很多人只告诉 Codex “要做什么”,却忘了告诉它"不要做什么"。
这其实更重要。
在 AGENTS.md 或者提示词中加上这些约束:
## 禁止事项
- 不要修改我没有提到的文件
- 不要添加 inline 注释,除非我明确要求
- 不要创建 git commit
- 不要使用 any 类型
- 不要引入新的依赖包,除非我同意
- 不要使用 one-letter 变量名
- 不要添加 copyright 头
- 不要重构我没有提到的代码
效果对比:
| 场景 | 没有"不要做"约束 | 有"不要做"约束 |
|---|---|---|
| 修改一个函数 | 顺手重构了整个文件 | 只改目标函数 |
| 添加新功能 | 自动创建 git 分支并提交 | 只修改代码 |
| 修复一个 bug | 引入了 3 个新的 import | 最小化修改 |
🔴 这条技巧的 ROI 是最高的。 一个"不要做"的约束,可以帮你省下 80% 的返工时间。
技巧 4:分阶段提需求,而不是一次性甩大需求
❌ 反面示例:
“帮我做一个完整的电商系统,包括用户管理、商品管理、购物车、订单、支付”
这种大需求,Codex 大概率会生成一堆臃肿的、不符合你预期的代码。
✅ 正确姿势:分步执行
第一步:
“先设计电商系统的数据库 schema,包括用户、商品、购物车、订单四个表”
第二步:
“基于刚才的 schema,实现商品 CRUD 的 API 路由”
第三步:
“给商品 API 添加分页和搜索功能”
第四步:
“实现购物车功能,支持添加、删除、修改数量”
为什么分步更好?
- ✅ 每一步都可以 review 和调整
- ✅ 避免一次性生成大量难以维护的代码
- ✅ 上下文更聚焦,生成质量更高
- ✅ 发现问题可以及时纠正,不会"跑偏"
💡 经验法则: 每次给 Codex 的任务,控制在 15-30 分钟人工工作量 的范围内。太小了没效率,太大了容易失控。
技巧 5:用 TODO 计划让 Codex 先想再做
当你给 Codex 一个稍微复杂的任务时,可以要求它先生成一个执行计划:
“先不要写代码。先分析一下实现这个功能需要哪些步骤,列出你的计划。”
Codex 会生成一个结构化的 TODO 列表,类似这样:
1. [ ] 创建 API 路由文件
2. [ ] 定义请求/响应类型
3. [ ] 实现输入验证 (zod)
4. [ ] 实现业务逻辑
5. [ ] 添加错误处理
6. [ ] 编写单元测试
7. [ ] 运行测试验证
你可以:
- ✅ 确认计划合理后再让它执行
- ✅ 调整步骤顺序或增删步骤
- ✅ 在每个步骤完成后 review
进阶用法:
“按你的计划一步步来,每完成一步就停下来告诉我进展。”
这样 Codex 会进入"分步执行"模式,你可以在每一步之后介入和调整。
技巧 6:利用 Git 历史给 Codex 提供上下文
当你要修改或重构一段代码时,让 Codex 先看看 Git 历史:
“请先用
git log和git blame查看src/lib/auth.ts的历史,了解这段代码为什么是这样的,然后再做修改。”
为什么有用?
- 📖 了解代码演变的背景和原因
- 🐛 发现之前修复过的相关 bug
- 🤝 尊重之前开发者的设计意图
- ⚠️ 避免重新引入已经修复过的问题
同样,你也可以让 Codex 查看相关的 PR 和 commit message:
“看一下最近 10 个 commit,了解项目最近的改动方向,然后基于这个上下文来实现新功能。”
技巧 7:测试驱动开发(TDD)的正确姿势
Codex 非常适合做 TDD,但你得用对方法。
方式一:先写测试,再让 Codex 实现
“我已经写好了测试文件
src/lib/__tests__/cache.test.ts,里面有 8 个测试用例。请实现src/lib/cache.ts让所有测试通过。不要修改测试文件。”
方式二:让 Codex 同时写实现和测试
"实现
src/lib/cache.ts的 LRU 缓存功能,同时编写对应的测试。要求:
- 至少覆盖:基本存取、过期淘汰、容量淘汰、并发安全
- 测试文件放在
src/lib/__tests__/cache.test.ts- 实现完成后运行
pnpm test -- cache确认全部通过"
方式三:用测试验证修改
“修改
src/lib/auth.ts的 token 过期逻辑,从固定 24 小时改为可配置。修改完成后运行pnpm test -- auth确保现有测试全部通过。”
⚡ 关键原则: 给 Codex 明确的测试运行命令,让它能自己验证结果。这比让它"自己觉得写对了"可靠 100 倍。
技巧 8:善用 sandbox 模式控制权限
Codex 提供了不同的沙箱模式来控制它的"自由度"。理解并正确使用它们非常关键:
| 模式 | 说明 | 适用场景 |
|---|---|---|
full-auto |
自动执行,无需确认 | 信任度高的日常开发 |
suggest |
每个操作都需要确认 | 生产环境、敏感代码 |
我的推荐配置:
- 🔴 生产代码 / 数据库操作 / API Key 相关: 使用
suggest模式,逐个确认 - 🟡 日常功能开发: 使用
full-auto,提升效率 - 🟢 测试代码 / 文档编写: 使用
full-auto,放心让它跑
在提示词中也可以控制:
“这个任务涉及数据库 migration,请在执行每条 SQL 之前先告诉我。”
技巧 9:让 Codex 当你的 Code Reviewer
除了写代码,Codex 还是一个非常优秀的 Code Reviewer。
基础用法:
"请 review
src/lib/auth.ts最近的改动,关注以下方面:
- 安全性(SQL 注入、XSS、认证绕过)
- 性能(N+1 查询、不必要的内存分配)
- 错误处理(边界情况、异常捕获)
- 代码可读性"
进阶用法:对比式 Review
"对比
main分支和当前分支的差异,像资深工程师一样做 Code Review。重点关注:
- 是否有向后兼容性问题
- 是否有遗漏的错误处理
- 是否有更简洁的实现方式"
让 Codex 做安全审计:
“对
src/app/api/下的所有路由做安全审计,列出潜在的安全风险和修复建议。按严重程度排序。”
💡 小技巧: Review 的时候让 Codex 用具体的代码示例来说明问题,而不只是泛泛而谈。
技巧 10:复杂重构的"安全网"策略
重构是最容易出事的操作。以下是我的安全重构流程:
第一步:建立基线
“先运行
pnpm test记录当前所有测试的通过状态,不要修改任何代码。”
第二步:小步重构
“重构
src/lib/auth.ts,把回调风格改为 async/await。每次只改一个函数,改完立即运行相关测试确认没有 regression。”
第三步:全量验证
“所有函数都改完了,运行完整的测试套件
pnpm test,如果有失败的测试,逐个修复。”
第四步:类型检查 + Lint
“运行
pnpm typecheck和pnpm lint,确保没有类型错误和代码风格问题。”
为什么这个策略有效?
- ✅ 每一步都有明确的验证标准
- ✅ 出现问题可以精确定位到哪个函数
- ✅ 不会一次性引入大量变更导致难以排查
技巧 11:多 Agent 协作模式
Codex 支持同时运行多个 Agent 处理不同任务。这在大型项目中非常有用。
场景:同时开发前后端
Agent 1:
“实现用户管理的后端 API,包括 CRUD 和分页查询。”
Agent 2:
“基于 API 接口文档(如下),实现用户管理的前端页面。API 接口如下:…”
场景:同时写代码和文档
Agent 1:
“实现支付模块的核心逻辑。”
Agent 2:
“基于现有的
src/lib/payment.ts,编写 API 文档和使用示例。”
⚠️ 注意事项:
- 多个 Agent 不要同时修改同一个文件
- 明确划分每个 Agent 的职责边界
- 定期同步进展,避免冲突
技巧 12:高级 Prompt 模板库
以下是我在实际项目中反复验证过的高效 Prompt 模板:
🔧 Bug 修复模板
"我在
src/components/UserList.tsx遇到了一个 bug:当用户列表超过 100 条时页面会卡死。复现步骤: 打开用户列表页,加载 100+ 条数据
期望行为: 使用虚拟滚动,流畅展示
实际行为: 页面完全卡住,无法滚动请分析原因并修复,确保修复后不影响现有功能。"
🏗️ 架构设计模板
"我需要设计一个通知系统,要求:
- 支持多渠道(邮件、短信、站内信、Webhook)
- 支持模板化消息内容
- 支持发送重试和失败队列
- 可扩展,方便后续添加新渠道
先给出架构设计方案(不需要代码),包括核心模块、数据流和技术选型。"
📊 性能优化模板
"
src/lib/search.ts的搜索接口响应时间超过 2 秒。请:
- 分析性能瓶颈(是否有 N+1 查询、不必要的全表扫描等)
- 提出优化方案
- 实现优化
- 用 benchmark 对比优化前后的性能数据"
🔄 迁移模板
"将项目从 Jest 迁移到 Vitest。要求:
- 逐个文件迁移,每迁移一个文件就运行确认
- 保持所有测试用例的行为不变
- 更新
package.json和配置文件- 迁移完成后删除 Jest 相关依赖"
全面对比:新手 vs 老手
| 维度 | 新手用法 | 老手用法 |
|---|---|---|
| 项目配置 | 没有 AGENTS.md | 完善的 AGENTS.md + 嵌套配置 |
| 提示词 | “帮我写个功能” | 角色 + 约束 + 输出要求 |
| 任务粒度 | 一次甩大需求 | 分阶段执行,每步 review |
| 约束条件 | 只说"要做什么" | 明确"不要做什么" |
| 验证方式 | 肉眼看代码 | 测试驱动 + 自动化验证 |
| 上下文管理 | 从零开始描述 | 利用 Git 历史 + 项目文档 |
| 复杂任务 | 直接开干 | 先出计划,逐步执行 |
| 重构 | 一次性大改 | 小步重构 + 持续验证 |
| 权限控制 | 全开或全关 | 按场景选择 sandbox 模式 |
| 代码质量 | 生成后手动检查 | 让 Codex 自己 Review |
常见踩坑与解决方案
Q:Codex 总是修改我不想改的文件怎么办?
A:在 AGENTS.md 中明确写上:
## 禁止修改的文件
- `src/config/database.ts` — 数据库配置,请勿修改
- `prisma/migrations/` — 迁移文件,请勿手动修改
或者在提示词中加上:“只修改 src/lib/auth.ts,不要碰其他文件。”
Q:Codex 生成的代码太复杂了怎么办?
A:加上简洁性约束:
“用最简单的方式实现,不要过度设计。如果标准库能解决,不要引入第三方包。”
Q:Codex 总是忘记之前的上下文怎么办?
A:在新对话开头提供关键上下文:
“当前项目使用 Next.js 14 + TypeScript + Prisma,数据库是 PostgreSQL。请在这个前提下实现…”
Q:如何让 Codex 遵守团队已有的代码规范?
A:把你们的 ESLint 配置、Prettier 配置和编码规范都写进 AGENTS.md,Codex 会自动遵守。
Q:Codex 跑测试把不相关的测试也改了怎么办?
A:在 AGENTS.md 中加上:
## 测试规范
- 只修改与当前任务直接相关的测试文件
- 不要为了通过测试而修改测试用例的预期值
- 运行测试时使用精确路径:`pnpm test -- path/to/specific.test.ts`
总结
经过 30 天的深度使用,我的核心感悟是:
✅ AGENTS.md 是 ROI 最高的投资 — 一次配置,永久受益
✅ "不要做"比"要做"更重要 — 约束产生质量
✅ 分步执行永远优于一步到位 — 小步快跑,持续验证
✅ 给 Codex 足够的上下文 — 它不是全知的,但给它信息后它非常强
✅ 让 Codex 自我验证 — 测试驱动 + 自动化检查 > 人工 review
🔴 最后提醒: Codex 是一个强大的工具,但它的能力上限完全取决于你如何"教"它。花 30 分钟写好 AGENTS.md,比花 30 天反复纠正代码风格要有效 100 倍。
附录:我的完整 AGENTS.md 模板
# 项目规范
## 技术栈
- [填写你的技术栈]
## 编码规范
- [填写你的编码规范]
## 常用命令
- 启动:`[命令]`
- 测试:`[命令]`
- Lint:`[命令]`
- 构建:`[命令]`
## 禁止事项
- 不要修改未提及的文件
- 不要添加不必要的注释
- 不要创建 git commit
- 不要引入新依赖(除非明确要求)
- 不要重构未提及的代码
- 不要使用 any 类型
- 不要使用单字母变量名
## 测试规范
- 只修改与当前任务相关的测试
- 不要修改测试预期值来"通过"测试
- 运行测试时使用精确文件路径
## 提交规范
- 不要自动 commit
- 如果需要 commit,使用 Conventional Commits 格式
更多推荐

所有评论(0)