ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

codex怎么预定义提示词?例如中文回复:用 AGENTS.md 固化默认行为

codex怎么预定义提示词?例如中文回复:用 AGENTS.md 固化默认行为

1. 为什么每次开 Codex 都要重新说一遍“用中文回复”

我刚开始用 Codex 的时候,最烦的一件事就是:每次新开一个会话,它默认还是英文回复。你明明上一轮刚说过“请用简体中文”,关掉终端再进来,它又忘了。这不是 Codex 记性差,而是它的会话上下文本来就是一次性的——每个新会话都是白纸,除非你把指令写进一个它每次启动都会读的文件里。

Codex 这个工具的设计逻辑其实很清晰:它把“项目级默认行为”交给一个叫AGENTS.md的文件来管。你可以把它理解成给 Codex 看的“项目说明书”或者“员工手册”。每次 Codex 在某个目录下启动,它会自动去读这个文件,把里面的内容当作系统级的默认指令。你写“始终用简体中文回复”,它每次就都照做,不用你再重复。

这个机制解决的核心问题有三个。第一是语言一致性:团队里有人习惯英文、有人习惯中文,统一写进AGENTS.md就不会乱。第二是输出格式规范:比如你希望每次改完 Python 脚本都附一张变更对照表、给出可执行的命令示例,这些都可以固化下来。第三是项目上下文复用:比如“这个仓库用 pnpm 不用 npm”“测试命令是pytest -x”,写一次,后面所有会话都省得再解释。

适合谁用?如果你只是偶尔问 Codex 一两个问题,可能感知不强。但只要你开始把 Codex 当成日常编码助手——尤其是长期维护同一个仓库、或者团队协作——AGENTS.md就是必须配的东西。它不改变 Codex 的能力,但能大幅减少你重复沟通的成本。

我试过最直接的方式是在终端里临时说一句“Always respond in Chinese”,当时确实生效了,但重启终端后新会话又回到英文。这就是为什么必须落到文件里。下面我从最基础的全局配置讲起,再讲项目级配置,最后给出验证方法和常见报错排查。

2. AGENTS.md 放在哪、TaoToken 接入 Codex 的前置准备

在动手写AGENTS.md之前,得先把 Codex 能正常跑起来这件事搞定。Codex 本身是一个命令行编码代理,它需要连到一个模型服务才能工作。这里我用 TaoToken 来做接入,因为它提供了兼容 OpenAI 接口的端点,配置起来比较直接。

先说AGENTS.md的放置位置,这决定了它的作用范围。Codex 会按优先级读取两个地方的文件:

位置作用范围适用场景
~/.codex/AGENTS.md全局,所有项目个人偏好,比如“始终用中文回复”
仓库根目录./AGENTS.md仅当前项目项目规范,比如构建命令、代码风格

全局文件适合放你个人的通用习惯,项目文件适合放团队约定。两者同时存在时,项目级的会叠加在全局之上。我建议两个都建:全局放语言偏好,项目放具体规范。

接下来是 TaoToken 的接入。你需要先拿到 API Key,然后配置 Codex 的模型端点。Codex 的配置文件通常在~/.codex/config.toml,如果你用的是较新版本,也可能是~/.codex/config.json。下面以 TOML 为例,这是目前比较通用的格式:

# ~/.codex/config.toml model = "gpt-4o" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY"

然后在你的 shell 配置文件里(~/.bashrc或~/.zshrc)导出 Key:

export TAOTOKEN_API_KEY="你的Key"

重新加载配置:

source ~/.zshrc

这里有个细节要注意:base_url写的是https://taotoken.net/api,不要多加/v1或者别的路径,Codex 会自己拼接。如果你写错了,最常见的报错就是401 Unauthorized或者local proxy failed。

配置好之后,你可以先用一个简单命令验证 Codex 能不能通:

codex "用一句话说明什么是递归"

如果它能正常回复,说明模型接入没问题。如果报错,先检查 Key 是否导出成功(echo $TAOTOKEN_API_KEY),再检查config.toml里的base_url是否写对。

这一步做完,你才有资格去谈“预定义提示词”——因为AGENTS.md是给 Codex 读的,Codex 本身得先能跑起来。很多人卡在AGENTS.md不生效,其实根因是模型根本没连上,Codex 连启动都没成功,自然读不到文件。

另外提一句,如果你用的是 Claude Code 或者 Cline 这类工具,它们也有类似的记忆文件机制,但文件名和路径不一样。Codex 认的就是AGENTS.md,别搞混了。

3. 可复制的 AGENTS.md 配置:从中文回复到输出格式规范

现在进入正题。AGENTS.md本质上就是一个 Markdown 文件,Codex 会把里面的内容当作默认指令注入到每次会话的开头。你写什么,它就默认遵守什么。下面我给出一套可以直接复制的配置,分全局版和项目版。

3.1 全局配置:让 Codex 默认说中文

最简单的全局配置,只需要一行。在终端执行:

mkdir -p ~/.codex && printf 'Always respond in Chinese-simplified\n' > ~/.codex/AGENTS.md

这条命令做了两件事:创建~/.codex目录(如果不存在),然后把Always respond in Chinese-simplified写进AGENTS.md。你也可以用编辑器手动创建:

vim ~/.codex/AGENTS.md

内容就一行:

Always respond in Chinese-simplified

保存退出。下次你新开一个 Codex 会话,它就会默认用简体中文回复。这个配置对所有项目生效,适合个人使用。

3.2 项目级配置:固化输出格式和命令规范

如果你希望 Codex 在某个仓库里遵守更具体的规范,就在仓库根目录建一个AGENTS.md。下面这份配置是我自己常用的,你可以直接复制:

# 项目默认指令 ## 语言 始终使用简体中文回复。 ## 代码修改输出规范 当修改或创建 Python 脚本时,在回复最后提供一张表格,说明本次修改或新建了什么。 表格格式如下: | 文件 | 操作 | 说明 | |------|------|------| | script.py | 修改 | 增加了参数解析 | ## 命令示例规范 在对话最后给出本次修改或创建的所有文件,以及一个或多个具体的执行命令示例。 每个命令前面要说明这个命令的作用。 当命令包含的命令行参数超过 4 个时,必须使用反斜杠 `\` 将长命令分解为多行。 分行规则: 1. 第一行包含执行程序和脚本名称,例如 `python script.py`。 2. 从第二行开始,每一个参数标志及其对应的值单独占一行。 3. 所有后续参数行缩进 2 个空格,保持视觉对齐。 示例: ```bash # 运行训练脚本,指定数据集和输出目录 python train.py \ --dataset ./data/train.csv \ --output ./models \ --epochs 10 \ --batch-size 32 \ --lr 0.001
这份配置里,语言部分和全局配置重复了,但没关系,项目级会覆盖。重点是后面的输出规范:它强制 Codex 在每次改完代码后给你一张变更表,并且给出可执行的命令示例。对于需要频繁跑脚本的场景,这个规范能省掉大量“这个命令怎么拼”的时间。 ### 3.3 配置文件的加载顺序 Codex 读取 `AGENTS.md` 的顺序是:先读全局 `~/.codex/AGENTS.md`,再读当前工作目录及其父目录下的 `AGENTS.md`。如果多个文件都存在,后面的会追加到前面的内容之后。所以你可以把通用偏好放全局,把项目特定规范放仓库根目录。 这里有个坑:如果你在子目录里启动 Codex,它会向上查找 `AGENTS.md`,直到找到仓库根目录或者文件系统根目录。所以最好把项目级的 `AGENTS.md` 放在 Git 仓库的根目录,这样无论你在哪个子目录启动,它都能找到。 配置写完之后,不需要重启什么服务,直接新开一个 Codex 会话就会生效。下面讲怎么验证它到底有没有生效。 ## 4. 验证 AGENTS.md 是否生效:新建会话对比测试 配置写完不代表生效,得实际验证。验证方法很简单:新开一个会话,看 Codex 的回复语言和格式是否符合预期。 ### 4.1 验证语言约束 先确保全局 `AGENTS.md` 已经写好。然后在一个没有项目级 `AGENTS.md` 的目录下启动 Codex: ```bash cd /tmp codex "介绍一下什么是二分查找"

如果配置生效,它会用简体中文回复。如果还是英文,说明全局文件没被读到。这时候检查两件事:一是文件路径是否是~/.codex/AGENTS.md(注意大小写,必须是AGENTS.md,不是agents.md);二是文件内容是否有拼写错误。

你可以用cat确认文件内容:

cat ~/.codex/AGENTS.md

应该输出Always respond in Chinese-simplified。

4.2 验证项目级格式规范

进入一个放了项目级AGENTS.md的仓库,让 Codex 改一个 Python 文件。比如:

cd ~/my-project codex "在 utils.py 里加一个函数,计算两个数的最大公约数"

观察它的回复:如果配置生效,它应该在最后附上一张变更表格,并且给出执行命令示例。如果命令参数超过 4 个,还应该用反斜杠分行。

4.3 对比未放置文件时的差异

为了确认差异,你可以临时把AGENTS.md改名,再开一个新会话:

mv ~/.codex/AGENTS.md ~/.codex/AGENTS.md.bak codex "介绍一下什么是二分查找"

这时候它应该恢复英文回复。然后再改回来:

mv ~/.codex/AGENTS.md.bak ~/.codex/AGENTS.md

这个对比测试能帮你确认:生效的确实是AGENTS.md,而不是别的原因。

4.4 用 TaoToken 模型对话快速验证

如果你不想在终端里反复试,也可以直接用 TaoToken 的模型对话页面来验证提示词效果。把AGENTS.md里的指令粘贴到对话开头,观察模型是否遵守。这种方式适合快速调试提示词内容,确认没问题后再写进文件。

验证通过后,你就有了一个稳定的默认行为基线。后面遇到问题,也知道该从哪里排查。

5. 常见报错排查:401、local proxy failed、OAuth 与文件不生效

配置过程中最容易遇到的不是AGENTS.md本身的问题,而是模型接入的问题。因为如果 Codex 连模型都连不上,它根本不会去读AGENTS.md。下面按报错类型逐一排查。

5.1 401 Unauthorized

这是最常见的报错,意思是 API Key 无效或者没传上去。排查步骤:

第一,确认环境变量是否导出成功:

echo $TAOTOKEN_API_KEY

如果输出为空,说明没导出。检查你的~/.zshrc或~/.bashrc里有没有export TAOTOKEN_API_KEY="...",然后source一下。

第二,确认config.toml里的env_key和实际环境变量名一致。如果你写的是env_key = "TAOTOKEN_API_KEY",那环境变量名就必须是TAOTOKEN_API_KEY,不能写成TAOTOKEN_KEY。

第三,确认base_url写的是https://taotoken.net/api,不要多加/v1。有些工具会自动拼接路径,多写反而会 404 或 401。

5.2 local proxy failed

这个报错通常出现在 Codex 尝试通过本地代理连接时。如果你没有配置代理,但 Codex 却报这个错,检查config.toml里有没有多余的proxy配置。把无关的代理设置删掉,只保留base_url和env_key。

另外,如果你在公司网络环境下,可能需要检查是否有防火墙拦截。这种情况下,确认https://taotoken.net/api是否可达:

curl -I https://taotoken.net/api

如果返回 200 或 401,说明网络通;如果超时,说明网络有问题。

5.3 OAuth 相关报错

有些 Codex 版本会尝试 OAuth 登录流程。如果你用的是 API Key 模式,不需要 OAuth。检查config.toml里有没有auth_mode之类的字段,把它设为api_key或者直接删掉。然后确认env_key配置正确。

5.4 AGENTS.md 不生效

如果模型接入正常,但AGENTS.md就是不生效,按以下顺序排查:

第一,确认文件名是AGENTS.md,全大写。Linux 和 macOS 区分大小写,agents.md不会被识别。

第二,确认文件位置。全局文件必须在~/.codex/AGENTS.md,项目文件必须在仓库根目录。你可以用pwd确认当前目录,然后ls -la看文件是否存在。

第三,确认文件内容没有语法错误。AGENTS.md是纯 Markdown,但如果你写了奇怪的符号,可能会被忽略。先用最简单的Always respond in Chinese-simplified测试。

第四,确认 Codex 版本支持AGENTS.md。较老的版本可能用的是别的文件名。你可以用codex --version查看版本,然后对照官方文档确认。

5.5 模型 ID 写错

如果你在config.toml里写的model字段是gpt-4o,但 TaoToken 那边实际可用的模型 ID 不一样,就会报模型不存在的错误。确认模型 ID 的方法是查看 TaoToken 的文档,或者用模型对话页面测试。常见的模型 ID 包括gpt-4o、gpt-4o-mini、claude-3-5-sonnet等,具体以你账号可用的为准。

排查完这些,基本能覆盖 90% 的配置问题。剩下的就是细节调整,比如提示词写得不够明确导致模型理解偏差。

6. 把默认行为固化下来,让 Codex 真正好用

AGENTS.md这个机制看起来简单,但它解决的是一个很实际的问题:让 AI 助手记住你的偏好,而不是每次从零开始。你写一次“用中文回复”,后面所有会话都省心;你写一次输出格式规范,后面所有代码修改都自动带上变更表和命令示例。

如果你还没配 TaoToken,可以先从 API Keys 页面拿到 Key,然后按上面的config.toml配置好。接入文档里有更详细的参数说明,遇到问题可以对照排查。配好之后,用模型对话快速验证一下提示词效果,确认没问题再写进AGENTS.md。

对于长期用 Codex 做编码的场景,建议把常用的项目规范都沉淀到仓库根目录的AGENTS.md里。比如构建命令、测试命令、代码风格、提交信息格式,这些写一次,后面每次会话都自动生效。团队协作时,这个文件还能跟着仓库一起走,新人拉下来就自带规范。

如果你需要更稳定的长期编码支持,可以了解一下 Coding Plan,它适合高频使用 Codex 的场景。先把AGENTS.md配好,再结合稳定的模型接入,Codex 才能真正变成你日常编码的顺手工具。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进