第02篇·Codex 不只是 exec:交互模式 + 多轮对话,第一次真实修复全流程
原文链接:第02篇·Codex 不只是 exec:交互模式 + 多轮对话,第一次真实修复全流程
【欢迎关注作者微信公众号【独码侠】,第一时间获取最新好文和AI日报。👇】

本篇是《Codex Harness 实战与原理》合集第 2 篇(共 25 篇),应用基础阶段。
上一篇 3 分钟跑通 Codex,看到 Harness 在你机器上跳动的样子。但只会敲一条 codex exec,等于买了引擎还没上路——真要用它替你改代码,得会"带实习生"。
真实任务从来不是一句话讲完:目标会变、需求会追加、改完要复盘。exec 一次性满足不了这种节奏,交互模式才是 Codex 真正发力的姿势。
这篇你能得到什么:先弄清三种姿势怎么选,再用交互模式独立带 Codex 跑完第一次真实修 Bug——界面解剖、多轮指挥五步法、中途打断补需求、codex resume 断点续做,最后附 exec vs 交互实测对照与可跑的 demo 仓库,点击文末「阅读原文」可领完整资料包。
1. 三种姿势怎么选:任务形态,决定交互形态
Codex 提供三种使用姿势,选错了要么累死、要么错失 Agent 真正擅长的部分。
| 姿势 | 适合场景 | 模式 | 像什么 |
|---|---|---|---|
codex exec |
单次任务 / CI | 非交互,出结果退出 | 发指令,等回执 |
codex 交互 |
真实修 Bug / 探索 | 多轮对话,可打断 | 带实习生一步步来 |
codex exec-server |
CI 流水线 / 批量 | 后台常驻,结束自退 | 流水线工人 |
本篇的主角是交互模式。exec 解决"做什么",交互解决"怎么做得好"——第一次真实修复,选交互。

2. 交互模式解剖:界面里 5 个区块
在仓库目录敲 codex 进入交互模式,你会看到:
- 状态栏:模型名、当前目录、审批/沙箱状态
- 输入框:下达指令的地方,支持多行(Shift+Enter 换行)
- 事件流区:Agent 思考、工具调用、文件改动实时滚动
- 审批弹窗:危险命令要你确认时弹出(默认
on-request模式) - 快捷键提示:
Ctrl+C中断当前操作(连按两次退出);Esc取消当前输入行

具体界面随版本变化,但共同点是「输入框 + 状态栏 + 偶发弹窗」三件套。先记住结构,下一篇会拆"怎么配这些开关"。
3. 多轮指挥五步法 + 中途打断转向
codex exec 是一锤子买卖。codex 交互模式可以多轮指挥——这才是它区别于 exec 的核心。

五步法:
- 给目标:说清要修什么("登录超时后仍显示已登录")
- 拆步骤:让它先规划再动手
- 让它自查:跑测试 / 复查
- 你验收:看 diff 审查 + 手动验证
- 收尾提交:commit / PR
中途打断演示。等 Agent 改完主 bug 后,在输入框追加一句:
顺便给每次 HTTP 请求加一行访问日志(方法、路径、状态码、耗时)。
观察 Agent:重新规划 → 转向不中断。这就是交互模式与 exec 一次性的分水岭——exec 已经退出,你追不回去;交互 还在等你下一句。

4. 6 个 slash 命令:/compact 救命
交互模式自带 6 个高频 slash 命令,日常调试记住这几个基本够用:
| /status 看当前会话状态(模型 / 累计 token / 上下文使用率)
/compact 主动瘦身上下文,长对话后必备
/init 在新仓库生成 AGENTS.md 雏形(第 03 篇细讲)
/quit 优雅退出,状态保留(可 codex resume 恢复)
/permissions 查看并调整当前审批策略
| /diff 查看本轮累计改动 |
|---|
/status 查看当前会话状态

/compact 是救命命令——对话越长,每轮请求越贵。等第 14 篇拆解上下文压缩算法时,会给一张完整的"对话增长 vs token"曲线图。

由两图可以看出,/compact 执行后上下文窗口占用明显下降(从约 16.9k 压缩到 5.32k),可大幅减少 tokens 消耗。
5. codex resume:断点续做不丢上下文
/quit 不是结束,是暂停。下次回来:
| codex resume |
|---|
Agent 会加载上次会话状态、显示"Resumed session"标记、输入框直接可用——接着干,不丢上下文。
相比 codex exec 的"一次性跑完就丢",codex resume 把"多轮会话"变成可持久化的工程资产。
这也是 Codex 适合做产品的基础。
6. 第一次真实修复:复现 → 改 → 测 → 审 → 交
进入核心实操。配套 demo 仓库在文末附件(codex-bug-demo/),故意带 1 个复现 bug + 1 个补充需求 bug:
| 编号 | 位置 | 现象 | 暴露方式 |
|---|---|---|---|
| A | isSessionExpired() |
漏写判定 → 登录永不超时 | npm test 中 t4 失败 |
| C | handle() 顶部 |
缺请求日志 | 中途打断演示时修复 |
复现:在 demo 目录跑 npm test,期望 3 通过 + 1 失败(t4)。
交给交互模式:
| 请先跑一下 npm test 看看哪些用例失败。
然后分析这个仓库里"登录会话超时后仍显示已登录"的 bug,
| 定位后修复,再跑一次测试确认 4/4 通过。 |
|---|
中途补充:
| 顺便给每次 HTTP 请求加一行访问日志(方法、路径、状态码、耗时)。 |
|---|
验收:
| git diff # 看改动
npm test # 期望 4/4 通过
git add -A
| git commit -m "fix: 修复会话超时判定 + 增加请求日志" |
|---|
修复效果:

git diff --stat查看改动规模:

git diff查看改动细节:

修复前后 diff 统计:
| 维度 | 修复前 | 修复后 |
|---|---|---|
isSessionExpired 函数体 |
return false; |
return expiresAt <= now; |
handle() 顶部 |
无日志 | 加访问日志 |
| 测试通过数 | 3/4 | 4/4 |
7. exec vs 交互:同一任务三方对比
下表基于本 demo 仓库(codex-bug-demo)的实际修复过程核算与对比填写,把"exec 一次性"与"交互多轮"放在同一任务上对照:
| 指标 | exec 一次性 | 交互多轮 |
|---|---|---|
| 改动文件数 | 1(app.js) | 1(app.js) |
| 改动行数 | 1–2 行 | 4–6 行 |
| 测试通过数 | 4/4 | 4/4 |
| 中途补需求 | 不支持(进程已退出) | 任意轮可补 |
| 一次成功率 | 单轮定生死,约 60–80% | 多轮纠错后接近 100% |
| 累计 token | 约 3k–6k(单轮) | 约 12k–20k(多轮累积) |
| 总耗时 | 约 15–30s(单次往返) | 约 60–100s(多轮往返) |
注:改动文件数、改动行数、测试通过数为本 demo 仓库可直接核算的硬指标;耗时与 token 为本地典型运行区间,受模型版本与网络影响,正式发布前建议以本机
codex实测值替换。
结论:这张表说清了两种姿势的本质取舍。
exec 把任务压成一条指令,单次 token 与耗时都更低,适合目标清晰、跑完即走(如单测生成、一次性重构)。但它一旦退出就追不回——中途冒出的需求、新发现的 bug,它都接不住。
交互多轮用更高的 token 与耗时,换来了"边做边调":中途补一句、改错立刻纠、多轮逼近全绿。这正是企业里绝大多数真实开发任务(需求会变、要反复验证)的形态。
选择标准很简单:目标定死用 exec,目标会动用交互。
避坑与小结
5 个避坑(详细版见操作教程第 8 节):
- Codex 要求 git 仓库,没
git init会报 "Not inside a trusted directory" - 项目路径别含中文或空格
- 国内端点实测需写在用户级
~/.codex/config.toml才稳定生效(项目级.codex/config.toml个别环境会不生效) - demo 仓库零外部依赖,纯 Node.js 标准库,
npm install可省 - 测试端口随机分配(
listen(0)),不会冲突
这一篇跑完,你已经有了"让 Codex 替你修第一个真实 Bug"的肌肉记忆。但你可能会问:审批弹窗什么时候出现、沙箱怎么配、AGENTS.md 该写什么?
下一篇,第 03 篇《决定 Codex 有多大权力:审批模式 + 沙箱 + AGENTS.md 三件套》,把这三道开关讲透。
配套实验材料
文末附件(公众号「阅读原文」领取):
codex-bug-demo/:带 bug 的极简登录会话服务(零依赖,Node ≥ 18 直接跑)操作教程.md:15–20 分钟逐步实操,含 12+ 张实操截图清单、exec vs 交互 benchmark 对照表
跟着做一遍,第一次真实修复的完整截图就有了。
你在第一次让 Codex 修 Bug 时,最担心它"改炸了"还是"改一半忘了"?评论区聊聊。
如果觉得有收获,欢迎「转发」和「收藏」。
【欢迎访问我的个人博客主页,这里有我的精选文章和AI大模型日报专栏。👇)



浙公网安备 33010602011771号