💡 **这篇解决什么问题:**每开一个新会话,Codex 都像新来的员工,项目怎么启动、测试怎么跑、哪些目录不能动,都得重新交代一遍。这篇讲怎么用
AGENTS.md存项目规则、用config.toml存个人偏好、用 Skills 和 MCP 扩展能力,一次配好,长期复用。也会讲清楚哪些旧教程的写法已经过时。
更多 Codex 文章:省点力 · Codex 小类
大家卡在哪里
- 每次都从零开始:编程助手每开一个新会话,基本都从一片空白开始。上次解释过的背景、说过的偏好、刚确认的项目约定,都不会自动带到下一次。
- 不沉淀项目规则:每次都重新解释项目,效率很低。README、
AGENTS.md、测试命令都要沉淀下来。 - 规则塞太多:2025 年的一些教程教人往
AGENTS.md里塞几十条甚至上百条指令。OpenAI 在 2026 年 9 月的文章里专门提醒开发者重新检查这些冗长规则:它们同样会占用模型上下文,还可能互相冲突。 - 照搬第三方配置:有些教程会教你改模型供应商、权限设置或自定义 API。旧配置文件别直接照抄,尤其是权限和第三方模型地址,先看官方当前参数再决定改不改。
一句话分工:稳定的偏好放进配置,项目背景放进文档。
一、AGENTS.md:写给 Codex 的项目入职手册
它是什么
AGENTS.md是一份可选的项目说明文件,可以当成项目的轻量版说明文档,或者一张快速上手卡片。- 只要它在 Codex 启动时所在的目录里,Codex 就会自动读取。所以通常放在项目根目录,因为大家一般从那里启动 Codex。
- 用
/status可以看到当前目录的AGENTS.md有没有参与工作。 - 它把一次次的临时提醒,沉淀成团队和 Codex 都能反复用的经验。
三种放法
① 项目级:在 Codex 里运行 /init,会在当前目录自动生成一份 AGENTS.md,不用从空白文件开始写。生成后自己再补几句,比如:
本项目使用 pnpm
开发命令是 pnpm dev
测试命令是 pnpm test
不要修改 dist 和 generated 目录
所有接口请求都走 src/lib/api.ts
这几句很值钱,你不用每次重新教育 Codex。/init 只是搭个脚手架,真正有价值的是你写进去的项目规则。
② 全局级:在 Codex 主目录(~/.codex)里放一份 AGENTS.md,对所有项目生效。适合写你在所有项目里都希望它遵守的习惯,比如固定使用某类工具、用某种方式回答、优先查官方文档、调用特定 MCP、遵循统一代码风格、每次修改后都运行检查。
③ 子目录级:一个仓库里同时有前端、后端和多个服务,可以在对应子目录各放一份。根目录那份讲整个项目,子目录那份补充局部背景。Codex 进入某个子目录工作时,就知道自己在处理哪部分、有哪些特别要注意的地方。
短期、项目专属的要求放项目自己的 AGENTS.md,长期、通用的规则放全局文件,分工更清楚。
里面写什么
先写清项目里真正会影响执行的这些信息:
- 项目概览:这个项目是做什么的;
- 技术栈和目录结构:不同类型的文件分别放在哪里;
- 常用命令:怎么安装依赖、启动项目、运行 lint、测试、构建;
- 常用命令行工具:比如 GitHub CLI,或项目已接入的其他工具;
- MCP 服务:列出希望 Codex 使用的 MCP 服务器;
- 代码风格;
- 哪些目录、文件不能改,改动时要注意什么;
- 发布流程和重要业务边界;
- 开发流程:实现一个功能通常从哪些步骤开始、经过哪些环节;
- 完成前要汇报什么:改了哪些文件、跑了哪些测试、哪些没跑。
**写具体路径,别写笼统描述。**与其只写“代码在 src 目录”,不如写“前端页面放在 src/pages,接口请求放在 src/api,修改完以后先运行 npm run lint 和 npm test”。
写 AGENTS.md 的 6 条原则
- 保持简短、聚焦。OpenAI 看过的大多数
AGENTS.md都不到 100 行。规则太多,Codex 反而不知道该优先关注什么;规则之间还有冲突的话,它会花很多时间判断该听哪一条。 - 让它能自己完成检查闭环。优先写清楚怎么检查:代码检查工具、相关测试、构建、看报错回去修。如果你发现每次都得手动告诉它怎么检查,就把办法写进去,比如运行命令确认能不能编译,或者截图看看页面实际长什么样。每写一项要求,就想清楚怎么检查它有没有做到,没有验证途径的要求,Codex 很难确认自己做对了没有。
- 从简单开始。先放最必要的:项目做什么、代码在哪里、怎么构建、怎么测试、最常用的几个命令。用一段时间后,再把那些你反复解释、每次解释都很啰嗦的东西补进去,比如团队习惯、特殊目录规则、某类功能的实现步骤。这样文件会一直贴近真实工作,不会变成一份看起来完整、实际上没人维护的文档。
- 持续更新。它犯了某个错误、总被同一个项目细节绊住,就把解决办法记下来。比如你看着 Codex 花了很久才推断出运行测试的命令,就把这条命令加进去,下次它会快很多。优先记录:经常用的命令、容易踩坑的地方、某类任务的特殊要求、能快速验证结果的方法。每补一条规则,都配上怎么检查。
- 主文件只放通用信息,细节拆到专门文档。
AGENTS.md每次都会进上下文,适合放项目做什么、代码在哪、怎么构建测试、最常用的工作方式。某类任务的详细步骤拆到其他 Markdown 文件里,比如execplans.md(大型任务怎么规划)、frontend.md(前端任务的做法)、architecture.md(架构安排)、code-review-guidelines.md(团队审查标准,见 Codex 改代码不翻车:权限、分支、Diff、测试和 Code Review)。在AGENTS.md里加一个“任务专门文档”部分,写明什么任务看哪个文件。这叫逐步发现:先读简短总览,再按任务找具体资料,主文件就像一张目录。 - 定期审视每一条。见下一节。
2026 年的新提醒:给更强的模型松绑
OpenAI 在 2026 年 9 月发布的 Rethinking Skills and Prompts for GPT-6 Astra 里提醒:模型越来越强,过去需要手把手教的东西,现在很多不需要了。过去一年你为了让模型做对事,可能积累了大量指令,每次换模型都值得重新检查一遍。
- 常问自己“这条还需要吗”。
AGENTS.md在仓库里每次都会生效,所以要经常回头看。 - 别要求每次改动前都读一堆文档。修个错别字也要先读一遍整个项目地图,太浪费了,新模型自己能判断要读什么。
| 写法 | 例子 | 效果 |
|---|---|---|
| 不好 | Before every edit, read architecture.md, database.md, and deployment.md. | 每次改动都读三份文档,烧上下文、拖慢速度 |
| 好 | Use architecture.md for service boundaries, database.md for schema changes, and deployment.md when preparing a deployment. | 按场景指路,需要时才读 |
指向文档本身仍然有用,只要是按场景指路就行。文档本身也要保持更新。
- “务必跑测试”这类叮嘱可以删了。以前的模型需要提醒才会跑测试、检查结果;GPT-6 Astra 会自己做,同样的叮嘱反而会导致不必要的测试。
- 安全的流程,可以明确授权它继续。Astra 很仔细,但有时不确定该把任务推进到哪一步,需要推一把。你可以在
AGENTS.md里给某个你确定安全的流程授权,比如本地测试:
The local tests use disposable fixtures and have no production access. Run them, fix failures caused by the requested change, and rerun affected tests without asking for approval at each step.
(本地测试使用一次性测试数据,没有生产环境权限。运行它们,修复由本次改动引起的失败,并重新运行受影响的测试,每一步都不用请求批准。)
- 边界措辞别写得太重。以前的模型可能未经允许就替你做事,你也许加了很重的语气让它先问。Astra 判断力更好,不确定安全就不会去做;继续用很重的措辞,它可能会太当真,在你其实愿意它继续的地方停下来。
- 让它自己做一次体检。不用手动逐条检查,可以让 Astra 根据这篇文章的要点审计一遍你的
AGENTS.md和 Skills。
这和前面的“检查闭环”冲突吗?不冲突。写清楚怎么检查(具体命令、截图方法)仍然有用;可以删掉的是“每次都必须先跑测试”这类督促语气。如果仓库里的说明也会被其他人、其他模型(比如 Sol、Luna)使用,就要考虑他们还需不需要这些提醒。
三份可以直接改的模板
模板一:Next.js + pnpm
# AGENTS.md
## 项目说明
这是一个 Next.js 项目,使用 pnpm。
## 常用命令
- 安装依赖:pnpm install
- 本地开发:pnpm dev
- Lint:pnpm lint
- 测试:pnpm test
- 构建:pnpm build
## 修改规则
- 不要改数据库 schema,除非用户明确要求。
- 不要新增依赖,除非说明理由。
- 修改前先读 README 和 package.json。
- 完成后必须说明改了哪些文件,以及运行了哪些命令。
这类文件本质上是给 AI 的项目 SOP。用久了你会发现,真正拉开差距的不是某一次 prompt 写得多漂亮,而是项目有没有沉淀出一套稳定规矩。
模板二:Python 小项目
最简版只要 4 行:
# 项目规范
- 语言:Python 3.11+
- 代码风格:PEP 8
- 测试框架:pytest
- 注释:中文注释
新手更完整的版本:
# AGENTS.md
## 项目说明
这是一个 Python 项目,主要用于练习小游戏开发。
## 开发规范
- 使用 Python 3.11+
- 代码保持简单,优先可读性
- 新增功能时同步更新 README
- 修改代码后尽量运行测试或启动程序验证
## 交互偏好
- 先解释修改思路,再改代码
- 涉及删除文件、重构目录、安装依赖时先询问
- 回复使用中文
## Codex 特定配置
- 权限模式:自动审查(关键操作需确认)
- 默认模型:qwen3.6-plus(或 gpt-5.5)
- 技能路径:./.codex/skills(如有)
注意:最后“Codex 特定配置”这一段只是写给模型看的文字说明。权限模式、默认模型真正生效,要在 config.toml 或界面里设置(见下文)。
模板三:英文版
# Project Guide for Codex
## Commands
Install: pnpm install
Dev: pnpm dev
Test: pnpm test
Lint: pnpm lint
Build: pnpm build
## Rules
Do not edit dist/
Do not edit generated files
Keep changes minimal
Run tests after touching business logic
Use existing components before creating new ones
## Architecture
API clients live in src/lib/api
Shared UI components live in src/components
Route pages live in src/pages
Auth logic lives in src/auth
## Before finishing
Explain changed files
Mention tests run
Mention tests not run
二、config.toml:存你的个人偏好
放在哪里,怎么打开
- 个人默认设置:
~/.codex/config.toml。 - 项目或子目录覆盖:在仓库里放
.codex/config.toml。出于安全考虑,只有你信任这个项目时,Codex 才会加载项目里的.codex/配置。如果把项目标记为不信任,Codex 会跳过项目级的.codex/,包括项目本地的配置、hooks 和 rules;用户级和系统级配置照常加载。 - 在 VS Code 插件里打开:点右上角齿轮图标 → Codex Settings → Open config.toml。
- CLI 和 IDE 插件共用同一套配置,改一处两边都生效。可以在里面设置默认模型和供应商、审批策略和沙箱、MCP 服务器。
- Codex CLI 是用 Rust 写的,所以配置用 TOML 格式。
配置优先级(从高到低)
- 命令行参数和
--config覆盖; - 项目配置
.codex/config.toml,从项目根目录到当前工作目录,越近越优先(仅限受信任项目); - 用
--profile 名称选中的配置档(~/.codex/名称.config.toml); - 用户配置
~/.codex/config.toml; - 登录的工作区由云端下发的默认配置;
- 系统配置(Unix 上是
/etc/codex/config.toml); - 内置默认值。
公司管理的电脑上,组织还可能用 requirements.toml 强制限制,比如禁止 approval_policy = "never" 或 sandbox_mode = "danger-full-access"。所以网上教程里的某些配置,你那边可能根本不生效。
最常改的几项
# 默认模型
model = "gpt-5.6"
# 推理强度
model_reasoning_effort = "high"
# 审批策略:需要更高权限时才停下来问
approval_policy = "on-request"
# 沙箱:可以改当前工作区,不能随意写到外面
sandbox_mode = "workspace-write"
# 沟通风格:friendly / pragmatic / none
personality = "friendly"
- 审批策略:Codex 默认“按请求审批”,先继续干活,需要更高权限时才停下来问你。
on-request和never的区别、权限怎么搭配,见 Codex 改代码不翻车:权限、分支、Diff、测试和 Code Review。旧配置里如果还有approval_policy = "untrusted",这个值已经退役,需要按官方说明迁移。 - 沙箱:默认是工作区模式,可以改当前目录里的文件,但不能写到外面。
- 权限档:内置
:read-only、:workspace、:danger-full-access三档;也可以用[permissions.<名称>]表自定义,再用default_permissions指定默认用哪档。 - 沟通风格:会话中可以用
/personality临时切换。 - Windows 原生沙箱:
[windows]表里sandbox = "elevated"(推荐),没有管理员权限或设置失败时才用"unelevated"。
终端快捷键(tui.keymap):
[tui.keymap.global]
open_transcript = "ctrl-t"
[tui.keymap.composer]
submit = ["enter", "ctrl-m"]
[tui.keymap.chat]
interrupt_turn = "f12"
设成空列表就是解绑这个操作。
命令环境变量(shell_environment_policy):控制哪些环境变量会传给 Codex 运行的命令。
[shell_environment_policy]
ignore_default_excludes = false
[shell_environment_policy.filters]
"PATH" = "include"
"HOME" = "include"
这里有个容易误会的点:ignore_default_excludes 默认是 true,也就是默认不会自动过滤名字里带 KEY、SECRET、TOKEN 的变量。想让它自动过滤,要设成 false。
日志目录:
log_dir = "/absolute/path/to/codex-logs"
显式设置 log_dir 后,还会在该目录生成纯文本的 codex-tui.log。只想临时用一次,可以:
codex -c log_dir=./.codex-log
排查故障时日志很有用,见 Codex 出问题怎么办:消息卡住、插件卡顿、历史消失、登录报错。
网页搜索:确认当前版本的配置
- 旧版本配置:
web_search_request = true曾用于开启网页搜索。更新 Codex 后,应检查这个字段是否已经弃用。 - 新说法(当前官方配置文档):本地对话默认已经开启网页搜索,用的是 OpenAI 维护的搜索缓存(cached),返回预先索引的结果,不直接抓取实时网页,能减少被网页内容注入指令的风险。
web_search_request已经标为 Deprecated(弃用)。
现在用顶层的 web_search 设置:
web_search = "cached" # 默认:从搜索缓存返回结果
# web_search = "indexed" # 只有搜索索引放行时才访问外部网页
# web_search = "live" # 抓取最新网页数据(等同于 --search)
# web_search = "disabled" # 关闭网页搜索
- 用
--yolo或其他完全访问的沙箱设置时,网页搜索默认变成live。 - 不管哪种模式,搜索结果都要当成不可信内容。
- 需要查近期信息、官方公告、新版本资料时,可以直接在提示词里要求,比如:
开启网页搜索,查找关于 Next.js 15 的最新文章,并把当前文章放到页脚。
profiles:一键切换工作状态
同一份配置可以定义多个配置档。比如建一个 fast,用最快的模型和较低的推理强度,专门处理追求速度的任务。启动时加上 --profile fast 就能用。配置档文件是 ~/.codex/fast.config.toml,按官方建议,共用的默认值放在 config.toml,配置档文件只写和默认不同的那几项。
功能开关 [features]
| 开关 | 默认 | 成熟度 | 作用 |
|---|---|---|---|
apps | true | 稳定 | 启用 App(连接器)集成 |
goals | true | 稳定 | 持久目标和自动继续(见 Codex 长任务和大项目:计划文件、Goals、会话管理、并行、云端与额度) |
hooks | true | 稳定 | 生命周期 hooks(hooks.json 或内联 [hooks]) |
fast_mode | true | 稳定 | 启用 Fast 模式和 service_tier = "fast" |
memories | false | 实验 | 启用记忆功能 |
multi_agent | true | 稳定 | 子智能体协作工具 |
personality | true | 稳定 | 沟通风格选择 |
remote_plugin | true | 稳定 | 远程插件目录 |
shell_snapshot | true | 稳定 | 给 shell 环境拍快照,加快重复命令 |
shell_tool | true | 稳定 | 默认的 shell 工具 |
unified_exec | true(Windows 除外) | 稳定 | 统一的 PTY 执行工具 |
web_search | true | 已弃用 | 旧开关,改用顶层 web_search |
web_search_cached | false | 已弃用 | 旧开关,未设置时对应 web_search = "cached" |
web_search_request | false | 已弃用 | 旧开关,未设置时对应 web_search = "live" |
- 在
config.toml的[features]下写功能名 = true打开,写false关闭;不写就保持默认。 - 命令行临时打开:
codex --enable 功能名;多个就写多次--enable。
终端通知
打开后,Codex 在后台完成任务会弹一条提醒。长时间后台任务很省心,不用一直盯着终端;但有人嫌它打断操作,同时跑的任务一多,提示音和弹窗一起响也会很吵。按自己的习惯开关。
接国内模型(第三方模型)
国内不少平台提供 OpenAI 兼容的 API,改一下配置和环境变量就有机会让 Codex 用国内模型。先说清楚:OpenAI 兼容不等于 Codex 一定能用。
- Codex 新版本依赖 Responses API,不支持
wire_api = "chat"。平台如果只兼容 Chat Completions,可能出现“连得上但跑不起来”。很多厂家还没适配,能选的模型不多。 - 常见平台:通义千问(阿里百炼)、硅基流动、智谱 AI,以及其他提供 OpenAI 兼容 API 的平台。选择前先检查该平台当前的 Responses API 支持、可用模型和鉴权要求。
在 App 设置里打开配置文件,改成:
model = "qwen3.6-plus"
model_provider = "bailian"
[model_providers.bailian]
name = "bailian"
env_key = "BAILIAN_API_KEY"
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"
然后在本地设置环境变量 BAILIAN_API_KEY(Windows:右键“此电脑” → 属性 → 环境变量),完全退出 Codex 再打开;还提示找不到,就重启电脑。
验证有没有生效:
用中文写一个 Python 脚本,打印"Hello 国内大模型",然后运行它。
能理解中文指令、生成代码、成功运行,就说明配置生效了。
不要只凭模型名称判断能否接入。确认所选模型支持平台当前的 Responses API,再用上面的最小任务验证;可用模型和版本以服务商控制台为准。
能跑就用,跑不起来就换平台。再提醒一次:第三方模型地址和权限配置别照搬,先对照官方当前参数。
三、自定义提示:把常说的话存起来
每次改完代码都想让 Codex 补单元测试、并尽量少改无关代码?不用每次打一遍,存成提示文件:
- 打开 Codex 主目录,建一个
prompts文件夹; - 放一个 Markdown 文件,比如
add_test.md,内容见下; - 退出并重新启动 Codex CLI;
- 在输入框里键入
prompts,就能看到add_test.md,选中后 Codex 会把里面的完整要求带进当前会话执行。
add_test.md 的内容:
为所有发生改动的文件生成单元测试。
使用项目现有的测试运行器,并尽量把代码差异控制到最小。
自定义命令的重点:把经常重复说的话提前写好,以后直接调用。
四、Skills:把重复的工作流打包
它是什么
Skill 本质上是存成 Markdown 文件的提示词,还可以打包资源文件和脚本。最适合的场景是某个特定工作流的指导,或者使用某些应用时的指导。
装太多 skill 的问题
每个 skill 都带一个名称和描述,会加载进模型上下文,让它知道什么时候用。现在很多人默认往项目里塞一大堆 skill,问题就来了:
- 描述写得太长,skill 一多,Codex 会截短描述来塞进上下文,模型看到的越来越少,越难判断该用哪个;
- 描述之间互相矛盾,或者过分强调“什么时候都该用”,模型会加载一些对任务没帮助的指令。
写好 skill 的 4 条建议(OpenAI 官方)
常用的创建方式是调用 $skill-creator 这个 skill,它的指导最近已经更新,专门规避这些常见问题。
① 描述尽量短,但要说清什么时候用。
| 写法 | 描述 |
|---|---|
| 不好 | Create and validate Postgres schema migrations. Use when working with databases, queries, models, or persistence. |
| 好 | Create and validate Postgres schema migrations. Use when adding or changing a migration, or reviewing its rollout. |
不好的写法会让模型一碰到数据库相关的东西就用它,好的写法只在处理迁移时才用。
② 渐进披露。读 skill 本身就占上下文,会让对话更快走到压缩,还会带进来不适用的指导。有多个工作流的 skill,根文档写成一个最小的“路由”,指向配套的文档和脚本,让模型知道去哪找,不强迫它读当下用不上的东西。
③ 别写成详细菜谱。很多 skill 写得像精确到每一步的行程单。模型现在更能理解细微差别和模糊情况,过度具体的指导以前有用,现在反而会拖后腿。
④ 考虑别人用的是什么模型。仓库里的 skill 也会指导其他贡献者的 agent,他们可能用不同模型。对 Sol 或 Luna 有用的指导,可能会把 GPT-6 Astra 限制得太死。
去哪里装,装哪些
- 安装位置:个人 skill 放
${CODEX_HOME:-$HOME/.codex}/skills(默认就是~/.codex/skills),项目 skill 放./.codex/skills。 - Superpowers:一套强制 Codex 按流程干活的规矩:先想清楚要做什么,先写好验收标准,再动手写代码,最后自己检查一遍。每一步都有不能跳过的检查点,复杂任务的质量稳定很多。安装很简单,从 GitHub 下载放进 skills 目录。它本质上只是文档,所以 Claude Code、Cursor、Gemini 也能用。
- 第三方 Skills 的安装检查:先读
SKILL.md和安装脚本,确认触发条件、权限、依赖和下载地址。收藏量或推荐清单不能代替这一步。 - 按真正需要的功能来装,别一上来装大量插件。
想看一个完整的“自己写 skill”案例,Codex 长任务和大项目:计划文件、Goals、会话管理、并行、云端与额度 里有 $harness-author 的完整例子:把规划长任务的流程做成 skill,再根据复盘结果持续调优。
五、MCP:给 Codex 接上外部工具
它是什么
MCP 是一种协议,用来把模型和额外的工具、上下文连起来。Codex 支持两种接入方式:**标准输入输出(stdio)**和 HTTP。接上之后,Codex 就能连设计工具、任务管理系统、监控平台和第三方服务,先拿资料再动手。Codex 负责理解需求、安排调用,具体数据由 MCP 服务提供。
常见用法
- Figma:根据设计稿生成前端页面;
- Jira、Linear:查看分配给自己的任务,改完代码后把工单状态更新为已完成,开发、任务跟踪、状态同步串在一条流程里;
- Context7:查各种框架的最新文档,帮助正确调用第三方 API;
- Datadog:拉取生产环境日志,排查性能问题;
- 也可以获取设计稿、订单、任务状态或其他业务数据。
在 AGENTS.md 里可以列出希望 Codex 使用的 MCP 服务器。MCP 的相关设置同样可以写进 config.toml,让 Codex 启动时就带着这些能力。
用纸杯蛋糕订单理解 MCP 的调用流程
下面用一个示例订单服务说明流程。假设 cupcake MCP 可以查询“谁订了多少个纸杯蛋糕”;服务名、顾客和订单内容只是示例,实际接入要按自己服务的接口配置。
- 先保存项目文件,再退出当前会话。重启不会替你回滚已经写入磁盘的代码。
- 运行
codex mcp add ...(参数按服务说明填),回车后就添加了一个名为 cupcake MCP 的全局 MCP 服务。 - 打开
config.toml,能看到对应的配置已经写进去了。也可以直接手动编辑config.toml添加,但多数人用codex mcp add更方便,也不容易写错格式。 - 新开一个会话,输入:“在
agents.md页面底部添加一个区块,用来获取 Rachel 的纸杯蛋糕订单。” - 让 Codex 调用订单查询工具,再把返回值接到页面中。假设服务返回“Rachel,7 个大理石纸杯蛋糕,到店自取”,就逐项检查页面是否准确显示这些字段,而非让模型自行补全订单。
整个过程是三步:**理解任务 → 判断需要哪些外部能力并调用 MCP → 把拿到的结果用到真正的代码修改里。**换成实际工作,返回的可以是设计稿、工单、文档内容或系统状态。
Context7:别让 Codex 只靠旧知识写代码
模型的预训练资料有知识截止时间,框架和接口一直在变。Context7 能提供各种框架的最新文档,安装同样用 codex mcp add。
例如,要在 agents.md 页面加一个输入框,让用户提交简短提示词并生成自己的 agents.md,可以让 Codex 先通过 Context7 查 Responses API 的当前用法,再实现表单和请求逻辑。
- 过程:Codex 先从 Context7 拿文档,再浏览仓库里的各个文件(包括现有的
agents.md页面),理解需求、查资料、读代码连在一起之后,才开始写生成器。 - 验收:逐段检查 diff,回到目标文件确认 Responses API 调用已经接入,再实际提交表单测试成功与失败的情况。改了多少文件、增加多少行代码,都不能替代功能验收。
团队自己的内部文档也可以做成 MCP 接进 Codex,开发就能跟着实际实现更新,不用一直照着过时资料写代码。
不想每次提醒它查 Context7?写进全局 AGENTS.md:
只要开发功能涉及外部库或 API,就先去 Context7 查找相关文档。
什么时候不必上 MCP
大型任务的计划、进度这类信息,也可以通过 MCP 提供,但一个模型方便读取、还能提交进 Git 的 Markdown 文件往往就够用:跟着项目一起保存,团队成员都能看、能改、能复用。具体做法见 Codex 长任务和大项目:计划文件、Goals、会话管理、并行、云端与额度。
Windows 上 MCP 服务出问题比较常见,排查见 Codex 出问题怎么办:消息卡住、插件卡顿、历史消失、登录报错。
总结
AGENTS.md:项目背景、命令、目录、边界,短而具体,按场景指向专门文档,定期删掉不再需要的规则。config.toml:模型、推理强度、审批、沙箱、网页搜索、profiles、功能开关这些稳定偏好。prompts/:你反复说的话。- Skills:重复的工作流,描述要短,按需加载。
- MCP:需要外部数据或最新文档时再接。
真正实用的定制,靠的是把稳定的偏好放进配置、把项目背景放进文档,提示词不用越写越长。