把 Codex 用进真实项目:入口、权限、Git、AGENTS.md 与 Prompt 模板

AI 与智能体6 次阅读58 分钟

最近重新看了一遍 bozhouDev/codex-orange-book,也顺手对了一遍 OpenAI 的 Codex manual。这篇不是对《橙皮书》的逐章复述,而是我按自己的使用习惯重新整理的一份技术笔记。

《橙皮书》写得很像一份面向新手的操作手册:先解释 Codex 是什么,再讲 App、CLI、IDE Extension、Web / Cloud,接着讲插件、Skill、MCP、Git、AGENTS.md,最后用一个宠物零食网站的案例串起来。它的优点是覆盖面广,缺点也明显:如果只是想快速建立自己的工作流,里面的截图、安装细节、案例步骤会显得有点长。

所以我这篇会换一种组织方式:不追求把所有界面按钮都写全,而是把长期有用的部分提炼出来。

我的目标很简单:

  1. 解释 Codex 应该被放在什么位置。

  2. 梳理 App、CLI、IDE、Web/Cloud 这些入口怎么选。

  3. 把权限、安全、Git、AGENTS.md、Skill/MCP 这些容易被忽略的基础设施讲清楚。

  4. 给一套能复制到真实项目里的工作流和 Prompt 模板。

本文最后整理时间是 2026-06-27。Codex 相关功能、套餐、模型、命令参数和界面位置都可能变化;安装入口、价格、额度、可用模型,以官方页面和你账号实际显示为准。

如果你只是想快速收藏,可以先看三块:

  • 开头的速查卡:判断入口、权限和任务边界。

  • 中间的六步法:把需求拆成能交给 Codex 的任务。

  • 后面的 30 分钟实操:照着跑一遍,基本就知道 Codex 应该怎么进入自己的项目。

0. 先说结论

如果只用一句话概括我对 Codex 的理解:

Codex 不是代码生成按钮,而是可以被放进工程流程里的执行型 Agent。

这句话里有三个关键词。

第一个是“工程”。Codex 的价值不是单独写一个函数,而是在一个真实项目里读文件、理解上下文、改代码、跑命令、看 diff、写总结。它处理的是项目现场,而不是孤立代码片段。

第二个是“流程”。Codex 很容易一口气改很多东西,所以必须用流程框住它:先读项目,再定计划;先小步实现,再测试;先看 diff,再提交。流程不是为了慢,而是为了让快有边界。

第三个是“执行”。ChatGPT 更像顾问,Cursor 更像编辑器里的协作者,Codex 更接近一个能被派活的工程助手。你可以交给它任务,但你仍然要负责判断、验收和风险控制。

我现在会用这套最小工作台:

层级

我会准备什么

目的

项目目录

一个干净 workspace,不直接选桌面/下载目录/系统盘

避免误伤无关文件

Git

初始 commit、分支或 worktree

可检查、可回滚

Prompt

目标、上下文、约束、完成标准

限制本次任务边界

AGENTS.md

项目规则、命令、风格、禁止事项

把重复规则沉淀下来

验证

test / lint / typecheck / build / 浏览器检查

不靠“AI 说完成了”

复盘

记录失败、更新 Prompt 或 AGENTS.md

让下一次更稳

这套东西看起来朴素,但比“随便让它做个东西”可靠得多。

0.1 收藏速查卡

如果把这篇文章当手册用,我建议先记下面几张表。

入口选择:

我现在想做什么

优先入口

原因

第一次在本地项目里试 Codex

Codex App

可视化、好看 diff、容易 review

在终端里读项目、修 bug、跑测试

Codex CLI

离工程现场最近,适合真实开发

改当前编辑器里的一小段代码

IDE Extension

文件和选区上下文更直接

已经有 GitHub 仓库,希望异步处理 issue / PR

Web / Cloud

适合云端任务和并行尝试

只是问概念或讨论方案

ChatGPT / 普通对话

没必要让 Agent 进入项目

任务边界:

可以放心练手

需要谨慎

暂时不要直接交给它

静态页面、README、测试补充、样式微调

多文件功能、后台页面、依赖升级、数据迁移脚本

生产数据库、支付、鉴权、安全策略、大规模重构

每次开工前的最小检查:

检查项

具体动作

当前目录对不对

确认不是桌面、下载目录、系统盘或无关大目录

Git 状态干不干净

git status,必要时先 commit 或新建分支

任务是否足够小

一次只做一个页面、一个 bug、一个重构点

能否验证

先想好 test / lint / build / 浏览器路径

有没有禁止事项

写进 Prompt 或 AGENTS.md

我最常用的 Prompt 骨架是这个:

请先不要修改代码。

目标:
【这次要解决什么】

背景:
【项目背景、用户场景、现在的问题】

约束:
1. 【哪些文件/目录不要动】
2. 【不要引入什么依赖】
3. 【不要改变什么行为】

完成标准:
1. 【用户能看到什么变化】
2. 【哪些命令需要通过】
3. 【哪些页面或流程需要手动检查】

请先输出:
1. 你理解的需求
2. 可能相关的文件
3. 修改计划
4. 风险点
5. 需要我确认的问题

等我确认后再开始修改。

这段 Prompt 的重点不是客气,而是把 Codex 从“自动发挥”拉回“先理解、再计划、后执行”的节奏。

1. Codex 到底解决了什么问题

《橙皮书》开头用了一个很清楚的脉络:AI 编程工具过去几年大概经历了从补全、对话、编辑器协作,到工程 Agent 的变化。

我自己的理解是:

阶段

典型体验

人还要做什么

Copilot 式补全

你写开头,AI 补后面

项目拆解、文件定位、测试、提交

ChatGPT 式问答

你复制代码和报错,AI 给建议

把答案搬回项目,自己验证

Cursor 式协作

AI 在编辑器里看文件、改局部代码

盯着上下文、跑测试、整理提交

Codex 式执行

AI 进入项目,读文件、改代码、跑命令、总结 diff

定边界、审查风险、决定是否接受

这个变化的核心不是“模型更聪明了”这么简单,而是 AI 的工作位置变了。以前 AI 更像一个辅助输入层,现在它开始进入工程执行层。

但这也带来一个副作用:越能执行,越需要边界。

当一个工具只能回答问题时,它最多给你一个错答案。当一个工具能改文件、跑命令、联网、调用外部工具时,它的错误可能变成真实项目里的错误。所以使用 Codex 的第一课不是“怎么让它写得更多”,而是“怎么让它在正确范围里做事”。

适合 Codex 的任务,通常有几个特征:

  • 目标明确:修一个可复现 bug、新增一个清楚的页面、补一组测试、整理一份 README。

  • 范围可控:知道大概涉及哪些文件,知道哪些东西不能动。

  • 结果可验证:有命令可跑,或有手动验收路径。

  • 失败可回滚:Git 状态清楚,最好有分支或 worktree。

  • 风险可接受:不是生产数据库、支付核心、权限核心这种高风险场景。

不适合直接交给 Codex 独立处理的任务:

  • 真实用户数据、生产数据库、支付链路。

  • 鉴权、权限、安全策略等核心模块。

  • 你自己也无法判断对错的大规模重构。

  • 没有备份、没有 Git、没有测试的重要项目。

  • 需要组织共识的架构迁移。

Codex 可以让工程执行更快,但不能替你承担工程判断。

2. 四个入口:App、CLI、IDE、Web / Cloud

《橙皮书》把 Codex 的使用入口分成四类:App、CLI、IDE Extension、Web / Cloud。这个分类很有用,因为很多新手的问题不是“Codex 能不能做”,而是不知道应该从哪个入口开始。

我会这样选:

入口

适合场景

不适合场景

我的建议

Codex App

本地项目、多线程任务、图形化 review、浏览器预览

纯终端自动化、极简远程服务器

新手优先从这里开始

Codex CLI

终端工作流、读项目、修 bug、跑测试、一次性 exec

完全不熟终端的人

真实开发一定要学

IDE Extension

结合打开文件、选中代码、局部修改

大规模任务管理、云端并行

已经长期用 VS Code / Cursor 再补

Codex Web / Cloud

GitHub 仓库、异步任务、云端 PR、并行处理

本地临时练习、没有 GitHub 的项目

项目上 GitHub 后再学

2.1 新手路线

如果完全从零开始,我建议顺序是:

  1. 用 Codex App 打开一个练习项目。

  2. 学会看它改了哪些文件、跑了哪些命令、需要什么权限。

  3. 再用 CLI 进入项目目录,熟悉 codexcodex resumecodex exec

  4. 写一个项目级 AGENTS.md

  5. 熟悉 Git 后,再用 Web / Cloud 处理 GitHub 仓库。

不要一上来就让 Codex 操作你的重要工作目录。先建一个练习目录:

D:\AI-Codex-Projects\hello-codex

然后初始化 Git:

git init
git add .
git commit -m "initial commit"

这一步不是仪式感。Codex 会改文件,Git 是你最基本的检查和回滚工具。

2.2 不要把入口选择复杂化

一个很实用的判断:

  • 想看着它做、想图形化 review:用 App。

  • 想在终端里和项目贴得更近:用 CLI。

  • 正在编辑某段代码:用 IDE Extension。

  • 仓库已经在 GitHub、想异步交给云端跑:用 Web / Cloud。

入口不是信仰。真正重要的是:每个入口都要配合上下文、权限、Git 和验证流程。

3. 安装前准备:先搭一个安全的练习场

《橙皮书》在安装前准备里反复强调几件小事:账号、系统、Git、项目目录、权限。这里我不展开每个下载按钮,只保留长期有效的部分。

建议先准备:

工具

为什么需要

Git

查看 diff、保存版本、回滚错误

GitHub 账号

后续用 Web / Cloud、PR、远程仓库

Node.js

前端项目、很多工具链会用到

Python

脚本、数据处理、部分工具链会用到

VS Code / Cursor

人类 review 和局部编辑仍然需要

一个干净目录

限制 Codex 的工作边界

目录选择上,我会避开这些位置:

C:\
桌面
下载文件夹
系统目录
重要资料文件夹

更好的结构:

D:\AI-Codex-Projects
├── hello-codex
├── frontend-playground
└── blog-draft-lab

每个项目开始前先做三件事:

git status
git init
git add .
git commit -m "initial commit"

如果已有 Git 仓库,就先看:

git status
git diff

确保你知道当前工作区有没有未提交改动。不要在一堆脏改动上直接开一个大任务,否则后面很难判断哪些是 Codex 改的、哪些是你原来改的。

4. 权限和安全:Sandbox 是安全围栏,不是麻烦按钮

Codex 和普通聊天工具最大的区别之一,是它能在本地运行命令、读文件、改文件。所以权限模型必须理解。

官方文档把这里分成两个概念:

  • Sandbox mode:技术上允许 Codex 做什么,比如能不能写文件、能不能访问网络、能不能碰工作区外的路径。

  • Approval policy:什么时候必须停下来问你,比如越界写入、联网、高风险命令。

我把它理解成:

Sandbox 决定围栏有多大。
Approval 决定什么时候要敲门问你。

4.1 新手优先用保守模式

CLI 里可以从这种思路开始:

codex --sandbox workspace-write --ask-for-approval on-request

只想读项目、不想改文件:

codex --sandbox read-only

不建议新手直接使用:

codex --sandbox danger-full-access
codex --dangerously-bypass-approvals-and-sandbox
codex --ask-for-approval never

这不是说这些模式永远不能用,而是它们不应该成为默认习惯。权限越大,越要明确任务、明确工作区、明确回滚方案。

4.2 高风险命令清单

看到这些命令或行为时,我会让 Codex 先解释,再决定是否继续:

命令或行为

风险

rm -rf / Remove-Item -Recurse

批量删除文件

git reset --hard

丢弃未提交修改

git clean -fd

删除未跟踪文件

`curl ...

sh`

sudo

修改系统级内容

修改 .env

改变密钥、环境和部署行为

生产数据库命令

影响真实数据

可以这样问:

请解释这条命令会做什么、影响哪些文件、有什么风险,以及有没有更安全的替代方案。

如果你看不懂解释,就不要批准。

5. App 的任务模型:Project、Thread、Plan、Review

Codex App 的价值不只是“有图形界面”。它更像一个任务管理器:你选择一个项目,然后在项目里开多个 thread,每个 thread 处理一个具体任务。

可以这样理解:

概念

我的理解

Project

Codex 当前能读写的项目工作区

Thread

一次具体任务或对话

Plan mode

先分析和制定计划,不急着改代码

Review pane / diff

看 Codex 改了哪些文件

Archive

把完成或暂停的 thread 收起来

《橙皮书》里有一个对新手很有用的提醒:复杂任务先开计划模式。不要让 Codex 一看到需求就直接动手。

我会这样开头:

请先不要修改任何代码。
先阅读项目结构,理解相关文件,然后给出修改计划。
等我确认后再开始实现。

这个习惯能避免很多问题。因为最可怕的不是 Codex 不会写代码,而是它在没理解边界时写得太快。

5.1 推理强度不要永远开最高

《橙皮书》也提到不同任务可以选择不同思考强度。我的使用习惯:

任务

推理强度倾向

改文案、改颜色、小样式

低或中

普通 bug、小功能、页面调整

多文件 bug、重构、迁移

架构分析、反复失败的问题

高或更高

不要所有任务都开最高。高推理更慢、更贵,也不一定对简单任务有明显收益。

6. CLI:真实项目里绕不开的入口

Codex CLI 是我认为最应该掌握的入口。它适合读项目、修 bug、跑测试、做一次性自动化任务,也最容易和 Git 工作流结合。

6.1 常用命令备忘

这不是完整手册,只保留我觉得常用的:

命令

用途

codex

在当前目录启动 Codex

codex --version

查看版本

codex login

登录

codex login status

查看登录状态

codex doctor

诊断环境问题

codex resume --last

接着最近一次会话继续

codex exec "任务"

非交互式执行一次任务

codex --cd <path>

指定项目目录启动

我最常用的是:

cd 项目目录
git status
codex

进入 Codex 后常用 slash commands:

命令

用途

/plan

先计划,不急着改

/diff

查看当前修改

/review

让 Codex 自审当前 diff

/status

看模型、权限、上下文状态

/permissions

调整权限

/init

生成 AGENTS.md 初稿

/compact

长对话压缩上下文

/quit / /exit

退出

6.2 什么时候用 codex exec

交互式 codex 适合边看边改。codex exec 更适合一次性任务:

codex exec "请检查当前项目的 README 是否与 package.json 命令一致,不要修改文件,只输出问题清单。"

或者:

codex exec "请根据当前 diff 生成一份 PR 描述,包含修改内容、测试结果和风险说明。"

但新手阶段不建议一上来大量使用 exec。先用交互式模式熟悉 Codex 的行动方式,再把稳定任务自动化。

7. Web / Cloud:等 GitHub 工作流稳定后再上

Codex Web / Cloud 的核心是:Codex 在云端拉取 GitHub 仓库,在隔离环境里处理任务。它很适合:

  • 项目已经在 GitHub。

  • 有稳定的安装、测试、构建命令。

  • 任务可以异步跑。

  • 结果可以通过 PR 或 diff review。

它不适合:

  • 本地临时练习。

  • 没有 GitHub 仓库的项目。

  • 依赖大量本地私有环境、但没有配置 setup script 的项目。

  • 你还不会看 diff、不会处理分支和 PR 的阶段。

云端任务的关键不是“让 AI 在云上帮你写代码”,而是“你的仓库有没有足够清楚的环境说明”。如果没有 README、没有测试命令、没有 setup script、没有 AGENTS.md,Codex Cloud 也会猜。

所以 Web / Cloud 的前置条件其实是工程卫生:

  • README 说明安装和启动。

  • package.json / lockfile 清楚。

  • 环境变量有 .env.example

  • 测试和构建命令可执行。

  • AGENTS.md 说明项目规则。

8. 插件、Skill、MCP:不要混成一团

《橙皮书》里对这三者的区分很重要。它们不是同一种东西。

概念

解决什么问题

类比

Plugin

安装、打包、分发能力

工具箱

Skill

同类任务怎么做

工具箱里的说明书

MCP

连接什么外部工具或数据源

插座和接口

我喜欢用一句话记:

Skill 管怎么做,MCP 管连什么,Plugin 管怎么安装和分发。

8.1 什么时候做 Skill

如果一类任务你反复做,而且每次都要写一大段规则,就适合做 Skill。

适合做 Skill 的任务:

  • 写 README。

  • 做代码 review。

  • 生成技术文章。

  • 做 UI 检查。

  • 整理会议纪要。

  • 把某种固定格式的资料转成报告。

不太需要 Skill 的任务:

  • 临时改一句文案。

  • 问一个概念。

  • 一次性小任务。

  • 需求本身还没稳定。

一个 Skill 通常可以包含:

文件或内容

作用

SKILL.md

触发条件和工作流程

references

参考资料、规范、模板

scripts

可选脚本,用来做机械处理

checklist

防止漏步骤

8.2 什么时候用 MCP

MCP 解决的是 Codex 访问外部工具的问题。

适合 MCP 的场景:

  • 查最新开发文档。

  • 读取 GitHub issue / PR。

  • 连接 Notion 或内部知识库。

  • 查询数据库结构或测试数据。

  • 读取 Figma 设计稿。

  • 操作浏览器或其他外部系统。

普通写代码不一定需要 MCP。只有当 Codex 缺的不是“怎么做”,而是“拿不到外部数据”时,MCP 才真正有用。

我的建议是:不要一开始装一堆插件和 MCP。先把基础工作流跑顺。等你发现某类任务反复出现,再做 Skill;等你发现缺外部数据,再接 MCP。

9. Git、GitHub 和 Worktree:让 Codex 有试错空间

《橙皮书》在 Git 这一章讲得很朴素,但非常关键:用 Codex 做真实项目,一定要懂一点 Git。

原因很简单:

没有 Git,Codex 改错了你很难回退。
有了 Git,Codex 可以大胆试,你可以随时检查和恢复。

9.1 最小 Git 工作流

我会让每次 Codex 任务都贴着这个流程走:

git status
git diff

确认当前状态后再派任务。完成后:

git status
git diff
npm test
npm run build
git add .
git commit -m "feat: ..."

不是每个项目都有 npm testnpm run build,但 Codex 至少应该先发现项目有哪些命令,而不是编造命令。

9.2 分支和 worktree

小改动可以直接在当前分支做。大改动、实验性方案、重构,我更倾向于开分支或 worktree。

分支适合:

  • 一个任务独立开发。

  • 之后要开 PR。

  • 需要和主线隔离。

Worktree 适合:

  • 想让 Codex 大胆试方案。

  • 同时跑多个方向。

  • 不想污染当前项目目录。

  • 改坏了直接丢掉副本。

可以把 worktree 理解成:同一个 Git 仓库的另一个工作副本。Codex 在副本里折腾,主目录保持干净。

10. AGENTS.md:给 Codex 的项目说明书

如果说 Prompt 是“这一次任务怎么做”,那 AGENTS.md 就是“这个项目以后都怎么做”。

官方文档里把 AGENTS.md 视为给 agent 的开放格式 README。它可以写项目结构、命令、规范、测试方式、禁止事项。更靠近当前目录的 AGENTS.md 会对更局部的任务生效。

我会把这些内容放进去:

内容

目的

项目说明

Codex 知道项目是什么

技术栈

减少误判框架和工具链

常用命令

安装、开发、测试、构建

目录结构

知道页面、组件、工具函数在哪里

代码规范

保持原项目风格

UI 规则

防止生成模板感页面

禁止事项

不改 env、不删功能、不乱加依赖

完成标准

输出 diff、测试结果、风险说明

一个适合前端/博客项目的简化模板:

# AGENTS.md

## 项目说明

这是一个个人博客项目,用于发布 AI 工具实践、工程笔记、投资复盘、读书笔记和个人随笔。

## 常用命令

- 安装依赖:`npm install`
- 本地开发:`npm run dev`
- 构建检查:`npm run build`

如果项目没有这些命令,请先从 `package.json` 或 README 判断,不要编造命令。

## 内容规范

- 默认使用中文写作。
- 标题要具体,不写空泛口号。
- AI 和金融相关内容需要注明时间点。
- 不确定的信息要标注,不要装作确定。

## 工程规则

- 修改前先阅读相关文件。
- 复杂任务先制定计划,不要直接改代码。
- 一次只处理一个功能点。
- 不要顺手重构无关代码。
- 不要新增不必要依赖。
- 不要修改 `.env`、`.env.local`。
- 不确定业务逻辑时先提问。

## 验证要求

修改后根据项目情况运行:

- lint
- typecheck
- test
- build
- 浏览器或页面手动检查

如果某个命令不存在,请明确说明。

## 完成输出

每次任务结束时输出:

1. 修改了哪些文件
2. 为什么这样改
3. 运行了哪些验证
4. 是否有未验证风险
5. 是否建议更新 AGENTS.md

AGENTS.md 不要写成空泛价值观。它应该具体、短、能执行。Codex 同一个错误出现两次,就把规则补进去。

11. 标准六步法:从需求到交付

《橙皮书》最值得提取的部分,我认为是“标准六步法”。它解决的是一个核心问题:Codex 改得很快,但你怎么知道它改得对?

六步是:

步骤

名称

目的

1

需求拆解

让 Codex 知道背景、范围和完成标准

2

制定计划

先说清楚怎么做,再决定是否动手

3

小步实现

一次只改一个功能点,降低回滚成本

4

测试验证

用命令和手动检查证明结果

5

代码审查

看 diff、看风险、看是否越界

6

提交复盘

commit、PR、沉淀 Prompt 和 AGENTS.md

下面展开讲。

11.1 第一步:需求拆解

不要直接说:

帮我优化首页。

这句话太模糊。Codex 可能改标题、改布局、改组件、改全局样式,甚至重构目录。

更好的需求拆解要回答:

问题

示例

背景是什么

这是一个已经上线的博客首页

要解决什么

现在没有公开文章,分类页有很多 0 篇旧分类

哪些文件相关

首页、分类页、文章数据、标签数据

哪些不能动

不改路由、不删草稿、不改部署配置

什么算完成

分类收敛、首页有清晰入口、构建通过

怎么验证

打开首页/分类页/标签页,运行 build

风险是什么

影响文章生成、旧链接、SEO

需求拆解 Prompt:

请先做需求拆解,不要修改代码。

需求:
【写你的需求】

请按下面结构输出:

1. 背景是什么
2. 要解决什么问题
3. 哪些文件可能相关
4. 哪些功能不能动
5. 什么结果算完成
6. 需要哪些测试
7. 有哪些风险

最后给一个建议执行顺序。

11.2 第二步:制定计划

计划阶段最重要的一句话是:

先不要写代码,也不要修改任何文件。

让 Codex 输出计划,而不是直接执行。

原因很现实:

直接开改的问题

后果

没理解项目结构

改错文件

没确认边界

做了不该做的功能

没判断影响范围

误伤旧功能

没列测试方式

改完不知道怎么验收

一次改太多

出错后不好回滚

计划 Prompt:

先不要写代码,也不要修改任何文件。

请根据当前需求和项目结构制定修改计划,包括:

1. 计划修改哪些文件
2. 每个文件为什么需要改
3. 实现步骤
4. 验证方式
5. 风险点
6. 需要我确认的问题

等我确认后再开始执行。

11.3 第三步:小步实现

计划确认后,不要让 Codex 一次性做完所有事情。一次只改一个功能点。

比如“优化首页”可以拆成:

步骤

修改内容

第一步

只优化首屏标题和副标题

第二步

只调整 CTA

第三步

只处理移动端布局

第四步

只补文章列表空态

第五步

只做最后样式细节

小步实现 Prompt:

请开始小步实现。

当前只执行第 1 步:
【写本次只做的一个功能点】

要求:
1. 只修改和当前功能直接相关的文件
2. 不要顺手重构无关代码
3. 不要修改目录结构
4. 不要新增不必要依赖
5. 不要删除已有功能
6. 不要改计划外文件

修改完成后请停止,并输出:

1. 修改了哪些文件
2. 每个文件改了什么
3. 为什么这些修改必要
4. 有没有计划外修改
5. 有没有潜在风险
6. 下一步建议

如果不确定,请先停下来问我。

这段看起来啰嗦,但非常有效。因为它明确要求 Codex “做完就停”。

11.4 第四步:测试验证

测试阶段的核心是:

不要相信“完成了”,要相信可验证结果。

常见验证顺序:

类型

常见命令或方式

注意点

单元测试

npm test / pnpm test

失败先解释,不要直接乱修

类型检查

npm run typecheck / tsc --noEmit

没有命令就说明

lint

npm run lint

区分历史问题和新增问题

构建

npm run build / pnpm build

构建通过才更接近可发布

手动测试

按用户路径操作

UI、表单、登录、上传必须点

浏览器测试

页面、Console、Network、移动端

终端看不出布局问题

回归测试

旧功能是否被影响

很容易被忽略

测试 Prompt:

请对本次修改进行测试,不要继续新增功能。

请按顺序检查:

1. 项目是否有测试命令,如果有请运行
2. 是否有 typecheck 命令,如果有请运行
3. 是否有 lint 命令,如果有请运行
4. 是否有 build 命令,如果有请运行
5. 需要手动测试哪些页面和流程
6. 本次修改可能影响哪些旧功能

最后输出:
- 通过了哪些验证
- 失败了哪些验证
- 失败原因是什么
- 是否可以进入下一步
- 还有哪些未验证风险

11.5 第五步:代码审查

测试通过,不代表可以直接接受。还要看 diff。

重点看:

审查点

要问的问题

文件范围

是否只改了计划内文件

删除内容

有没有误删旧逻辑、fallback、兼容代码

依赖变化

是否新增或升级依赖

全局样式

是否影响其他页面

业务逻辑

能跑是否等于逻辑正确

安全问题

是否暴露密钥、绕过权限、缺少校验

测试结果

是否真的跑过验证

可以先让 Codex 自审:

请对本次修改做代码审查,不要继续写代码。

重点检查:

1. 是否只改了计划内文件
2. 是否有无关重构
3. 是否新增依赖
4. 是否删除旧逻辑
5. 是否有边界条件问题
6. 是否有安全风险
7. 测试是否充分

如果发现问题,请先输出问题和建议,等我确认后再改。

但最终审查一定要由人拍板。Codex 自审只能帮你暴露明显问题,不能替你承担责任。

11.6 第六步:提交与复盘

交付不是“能跑了”就结束。最后还要做两件事:

  1. 生成清楚的 commit / PR。

  2. 把经验沉淀成 Prompt 或 AGENTS.md。

好的 commit 至少能说明:

问题

说明

改了什么

本次提交的主要内容

为什么改

对应需求或问题

影响哪里

涉及哪些页面或模块

是否验证

测试、构建是否通过

PR 描述可以这样:

## 本次修改

- ...

## 修改原因

- ...

## 测试结果

- [x] npm run build
- [x] 手动检查首页

## 风险说明

- ...

## Reviewer 重点看

- ...

复盘时重点记录:

  • 哪个 Prompt 有效。

  • Codex 哪一步差点越界。

  • 哪个测试遗漏了。

  • 哪条规则应该写进 AGENTS.md。

这一步会让 Codex 越用越顺。

12. 30 分钟实操:用 Codex 改一个博客分类问题

前面讲了很多原则,如果没有一个完整例子,读者很容易读完点头,关掉文章后还是不知道第一句该怎么问。

这里我用一个个人博客里很常见的问题做练习:

分类页里有很多旧模板留下来的 0 篇分类,需要收敛为新的博客分类体系。

这个任务不大,但很适合练 Codex,因为它同时包含项目阅读、内容规则、数据来源、页面验证和风险边界。

练习目标不是让 Codex 一次性“优化整个博客”,而是走完一条小而完整的交付链路。

时间

要做什么

验收点

0-5 分钟

准备 workspace 和 Git 状态

确认目录正确,git status 清楚

5-10 分钟

让 Codex 只读项目

知道文章、分类、标签、页面从哪里生成

10-15 分钟

让 Codex 输出修改计划

文件范围、风险、验证方式清楚

15-25 分钟

只执行分类收敛

不改首页、不删文章、不动路由

25-30 分钟

跑验证和复盘

build 通过,页面手动检查,规则沉淀

12.1 准备:先把可回滚环境搭好

我会先在终端里做这几件事:

pwd
git status
git switch -c chore/blog-taxonomy-cleanup

如果当前项目还没有 Git,我不会直接让 Codex 开始改。至少先初始化并保存一个基线:

git init
git add .
git commit -m "chore: initial blog baseline"

如果是已经有很多未提交修改的项目,我会先停下来判断这些修改是不是自己要保留的。Codex 很适合帮你改代码,但不适合在一团乱的工作区里帮你猜“哪些文件是重要改动”。

12.2 第一轮:只读项目,不改代码

第一轮 Prompt:

请先不要修改代码。

这是我的个人博客项目,内容会包含:
- AI 与智能体
- 工程实践
- 金融投资
- 阅读笔记
- 个人随笔
- 工具与效率
- 项目记录

当前问题:
分类页里可能有旧模板或导入内容留下的 0 篇分类,标签也可能过于混乱。

请先阅读项目结构,输出:
1. 文章源文件放在哪里
2. frontmatter 使用什么字段
3. 分类页、标签页、系列页在哪里
4. 分类和标签是静态写死的,还是从文章生成的
5. 哪些文件可能需要修改
6. 哪些文件暂时不建议改
7. 需要运行哪些验证命令

只输出分析,不要修改任何文件。

这一轮我主要看三件事:

我看什么

为什么

它有没有找到正确目录

如果文章目录都找错,后面一定会错

它有没有区分分类和标签

分类是主目录,标签是细线索,不能混成一堆

它有没有主动提验证方式

不提验证,说明它还停留在“写完就算完成”

如果它一上来就改文件,我会打断它,并把“先分析,不修改”写进项目的 AGENTS.md。

12.3 第二轮:让它给计划,而不是给惊喜

第二轮 Prompt:

请基于刚才的项目分析,制定分类体系调整计划。

目标分类只保留:
- AI 与智能体
- 工程实践
- 金融投资
- 阅读笔记
- 个人随笔
- 工具与效率
- 项目记录

约束:
1. 不删除任何文章
2. 不修改文章正文
3. 不改变 URL 路由结构,除非你先说明必要性
4. 不处理首页视觉
5. 不新增依赖
6. 如果涉及旧分类迁移,请先列映射表

请输出:
1. 计划修改哪些文件
2. 每个文件为什么要改
3. 旧分类到新分类的映射建议
4. 标签保留和清理规则
5. 验证方式
6. 风险点

仍然不要修改文件。

这里最重要的是“映射表”。比如:

旧分类

新分类

判断理由

C++

工程实践

如果只是旧模板分类,先不作为一级分类

Django

工程实践

技术栈更适合作为标签

OnlineJudge刷题

工程实践

不必长期占一个主分类

未分类

个人随笔或待整理

需要逐篇判断,不建议自动批量改

AI工具

AI 与智能体

和博客定位一致

我不会让 Codex 根据标题直接批量改所有旧文章分类。文章分类是信息架构,不只是字符串替换。比较稳的做法是:先处理 0 篇分类和明显模板项,再逐篇处理真实文章。

12.4 第三轮:只执行一个小改动

第三轮 Prompt:

开始执行,但这次只处理分类页显示逻辑。

本轮目标:
1. 隐藏或移除 0 篇分类
2. 保留已有真实文章分类
3. 如果项目有固定分类配置,改为新的受控分类集合

禁止事项:
1. 不修改文章正文
2. 不批量改 frontmatter
3. 不改首页、不改关于页、不改路由
4. 不新增依赖

完成后停止,并输出:
1. 修改了哪些文件
2. 每个文件改了什么
3. 是否有计划外修改
4. 需要我手动检查哪些页面

这一步只做一个小改动,是为了保留判断空间。比如分类页有两种可能:

项目实现

更稳的做法

分类来自文章自动聚合

在展示层过滤 0 篇分类

分类来自配置文件

清理配置里的模板分类

分类来自 CMS 或数据文件

先改数据源,再确认生成结果

分类同时影响路由

不要立刻删,先确认旧链接是否需要保留

如果 Codex 想顺手改标签、首页、导航文案,我会让它停下。一个常见误区是觉得“既然都看到了,就顺便优化一下”。真实项目里,很多问题就是顺手改出来的。

12.5 第四轮:验证不是走形式

第四轮 Prompt:

请验证刚才的修改,不要继续新增功能。

请按顺序执行:
1. 找出项目里的 package manager 和可用脚本
2. 如果有 lint,运行 lint
3. 如果有 typecheck,运行 typecheck
4. 如果有 build,运行 build
5. 如果能本地预览,请说明需要检查哪些页面

最后输出:
1. 通过的验证
2. 失败的验证
3. 失败是否和本次修改有关
4. 仍需要手动检查的地方
5. 是否建议进入下一步

我会手动看这些页面:

页面

看什么

首页

是否还正常显示最新文章或空态

分类页

0 篇旧分类是否消失,分类排序是否合理

标签页

标签是否还可点击,数量是否正常

文章详情页

frontmatter 是否仍能正确渲染

移动端

分类列表是否换行、溢出或遮挡

如果 build 失败,先判断是不是历史问题。不要让 Codex 为了让 build 变绿,顺手修一大堆和本次任务无关的东西。

12.6 第五轮:把经验写回 AGENTS.md

如果这次改完发现某些规则以后一定会反复出现,就应该沉淀下来。比如博客项目可以加入:

## 内容分类规则

- 每篇文章只能有一个 primary category。
- 一级分类控制在 7 个以内:AI 与智能体、工程实践、金融投资、阅读笔记、个人随笔、工具与效率、项目记录。
- 技术栈名称优先作为 tag,不轻易提升为 category。
- 不展示 0 篇分类,除非这是即将发布的专题入口。
- 不要批量修改文章 frontmatter,除非用户明确要求并给出映射表。

这一步的价值不在这次任务,而在下一次。你不需要每次都从零解释“我的博客分类不想像模板站一样散”。规则写进去,Codex 才会越来越像一个熟悉你项目的协作者。

这个 30 分钟练习跑完后,你至少会形成四个直觉:

  1. Codex 先读项目,再改代码。

  2. 一个任务必须有清楚边界。

  3. 验证要提前设计,而不是最后补一句。

  4. AGENTS.md 不是摆设,是把经验固化下来的地方。

13. 常用任务模板

下面这些模板不是为了“优雅”,而是为了减少遗漏。

13.1 读项目模板

请先不要修改任何代码。

请阅读当前项目,并输出一份项目理解报告,包括:

1. 技术栈
- 项目使用了哪些主要技术
- 前端、后端、数据库、构建工具分别是什么
- 是否使用 TypeScript、Tailwind、框架或组件库

2. 目录结构
- 主要目录分别负责什么
- 页面、组件、工具函数、接口、配置文件在哪里
- 哪些目录是核心目录,哪些不建议随便改

3. 启动方式
- 如何安装依赖
- 如何本地启动
- 是否需要环境变量
- 如果 README 里有说明,请优先参考 README

4. 测试命令
- 是否有 test、lint、typecheck、build 命令
- 如果没有相关命令,请明确说明

5. 核心模块
- 项目的核心功能模块有哪些
- 后续修改应该优先查看哪些文件

6. 后续修改风险
- 哪些文件或目录风险较高
- 是否存在全局样式、鉴权、接口、数据库等高风险区域

请只输出项目理解报告,不要修改代码。

13.2 修 Bug 模板

我遇到一个 bug:

- 现象:
- 复现步骤:
- 期望结果:
- 实际结果:
- 相关文件或页面:
- 报错日志:

请先定位原因,不要直接修改。

先给出:
1. 可能原因
2. 需要查看的文件
3. 修复方案
4. 风险点
5. 修复后验证方式

等我确认后再改代码。

13.3 加功能模板

我想新增一个功能:

- 功能描述:
- 入口位置:
- 交互流程:
- 视觉要求:
- 数据来源:
- 不在本次范围内:
- 验收标准:

请先阅读相关代码,给出实现计划。

要求:
1. 不改无关文件
2. 不新增不必要依赖
3. 如果需要修改公共组件,先说明影响范围
4. 实现后运行测试并总结 diff

13.4 前端页面模板

请根据下面要求实现一个页面:

- 页面用途:
- 目标用户:
- 视觉风格:
- 模块结构:
- 中文文案:
- 响应式要求:
- 不要出现的问题:

请先给出组件拆分方案,再开始实现。
不要引入无关依赖,不要改全局配置。

13.5 代码审查模板

请审查当前分支相对 main 的 diff。

重点检查:
1. 潜在 bug
2. 边界条件
3. 安全风险
4. 类型问题
5. 性能问题
6. 是否有无关修改
7. 测试是否充分

请不要直接修改代码,先输出 review 报告。

13.6 重构模板

请重构以下模块:

【模块路径】

目标:
1. 提高可读性
2. 减少重复代码
3. 保持现有行为不变
4. 不改变公共 API
5. 不引入新依赖

请先写重构计划,并说明如何验证行为一致。

14. 从《橙皮书》的实战案例里能提炼什么

《橙皮书》最后用宠物零食网站做了几个案例:先做静态页面,再加登录注册和分类购物车,再做管理后台,后面还尝试 PPT Skill 和视频插件。

我不太关心宠物零食这个主题本身,更关心案例背后的工作模式。

把它抽象出来,其实是一条很清楚的练习路线:

阶段

原案例在做什么

可迁移能力

你可以换成什么练习

1

做静态前端页面

从零生成、预览、微调、提交

个人首页、作品集、活动页、读书清单

2

增加分类、购物车、登录注册

把页面拆成状态和交互

博客筛选、收藏列表、任务清单、本地设置

3

做管理后台

表单、列表、权限感、数据结构

文章后台、书单后台、投资记录后台

4

生成招商 PPT

把内容转成交付物

项目汇报、读书分享、产品方案

5

生成宣传视频

调用插件完成多媒体产物

博客介绍视频、课程片头、产品演示

所以不要照搬“宠物零食”这个主题。真正值得学的是任务梯度:先做低风险静态产物,再逐步加入交互、数据、后台和交付物。

14.1 案例一:从一个静态网站开始

案例一的模式是:

  1. 创建本地文件夹。

  2. 打开 Codex App。

  3. 用计划模式生成页面。

  4. 打开 HTML 预览。

  5. 初始化 Git。

  6. 逐步优化细节。

  7. 推到 GitHub。

  8. 用 GitHub Pages 发布。

这其实是一条很适合新手的练习路线。因为静态网页风险低、反馈快、可视化强,不涉及数据库、支付、权限,很适合熟悉 Codex 怎么改文件、怎么预览、怎么提交。

但要注意:GitHub Pages 只适合静态站点。需要后端、数据库、登录态、支付、敏感交易的业务,不应该直接当静态页面托管。

14.2 案例二和三:从页面到功能,再到后台

后续案例开始增加登录注册、分类、购物车、管理后台。这时任务已经不是“生成页面”,而是“逐步扩展系统”。

这里最值得学的是顺序:

  • 先有页面。

  • 再加功能。

  • 再加数据结构和管理后台。

  • 每一步都保存到 Git。

不要一开始就说:

帮我做一个完整电商网站。

这类任务太大,需求边界太多。更好的方式是拆成多个小任务:

第一步:只做商品列表静态页面。
第二步:只做商品分类筛选。
第三步:只做购物车本地状态。
第四步:只做结算确认弹窗。
第五步:只做后台商品列表。

Codex 很适合连续完成小任务,不适合一次吞下整个系统。

14.3 案例四和五:Skill / 插件适合交付型任务

PPT 和视频案例说明了另一个方向:Codex 不只是写代码,也可以通过 Skill 或插件完成交付物。

比如:

  • PPT Skill:把内容整理成演示文稿。

  • HyperFrames:用 HTML/动画生成视频。

  • 浏览器插件:检查页面效果。

  • 文档插件:整理正式文档。

这里的关键不是“装哪个插件”,而是看任务是不是有稳定产物。如果有稳定产物,就值得找对应 Skill 或插件;如果只是临时问一句,不必复杂化。

我会用一个很朴素的判断标准:

任务特征

做法

只做一次,结果很短

直接写 Prompt

经常重复,输出格式固定

做成 Skill

需要访问外部系统

接 MCP 或插件

需要多人审查

走 GitHub / PR 流程

风险不可逆

不让 Codex 直接执行,只让它分析和写方案

这也是《橙皮书》案例给我的最大提醒:Codex 的学习路线最好从“低风险、可回滚、有反馈”的项目开始。静态网页不是因为高级,而是因为它能让你快速看见 Codex 的工作方式。

15. 常见失败模式

我把使用 Codex 时最容易踩的坑整理一下。

失败模式

表现

解决方式

需求太大

“做个完整系统”后改一堆文件

拆成小任务

没有计划

Codex 直接开改

先要求计划,不改文件

没有 Git

改错后不好恢复

初始 commit、分支、worktree

不看 diff

只看它说完成了

每轮都看文件范围和删除内容

不跑验证

页面或构建实际坏了

test / lint / build / 手动检查

顺手重构

小需求变大改动

明确不要改无关代码

盲目批准命令

删除或改坏文件

看不懂先让它解释

装太多插件

工具复杂度上升

先跑通基础工作流

AGENTS.md 太空

写了很多价值观但没命令

写具体目录、命令、禁止事项

把 MCP 当万能

接了工具但流程仍混乱

先清楚任务怎么做

我的经验是:多数失败不是模型能力问题,而是任务边界问题。

16. 我会怎么在自己的博客项目里用 Codex

以这个博客为例,我不会直接说:

帮我优化博客。

我会先让它读项目:

请先不要修改代码。

这是我的个人博客项目,内容会包含 AI 工具实践、金融投资、读书笔记、工程实践和个人随笔。

请先阅读项目结构,输出:
1. 文章内容放在哪里
2. 分类和标签从哪里生成
3. 首页、分类页、标签页、关于页在哪里
4. 当前有哪些模板遗留内容
5. 哪些地方不建议直接改
6. 后续优化建议

只输出分析,不修改文件。

然后只处理一个点,比如分类:

请只处理分类体系。

目标:
把分类收敛为:
- AI 与智能体
- 工程实践
- 金融投资
- 阅读笔记
- 个人随笔
- 工具与效率
- 项目记录

约束:
1. 不删除文章内容
2. 不修改路由结构
3. 不改首页视觉
4. 如果旧分类来自数据文件,请先说明路径和修改方案
5. 修改后运行构建

完成后输出 diff 摘要、验证结果和风险说明。

如果继续做,我会把博客任务拆成这样的顺序:

优先级

任务

为什么先做

1

收敛分类和标签

信息架构不稳,后面文章越多越难改

2

写一篇高质量首发文章

首页需要真实内容,不能一直是空态

3

丰富 About 页面

让读者知道这个博客记录什么、不记录什么

4

补 SEO 和 Open Graph

技术成本不高,但对传播和收藏有帮助

5

做文章系列页

等内容真的形成系列后再做,不提前造架子

6

再考虑友链

没有真实链接前先不展示

我会交给 Codex 的事:

  • 读项目结构,整理内容生成链路。

  • 找出模板残留的分类、标签和页面文案。

  • 起草 AGENTS.md、文章 frontmatter 规范和发布 checklist。

  • 补构建、lint、页面检查流程。

  • 根据我的草稿做结构编辑和标题优化。

我不会直接交给 Codex 的事:

  • 自动批量改所有旧文章分类。

  • 代替我写个人经历和判断。

  • 直接生成投资结论,尤其是“该买什么、该卖什么”。

  • 在没有确认数据来源的情况下写金融事实。

  • 为了页面好看大改整个视觉系统。

特别是金融投资相关内容,我会把事实、观察日期和个人判断分开写。比如一篇定投复盘,Codex 可以帮我整理结构、检查表述是否像投资建议、补风险提示,但不能替我决定观点。

我也会把下面这些规则写进博客项目的 AGENTS.md:

## 博客写作规则

- 默认使用中文写作,除非文章主题需要英文。
- 标题要具体,优先说明问题、变化或结论。
- 每篇文章只能有一个 primary category。
- tags 用具体线索,不用过宽的词。
- 金融投资内容必须写明观察日期,并区分事实和个人判断。
- AI 工具文章涉及当前产品、模型、API 时,要核对官方信息。
- 不要把草稿改成营销文案,不要替作者编造个人经历。

这才是我觉得 Codex 最舒服的用法:不是让它自由发挥,而是让它在清楚边界里持续推进。博客看起来是内容项目,但背后也有工程流程:信息架构、模板约束、发布检查、长期维护。Codex 的价值不是帮我“多写几篇”,而是让我少在重复性整理里消耗耐心。

17. 最后:把 Codex 当成流程,而不是工具

这篇文章写得比较长,但核心其实很短:

  1. Codex 是工程执行者,不是代码生成按钮。

  2. App、CLI、IDE、Web/Cloud 是不同入口,不是互相替代。

  3. 权限、Git、AGENTS.md 是基础设施,不是可选装饰。

  4. Skill 解决“怎么做”,MCP 解决“连什么”。

  5. 复杂任务一定要先计划、小步改、跑验证、看 diff。

  6. 同一个规则重复出现,就沉淀到 AGENTS.md 或 Skill。

我现在更愿意把 Codex 看成一种工作流能力。真正提高效率的不是“让 AI 多写一点代码”,而是把需求拆解、上下文整理、验证、审查、文档和复盘这些环节变得更便宜。

如果以后回来看这篇,可以按问题查:

你遇到的问题

回来看哪一节

不知道该用 App、CLI 还是 Web

0.1 和第 2 节

担心它乱改文件

第 4、9、11 节

想给项目写规则

第 10、12.6、16 节

不知道第一句 Prompt 怎么写

第 12、13 节

想从练习过渡到真实项目

第 14、15 节

如果只保留一句提醒:

让 Codex 快,但不要让它失控。

参考资料

  • bozhouDev/codex-orange-book:非官方中文长教程,本文主要参考其章节组织、工作流、Prompt 模板和实战案例思路,并重新整理为个人技术笔记。

  • OpenAI Codex manual:用于校准 Codex 的官方概念,包括 Prompt 结构、AGENTS.md、sandbox、approval、Skill、MCP、CLI、App、Cloud 等。