01 · Codex 到底是什么
你打开项目,想让 AI 帮你修一个登录失败的 bug:
⏱️ 预计阅读 12 分钟 | 🎯 目标:把 Codex 从"会写代码的聊天框"重新理解成"能进入项目现场的工程协作 Agent"
这是新手最容易搞错的第一步,也是后面所有概念立得住的地基。把这一篇读透,AGENTS.md、审批、沙箱、MCP、Skills、Subagents、Hooks 这些后续的名词就不再零散,会变成同一套系统的不同部件。
🎬 先看一个场景
你打开项目,想让 AI 帮你修一个登录失败的 bug:
帮我修一下登录失败的问题。这句话对人类同事都不够。如果你扔给一个新来的工程师,他至少会反问你三件事:发生在哪?我能不能改代码?怎么验证修对了?
同一句话,问不同对象会发生什么:
| 对象 | 发生的事 |
|---|---|
| 💬 问 ChatGPT | 它给你一段标准代码片段,让你自己复制、改、跑、报错、再贴回来 |
| 🤖 问 Codex | 它会想:在哪个文件改?能不能跑测试?哪些文件不能碰?验收标准是什么? |
🤔 差别在哪? 不在 AI 聪不聪明,而在 它有没有进入你的项目现场。 这一篇就是要把这件事讲清楚 —— 而且讲透之后,你给 Codex 的提示词会立刻变得不一样。
🧭 从 AI 到 Codex:四层概念递进
很多人一上来把 AI、ChatGPT、Agent、Codex 混着说。日常聊天没事,但学工具时必须分清。这四层从大到小一层套一层:
flowchart TB
AI["🌐 AI<br/>让机器表现出智能行为"]
LLM["📚 大语言模型<br/>擅长理解和生成语言、代码、文本"]
Assistant["💬 AI 助手<br/>把模型包装成对话产品<br/>例:ChatGPT 聊天框"]
Agent["🤖 Agent<br/>围绕目标自主使用<br/>上下文、工具、反馈"]
Coding["👨💻 Coding Agent<br/>面向编程任务的 Agent<br/>例:Codex ⭐"]
AI --> LLM
LLM --> Assistant
Assistant -."演进为".-> Agent
Agent --> Coding
style Coding fill:#dcfce7,stroke:#22c55e,stroke-width:2px
| 层级 | 是什么 | 举例 |
|---|---|---|
| 🌐 AI | 大概念,让机器表现出智能 | 自动驾驶、人脸识别、下棋 AI、推荐系统 |
| 📚 大语言模型 | 一类擅长处理语言/代码的 AI | GPT、Claude、Gemini |
| 💬 AI 助手 | 把模型包装成对话产品 | ChatGPT、Claude.ai 这类聊天框 |
| 🤖 Agent | 能围绕目标行动的系统 | AutoGPT、Cursor Agent |
| 👨💻 Coding Agent | 面向编程的 Agent | Codex |
逐层展开一下:
- 🌐 AI 不只是聊天。识别图片、推荐视频、语音识别、自动驾驶、下棋 —— 都是 AI。不是所有 AI 都是大语言模型。
- 📚 大语言模型 是当下最常见的一类 AI。核心能力是理解和生成序列:一句话、一段代码、一份配置、一段报错、一篇文档,它都能处理。
- 💬 AI 助手 是产品形态。你打开聊天框、输入问题、它回答你 —— 这时你面对的是助手,不是裸模型。
- 🤖 Agent 是再进一步:它不只是回答,而是围绕目标行动。读上下文、定步骤、调工具、看结果、再决定下一步。
- 👨💻 Coding Agent 是 Agent 在编程场景的具体形态。
💡 核心区分:助手负责「回答」,Agent 负责「行动」。这一字之差,决定了后面所有差异。
🤖 什么是 Agent
Agent 这个词最近被说滥了。为了让新手能立刻抓住,先别用技术定义,用一个工作流定义:
Agent = 目标 + 上下文 + 工具 + 记忆 / 状态 + 反馈循环| 组件 | 作用 | 缺了会怎样 |
|---|---|---|
| 🎯 目标 | 告诉它要做什么 | 没有目标 → 是聊天助手 |
| 📥 上下文 | 告诉它现在的情况 | 没有上下文 → 凭空猜 |
| 🛠️ 工具 | 让它能行动 | 没有工具 → 只能说不能做 |
| 🧠 记忆 / 状态 | 让它能保持连续性 | 没有记忆 → 每步都从零开始 |
| 🔄 反馈循环 | 让它能根据结果调整 | 没有反馈 → 只能执行一次 |
少任何一个,Agent 就不再完整:
- 只有目标和回答,没有工具 → 更像聊天助手
- 有工具但没有目标 → 只是自动化脚本
- 有目标和工具但没有反馈 → 只能执行一次,不能修正
- 有反馈但没有边界 → 可能越做越危险
🎯 所以 Agent 不是单点功能,是一套系统。 这就是为什么后面要花整整 4 篇讲上下文、AGENTS.md、审批沙箱 —— 它们都是这套系统的一部分。
🆚 Codex 不是聊天机器人,差别在哪
新手最大的误解:把 Codex 当成"会写代码的 ChatGPT"。这个误解会直接毁掉你怎么提需求。
| 维度 | 💬 聊天机器人 | 🤖 Agent(Codex) |
|---|---|---|
| 核心动作 | 回答一个问题 | 推进一个任务 |
| 上下文来源 | 主要来自对话 | 对话 + 文件 + 工具 + 规则 + 运行结果 |
| 工具 | 可有可无 | 核心组成 |
| 结果形态 | 一段文字回答 | 可审查的任务产物(diff / 测试结果) |
| 风险类型 | 答错 | 做错(真的会动手) |
| 需要的边界 | 事实核对 | 权限、沙箱、审批、验证 |
一句话总结这张表:
⚠️ 因为 Agent 真的会动手,它的错误从"答错"变成了"做错" —— 答错可以再问,做错可能改坏代码。 所以你不能用对聊天机器人的要求来对它。Agent 需要更明确的任务边界。
🛠️ Agent 又和自动化脚本有什么不同
自动化脚本也能执行任务:跑测试、格式化代码、部署网站。它和 Agent 区别在哪?
| 📜 脚本 | 🤖 Agent |
|---|---|
✅ 适合:规则明确、步骤稳定 | ✅ 适合:目标明确、路径需要判断 |
举一个具体对比:
- 「运行
pnpm test」 → 用脚本就够了。每次步骤都一样,没什么可判断的。 - 「测试失败后判断原因,定位文件,提出最小修复方案」 → 更适合 Agent。每次原因都不同,需要边读边判断。
🎯 Codex 的价值就在这里:编程任务经常不是固定步骤,而是需要判断和反馈。 一旦任务里出现「先看看…再决定…」、「如果…就…否则…」,脚本就处理不了了,Agent 才登场。
👨💻 Coding Agent = AI 进入工程现场
普通 Agent 处理的是文字任务(写邮件、做摘要、查信息)。Coding Agent 处理的是 工程现场。
mindmap
root((工程现场))
代码层
代码文件
Git diff
团队规则
依赖层
package.json
lockfile
工具链
构建脚本
测试
Lint / 类型检查
运行层
运行日志
浏览器页面
报错信息
工程现场里的每一项都是约束。Coding Agent 要做的不是"凭空写代码",而是 在这些约束里完成任务:
| 角色 | 回答的问题 |
|---|---|
| 💬 代码片段生成器 | "怎么写"(脱离项目,给标准答案) |
| 👨💻 Coding Agent | "在这个项目里应该怎么改,改完怎么证明是对的" |
这两个问题完全不同。前者是教科书题目,后者是工程任务。
所以 Codex 一句话定义:
🎯 Codex 是一个面向编程任务的 AI Coding Agent。 它能读项目、改文件、调用工具、运行验证,并把结果交给你审查。
💡 Codex 的"现场感"
一个真正的工程任务一定发生在现场里。现场包括:
- 📁 代码库现在的结构
- 🛠️ 已经采用的技术栈
- ✍️ 团队约定的写法
- 🌿 当前分支上已有的改动
- ▶️ 测试和构建命令
- 🐛 真实错误信息
- 🚦 你允许它做和不允许它做的事
Codex 的价值,就在于它可以进入这个现场,而不是只在脑海里想象一个项目。
这也是为什么你第一次使用 Codex 时,不应该马上让它写新功能。更好的第一步是让它先建立现场感:
请先阅读当前项目,不要修改文件。这句话看似保守,其实非常重要。它让 Codex 把项目"装进脑子"再开始动手。
📖 一个例子讲透:同一个需求,三种问法
需求:我想给网站加一个订阅表单。
你用什么方式问 Codex,决定了它给你什么。看完这三种问法的对比,你就理解了 Codex 提示词为什么要这么写。
❌ 问法 A · 当聊天工具用
怎么写一个订阅表单?Codex 给的:一段标准 React 代码,包含输入框、按钮和提交函数。代码本身没问题。
问题在哪:
- ❌ 不知道你项目用什么框架
- ❌ 不知道有没有现成 Button 组件
- ❌ 不知道 API 是
/api/subscribe还是 Mailchimp - ❌ 不知道错误提示的视觉风格
- ❌ 不知道是否需要移动端适配
➡️ 你拿到的是 代码片段,不是项目交付。复制进项目大概率要返工。
⚠️ 问法 B · 当代码助手用
请在当前项目里加一个订阅表单。Codex 给的:会读项目、找页面、改文件,比 A 好很多。
问题在哪:
- ⚠️ 没限定范围,它可能顺手新建组件、加样式、写 API、接第三方服务
- ⚠️ 甚至改全局布局
- ⚠️ 你最后审查 diff 时会发现"它改的远比我想要的多"
➡️ 进入项目现场了,但任务边界不清。
✅ 问法 C · 当 Coding Agent 用
请在首页底部添加一个邮件订阅表单。
🎯 目标:
- 使用项目已有输入框和按钮组件
- 表单包含 email 输入框、提交按钮、成功提示和错误提示
- 只调用现有 /api/newsletter,不新增外部服务
🚧 边界:
- 只改首页和必要的局部组件
- 不新增依赖
- 不改全局样式和现有 API 结构
✅ 验证:
- 桌面和移动端布局正常
- 空邮箱和非法邮箱有提示
- 提交成功和失败都有反馈
- 运行相关测试或说明人工验收步骤
请先给计划,等我确认后再修改。Codex 给的:先出计划 → 你确认 → 它修改 → 它跑测试 → 它汇报。
➡️ 这才是 Codex 最适合的工作方式:在明确目标、边界、验证下完成任务。
💡 这三种问法的递进关系,就是你和 Codex 合作能力的成长曲线。 看懂这个例子,你就理解了为什么 Codex 提示词不该只有"做什么",还要有"怎么算做完"。
⚖️ Codex 适合 / 不适合直接做什么
| ✅ 适合直接交给 Codex | ❌ 不适合直接交给 Codex |
|---|---|
三个特点
典型任务
| 风险特征
典型任务
|
💡 不是 Codex 做不了,而是新手阶段风险太高。从适合的开始练手,再逐步放权。 等你能稳定写出"问法 C"那种提示词,再去碰右边的任务也不迟。
🎓 新手最该养成的三个习惯
任何任务,把这三句话连起来用,就能避开 80% 的踩坑场景。这三步是 Codex 的"安全带"。
1️⃣ 让 Codex 先 复述 任务
请先复述你对任务的理解,不要修改文件。➡️ 作用:提前发现误解。
你心里想的"修一下登录" 和它理解的"重写整个登录系统" 经常是两回事。在改之前先对齐,比改完才发现错的方向便宜得多。
2️⃣ 让 Codex 先 列边界
请说明你准备修改哪些文件,哪些文件不会碰。➡️ 作用:把改动范围圈出来。
这一步会让 Codex 主动暴露它的"想象边界"。你看到清单后能立刻发现"诶,它怎么打算改这个文件?",趁早叫停。
3️⃣ 让 Codex 最后 交验证
请列出你运行过的验证命令、结果,和仍需人工检查的地方。➡️ 作用:避免"看起来完成"。
没有验证的"完成了" 不是完成。验证才是交付的证据,而且 Codex 会在汇报时主动说出哪些自己没把握——这恰好是你该重点检查的地方。
🎯 三句话的核心思路:把不可见的判断(它在想什么)变成可见的产物(复述/边界/验证清单)。让 Agent 工作变成可审查的协作。
🚫 常见误解 → ✅ 正确理解
| ❌ 误解 | ✅ 正解 |
|---|---|
| Codex 是聊天机器人 | Codex 是能进入代码现场的 Coding Agent |
| Codex 会自动知道我想要什么 | 它只能根据上下文和你的指令推断 |
| Codex 改完代码就算完成 | 运行验证、审查 diff、确认边界才算完成 |
| Codex 越自由越好 | 新手阶段先限制范围,再逐步放权 |
| 越聪明就能搞定模糊需求 | 模糊需求要先拆清,再交给 Codex |
| 会说话就能用好 Codex | 会交代任务才能用好 Codex |
🤝 类比:把 Codex 想成新加入项目的高级同事。 能力很强,但第一次接手任务,仍然需要你交代项目背景、任务目标、不能碰的地方、和怎么验收。 一个好的 Codex 提示词,本质上就是一次清晰的工作交接。
🔍 想再深一层(点击展开)
🧠 Codex 的三层能力叠加(理解 + 行动 + 反馈)
Codex 不是单一能力,是三层能力的叠加:
| 层 | 能力 | 缺它会怎样 |
|---|---|---|
| 🧠 理解层 | 读自然语言需求、代码、配置、文档、报错和测试输出 | 像盲目执行脚本 |
| 🛠️ 行动层 | 编辑文件、运行命令、调用工具、打开浏览器或外部能力 | 只是问答工具 |
| 🔄 反馈层 | 根据测试失败、构建失败、控制台报错、你的审查继续调整 | 改完一次就停,不进入工程闭环 |
少一层都不行:
- 只有理解没有行动 → 它只是问答工具
- 只有行动没有理解 → 像盲目执行脚本
- 只有行动没有反馈 → 改完一次就停
💡 更完整的定义:Codex 是一个能围绕编程目标建立上下文、执行动作、接收反馈并交付结果的 AI Coding Agent。 这句话里最重要的词不是 AI,也不是 coding,是 agent。Agent 的关键是它能围绕目标行动。
🕰️ 为什么需要 Coding Agent(设计来龙去脉)
在 Codex 之前,开发者用 AI 写代码的流程通常是:
我描述需求
↓
AI 生成代码片段
↓
我复制到项目里
↓
我运行测试
↓
报错后我再把错误贴回去
↓
AI 继续给建议这个流程有用,但有两个明显的断裂:
- ❌ 上下文断裂:AI 不在你的项目里,不知道真实目录、已有工具、测试方式、团队规则。你必须不断把上下文搬给它。
- ❌ 验证断裂:AI 写完代码后,真正证明代码能跑的人还是你。它没有进入"运行测试 → 看错误 → 再修"的闭环。
Codex 要解决的正是这两个断裂:
✅ 把 AI 放进项目现场
✅ 让 AI 参与验证闭环这就是它和"普通代码生成"的根本区别。
📈 你和 Codex 的合作关系,分三个阶段
flowchart LR
A["1️⃣ 问答型<br/>问概念、生成片段"]
B["2️⃣ 辅助型<br/>读项目、解释代码、提计划"]
C["3️⃣ 交付型<br/>给目标、边界、验收<br/>它完成修改并报告"]
A --> B --> C
style A fill:#fef3c7,stroke:#f59e0b
style B fill:#dbeafe,stroke:#3b82f6
style C fill:#dcfce7,stroke:#22c55e第一阶段:问答型 你问 "这个 React hook 是什么?",Codex 回答概念。这有用,但只是最浅层。
第二阶段:辅助型 你说 "请阅读这个组件,解释它的状态流转,不要修改文件。" Codex 开始结合真实代码解释。你在利用它的项目理解能力。
第三阶段:交付型 你说 "请修复这个组件的空状态显示问题。只改这个组件和对应测试。改完跑测试,并说明人工验收步骤。" 这时 Codex 不只是回答,而是在完成工程交付。
⚠️ 不要跳过第二阶段。 很多新手昨天还在问 "React state 是什么",今天就让 Codex 重构整套权限系统。这不是学习,是赌博。 学习 Codex 的过程,就是从问答型 → 辅助型 → 交付型,一步一步来。
⚖️ 用 Codex,你仍然要承担什么责任
Codex 大幅降低执行成本,但 不能替你承担责任。你仍然要:
- ✍️ 定义真实需求
- 🎯 判断业务取舍
- 🛡️ 设置安全边界
- 👀 审查最终 diff
- ✔️ 确认验证是否覆盖目标
- 🚀 决定是否合并、发布或交付
它不会自动知道:
- 你的商业目标
- 线上用户最痛的点
- 团队内部没写下来的历史债务
- 当前环境的合规要求
它也不会因为回答很流畅,就一定事实正确。
💡 一条最实用的判断: 凡是你自己都说不清验收标准的任务,不要直接交给 Codex 执行。 你可以先让它帮你澄清任务,但不要让它直接动手。
🎓 老师式讲解:把 Codex 当成新同事
假设你请来一个能力很强的新同事。第一天你会怎么让他工作?
你不会说:
这个仓库交给你了,优化一下。你会先介绍:
- 这个项目是做什么的
- 哪些模块最重要
- 哪些地方历史包袱重
- 本地怎么跑
- 测试怎么跑
- 哪些文件不能碰
- 这次任务具体要解决什么
Codex 也是一样。它很强,但强不等于可以省略交接。
一个好的提示词,本质上就是一次清晰的工作交接。
更完整的入门提示词:
我第一次在这个项目里使用 Codex。请先不要修改文件。
请你像一位新加入项目的工程师一样做入场了解:
1. 阅读项目说明、依赖配置和主要目录
2. 判断这个项目的技术栈和运行方式
3. 找出最适合新手阅读的 5 个文件
4. 说明哪些任务适合交给你
5. 说明哪些任务不建议直接交给你
6. 给我 3 个适合下一步开始的小任务
要求:
- 不修改文件
- 不安装依赖
- 不执行有副作用的命令
- 不确定的信息明确说"不确定"这段提示词的目的不是让 Codex 做功能,而是先建立合作关系。
📝 本章自检
读完这一章,看你能不能回答下面三道题。如果有任何一道答不出来,回到对应章节再读一遍。
| # | 问题 | 对应章节 | 自检 |
|---|---|---|---|
| 1 | Codex 和 ChatGPT 最核心的差别是什么? | 🆚 Codex 不是聊天机器人 | ☐ |
| 2 | Coding Agent 至少需要哪三层能力? | 🔍 三层能力叠加(折叠块) | ☐ |
| 3 | "请在首页底部加订阅表单" 是哪种问法?怎么改进? | 📖 三种问法 | ☐ |
✅ 过关标准:能用一句话说清 —— "Codex 不是聊天窗口,而是能进入代码现场完成任务的 Coding Agent。"
只要这个理解建立起来,后面的 AGENTS.md、审批、沙箱、MCP、Skills、Subagents、Hooks 都会变得更容易理解。它们不是一堆孤立名词,而是围绕同一个核心问题展开:
🎯 如何让一个 AI Agent 在真实工程现场里安全、稳定、可验证地完成任务?
📚 下一篇
- ➡️ 02 · 一次任务是怎么完成的 —— Codex 从目标到交付的完整过程
- 📖 00 新手必读 —— 快速上手与术语
- 🚪 01 产品入口 —— App、IDE、CLI、Cloud 各自怎么用
🧭 一句话记住
Codex 是一个能进入项目现场,
在你设定的目标、边界、验证里推进任务的工程协作 Agent。