我最近把 Codex 用顺手了,分享一下我是怎么把它调成适合自己工作流的

8 阅读13分钟

最近这段时间,我一直在拿 Codex CLI 当主力折腾。

刚开始其实没抱太大期待。 这类 AI 编程工具现在已经不少了,刚上手的时候,看起来也都差不多:能读代码、能改代码、能聊天、能跑命令。

但我用了一阵子之后,感觉慢慢变了。

它最打动我的地方,不是“默认就有多强”,而是:

这东西挺值得调,而且越调越顺手。

我后来越来越觉得,Codex 有点像编辑器、终端、IDE 这类工具。 默认状态下当然也能用,但真正好不好用,往往取决于你有没有把它调成适合自己的样子。

所以这篇我不想按“产品介绍”的方式来写, 我更想聊聊我自己的实际使用过程:

  • 我为什么开始认真配 Codex
  • 我是按什么思路一点点把它调顺手的
  • 哪些配置我觉得是真的有用
  • 我现在最常用的几个工作流是什么

如果你也在用 Codex,或者刚装上但还没找到感觉,可能会有点参考价值。


我为什么会从“随便试试”,变成“认真配置”

一开始我也是默认安装、默认使用, 想着先看看它到底能干成什么样。

结果用着用着,我发现有几类问题特别影响体验,而且还挺高频。

比如:

  • 我明明只是想让它分析一下,它直接开始改代码
  • 我让它在原文件上修,它转头给我新建了一个文件
  • 我在 Windows 上用,它却老按 Linux 命令那套来想
  • 有些它其实没确认的事,会直接猜,而且语气还挺笃定

这些问题单看都不算致命, 但如果你每天都在用,它们会非常消耗耐心。

后来我慢慢意识到一件事:

AI 工具不好用,很多时候不是因为它不够聪明,而是因为你没先把规矩立清楚。

也就是说,问题不全在模型本身, 而在于协作方式没有被定义好。

从那之后,我就开始认真折腾配置了。 思路也很简单:

先立规则,再做模板,最后把高频动作封装成工作流。

这基本就是我后面所有配置的出发点。


我的整体思路:先立规矩,再做工作流

我现在回头看,真正让我觉得 Codex “开始像个搭子” 的,不是某一个功能突然特别强,而是我把它分成了三层来处理:

第一层:全局规则

先把最基础的行为边界定下来。 比如说话语言、做事方式、环境习惯、哪些事能做、哪些事不能乱做。

这一层我主要放在 AGENTS.md 里。

第二层:高频 Prompt

把一些会反复出现、但又比较明确的任务,做成短小的模板。 这样以后不用每次重新组织语言。

这一层我放在 prompts/ 里。

第三层:可复用 Skill

把那些带步骤、有流程、能复用的事情,直接封装成工作流。 这样就不只是“问它一句”,而是让它按一套固定方式协作。

这一层我放在 skills/ 里。

这个分层对我来说很重要。 因为如果一上来就堆很多 Prompt、很多招式,最后往往会越来越乱。 先把基础规则立住,后面的东西才会越配越顺。


我的配置基本都放在 .codex/ 下面

Codex 的配置目录挺集中,基本都在这里:

  • macOS / Linux:~/.codex/
  • Windows:C:\Users\你的用户名\.codex\

我现在大概是这么组织的:

.codex/
├── AGENTS.md
├── AGENTS.override.md
├── prompts/
│   ├── check-fix.md
│   └── ...
├── skills/
│   ├── plan/
│   │   └── SKILL.md
│   ├── play/
│   │   └── SKILL.md
│   ├── mindmap/
│   │   └── SKILL.md
│   └── prompt/
│       └── SKILL.md
└── sessions/

如果只说“最值得花时间写”的文件, 那一定是 AGENTS.md

因为在我这套用法里,它不是普通配置文件, 更像是一份 AI 协作守则


先说最核心的:我怎么写 AGENTS.md

我现在特别认同一句话:

别总想着临场纠正,能提前写进规则里的,就提前写进去。

因为很多要求如果你每天都要重复说一遍,那本身就是一种浪费。

所以我会把一些高频要求直接固化进全局规则里。 大体上我会分成四类:语言、行为底线、环境约束、风格习惯。


第一类:先把语言规则钉死

这个真的特别基础,但很有必要。

我自己是习惯看中文解释的, 但命令、日志、报错、代码标识符这些内容,我又希望它保留原始语言。 所以我直接写死成这样:

- Always reply in Chinese.
- 除非用户明确要求英文,否则所有回复使用简体中文。
- 代码标识符、命令、日志、报错信息保持原始语言;其余解释用中文。

这条看起来简单, 但长期体验提升很明显。

因为它解决的是那种“每次都不难提醒,但每天提醒真的很烦”的问题。


第二类:把基础行为底线立住

这一块是我后面最看重的部分。 因为很多协作上的不适感,其实都来自这里。

我大概会放这些规则:

- 维持质量与一致性,彻底执行自动检查
- 事实确认,不将猜测当作事实
- 优先编辑现有文件,而不是新建文件
- 先确认任务性质,如果只是计划或文档,不要擅自动代码

这几句不长,但它们几乎都对应了我之前踩过的坑。

不要把猜测当事实

这是我最在意的一条。 AI 最危险的时候,不是它说“我不确定”, 而是它不确定但还说得跟真的一样。

优先改现有文件,而不是新建文件

这个完全是被折磨出来的。 很多改动明明应该落在原来的上下文里,它偏偏喜欢另起一个文件。 短期看像是“交付得快”,长期看就是制造噪音。

计划类任务不要直接动代码

有时候我只是想让它帮我理一下思路, 结果它默认我是在下达执行命令,直接就开始改。 所以后来我干脆把边界写清楚。

这类规则最大的意义,就是让它先学会“别乱动”。


第三类:我在 Windows 上用,所以把环境规则也写进去了

这一块是典型的“你不写,它就容易按默认环境想当然”。

Codex 有时候会天然带着 Linux 命令思维, 但我平时主要在 Windows 上工作。 所以我后来直接把一些工具映射写清楚了:

| 操作     | 使用工具 | 禁止          |
| -------- | -------- | ------------- |
| 读文件   | Read     | cat/head/tail |
| 搜文件   | Glob     | find/ls       |
| 搜内容   | Grep     | grep/rg       |
| 编辑     | Edit     | sed/awk       |
| 创建     | Write    | echo >        |
| 系统命令 | Bash     | PowerShell    |

你可以把它理解成一句话:

别按错环境习惯。

这东西不写的时候,问题不是每次都爆炸, 而是偶尔来一次就很烦。 写了之后,至少能把很多莫名其妙的翻车挡在前面。


第四类:我还给它加了一点“风格设定”

这个不是必须的, 但我自己用下来,确实会影响手感。

我不太喜欢那种过于标准、过于圆滑的 AI 语气。 很多时候它看起来很礼貌、很完整,但就是没有判断力,也没有那种“真在跟你一起把问题想清楚”的感觉。

所以我给它加了一点更像技术搭子的风格,大概是这种方向:

  • 技术要求高
  • 不会无脑附和
  • 看见问题会直接指出来
  • 说话可以自然一点,别太客服腔

我甚至给它加了点“东北老哥”味儿。 不是为了整活,主要是我想让它更像一个有经验、有判断的同事,而不是一个永远只会顺着说的工具。

当然,这块纯看个人习惯。 有人喜欢严肃,有人喜欢极简,我只是分享我自己的偏好。


把基础规则立住之后,我才开始做 Prompt 和 Skill

我后来发现,真正提升效率的,不只是“它更听话了”, 而是我把很多重复出现的动作做成了模板。

因为开发里有很多事情,你不是不会做, 而是每次重新组织一遍思路很费劲。

所以我会这么分:

  • Prompt:解决明确、单点、高频的问题
  • Skill:封装带步骤、可复用的工作流

这个区分挺重要。 我一开始是什么都往 Prompt 里塞,后面才发现复杂流程还是 Skill 更合适。


我最常用的 Prompt:修完 bug 之后,再看一眼有没有带出副作用

这个 Prompt 叫:

/check-fix

它的出发点很简单, 因为我之前真的遇到过很多次这种情况:

一个 bug 当下修好了,但后面发现把别的地方也带崩了。

不是代码不会写, 而是影响范围没看全。

所以我后来专门做了一个检查模板,让它在修完之后帮我做一轮结构化复盘。 重点看这些东西:

  • 改过的函数有哪些调用方
  • 参数签名有没有变
  • 返回值结构是不是还兼容
  • 数据结构变化会不会影响旧逻辑
  • 上下游调用链有没有连锁反应

这个 Prompt 我现在基本已经形成习惯了。 只要是稍微涉及核心逻辑的改动,我大概率都会顺手跑一下。

它不一定能把所有问题一次全找出来, 但它很适合做“第二眼检查”。 很多本来容易被我忽略的方向,至少它会提醒我去看。


Skill 里,我最依赖的是 $plan

如果只选一个我现在最常用的 Skill, 那大概率就是它。

因为我现在非常确定一件事:

复杂任务最怕的,不是难,而是边想边改。

当下看起来很快, 但特别容易返工,而且很容易改着改着就失去全局感。

所以我给自己做了一个规划模式:

$plan 实现用户认证功能

它接到之后,不是直接开始写代码, 而是先去做这几件事:

  • 看现有项目结构
  • 理解需求
  • 分析影响范围
  • 拆任务步骤
  • 生成一份本地计划文档

这里我定了一条特别重要的规则:

计划阶段只读不写。

也就是说,在 $plan 阶段,它不能直接改源代码。 它只能分析、整理、产出计划。

等我确认计划没问题了,再执行:

$do-plan

这个工作流对我最大的帮助,不是“显得流程化”, 而是真的能降低返工率。

因为很多时候浪费时间的不是执行, 而是你在错误方向上执行了很久。


第二个很实用的 Skill,是 $play

这个主要是给 Playwright 自动化准备的。

比如我会直接这样用:

$play http://localhost:3000/admin

然后它会去:

  • 打开页面
  • 检查页面状态
  • 如果需要登录,就继续处理登录流程
  • 中间如果有异常,直接停下来告诉我

这个功能我很喜欢的一点是,它接管了不少高频但机械的动作。

尤其本地联调的时候, 你会不断地:

  • 打开页面
  • 重新进页面
  • 处理登录
  • 验证页面有没有按预期工作

这些事本身不难, 但一天做很多次就真的挺烦。

所以我现在能交给它的,就尽量交给它。


再往后,是我很喜欢的 $mindmap

这个 Skill 比较像“整理思路加速器”。

比如我在做技术调研, 脑子里已经有一个主题了,但还没有成型的结构, 我就会直接扔一句:

$mindmap React 状态管理方案对比

然后它会先组织出结构化内容, 再用 markmap 生成思维导图, 最后直接打开预览。

它的价值不在于“技术上有多复杂”, 而在于它把我从“从零开始整理”的阻力里拉了出来。

以前很多时候不是我不会整理, 而是我懒得从空白页面开始搭结构。 现在变成“先说,再整理”,整个过程就顺很多。


最后一个我会留着长期用的 Skill,是 $prompt

这个更偏“提示词优化器”。

有些 Prompt 不是完全没用, 而是很不稳定:今天能跑,明天跑偏;这个任务有效,换个任务就出问题。

所以我给自己做了个 $prompt,专门拿来分析这些内容:

  • 这段 Prompt 的目标够不够清晰
  • 结构有没有问题
  • 约束是不是太松
  • 哪些地方容易让模型误解
  • 怎么改会更稳
  • 改完之后怎么做对比测试

它不属于我那种“每天必用”的工具, 但只要我开始认真打磨一个 Prompt,它就很有价值。

因为 Prompt 最烦的从来不是“写不出来”, 而是“总感觉差一点,但又不知道差在哪”。


这些配置最后给我带来的,不只是“更快”,而是整个协作方式变了

如果一定要总结,我觉得变化主要在两个层面。

第一层:很多重复性脑力消耗被接管了

比如:

  • 改完 bug,不再完全靠自己硬扫影响范围
  • 碰到复杂任务,不再直接冲进去改
  • 本地页面验证,不想再手动一遍遍点
  • 做技术调研时,不再总卡在“脑子里有,但懒得整理”

这些都不是大事, 但它们往往最消耗注意力。

第二层:我和 AI 的关系变了

以前更像什么?

更像我在旁边一直盯着它:

  • 提醒它说中文
  • 提醒它别乱猜
  • 提醒它别乱建文件
  • 提醒它先分析再动手
  • 提醒它检查影响范围

现在更像什么?

更像我先把规则和流程搭好, 然后让它按这套方式来协作。

这两种状态差别挺大的。 前者是实时遥控,后者更像是在培养一个固定搭子。


最后说点真实感受

我现在对 Codex 的看法其实挺简单的:

它不是那种装上就立刻封神的工具,但很适合愿意打磨自己工作流的人。

如果你只是默认安装、默认用法,那它当然也能干活。 但如果你愿意多往前走一步:

  • 写好全局规则
  • 把高频任务做成 Prompt
  • 把复杂动作做成 Skill
  • 让它适应你的环境、习惯和边界

那它带来的顺手感会越来越明显。

至少对我来说,它现在已经不是一个“偶尔拿来玩玩”的东西了, 而是真的进了我的日常工作流。

这也是我为什么想专门把这套东西整理出来。 不一定是标准答案,但至少是我自己一路踩坑、一路调整之后,磨出来的一版“顺手配置”。

如果你也喜欢把工具链慢慢打磨到顺手, 那 Codex 这套东西其实挺值得玩。


附件

文里提到的配置文件我都一起打包了,放在下面,感兴趣可以直接点开看:

不过还是那句话:

这套配置只是我自己磨出来的“顺手版”,不是标准答案。

拿去直接用当然可以, 但最好还是按你自己的习惯改一遍。 因为 AI 工具真正好用的时候,一定不是它像别人,而是它开始像你。