ORANGE BOOK · CODEX

第七章 与 Codex 对话的艺术

7.1 为什么"会问"比"问什么"更重要

新手最常掉的坑是:以为自己跟 Codex 的对话失败了,是 Codex 不够智能。

不是。90% 的"AI 不好用",本质是"问得不够好"

让我用一个例子说明。同一个需求,两种问法,结果天差地别。

糟糕的问法:

帮我整理一下文件

Codex 一脸懵:哪个文件?什么意思的"整理"?整理到哪儿?什么标准?它要么反问你,要么自己脑补一个执行——结果大概率不是你想要的。

好的问法:

读取 ~/Downloads/ 里所有 PDF 文件,
按"账单 / 合同 / 学习资料 / 其他"四类分到对应子文件夹。
分类依据:文件名 + 文件内容前 500 字。
分不清的归到"其他",并在 unclassified.txt 里列出文件名让我手动确认。
完成后给我一份分类报告。

Codex 一看就明白:明确的目标、明确的输入、明确的分类规则、明确的兜底方案、明确的输出。它会高效执行,结果接近你的期望。

这就是"对话的艺术"。

7.2 四要素法

OpenAI 官方文档总结过一个 prompt 框架,叫"四要素法"。这是这本书最值得你抄下来的内容之一。

四要素

要素 含义 例子
Goal(目标) 你想要它做什么 / 想要的结果 "整理我的下载文件夹"
Context(上下文) 相关的文件、背景信息、历史 "里面主要是 PDF 和图片,混着账单和学习资料"
Constraints(约束) 限制、规范、不能做的事 "不要删除任何文件;图片不要动"
Done When(完成标准) 怎么算"完成了" "每个文件有归属、生成报告、unclassified.txt 列出疑难"

套用模板

[目标]
[上下文]
[约束]
[完成标准]

试一下:

[目标]
帮我整理 ~/Downloads/ 里的 PDF 文件,按用途分类。

[上下文]
里面大概有 200 个 PDF,混着账单、合同、电子书、PPT 讲义。
我用 macOS,文件都是 2024 年以来下载的。

[约束]
- 不要删除任何文件,只移动到子文件夹
- 子文件夹用中文名:账单、合同、学习资料、其他
- 移动前先检查目标位置是否有同名文件,有就跳过

[完成标准]
- 所有 PDF 都被移动到了某个子文件夹
- 生成 classification_report.md,包含每个文件的归属和理由
- unclassified.txt 列出所有归到"其他"的文件

这种 prompt 看起来啰嗦,但 Codex 看完一目了然,几乎不会出岔子。

7.3 什么时候要拆任务

不是所有任务都该一次性塞给 Codex。下面三种情况,强烈建议拆开

情况 1:步骤多于 5 步的任务

比如"做一个完整的网站"——拆成"先设计页面结构 → 再做首页 → 再做关于页 → 再做联系表单 → 最后部署"。每步独立给 Codex 做、审核、再下一步。

情况 2:依赖前一步结果的任务

比如"先抓数据,再分析数据"——必须先确认抓到的数据格式对,再让它去分析。否则一旦第一步错了,后面全乱。

情况 3:第一次做的复杂任务

比如"用 Codex 做一个微信公众号自动回复机器人"——你自己都不确定步骤,让 Codex 一次做完风险太大。先让它列计划,你看,调整,再让它一步步执行。

让 Codex 自己拆任务

懒人技巧:让它自己拆

我想做一个家庭账本网页,让我老婆和我都能用。
你先不要写代码,先列一个分阶段的计划,
每个阶段做什么、产出什么。
我看完确认后,我们再一起一步步做。

它会列一份清单,你审核,然后说:

好的,先做第一阶段:搭建基础页面框架。

这样既保证方向不偏,又把大任务拆成可控的小任务。

7.4 何时让 Codex 先列计划

OpenAI 的 Codex 内置了 "Plan Mode"(计划模式),适用场景:

  • 任务复杂、步骤多
  • 你自己也不太清楚怎么做
  • 涉及多个文件 / 模块的修改
  • 风险高,不容许试错

怎么触发 Plan Mode

桌面版有一个按钮叫 "Plan",点了之后 Codex 会先出方案再执行。

CLI 版可以直接说:

先制定一个计划,我审核后再执行。

或者用斜杠命令:

/plan

Plan Mode 的输出长什么样

Codex 会给你一份结构化的计划:

# 任务:家庭账本网页

## 阶段 1:需求确认(10 分钟)
- 询问:是否需要登录?
- 询问:数据存哪里(本地还是云端)?
- 询问:是否需要月度报表?

## 阶段 2:项目搭建(30 分钟)
- 用 Vite + React + Tailwind 搭骨架
- 配置 ESLint、Prettier
- 创建基础目录结构

## 阶段 3:核心功能(2 小时)
- 添加交易记录表单
- 交易列表展示
- 月度汇总

## 阶段 4:数据持久化(30 分钟)
- 用 LocalStorage 实现
- 添加导入/导出 JSON 功能

## 阶段 5:UI 优化与测试(1 小时)
- 响应式布局
- 在 Chrome、Safari、移动端测试

## 风险点
- 移动端体验需要单独适配
- 多人共用需要登录系统(暂未包含)

你审核:

阶段 1 的两个问题我先回答你:暂时不需要登录,数据存本地够了。 报表先不要月度的,要按"分类"和"时间范围"两种维度。

然后让它执行:

按调整后的计划,开始阶段 2。

7.5 上下文:让 Codex"看见"它需要看见的

Codex 不是全知全能的——它只能基于你给它的"上下文"做判断。上下文不够,它就猜;猜得不准,结果就崩。

提供上下文的几种方式

方式 1:直接说

我用的是 Mac,Python 版本 3.12,已经装了 pandas 和 numpy。

方式 2:让它读文件

读一下 README.md 了解项目背景,再开始。

方式 3:让它先扫描目录

先 ls 看一下当前目录有什么,再决定怎么做。

方式 4:贴报错或截图

我跑你之前写的脚本,报这个错(贴 traceback)。

方式 5:用 AGENTS.md 持久化上下文(第十章详讲)

把项目的常用上下文写到 AGENTS.md 里,每次会话自动加载。

上下文也不是越多越好

塞太多上下文,反而让 Codex 抓不住重点。原则是:

  • 必要的,全说——技术栈、版本、目录结构
  • 可有可无的,少说——历史曲折、个人感受
  • 能让它自己读的,让它读——不要把整个文件粘贴到对话框,让它读文件

7.6 图片输入:截图比描述更准

人靠语言描述很啰嗦,但截图一目了然。Codex 桌面版和 CLI 都支持图片输入。

桌面版

直接拖图片到对话框(macOS 要按 Shift),或者粘贴剪贴板里的截图。

CLI

codex -i screenshot.png "看一下这个报错怎么修"

或者在交互模式里:

> 我截了图,路径是 ~/Desktop/error.png,看一下

截图的几种典型用法

用法 1:终端报错

跑了你给的命令报错了,截图给你看,怎么改?

Codex 直接读屏幕里的报错文字,不用你手抄。

用法 2:UI 设计参考

我想做的页面参考这张图(design.png),帮我用 React + Tailwind 实现。

它能识别布局、颜色、字体、间距。

用法 3:数据图表识别

这是一份柱状图截图(chart.png),把数据提取成 CSV。

它能 OCR 出图里的数字。

用法 4:手写笔记数字化

我的会议笔记是手写的(notes.jpg),整理成结构化文档。

它能识别中文手写体。

7.7 斜杠命令:会用的人比不会用的快 3 倍

Codex CLI 和桌面版都支持"斜杠命令"——以 / 开头的快捷指令。掌握十来个,效率翻倍。

高频斜杠命令清单

命令 作用 何时用
/new 开新会话 切换主题时
/model 切换模型 简单任务用快的,难任务用强的
/approvals 切换权限模式 第八章详讲
/memory 查看 / 编辑长期记忆 第九章详讲
/resume 恢复上次会话 关掉了想继续
/plan 强制进入计划模式 复杂任务先规划
/clear 清屏 屏幕乱了
/exit 退出 不用了
/help 显示所有命令 忘了用啥
/agents 查看 / 编辑 AGENTS.md 第十章详讲
/skills 列出可用的 Skills 第十一章详讲

/model 怎么选

Codex 提供多个模型,常见的:

模型 特点 适用
GPT-5.4 通用最强、慢一点 复杂任务、需要推理
GPT-5.4 Medium 平衡 大多数日常任务
GPT-5.4 Fast 简单问答、补全
GPT-5.3-Codex 专门优化代码 写代码、改 bug
GPT-5.3-Codex High 深度推理代码 大重构、复杂调试

简单建议:

  • 日常用 GPT-5.4 Medium
  • 写代码切 GPT-5.3-Codex
  • 卡壳了用 High(注意有限额)

7.8 三个让回答质量提升的小技巧

技巧 1:要求"先解释,再执行"

你打算怎么做这件事?先告诉我思路,我同意了再动手。

这一招避免它跑偏。

技巧 2:要求"分步走"

这个任务分几个步骤?每步完成后停下来确认,再继续下一步。

这一招特别适合不可逆操作(删除、迁移、改数据库)。

技巧 3:要求"给我反例"

做完后告诉我有什么风险、什么场景可能失败、什么我没考虑到。

这一招让 Codex 当"魔鬼代言人",帮你查漏补缺。

7.9 对话失败时怎么办

有时候 Codex 就是不按你想的来。试这几招:

招 1:用更具体的语言

把"整理一下"改成"按 XX 标准移动到 XX 文件夹"。

招 2:给反例

不是这样的格式,我要的是:[贴一个例子]

招 3:让它自己反思

你刚才的输出有什么问题?换一种思路再试。

招 4:换模型

如果 GPT-5.4 Fast 答得很糟,切到 GPT-5.4 / GPT-5.3-Codex High。

招 5:开新会话

有时候会话被前面的"错误上下文"污染,开新会话从头来比纠结半天有效。

/new

7.10 三个反模式(千万别这么用)

反模式 1:把 Codex 当搜索引擎

什么是 React?  ← 这种问题应该问 ChatGPT 或 Google

Codex 是 Agent,不是百科。问知识性问题,让它"动手"才是浪费。

反模式 2:让它"自由发挥"

帮我做一个网站

没有任何约束,它做出来 99% 不是你想要的。永远给约束

反模式 3:一开始就用"全通过"

/approvals -> auto-approve all

新手用全通过 = 给一个不熟的人你家所有钥匙。默认权限就好,等你信任它了再开放

7.11 本章小结

  • 90% 的"AI 不好用"是 prompt 不好用
  • 四要素法:Goal / Context / Constraints / Done When
  • 复杂任务先拆 / 先列计划
  • 上下文用截图、文件、AGENTS.md 比纯描述更准
  • 高频斜杠命令背下来:/new /model /plan /approvals /memory
  • 失败了换语言、给反例、换模型、开新会话
  • 千万别"自由发挥",永远给约束

下一章讲怎么管"权限"——既要让 Codex 干活,又不能让它误删你的文件。第八章 · 安全模式与权限