Codex 从入门到进阶:安装、工作空间、权限、Git、AGENTS.md、Skills 与 MCP 完整教程
本文主要记录 OpenAI Codex 的学习和实际使用过程,从 Windows 环境搭建开始,逐步介绍 Codex 的工作空间、权限管理、上下文、计划模式、Git、AGENTS.md、Skills 和 MCP。
如果你之前只是把 AI 当成"聊天机器人"来写代码,那么使用 Codex 后最大的变化是:AI 不只是告诉你代码怎么写,而是能够真正进入项目、读取文件、修改代码、执行命令、运行测试,并完成一整个开发任务。
一、Codex 前置准备:安装开发环境
在正式使用 Codex 之前,建议先准备几个基本开发工具:
| 软件 | 作用 | 是否必须 |
|---|---|---|
| Git | 版本控制、查看代码修改、回滚代码 | 强烈建议 |
| Node.js | JavaScript / TypeScript 项目以及部分 MCP 工具 | 按项目需要 |
| VS Code | 手动查看和编辑代码 | 推荐 |
| Codex / ChatGPT Desktop | AI Agent 主程序 | 必需 |
| Python | Python 项目和部分自动化工具 | 按项目需要 |
| GitHub CLI | GitHub PR、仓库操作 | 可选 |
需要特别说明的是:
Node.js 并不是运行 Codex 桌面应用的绝对前提。
如果你主要写 Python、Java 或 C++,完全可以不用 Node.js。
但很多前端项目、npm 工具以及 MCP Server 都依赖 Node.js,所以对于刚开始使用 Codex 的人,我还是建议安装。
1.1 安装 Git

Git 下载地址:
text
https://git-scm.com/?hl=zh-cn
Git 是整个 AI Coding 工作流里非常重要的工具。
因为 Codex 会直接修改我们的项目代码,如果没有 Git,一旦 AI 改错了几十个文件,就很难知道:
text
AI 到底改了什么?
哪些文件被改了?
某一段代码原来是什么?
怎么恢复到修改之前?
而 Git 正好解决这个问题。
因此可以把它简单理解为:
text
Codex = 帮你改代码的人
Git = 帮你记录每一次代码变化的人
下载安装程序后:

点击:
text
Click here to download
即可下载安装包。

对于新手来说,Git 安装过程中的绝大多数选项保持默认即可。


安装完成后按:
text
Win + R
输入:
text
cmd
然后运行:
bash
git --version
如果出现类似:
text
git version 2.xx.x.windows.x
就说明 Git 安装成功。
第一次使用 Git,还可以设置用户名和邮箱:
bash
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
查看当前配置:
bash
git config --global --list
1.2 安装 Node.js
Node.js 下载地址:
text
https://nodejs.org/zh-cn
建议新手直接选择 LTS 长期支持版本。
安装完成以后,同样打开 CMD:
bash
node -v

如果出现:
text
v22.x.x
或者其他版本号,就说明 Node.js 已经安装成功。
注意:
text
node -v
其中 node 和 -v 之间有一个空格。
同时建议检查 npm:
bash
npm -v
npm 是 Node.js 的包管理工具。
以后我们安装一些开发工具时,经常会看到:
bash
npm install
或者:
bash
npm install -g xxx
它们本质上都是在通过 npm 安装软件包。
1.3 安装 VS Code
VS Code 下载地址:
text
https://code.visualstudio.com/

Codex 可以直接帮我们修改代码,但在开发过程中,我们仍然经常需要:
text
自己查看代码
搜索变量
查看项目目录
下断点
手动修改少量代码
安装扩展
因此还是建议安装 VS Code。
VS Code 中文化
打开 VS Code 左侧的 Extensions。
搜索:
text
Chinese
安装:
text
Chinese (Simplified) Language Pack for Visual Studio Code

安装完成后重新启动 VS Code 即可。
1.4 安装 Codex
Codex 官方入口:
text
https://openai.com/zh-Hans-CN/codex/


目前 Windows 用户可以通过 Microsoft Store 等方式安装桌面客户端。
如果电脑无法正常使用 Microsoft Store,也可以考虑使用 Codex CLI。
首先确保 Node.js 已经安装,然后执行:
bash
npm install -g @openai/codex
安装完成后运行:
bash
codex
即可启动 Codex CLI。
Codex CLI 同样可以:
- 读取代码
- 修改文件
- 执行命令
- 查看 Git Diff
- 运行测试
- 完成代码 Review
因此即使不能正常使用桌面版,也仍然可以通过 CLI 使用 Codex。
二、Codex 的核心功能模块
在正式操作之前,先理解 Codex 和普通聊天 AI 最大的区别。
普通 ChatGPT 的典型过程是:
text
你提出问题
↓
AI 回答
↓
你复制代码
↓
自己修改项目
Codex 则更像:
#mermaid-svg-dwI5iMTyUxTOwPT4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-dwI5iMTyUxTOwPT4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-dwI5iMTyUxTOwPT4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-dwI5iMTyUxTOwPT4 .error-icon{fill:#552222;}#mermaid-svg-dwI5iMTyUxTOwPT4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-dwI5iMTyUxTOwPT4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-dwI5iMTyUxTOwPT4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-dwI5iMTyUxTOwPT4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-dwI5iMTyUxTOwPT4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-dwI5iMTyUxTOwPT4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-dwI5iMTyUxTOwPT4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-dwI5iMTyUxTOwPT4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-dwI5iMTyUxTOwPT4 .marker.cross{stroke:#333333;}#mermaid-svg-dwI5iMTyUxTOwPT4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-dwI5iMTyUxTOwPT4 p{margin:0;}#mermaid-svg-dwI5iMTyUxTOwPT4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-dwI5iMTyUxTOwPT4 .cluster-label text{fill:#333;}#mermaid-svg-dwI5iMTyUxTOwPT4 .cluster-label span{color:#333;}#mermaid-svg-dwI5iMTyUxTOwPT4 .cluster-label span p{background-color:transparent;}#mermaid-svg-dwI5iMTyUxTOwPT4 .label text,#mermaid-svg-dwI5iMTyUxTOwPT4 span{fill:#333;color:#333;}#mermaid-svg-dwI5iMTyUxTOwPT4 .node rect,#mermaid-svg-dwI5iMTyUxTOwPT4 .node circle,#mermaid-svg-dwI5iMTyUxTOwPT4 .node ellipse,#mermaid-svg-dwI5iMTyUxTOwPT4 .node polygon,#mermaid-svg-dwI5iMTyUxTOwPT4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-dwI5iMTyUxTOwPT4 .rough-node .label text,#mermaid-svg-dwI5iMTyUxTOwPT4 .node .label text,#mermaid-svg-dwI5iMTyUxTOwPT4 .image-shape .label,#mermaid-svg-dwI5iMTyUxTOwPT4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-dwI5iMTyUxTOwPT4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-dwI5iMTyUxTOwPT4 .rough-node .label,#mermaid-svg-dwI5iMTyUxTOwPT4 .node .label,#mermaid-svg-dwI5iMTyUxTOwPT4 .image-shape .label,#mermaid-svg-dwI5iMTyUxTOwPT4 .icon-shape .label{text-align:center;}#mermaid-svg-dwI5iMTyUxTOwPT4 .node.clickable{cursor:pointer;}#mermaid-svg-dwI5iMTyUxTOwPT4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-dwI5iMTyUxTOwPT4 .arrowheadPath{fill:#333333;}#mermaid-svg-dwI5iMTyUxTOwPT4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-dwI5iMTyUxTOwPT4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-dwI5iMTyUxTOwPT4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-dwI5iMTyUxTOwPT4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-dwI5iMTyUxTOwPT4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-dwI5iMTyUxTOwPT4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-dwI5iMTyUxTOwPT4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-dwI5iMTyUxTOwPT4 .cluster text{fill:#333;}#mermaid-svg-dwI5iMTyUxTOwPT4 .cluster span{color:#333;}#mermaid-svg-dwI5iMTyUxTOwPT4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-dwI5iMTyUxTOwPT4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-dwI5iMTyUxTOwPT4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-dwI5iMTyUxTOwPT4 .icon-shape,#mermaid-svg-dwI5iMTyUxTOwPT4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-dwI5iMTyUxTOwPT4 .icon-shape p,#mermaid-svg-dwI5iMTyUxTOwPT4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-dwI5iMTyUxTOwPT4 .icon-shape .label rect,#mermaid-svg-dwI5iMTyUxTOwPT4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-dwI5iMTyUxTOwPT4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-dwI5iMTyUxTOwPT4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-dwI5iMTyUxTOwPT4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 提出任务
Codex 读取项目
分析代码
修改文件
执行命令
运行测试
检查结果
向用户汇报
所以 Codex 更准确的定位是:
能够操作真实开发环境的 Coding Agent。
2.1 创建工作空间
Codex 的一个重要概念就是:
text
Project / Workspace
也就是让 Codex 知道:
你现在到底在操作哪个项目?
你可以创建一个本地文件夹作为项目,也可以直接将已有项目拖入 Codex。

例如:
text
D:\Projects\my-blog
项目目录结构可能是:
text
my-blog/
├── src/
├── public/
├── package.json
├── README.md
└── AGENTS.md
当这个目录成为 Codex 的工作空间以后,Codex 就可以读取这些文件,并在允许的权限范围内进行修改。
目前 Codex 的任务环境可以简单理解为:
text
Local
Worktree
Cloud
其中:
text
Local
直接修改当前项目。
Worktree
建立一个隔离的 Git 工作树,在不直接影响当前代码的情况下完成任务。
Cloud
在远程环境执行任务。
2.2 不使用项目
如果任务比较简单,例如:
text
解释一段代码
生成一个正则表达式
写一个 Python 小脚本
其实没有必要绑定整个项目。
此时可以直接创建普通对话。

一个简单的使用原则是:
text
一次性问题
→ 新建普通对话
需要持续修改代码
→ 创建项目
复杂项目并行开发
→ Project + Worktree
2.3 多任务并行
Codex 比较有意思的一点是:
可以同时开启多个任务。
例如一个网站项目,可以同时运行:
text
任务 1:修改首页
任务 2:修复登录 Bug
任务 3:补单元测试
任务 4:检查代码质量
而不是:
text
等任务 1 完成
→ 再执行任务 2
→ 再执行任务 3
对于复杂项目,这种并行工作方式非常有用。
尤其是配合 Git Worktree,可以让不同任务在相互隔离的代码环境中执行,从而减少代码冲突。
2.4 对话归档
随着使用时间增加,对话会越来越多。
对于已经完成、不需要经常查看的任务,可以进行归档。

归档以后:
text
当前对话列表
↓
对话消失
↓
Archived Chats
但归档并不等于删除。
之后仍然可以进入:
text
Archived Chats
恢复对应的对话。
三、Codex 最重要的功能之一:权限管理
很多第一次使用 Coding Agent 的人容易忽略一个问题:
AI 到底能操作我电脑上的哪些东西?
Codex 不只是生成文本。
它还可能执行:
bash
npm install
git add .
python main.py
甚至可能涉及:
text
读取文件
修改文件
删除文件
联网下载依赖
执行脚本
修改项目配置
因此权限系统非常重要。

Codex 的权限控制核心建立在:
text
Sandbox
也就是 沙箱。
可以简单理解成:
#mermaid-svg-k0LhupYSlncnI260{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-k0LhupYSlncnI260 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-k0LhupYSlncnI260 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-k0LhupYSlncnI260 .error-icon{fill:#552222;}#mermaid-svg-k0LhupYSlncnI260 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-k0LhupYSlncnI260 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-k0LhupYSlncnI260 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-k0LhupYSlncnI260 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-k0LhupYSlncnI260 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-k0LhupYSlncnI260 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-k0LhupYSlncnI260 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-k0LhupYSlncnI260 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-k0LhupYSlncnI260 .marker.cross{stroke:#333333;}#mermaid-svg-k0LhupYSlncnI260 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-k0LhupYSlncnI260 p{margin:0;}#mermaid-svg-k0LhupYSlncnI260 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-k0LhupYSlncnI260 .cluster-label text{fill:#333;}#mermaid-svg-k0LhupYSlncnI260 .cluster-label span{color:#333;}#mermaid-svg-k0LhupYSlncnI260 .cluster-label span p{background-color:transparent;}#mermaid-svg-k0LhupYSlncnI260 .label text,#mermaid-svg-k0LhupYSlncnI260 span{fill:#333;color:#333;}#mermaid-svg-k0LhupYSlncnI260 .node rect,#mermaid-svg-k0LhupYSlncnI260 .node circle,#mermaid-svg-k0LhupYSlncnI260 .node ellipse,#mermaid-svg-k0LhupYSlncnI260 .node polygon,#mermaid-svg-k0LhupYSlncnI260 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-k0LhupYSlncnI260 .rough-node .label text,#mermaid-svg-k0LhupYSlncnI260 .node .label text,#mermaid-svg-k0LhupYSlncnI260 .image-shape .label,#mermaid-svg-k0LhupYSlncnI260 .icon-shape .label{text-anchor:middle;}#mermaid-svg-k0LhupYSlncnI260 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-k0LhupYSlncnI260 .rough-node .label,#mermaid-svg-k0LhupYSlncnI260 .node .label,#mermaid-svg-k0LhupYSlncnI260 .image-shape .label,#mermaid-svg-k0LhupYSlncnI260 .icon-shape .label{text-align:center;}#mermaid-svg-k0LhupYSlncnI260 .node.clickable{cursor:pointer;}#mermaid-svg-k0LhupYSlncnI260 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-k0LhupYSlncnI260 .arrowheadPath{fill:#333333;}#mermaid-svg-k0LhupYSlncnI260 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-k0LhupYSlncnI260 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-k0LhupYSlncnI260 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-k0LhupYSlncnI260 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-k0LhupYSlncnI260 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-k0LhupYSlncnI260 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-k0LhupYSlncnI260 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-k0LhupYSlncnI260 .cluster text{fill:#333;}#mermaid-svg-k0LhupYSlncnI260 .cluster span{color:#333;}#mermaid-svg-k0LhupYSlncnI260 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-k0LhupYSlncnI260 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-k0LhupYSlncnI260 rect.text{fill:none;stroke-width:0;}#mermaid-svg-k0LhupYSlncnI260 .icon-shape,#mermaid-svg-k0LhupYSlncnI260 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-k0LhupYSlncnI260 .icon-shape p,#mermaid-svg-k0LhupYSlncnI260 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-k0LhupYSlncnI260 .icon-shape .label rect,#mermaid-svg-k0LhupYSlncnI260 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-k0LhupYSlncnI260 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-k0LhupYSlncnI260 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-k0LhupYSlncnI260 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 需要批准
需要批准
默认受限制
你的电脑
Codex Sandbox
项目文件夹
允许执行的命令
项目外文件
网络访问
系统其他区域
3.1 默认权限
默认模式可以简单理解为:
text
Codex 可以在当前项目范围内完成大部分开发工作。
如果需要突破当前权限边界,则向用户请求授权。
例如:
text
修改 src/app.js
→ 通常允许
运行 npm test
→ 通常允许
修改项目之外的重要文件
→ 请求授权
进行部分网络操作
→ 可能请求授权
默认模式比较适合日常开发。
因为它在:
text
开发效率
和:
text
安全性
之间进行了平衡。
3.2 自动审查
如果 Agent 经常需要额外权限,每一次都弹出:
text
是否允许?
是否允许?
是否允许?
使用体验会比较差。
因此 Codex 提供了类似自动审查的权限机制。
它并不是:
直接把所有权限都给 AI。
更接近于:
#mermaid-svg-4Qcm86YKPOIUE7YE{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-4Qcm86YKPOIUE7YE .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-4Qcm86YKPOIUE7YE .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-4Qcm86YKPOIUE7YE .error-icon{fill:#552222;}#mermaid-svg-4Qcm86YKPOIUE7YE .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-4Qcm86YKPOIUE7YE .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-4Qcm86YKPOIUE7YE .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-4Qcm86YKPOIUE7YE .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-4Qcm86YKPOIUE7YE .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-4Qcm86YKPOIUE7YE .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-4Qcm86YKPOIUE7YE .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-4Qcm86YKPOIUE7YE .marker{fill:#333333;stroke:#333333;}#mermaid-svg-4Qcm86YKPOIUE7YE .marker.cross{stroke:#333333;}#mermaid-svg-4Qcm86YKPOIUE7YE svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-4Qcm86YKPOIUE7YE p{margin:0;}#mermaid-svg-4Qcm86YKPOIUE7YE .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-4Qcm86YKPOIUE7YE .cluster-label text{fill:#333;}#mermaid-svg-4Qcm86YKPOIUE7YE .cluster-label span{color:#333;}#mermaid-svg-4Qcm86YKPOIUE7YE .cluster-label span p{background-color:transparent;}#mermaid-svg-4Qcm86YKPOIUE7YE .label text,#mermaid-svg-4Qcm86YKPOIUE7YE span{fill:#333;color:#333;}#mermaid-svg-4Qcm86YKPOIUE7YE .node rect,#mermaid-svg-4Qcm86YKPOIUE7YE .node circle,#mermaid-svg-4Qcm86YKPOIUE7YE .node ellipse,#mermaid-svg-4Qcm86YKPOIUE7YE .node polygon,#mermaid-svg-4Qcm86YKPOIUE7YE .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-4Qcm86YKPOIUE7YE .rough-node .label text,#mermaid-svg-4Qcm86YKPOIUE7YE .node .label text,#mermaid-svg-4Qcm86YKPOIUE7YE .image-shape .label,#mermaid-svg-4Qcm86YKPOIUE7YE .icon-shape .label{text-anchor:middle;}#mermaid-svg-4Qcm86YKPOIUE7YE .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-4Qcm86YKPOIUE7YE .rough-node .label,#mermaid-svg-4Qcm86YKPOIUE7YE .node .label,#mermaid-svg-4Qcm86YKPOIUE7YE .image-shape .label,#mermaid-svg-4Qcm86YKPOIUE7YE .icon-shape .label{text-align:center;}#mermaid-svg-4Qcm86YKPOIUE7YE .node.clickable{cursor:pointer;}#mermaid-svg-4Qcm86YKPOIUE7YE .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-4Qcm86YKPOIUE7YE .arrowheadPath{fill:#333333;}#mermaid-svg-4Qcm86YKPOIUE7YE .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-4Qcm86YKPOIUE7YE .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-4Qcm86YKPOIUE7YE .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-4Qcm86YKPOIUE7YE .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-4Qcm86YKPOIUE7YE .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-4Qcm86YKPOIUE7YE .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-4Qcm86YKPOIUE7YE .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-4Qcm86YKPOIUE7YE .cluster text{fill:#333;}#mermaid-svg-4Qcm86YKPOIUE7YE .cluster span{color:#333;}#mermaid-svg-4Qcm86YKPOIUE7YE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-4Qcm86YKPOIUE7YE .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-4Qcm86YKPOIUE7YE rect.text{fill:none;stroke-width:0;}#mermaid-svg-4Qcm86YKPOIUE7YE .icon-shape,#mermaid-svg-4Qcm86YKPOIUE7YE .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-4Qcm86YKPOIUE7YE .icon-shape p,#mermaid-svg-4Qcm86YKPOIUE7YE .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-4Qcm86YKPOIUE7YE .icon-shape .label rect,#mermaid-svg-4Qcm86YKPOIUE7YE .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-4Qcm86YKPOIUE7YE .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-4Qcm86YKPOIUE7YE .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-4Qcm86YKPOIUE7YE :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 低风险
风险较高
Codex 需要额外权限
发起权限申请
自动安全审查
允许执行
要求人工确认
这里要注意:
自动审查并不等于完全访问。
它只是减少部分低风险操作的人工审批步骤。
3.3 完全访问权限
还有一种权限等级:
text
Full Access
也就是完全访问。

这种模式需要谨慎使用。
因为 Agent 一旦拥有比较高的系统权限,理论上可能执行:
text
删除文件
修改系统配置
安装软件
覆盖目录
执行脚本
访问更多系统资源
所以个人建议:
日常开发优先使用默认权限,需要特定能力时再单独授权,不建议长期保持 Full Access。
四、上下文压缩:为什么聊久了 AI 会"忘事"?
4.1 什么是上下文?
AI 模型并不是拥有无限记忆。
一次会话中的:
text
你的问题
AI 的回答
项目代码
Terminal 输出
文件内容
工具执行结果
历史操作
都会消耗模型的 Context Window,也就是上下文窗口。
可以简单理解成:
text
┌───────────────────────────┐
│ 模型上下文窗口 │
├───────────────────────────┤
│ 项目说明 │
│ 用户问题 │
│ AI 回复 │
│ 源代码 │
│ Terminal 输出 │
│ 历史操作 │
│ ...... │
└───────────────────────────┘
随着对话越来越长,上下文空间会逐渐被占满。
4.2 自动压缩
Codex 可以自动进行 Context Compaction,也就是上下文压缩。
其基本逻辑可以理解为:
text
大量历史信息
↓
提取重要内容
↓
生成压缩后的上下文
↓
继续执行任务

压缩并不是简单地:
text
删除全部历史
而是尽量保留:
text
项目目标
关键决策
当前进度
重要限制
后续任务
4.3 手动压缩
也可以主动执行:
text
/compact

但这里需要注意:
并不能简单认为:
清空一定优于压缩。
更合理的策略是:
text
任务目标没变,只是聊天太长
→ /compact
已经换成一个完全不同的任务
→ New Chat
AI 已经明显被错误历史带偏
→ New Chat
需要保留项目长期规则
→ 写入 AGENTS.md
因此可以总结成一句话:
短期信息放 Context,长期规则放 AGENTS.md。
五、Steer:在 Agent 工作时纠正它
Codex 有一个非常实用的能力:
text
Steer
可以理解为:
AI 还没有完成任务时,你可以继续对它进行控制和引导。

例如你让 Codex:
text
重新设计这个登录页面。
它正在工作时,你发现:
text
它准备把整个 UI 组件库都换掉。
这显然不是我们的本意。
这时就应该及时进行 Steer:
text
停止替换 UI 组件库。
只修改当前 Login 页面。
保持现有技术栈和组件不变。
而不是让它:
text
继续运行
→ 修改几十个文件
→ 最后才发现方向错了
所以 AI Agent 的正确工作方式不是:
text
Prompt
↓
等待
↓
接受结果
而应该是:
#mermaid-svg-x3IpQzRs7DMe9br8{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-x3IpQzRs7DMe9br8 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-x3IpQzRs7DMe9br8 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-x3IpQzRs7DMe9br8 .error-icon{fill:#552222;}#mermaid-svg-x3IpQzRs7DMe9br8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-x3IpQzRs7DMe9br8 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-x3IpQzRs7DMe9br8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-x3IpQzRs7DMe9br8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-x3IpQzRs7DMe9br8 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-x3IpQzRs7DMe9br8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-x3IpQzRs7DMe9br8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-x3IpQzRs7DMe9br8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-x3IpQzRs7DMe9br8 .marker.cross{stroke:#333333;}#mermaid-svg-x3IpQzRs7DMe9br8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-x3IpQzRs7DMe9br8 p{margin:0;}#mermaid-svg-x3IpQzRs7DMe9br8 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-x3IpQzRs7DMe9br8 .cluster-label text{fill:#333;}#mermaid-svg-x3IpQzRs7DMe9br8 .cluster-label span{color:#333;}#mermaid-svg-x3IpQzRs7DMe9br8 .cluster-label span p{background-color:transparent;}#mermaid-svg-x3IpQzRs7DMe9br8 .label text,#mermaid-svg-x3IpQzRs7DMe9br8 span{fill:#333;color:#333;}#mermaid-svg-x3IpQzRs7DMe9br8 .node rect,#mermaid-svg-x3IpQzRs7DMe9br8 .node circle,#mermaid-svg-x3IpQzRs7DMe9br8 .node ellipse,#mermaid-svg-x3IpQzRs7DMe9br8 .node polygon,#mermaid-svg-x3IpQzRs7DMe9br8 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-x3IpQzRs7DMe9br8 .rough-node .label text,#mermaid-svg-x3IpQzRs7DMe9br8 .node .label text,#mermaid-svg-x3IpQzRs7DMe9br8 .image-shape .label,#mermaid-svg-x3IpQzRs7DMe9br8 .icon-shape .label{text-anchor:middle;}#mermaid-svg-x3IpQzRs7DMe9br8 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-x3IpQzRs7DMe9br8 .rough-node .label,#mermaid-svg-x3IpQzRs7DMe9br8 .node .label,#mermaid-svg-x3IpQzRs7DMe9br8 .image-shape .label,#mermaid-svg-x3IpQzRs7DMe9br8 .icon-shape .label{text-align:center;}#mermaid-svg-x3IpQzRs7DMe9br8 .node.clickable{cursor:pointer;}#mermaid-svg-x3IpQzRs7DMe9br8 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-x3IpQzRs7DMe9br8 .arrowheadPath{fill:#333333;}#mermaid-svg-x3IpQzRs7DMe9br8 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-x3IpQzRs7DMe9br8 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-x3IpQzRs7DMe9br8 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-x3IpQzRs7DMe9br8 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-x3IpQzRs7DMe9br8 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-x3IpQzRs7DMe9br8 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-x3IpQzRs7DMe9br8 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-x3IpQzRs7DMe9br8 .cluster text{fill:#333;}#mermaid-svg-x3IpQzRs7DMe9br8 .cluster span{color:#333;}#mermaid-svg-x3IpQzRs7DMe9br8 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-x3IpQzRs7DMe9br8 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-x3IpQzRs7DMe9br8 rect.text{fill:none;stroke-width:0;}#mermaid-svg-x3IpQzRs7DMe9br8 .icon-shape,#mermaid-svg-x3IpQzRs7DMe9br8 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-x3IpQzRs7DMe9br8 .icon-shape p,#mermaid-svg-x3IpQzRs7DMe9br8 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-x3IpQzRs7DMe9br8 .icon-shape .label rect,#mermaid-svg-x3IpQzRs7DMe9br8 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-x3IpQzRs7DMe9br8 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-x3IpQzRs7DMe9br8 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-x3IpQzRs7DMe9br8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
提出任务
Agent 执行
观察执行过程
方向正确?
Steer
完成
这也是 Agent 和传统"一问一答式 AI"的一个重要区别。
六、Codex 计划模式
普通模式通常是:
text
用户:
帮我实现登录功能。
AI:
好的,我开始修改......
问题在于:
AI 可能还没有完全理解需求,就开始直接修改代码。
对于大型任务来说,这是比较危险的。
6.1 Plan Mode
计划模式的工作方式更接近:
text
你的需求
↓
分析代码
↓
确认需求
↓
生成实现计划
↓
你检查计划
↓
执行代码修改
可以通过 + 中的 Plan Mode 开启。


在这个阶段:
AI 主要是在理解和规划,并不会立即进行大规模代码修改。
6.2 哪些任务适合计划模式?
例如:
text
重构整个权限系统
数据库从 MySQL 迁移到 PostgreSQL
Vue 项目迁移 React
增加完整支付模块
修改大型项目架构
这些复杂任务不推荐直接输入:
text
帮我改一下。
更推荐:
text
先进入 Plan Mode。
请分析当前认证系统的实现方式,
先不要修改代码。
请给我:
1. 当前架构
2. 涉及的文件
3. 修改方案
4. 可能产生的影响
5. 测试方案
等计划确认以后再实施。
对于复杂任务来说:
计划的价值,往往比单纯把 Prompt 写得特别长更重要。
七、批注模式:告诉 AI"具体哪里有问题"
前端开发经常会出现一种情况。
你告诉 AI:
text
这个页面不好看。
AI 很难知道:
text
哪里不好看?
标题?
边距?
颜色?
按钮?
卡片?
Codex 的 Browser Annotation,也就是浏览器批注功能,可以很好地解决这个问题。

开启注释模式后,可以:
text
点击元素
或者
框选某一个区域
然后直接留下修改要求。

例如选中一个按钮后输入:
text
按钮高度缩小一点。
圆角改成 8px。
不要改变按钮颜色。
这种方式比:
text
右边那个蓝色按钮再小一点。
准确得多。
八、Codex 与 VS Code 是什么关系?
不能简单把 Codex 理解成:
Codex 不具备任何开发能力,所以必须安装 VS Code。
更准确的理解是:
Codex 更偏向 AI Agent 式开发,而 VS Code 更适合人类工程师进行精细代码编辑。
现在 Codex 本身已经可以完成:
text
查看 Diff
运行 Terminal
执行 Git 操作
代码 Review
修改文件
运行项目
等很多开发任务。
但是如果你需要:
text
精确定位代码
断点调试
大量手动编辑
使用 IDE 插件
代码自动补全
复杂搜索
VS Code 依然更合适。
所以可以简单理解为:
text
Codex
≈ AI 工程师
VS Code
≈ 人类工程师使用的开发工作台
Codex 中也可以设置默认代码编辑器。


九、初始化 Git 仓库
这是非常建议每一个 Codex 新手掌握的操作。
假设项目目录是:
text
my-project/
首先进入项目目录:
bash
cd my-project
执行:
bash
git init
此时就创建了一个 Git Repository。
查看当前状态:
bash
git status
第一次提交:
bash
git add .
git commit -m "chore: initial commit"
然后再让 Codex 开始修改。
这样整个开发流程就变成:
text
初始版本
↓
Codex 修改
↓
Git Diff
↓
确认修改
↓
Commit
如果 AI 修改代码以后,你想知道它到底改了什么,可以运行:
bash
git diff
如果修改出现问题,也可以通过 Git 进行回滚。
因此非常建议养成一个习惯:
大型 Codex 任务开始之前,先 Commit 一次。
十、Codex 的"记忆":AGENTS.md
随着项目越来越复杂,你会发现一个很明显的问题。
新建一个 Chat:
text
AI 不知道项目规范。
于是你不得不重新告诉它:
text
我们使用 React。
不要使用 Tailwind。
API 全部写在 services。
组件必须使用 TypeScript。
修改以后必须运行 test。
下一次创建新 Chat,又要重新说一遍。
显然非常低效。
10.1 AGENTS.md 是什么?
解决这个问题的方法就是:
text
AGENTS.md
严格来说,它并不是传统意义上的"AI 长期记忆"。
更准确地说:
AGENTS.md 是 Codex 的项目级持久化指令文件。
Codex 在处理项目任务时,可以读取 AGENTS.md,了解:
text
项目是什么
使用什么技术栈
代码应该怎么写
目录结构是什么
有哪些禁止事项
测试命令是什么
完成任务前应该做什么


10.2 一个比较完整的 AGENTS.md 示例
在项目根目录创建:
text
AGENTS.md
内容例如:
markdown
# Project Overview
这是一个个人博客管理系统。
## Tech Stack
- React
- TypeScript
- Vite
- Ant Design
- Node.js
## Directory Structure
- `src/components/`:通用组件
- `src/pages/`:页面
- `src/services/`:API 请求
- `src/utils/`:工具函数
## Development Rules
1. 所有新增代码使用 TypeScript。
2. 不要引入新的 UI 框架。
3. 优先复用已有组件。
4. 不要随意修改 API 接口格式。
5. 单个组件尽量不要超过 300 行。
## Commands
安装依赖:
npm install
启动项目:
npm run dev
运行测试:
npm test
项目构建:
npm run build
## Before Completing a Task
完成任务前必须:
1. 检查 TypeScript 错误。
2. 运行测试。
3. 运行构建。
4. 总结修改了哪些文件。
5. 如果存在未解决问题,需要明确说明。
有了 AGENTS.md 以后,即使新建一个 Codex Chat,也不需要每一次都重新介绍项目规则。
10.3 全局指令
除了项目内部的 AGENTS.md,还可以建立全局规则。
例如:
text
~/.codex/AGENTS.md
作为全局指令。

例如:
markdown
# Global Coding Rules
- 默认使用中文解释。
- 修改代码前先阅读相关文件。
- 不要随意增加依赖。
- 不确定需求时先询问。
- 完成代码修改后必须运行测试。
- 删除文件前必须确认。
可以把整个优先级简单理解为:
text
全局 AGENTS.md
↓
项目 AGENTS.md
↓
当前 Prompt
↓
Codex 执行
十一、Codex Skills:把经验变成可复用能力
当我们经常让 AI 做同一种任务时,会出现另一个问题。
例如每次都要告诉 AI:
text
检查页面。
检查响应式。
检查 TypeScript。
运行 lint。
运行测试。
最后输出问题列表。
每次重新写 Prompt 会比较麻烦。
于是就有了:
text
Skill
11.1 Skill 是什么?
Skill 可以理解成:
一套可以反复调用的标准工作流程。
它不只是一个简单 Prompt。
一个 Skill 可以包含:
text
说明文件
脚本
参考资料
模板
资源文件
例如:
text
frontend-review/
├── SKILL.md
├── scripts/
├── references/
└── assets/
11.2 创建自己的 Skill
例如我们创建一个:
text
frontend-review
目录:
text
.agents/
└── skills/
└── frontend-review/
└── SKILL.md
SKILL.md 内容:
markdown
---
name: frontend-review
description: 检查前端页面代码质量、响应式布局和潜在 UI 问题。
---
# Frontend Review
执行以下检查:
1. 检查页面布局。
2. 检查移动端响应式。
3. 检查重复 CSS。
4. 检查 TypeScript 错误。
5. 检查无障碍问题。
6. 运行 lint。
7. 运行测试。
完成后输出:
## Problems
列出发现的问题。
## Changes
列出已经修改的内容。
## Remaining Issues
列出仍然存在的问题。
以后执行前端代码审查时,就不需要每次都重新输入完整流程。
因此可以把 Skill 理解成:
给 Codex 制作一套可以重复使用的 SOP。
十二、Codex MCP:让 AI 拥有外部工具
接下来是 Agent 生态里非常重要的一个概念:
text
MCP
完整名称:
text
Model Context Protocol
12.1 MCP 到底解决什么问题?
普通 Codex 主要可以访问:
text
本地代码
本地命令
本地项目
但是,如果希望 AI:
text
读取数据库
查询最新技术文档
访问内部系统
读取设计工具
调用企业 API
访问其他第三方服务
怎么办?
这时就可以使用 MCP。
其结构可以简单理解为:
#mermaid-svg-nLLANY770OHWY7zf{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-nLLANY770OHWY7zf .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-nLLANY770OHWY7zf .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-nLLANY770OHWY7zf .error-icon{fill:#552222;}#mermaid-svg-nLLANY770OHWY7zf .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-nLLANY770OHWY7zf .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-nLLANY770OHWY7zf .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-nLLANY770OHWY7zf .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-nLLANY770OHWY7zf .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-nLLANY770OHWY7zf .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-nLLANY770OHWY7zf .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-nLLANY770OHWY7zf .marker{fill:#333333;stroke:#333333;}#mermaid-svg-nLLANY770OHWY7zf .marker.cross{stroke:#333333;}#mermaid-svg-nLLANY770OHWY7zf svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-nLLANY770OHWY7zf p{margin:0;}#mermaid-svg-nLLANY770OHWY7zf .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-nLLANY770OHWY7zf .cluster-label text{fill:#333;}#mermaid-svg-nLLANY770OHWY7zf .cluster-label span{color:#333;}#mermaid-svg-nLLANY770OHWY7zf .cluster-label span p{background-color:transparent;}#mermaid-svg-nLLANY770OHWY7zf .label text,#mermaid-svg-nLLANY770OHWY7zf span{fill:#333;color:#333;}#mermaid-svg-nLLANY770OHWY7zf .node rect,#mermaid-svg-nLLANY770OHWY7zf .node circle,#mermaid-svg-nLLANY770OHWY7zf .node ellipse,#mermaid-svg-nLLANY770OHWY7zf .node polygon,#mermaid-svg-nLLANY770OHWY7zf .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-nLLANY770OHWY7zf .rough-node .label text,#mermaid-svg-nLLANY770OHWY7zf .node .label text,#mermaid-svg-nLLANY770OHWY7zf .image-shape .label,#mermaid-svg-nLLANY770OHWY7zf .icon-shape .label{text-anchor:middle;}#mermaid-svg-nLLANY770OHWY7zf .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-nLLANY770OHWY7zf .rough-node .label,#mermaid-svg-nLLANY770OHWY7zf .node .label,#mermaid-svg-nLLANY770OHWY7zf .image-shape .label,#mermaid-svg-nLLANY770OHWY7zf .icon-shape .label{text-align:center;}#mermaid-svg-nLLANY770OHWY7zf .node.clickable{cursor:pointer;}#mermaid-svg-nLLANY770OHWY7zf .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-nLLANY770OHWY7zf .arrowheadPath{fill:#333333;}#mermaid-svg-nLLANY770OHWY7zf .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-nLLANY770OHWY7zf .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-nLLANY770OHWY7zf .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nLLANY770OHWY7zf .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-nLLANY770OHWY7zf .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nLLANY770OHWY7zf .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-nLLANY770OHWY7zf .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-nLLANY770OHWY7zf .cluster text{fill:#333;}#mermaid-svg-nLLANY770OHWY7zf .cluster span{color:#333;}#mermaid-svg-nLLANY770OHWY7zf div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-nLLANY770OHWY7zf .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-nLLANY770OHWY7zf rect.text{fill:none;stroke-width:0;}#mermaid-svg-nLLANY770OHWY7zf .icon-shape,#mermaid-svg-nLLANY770OHWY7zf .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nLLANY770OHWY7zf .icon-shape p,#mermaid-svg-nLLANY770OHWY7zf .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-nLLANY770OHWY7zf .icon-shape .label rect,#mermaid-svg-nLLANY770OHWY7zf .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nLLANY770OHWY7zf .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-nLLANY770OHWY7zf .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-nLLANY770OHWY7zf :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Codex
MCP Protocol
MCP Server A
MCP Server B
MCP Server C
技术文档
数据库
第三方服务
也就是说:
MCP 解决的是 Agent 如何以标准化方式连接外部工具和数据。
12.2 添加 MCP Server
例如添加一个 MCP Server:
bash
codex mcp add context7 -- npx -y @upstash/context7-mcp
查看已经添加的 MCP:
bash
codex mcp list
查看 MCP 相关命令:
bash
codex mcp --help
不同 MCP Server 能提供不同能力。
例如:
text
GitHub MCP
→ 操作仓库、Issue、PR
数据库 MCP
→ 查询数据库
文档 MCP
→ 查询技术文档
浏览器 MCP
→ 操作网页
企业内部 MCP
→ 调用内部系统
十三、AGENTS.md、Skill 和 MCP 到底有什么区别?
这是很多 Codex 初学者最容易混淆的地方。
可以用一个表格快速区分:
| 功能 | 解决的问题 | 可以理解成 |
|---|---|---|
| AGENTS.md | AI 应该遵守什么规则 | 员工手册 |
| Skill | AI 应该怎么完成某类任务 | 标准操作流程 SOP |
| MCP | AI 能调用哪些外部能力 | 工具箱 |
| Prompt | 这一次具体做什么 | 当前任务单 |
例如:
text
AGENTS.md
"前端统一使用 TypeScript。"
text
Skill
"每次前端 Review 按照这 7 步执行。"
text
MCP
"你可以访问技术文档数据库。"
text
Prompt
"检查一下登录页面。"
组合起来就是:
#mermaid-svg-AwXcDzTrq55TJ0wS{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-AwXcDzTrq55TJ0wS .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-AwXcDzTrq55TJ0wS .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-AwXcDzTrq55TJ0wS .error-icon{fill:#552222;}#mermaid-svg-AwXcDzTrq55TJ0wS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-AwXcDzTrq55TJ0wS .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-AwXcDzTrq55TJ0wS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-AwXcDzTrq55TJ0wS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-AwXcDzTrq55TJ0wS .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-AwXcDzTrq55TJ0wS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-AwXcDzTrq55TJ0wS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-AwXcDzTrq55TJ0wS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-AwXcDzTrq55TJ0wS .marker.cross{stroke:#333333;}#mermaid-svg-AwXcDzTrq55TJ0wS svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-AwXcDzTrq55TJ0wS p{margin:0;}#mermaid-svg-AwXcDzTrq55TJ0wS .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-AwXcDzTrq55TJ0wS .cluster-label text{fill:#333;}#mermaid-svg-AwXcDzTrq55TJ0wS .cluster-label span{color:#333;}#mermaid-svg-AwXcDzTrq55TJ0wS .cluster-label span p{background-color:transparent;}#mermaid-svg-AwXcDzTrq55TJ0wS .label text,#mermaid-svg-AwXcDzTrq55TJ0wS span{fill:#333;color:#333;}#mermaid-svg-AwXcDzTrq55TJ0wS .node rect,#mermaid-svg-AwXcDzTrq55TJ0wS .node circle,#mermaid-svg-AwXcDzTrq55TJ0wS .node ellipse,#mermaid-svg-AwXcDzTrq55TJ0wS .node polygon,#mermaid-svg-AwXcDzTrq55TJ0wS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-AwXcDzTrq55TJ0wS .rough-node .label text,#mermaid-svg-AwXcDzTrq55TJ0wS .node .label text,#mermaid-svg-AwXcDzTrq55TJ0wS .image-shape .label,#mermaid-svg-AwXcDzTrq55TJ0wS .icon-shape .label{text-anchor:middle;}#mermaid-svg-AwXcDzTrq55TJ0wS .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-AwXcDzTrq55TJ0wS .rough-node .label,#mermaid-svg-AwXcDzTrq55TJ0wS .node .label,#mermaid-svg-AwXcDzTrq55TJ0wS .image-shape .label,#mermaid-svg-AwXcDzTrq55TJ0wS .icon-shape .label{text-align:center;}#mermaid-svg-AwXcDzTrq55TJ0wS .node.clickable{cursor:pointer;}#mermaid-svg-AwXcDzTrq55TJ0wS .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-AwXcDzTrq55TJ0wS .arrowheadPath{fill:#333333;}#mermaid-svg-AwXcDzTrq55TJ0wS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-AwXcDzTrq55TJ0wS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-AwXcDzTrq55TJ0wS .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-AwXcDzTrq55TJ0wS .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-AwXcDzTrq55TJ0wS .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-AwXcDzTrq55TJ0wS .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-AwXcDzTrq55TJ0wS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-AwXcDzTrq55TJ0wS .cluster text{fill:#333;}#mermaid-svg-AwXcDzTrq55TJ0wS .cluster span{color:#333;}#mermaid-svg-AwXcDzTrq55TJ0wS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-AwXcDzTrq55TJ0wS .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-AwXcDzTrq55TJ0wS rect.text{fill:none;stroke-width:0;}#mermaid-svg-AwXcDzTrq55TJ0wS .icon-shape,#mermaid-svg-AwXcDzTrq55TJ0wS .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-AwXcDzTrq55TJ0wS .icon-shape p,#mermaid-svg-AwXcDzTrq55TJ0wS .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-AwXcDzTrq55TJ0wS .icon-shape .label rect,#mermaid-svg-AwXcDzTrq55TJ0wS .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-AwXcDzTrq55TJ0wS .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-AwXcDzTrq55TJ0wS .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-AwXcDzTrq55TJ0wS :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 用户 Prompt
Codex Agent
AGENTS.md
项目规则
Skills
标准工作流
MCP
外部工具与数据
读取代码
修改代码
运行命令
调用外部工具
完成任务
这也是理解现代 AI Agent 的一个非常重要的框架。
十四、一套更合理的 Codex 开发工作流
如果只是:
text
打开 Codex
→ 输入"帮我写个网站"
→ 等 AI 写完
其实并没有真正发挥 Codex 的能力。
我更加推荐下面这套工作流程:
#mermaid-svg-vf2PEmHDMGtX8tOp{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-vf2PEmHDMGtX8tOp .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-vf2PEmHDMGtX8tOp .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-vf2PEmHDMGtX8tOp .error-icon{fill:#552222;}#mermaid-svg-vf2PEmHDMGtX8tOp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-vf2PEmHDMGtX8tOp .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-vf2PEmHDMGtX8tOp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-vf2PEmHDMGtX8tOp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-vf2PEmHDMGtX8tOp .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-vf2PEmHDMGtX8tOp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-vf2PEmHDMGtX8tOp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-vf2PEmHDMGtX8tOp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-vf2PEmHDMGtX8tOp .marker.cross{stroke:#333333;}#mermaid-svg-vf2PEmHDMGtX8tOp svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-vf2PEmHDMGtX8tOp p{margin:0;}#mermaid-svg-vf2PEmHDMGtX8tOp .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-vf2PEmHDMGtX8tOp .cluster-label text{fill:#333;}#mermaid-svg-vf2PEmHDMGtX8tOp .cluster-label span{color:#333;}#mermaid-svg-vf2PEmHDMGtX8tOp .cluster-label span p{background-color:transparent;}#mermaid-svg-vf2PEmHDMGtX8tOp .label text,#mermaid-svg-vf2PEmHDMGtX8tOp span{fill:#333;color:#333;}#mermaid-svg-vf2PEmHDMGtX8tOp .node rect,#mermaid-svg-vf2PEmHDMGtX8tOp .node circle,#mermaid-svg-vf2PEmHDMGtX8tOp .node ellipse,#mermaid-svg-vf2PEmHDMGtX8tOp .node polygon,#mermaid-svg-vf2PEmHDMGtX8tOp .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-vf2PEmHDMGtX8tOp .rough-node .label text,#mermaid-svg-vf2PEmHDMGtX8tOp .node .label text,#mermaid-svg-vf2PEmHDMGtX8tOp .image-shape .label,#mermaid-svg-vf2PEmHDMGtX8tOp .icon-shape .label{text-anchor:middle;}#mermaid-svg-vf2PEmHDMGtX8tOp .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-vf2PEmHDMGtX8tOp .rough-node .label,#mermaid-svg-vf2PEmHDMGtX8tOp .node .label,#mermaid-svg-vf2PEmHDMGtX8tOp .image-shape .label,#mermaid-svg-vf2PEmHDMGtX8tOp .icon-shape .label{text-align:center;}#mermaid-svg-vf2PEmHDMGtX8tOp .node.clickable{cursor:pointer;}#mermaid-svg-vf2PEmHDMGtX8tOp .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-vf2PEmHDMGtX8tOp .arrowheadPath{fill:#333333;}#mermaid-svg-vf2PEmHDMGtX8tOp .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-vf2PEmHDMGtX8tOp .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-vf2PEmHDMGtX8tOp .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-vf2PEmHDMGtX8tOp .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-vf2PEmHDMGtX8tOp .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-vf2PEmHDMGtX8tOp .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-vf2PEmHDMGtX8tOp .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-vf2PEmHDMGtX8tOp .cluster text{fill:#333;}#mermaid-svg-vf2PEmHDMGtX8tOp .cluster span{color:#333;}#mermaid-svg-vf2PEmHDMGtX8tOp div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-vf2PEmHDMGtX8tOp .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-vf2PEmHDMGtX8tOp rect.text{fill:none;stroke-width:0;}#mermaid-svg-vf2PEmHDMGtX8tOp .icon-shape,#mermaid-svg-vf2PEmHDMGtX8tOp .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-vf2PEmHDMGtX8tOp .icon-shape p,#mermaid-svg-vf2PEmHDMGtX8tOp .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-vf2PEmHDMGtX8tOp .icon-shape .label rect,#mermaid-svg-vf2PEmHDMGtX8tOp .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-vf2PEmHDMGtX8tOp .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-vf2PEmHDMGtX8tOp .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-vf2PEmHDMGtX8tOp :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
否
是
创建项目
初始化 Git
编写 AGENTS.md
提出需求
复杂任务?
Plan Mode
直接执行
确认方案
Codex 修改代码
运行项目 / 测试
结果正确?
Steer / Annotation
Review Git Diff
Commit
可以把整个流程概括成八个字:
先规划、再执行、边观察、可回滚。
十五、几个非常重要的 Codex 使用经验
15.1 不要把 Codex 当成"代码生成器"
真正有价值的不是:
text
生成 100 行代码
而是:
text
理解项目
→ 找到问题
→ 修改代码
→ 执行测试
→ 检查结果
这也是 Agent Coding 和传统代码补全工具最大的区别之一。
15.2 一个 Chat 尽量对应一个明确目标
不推荐:
text
先改登录。
然后分析数据库。
顺便优化首页。
然后再研究 Docker。
更推荐:
text
Chat 1:登录系统
Chat 2:首页优化
Chat 3:数据库重构
这样做可以减少上下文污染,也方便后续查找历史记录。
15.3 长期规则不要只写在 Prompt 中
长期项目应该优先考虑:
text
AGENTS.md
否则每一次开新会话,都需要重新告诉 AI:
text
项目结构是什么。
技术栈是什么。
代码规范是什么。
哪些事情不能做。
15.4 大任务开始之前一定先 Git Commit
最理想的状态是:
text
AI 改得好
→ Commit
AI 改坏了
→ Revert
而不是:
text
AI 改坏了
→ 我也不知道原来的代码是什么
Git 是使用 Coding Agent 时非常重要的安全保障。
15.5 复杂任务优先使用 Plan
任务越复杂:
text
规划的重要性
>
Prompt 的长度
如果一个需求需要:
text
修改很多文件
调整架构
改数据库
新增多个模块
涉及多人协作
最好先让 Codex 给出详细计划,再开始执行。
15.6 AI 跑偏时及时 Steer
Agent 工作时间越长,错误方向带来的成本越高。
发现方向不对时:
text
立即纠正
而不是等它全部修改完成。
15.7 经常查看 Git Diff
不要只看 AI 最后告诉你:
text
任务完成了。
还应该检查:
bash
git diff
看看它:
text
到底修改了哪些文件
有没有修改不相关内容
有没有删除重要代码
有没有引入新的依赖
这样才能真正做到:
AI 写代码,人类负责控制。
十六、最后总结:真正理解 Codex,需要掌握什么?
如果刚开始接触 Codex,我建议按照下面的顺序进行学习。
第一阶段:基础使用
text
Codex 基本操作
↓
Project
↓
权限
↓
Terminal
第二阶段:代码版本管理
text
Git
↓
Diff
↓
Review
↓
Commit
↓
Worktree
第三阶段:Agent 工作流
text
Context
↓
Plan
↓
Steer
↓
AGENTS.md
第四阶段:扩展能力
text
Skills
↓
MCP
↓
Automation
↓
多 Agent 协作
如果只学习:
text
怎么给 Codex 发 Prompt
实际上只使用了 Codex 很小的一部分能力。
真正进入 Agent Coding 以后,我们需要关注的已经不只是:
Prompt 应该怎么写?
而是:
如何给 Agent 提供正确的上下文、规则、工具、权限和反馈机制,让它能够稳定地完成任务?
这也是我认为 Codex 和传统 AI 编程助手最大的区别。
十七、Codex 核心概念关系图
最后可以用下面这张图快速理解整个 Codex 工作体系:
#mermaid-svg-p137TmaYYDaFqiKY{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-p137TmaYYDaFqiKY .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-p137TmaYYDaFqiKY .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-p137TmaYYDaFqiKY .error-icon{fill:#552222;}#mermaid-svg-p137TmaYYDaFqiKY .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-p137TmaYYDaFqiKY .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-p137TmaYYDaFqiKY .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-p137TmaYYDaFqiKY .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-p137TmaYYDaFqiKY .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-p137TmaYYDaFqiKY .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-p137TmaYYDaFqiKY .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-p137TmaYYDaFqiKY .marker{fill:#333333;stroke:#333333;}#mermaid-svg-p137TmaYYDaFqiKY .marker.cross{stroke:#333333;}#mermaid-svg-p137TmaYYDaFqiKY svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-p137TmaYYDaFqiKY p{margin:0;}#mermaid-svg-p137TmaYYDaFqiKY .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-p137TmaYYDaFqiKY .cluster-label text{fill:#333;}#mermaid-svg-p137TmaYYDaFqiKY .cluster-label span{color:#333;}#mermaid-svg-p137TmaYYDaFqiKY .cluster-label span p{background-color:transparent;}#mermaid-svg-p137TmaYYDaFqiKY .label text,#mermaid-svg-p137TmaYYDaFqiKY span{fill:#333;color:#333;}#mermaid-svg-p137TmaYYDaFqiKY .node rect,#mermaid-svg-p137TmaYYDaFqiKY .node circle,#mermaid-svg-p137TmaYYDaFqiKY .node ellipse,#mermaid-svg-p137TmaYYDaFqiKY .node polygon,#mermaid-svg-p137TmaYYDaFqiKY .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-p137TmaYYDaFqiKY .rough-node .label text,#mermaid-svg-p137TmaYYDaFqiKY .node .label text,#mermaid-svg-p137TmaYYDaFqiKY .image-shape .label,#mermaid-svg-p137TmaYYDaFqiKY .icon-shape .label{text-anchor:middle;}#mermaid-svg-p137TmaYYDaFqiKY .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-p137TmaYYDaFqiKY .rough-node .label,#mermaid-svg-p137TmaYYDaFqiKY .node .label,#mermaid-svg-p137TmaYYDaFqiKY .image-shape .label,#mermaid-svg-p137TmaYYDaFqiKY .icon-shape .label{text-align:center;}#mermaid-svg-p137TmaYYDaFqiKY .node.clickable{cursor:pointer;}#mermaid-svg-p137TmaYYDaFqiKY .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-p137TmaYYDaFqiKY .arrowheadPath{fill:#333333;}#mermaid-svg-p137TmaYYDaFqiKY .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-p137TmaYYDaFqiKY .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-p137TmaYYDaFqiKY .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-p137TmaYYDaFqiKY .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-p137TmaYYDaFqiKY .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-p137TmaYYDaFqiKY .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-p137TmaYYDaFqiKY .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-p137TmaYYDaFqiKY .cluster text{fill:#333;}#mermaid-svg-p137TmaYYDaFqiKY .cluster span{color:#333;}#mermaid-svg-p137TmaYYDaFqiKY div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-p137TmaYYDaFqiKY .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-p137TmaYYDaFqiKY rect.text{fill:none;stroke-width:0;}#mermaid-svg-p137TmaYYDaFqiKY .icon-shape,#mermaid-svg-p137TmaYYDaFqiKY .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-p137TmaYYDaFqiKY .icon-shape p,#mermaid-svg-p137TmaYYDaFqiKY .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-p137TmaYYDaFqiKY .icon-shape .label rect,#mermaid-svg-p137TmaYYDaFqiKY .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-p137TmaYYDaFqiKY .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-p137TmaYYDaFqiKY .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-p137TmaYYDaFqiKY :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 用户需求 Prompt
AGENTS.md
项目规则
Skills
标准工作流
MCP
外部工具
Context
当前上下文
Permission
权限系统
Codex Agent
读取项目
修改代码
执行命令
运行测试
调用外部工具
Review
Git Diff
Commit / Revert
简单来说:
text
Prompt
决定这一次要做什么。
AGENTS.md
决定长期应该遵守什么规则。
Skill
决定某一类任务应该怎么做。
MCP
决定可以使用哪些外部工具。
Context
决定 AI 当前知道什么。
Permission
决定 AI 可以操作到什么程度。
Git
决定修改是否可以追踪和回滚。
把这些能力组合起来之后,Codex 才真正从:
text
AI 写代码工具
升级成:
text
AI Coding Agent
参考资料
Codex 产品更新速度比较快,界面、功能名称和权限机制未来可能继续变化,因此实际使用时建议优先查看 OpenAI 官方文档。
Codex 官方网站:
text
https://openai.com/codex/
Codex CLI:
text
https://developers.openai.com/codex/cli/
C