Post

像高手一样使用 Codex

如何把 Codex 放进一个可控、可验证、可复用、可累积迭代的 AI 工程工作流里?

像高手一样使用 Codex

不要把 Codex 只当成“代码自动补全工具”,而要把它当成一个有终端权限的初中级软件工程队友。

你的任务不是亲自写每一行代码,而是:

定义任务、限制范围、检查 diff、要求验证、决定是否合并。

真正的高手不是让 Codex “随便写代码”,而是为 Codex 建立一套稳定的自主工作系统。

如何把 Codex 放进一个可控、可验证、可复用、可累积迭代的 AI 工程工作流里?

我们先来看看一些高级技巧:

Codex 自主运行的 4 个高级技巧

1. 手机监督:让 Codex 在你离开电脑后继续推进

核心玩法是:你在电脑上运行 Codex App,然后用手机上的 ChatGPT App 远程启动、查看、批准、调整 Codex 任务。

Codex mobile 已经在 iOS 和 Android 的 ChatGPT App 中预览推出,可以在手机上 start、steer、approve、check in,让 Codex 继续在 laptop、Mac mini 或 remote computer 上工作。

这件事听起来像小功能,但实际改变很大。

过去,开发者必须坐在电脑前,盯着命令行和编辑器。现在,Codex 可以在机器上继续工作,而你只需要在关键节点做判断。

一个真实场景可能是:

你出门前让 Codex 修一个失败测试。 路上用手机查看进度。 Codex 请求安装新依赖。 你拒绝,并补充一句:

1
不要新增依赖。请先检查项目里是否已有类似工具函数,只做最小修改。

过一会儿,你再次打开手机。Codex 已经完成修改,跑了相关测试,并汇报了剩余风险。

这不是“用手机写代码”。

这是用手机调度一个正在运行的工程代理。


2. Worktrees:让多个 Codex 任务并行运行

近期 Codex 相关视频和官方材料都在强调 app/worktree/parallel agents。OpenAI 对 Codex App 的介绍中明确提到,它是一个管理多个 agents 的 command center,支持多个线程并行、内置 worktrees,避免多个 agent 修改同一 repo 时互相冲突。

Codex app 很重要的能力,是可以通过 worktrees 隔离不同任务。

这意味着你可以让多个 Codex 线程同时探索不同方向,而不必把所有改动混在同一个工作区里。

比如:

  • 一个线程修 bug。
  • 一个线程补测试。
  • 一个线程尝试重构方案。
  • 一个线程只做代码审查。

它们可以各自在独立 worktree 中运行,互不污染。你最后只需要比较它们的 diff、测试结果和风险说明,再决定采用哪个方案。

这对工程实践很关键。

并行不是为了让 Codex 同时乱改,而是为了让探索过程变得可隔离、可比较、可回退。

过去,一个开发者通常一次只能认真推进一个方向。现在,你可以让 Codex 同时生成几个候选路径,然后由人来判断和选择。

这体现了 Codex app 的另一个核心优势:它不只是帮你写代码,而是在扩展你的工程探索能力。


3. AGENTS.md 和 Skills:让 Codex 的行为可以被沉淀

如果每次使用 Codex,你都要重复提醒它:

不要新增依赖。不要大规模重构。修改行为必须补测试。最终要说明风险。遵循项目已有风格。

那说明这些规则不应该只写在 prompt 里,而应该沉淀下来。

AGENTS.md 可以看成项目里的“AI 协作说明书”。它告诉 Codex,这个项目如何安装、如何测试、有哪些代码风格、哪些事情不能做、完成任务前必须汇报什么。

一个简单版本可以这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# AGENTS.md

## 项目原则
- 优先最小修改,不做无关重构。
- 不新增依赖,除非明确解释原因。
- 不修改 public API,除非任务明确要求。
- 行为变更必须配测试。

## 常用命令
- 安装:pnpm install
- 测试:pnpm test
- 类型检查:pnpm typecheck
- Lint:pnpm lint

## Codex 完成任务前必须说明
- 修改了哪些文件;
- 运行了哪些测试;
- 哪些风险没有验证;
- 是否有需要人工确认的地方。

Skill 是一组 instructions、resources 和 optional scripts,让 Codex 能稳定执行某个任务流。

Skills 更像固定任务流程。比如 bugfix、PR review、release note、frontend polish,都可以做成 skill。

这类用法很适合你未来做自己的 AI coding workflow。比如你可以做几个固定 skills:

1
2
3
4
5
6
- pr-review:按你的工程审查标准检查 PR;
- regression-test-writer:根据 bug 自动补 regression test;
- frontend-polish:检查 UI 层级、间距、响应式和 accessibility;
- release-note-writer:根据 git diff 生成 release notes;
- architecture-reader:阅读陌生 repo 并生成架构地图;
- ai-course-demo-builder:把教学 demo 自动整理成可运行项目。

一个很实用的 skill 描述可以这样写:

1
2
3
4
5
6
7
8
9
10
11
12
---
name: minimal-bugfix
description: 用于修复生产 bug,要求最小 diff、可复现、可验证。
---

工作流程:
1. 先复现 bug,不要急着改代码。
2. 找到最小根因路径。
3. 只修改必要文件。
4. 添加 regression test。
5. 运行相关测试。
6. 最后输出 root cause、modified files、tests run、remaining risk。

AGENTS.md 解决“这个项目的一般规则”。 Skills 解决“这类任务应该怎么做”。

这让 Codex 的使用不再是一次性的。你今天纠正过的错误,明天可以变成规则;你今天验证过的流程,明天可以变成 skill。

一个自主运行系统最重要的特征,不只是会执行,而是能被约束、被训练、被持续改进。


4. Tests、Browser 和 Hooks:让自主运行保持可验证、可控

自主运行不等于放任运行。

Codex 越能自动推进任务,越需要验证和护栏。

测试是第一层验证。你应该要求 Codex 修改后运行相关测试、lint 或 typecheck,并清楚说明哪些已经验证,哪些没有验证。

对于前端任务,测试还不够。页面是否真的正常,交互是否顺畅,布局是否错位,需要打开真实页面看。Codex 可以通过 browser 查看本地页面,观察结果,再进行修复。

例如:

1
2
3
4
5
6
7
8
9
10
使用 browser 打开 http://localhost:3000/dashboard。
请不要先改代码。

先完成:
1. 观察当前页面布局问题;
2. 截图并描述视觉 bug;
3. 找到最可能相关的组件;
4. 提出最小修复计划。

确认后再修改。

Hooks 则是工程护栏。你可以把一些规则自动化:

实际玩法包括:

1
2
3
4
5
6
- 每次 Codex 修改文件后自动跑 lint;
- 每次执行 shell command 前检查是否危险;
- 如果修改 package.json,自动要求人工批准;
- 如果改动超过 N 个文件,自动停止并要求总结;
- 每次任务结束自动生成 diff summary;
- 每次通过测试后自动生成 commit message。

Codex hooks、remote SSH、mobile control 组合后,Codex 已经像一个“工程操作层” 。hooks 是 Codex 的 extensibility framework,可以把你自己的脚本注入 agentic loop。

这三项能力很重要,因为它回答了一个核心问题:

如果 Codex 可以自主运行,如何保证它不会越界?

答案不是盲目信任,而是把它放进可验证、可中断、可审查的流程里。

Codex 的成熟用法,不是让它随便跑,而是让它在边界内自主推进。

接下来的部分,推荐给新手。如果你从未使用过 Codex,可以优先了解它的基础用法。

用好 Codex 的 9 个要点

1. 选择合适的 Codex 使用场景

如果你正在 IDE 里处理某个具体文件,适合用 Codex IDE extension。它能理解你当前打开的文件、选中的代码和局部上下文。

如果任务需要运行命令、执行测试、检查项目结构、修改多个文件,适合用 Codex CLI。它更像一个可以在本地项目中工作的 coding agent。

如果你想把一个较大的任务交给 Codex,让它在云端环境里完成,并最终形成一个 PR,可以使用 Codex web / cloud

如果你同时管理多个开发任务,可以使用 Codex app,把不同任务拆成不同 thread 或 worktree 来处理。

简单说:

1
2
3
4
小范围代码修改:IDE extension
本地开发与调试:CLI
较大任务与 PR:Codex cloud
多任务并行管理:Codex app

2. 用四个字段写 Prompt

好的 Codex prompt 通常包含四个部分:

目标、上下文、约束、完成标准。

模板如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
目标:
实现 [具体改动]。

上下文:
相关文件:[文件路径]
当前行为:[现在发生了什么]
期望行为:[应该发生什么]
错误 / 日志 / 复现步骤:[粘贴具体信息]

约束:
- 遵循现有架构。
- 不要随意添加新依赖。
- 保持 public API 兼容。
- 控制 diff 范围。
- 添加或更新测试。

完成标准:
- [指定测试命令] 通过。
- [指定行为] 被验证。
- 解释最终改动和潜在取舍。

差的 prompt:

1
Fix the auth bug.

高手 prompt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
目标:
修复 session 过期后登录页面反复重定向的问题。

上下文:
相关文件:
- src/auth/session.ts
- src/routes/login.tsx
- src/middleware/auth.ts

复现步骤:
1. 登录。
2. 删除 session cookie。
3. 访问 /dashboard。

当前结果:
页面在 /login 和 /dashboard 之间循环重定向。

期望结果:
只重定向一次到 /login?expired=1。

约束:
- 不要改变 OAuth provider flow。
- 保持现有 middleware 结构。
- 添加一个 regression test。

完成标准:
- npm test -- auth 通过。
- npm run lint 通过。
- 先总结 root cause,再展示 diff。

3. 把 AGENTS.md 当成项目里的“AI 协作宪法”

不要每次都重复告诉 Codex 项目规则。把稳定规则写进 AGENTS.md

它可以包括:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# AGENTS.md

## 项目概览
这是一个 [Next.js / Python / CLI / etc.] 项目。请保持改动小而清晰,并遵循现有模式。

## 常用命令
- 安装依赖:pnpm install
- 启动开发:pnpm dev
- 测试:pnpm test
- 类型检查:pnpm typecheck
- Lint:pnpm lint

## 工程规则
- 优先使用已有工具函数,不要轻易新增抽象。
- 不要随意添加生产依赖;如果必须添加,需要解释原因。
- 除非任务明确要求 breaking change,否则保持 public API 兼容。
- 行为变更必须添加或更新测试。
- 结束前先运行最相关的窄范围测试,再视情况运行更广泛检查。

## Review 要求
最终回复前,请说明:
- 修改了哪些文件;
- 运行了哪些测试;
- 还有哪些风险或未验证区域。

高手做法是: Codex 同一个错误犯两次,就把规则写进 AGENTS.md

例如:

1
2
3
4
- 不要重写整个组件,只做最小必要修改。
- 不要修改数据库 schema,除非任务明确要求。
- 不要添加全局状态管理库。
- 所有日期处理必须使用项目已有的 date utils。

这会让 Codex 越用越贴合你的项目。


4. 复杂任务先让 Codex 制定计划,不要直接改代码

对于复杂、模糊、风险较大的任务,第一步不要让 Codex 写代码,而是让它先读项目、分析问题、提出计划。

可以这样说:

1
2
3
4
5
6
7
8
9
10
先不要编辑代码。请先检查相关文件并提出计划。

计划中需要包含:
1. 可能的 root cause;
2. 需要修改的文件;
3. 测试策略;
4. 风险;
5. 最小实现路径。

等我确认后再开始编码。

确认计划后,再说:

1
2
按照最小安全实现路径继续。请保持 diff 聚焦。
运行相关测试。如果测试失败,请先尝试定位并修复一次,然后再交还给我。

这可以避免 Codex 一上来就大改项目,甚至重写半个 repo。


5. 强制验证,而不是只让它生成代码

Codex 最有价值的地方不是“生成代码”,而是它可以:

1
2
3
4
5
修改代码
运行测试
观察错误
继续修复
解释 diff

所以 prompt 里要明确要求验证:

1
2
3
4
5
6
7
8
9
10
实现后请运行:
1. 与本次改动最相关的窄范围测试;
2. 相关 typecheck / lint;
3. 对自己的 diff 做一次 self-review。

最终回复中请包含:
- 改了什么;
- 运行了哪些测试;
- 还有什么风险;
- 哪些地方是你有意没有改的。

这一步非常关键。 不经过测试的 Codex 输出,只能算“草稿代码”。


6. 把任务拆成适合 agent 的粒度

不要轻易说:

1
Build the whole app.

除非你只是想快速做一个原型。

生产级任务应该拆小:

1
2
3
4
5
6
任务 1:阅读当前架构并提出计划。
任务 2:只实现 data model。
任务 3:只实现 API route。
任务 4:只实现 UI。
任务 5:添加测试。
任务 6:审查完整 diff,找回归风险。

更好的拆法是按边界拆:

1
2
3
4
5
6
- 数据层
- API 层
- UI 层
- 测试
- 文档
- Review

不要让多个 Codex 线程同时修改同一批文件。 并行可以用,但要用于互不冲突的任务。


7. 并行 agent 适合做调查,不适合同时乱改

并行 Codex 很适合做 read-only investigation。

例如:

1
2
3
4
5
6
7
8
9
请启动多个只读 agent,分别调查:

1. 安全风险;
2. 性能瓶颈;
3. flaky tests;
4. API 兼容性;
5. 前端可访问性。

不要修改文件。等所有 agent 返回后,汇总发现。

这种用法很强,因为它让多个 agent 从不同角度看同一份代码。

但不要这样用:

1
2
3
4
Agent A 改 auth
Agent B 改 middleware
Agent C 改 routing
Agent D 改 tests

如果这些任务都碰同一批文件,很容易互相覆盖、制造冲突。


8. 把重复工作沉淀成 Skills

如果你发现自己经常让 Codex 做同一类事情,就应该把它做成 Skill。

适合沉淀为 Skill 的工作包括:

1
2
3
4
5
6
7
- PR review checklist
- 前端设计检查
- bug 复现流程
- 数据分析报告流程
- release note 生成
- migration checklist
- 测试生成流程

一个简单的 PR Review Skill 可以这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
---
name: pr-review
description: 用于审查 pull request,发现 bug、回归、缺失测试和可维护性风险。
---

Review 优先级:
1. 正确性 bug;
2. 安全 / 隐私问题;
3. 缺失测试;
4. 行为回归;
5. 可维护性问题。

输出要求:
- 先列发现的问题,按严重程度排序。
- 包含文件路径和行号。
- 如果没有重大问题,要明确说明,并列出剩余风险。

这一步的意义是: 你不是每次重新 prompt,而是在构建自己的 AI 工程工作流资产。


9. 权限要收紧

不要在任何项目里都给 Codex 最大权限。

默认建议:

1
2
3
4
5
6
7
8
9
10
11
12
13
允许:
- 读取 repo 内文件;
- 修改当前 working tree;
- 运行安全的本地测试命令。

需要确认:
- 安装依赖;
- 访问网络;
- 删除文件;
- 执行 migration;
- 访问密钥;
- 修改生产数据;
- 执行 destructive command。

Codex 越强,越要有权限边界。

高手不是“完全信任 agent”,而是给它足够空间工作,同时不给它机会造成不可逆损害。

小结:一个 Codex 工作流框架

把上面的能力收束起来,一个成熟的 Codex 工作流大概是这样:

1
2
3
4
5
6
7
8
9
1. 给 Codex 一个明确任务,而不是一句模糊请求。
2. 让它先读代码、提出计划,不要立刻修改。
3. 人类确认目标、范围和风险边界。
4. Codex 在独立 thread 或 worktree 中执行。
5. Codex 修改代码、运行测试、根据结果继续调整。
6. 必要时用 browser 检查真实页面。
7. Codex 输出 diff、测试结果和剩余风险。
8. 人类 review 后决定是否合并。
9. 把重复经验沉淀到 AGENTS.md、Skills 或 Hooks。

这套流程的核心,是把 Codex 变成一个受控的自主执行系统。

  • 它可以自己推进,但不能自己决定边界。
  • 它可以自己修改,但必须接受验证。
  • 它可以自己总结,但最终要接受人的 review。
  • 它可以越用越顺手,但前提是你不断把经验沉淀回系统。

Codex 的真正价值,是让开发者从执行者变成调度者。

开发者的判断会变得更重要。

所以,像高手一样使用 Codex,不是把代码完全交出去,而是把 Codex 放进自己的工程系统里。

  • 你负责目标和判断。Codex 负责执行和反馈。
  • 你负责建立边界。Codex 在边界内自主运行。
  • 你负责沉淀规则。Codex 在规则中持续变好。

现在,人人都是工程师了,只需要你会“好好说话”,只要你能与 AI 有效沟通。

This post is licensed under CC BY 4.0 by the author.