第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 的核心。

 

五步法

  1. 给目标:说清要修什么("登录超时后仍显示已登录")
  2. 拆步骤:让它先规划再动手
  3. 让它自查:跑测试 / 复查
  4. 你验收:看 diff 审查 + 手动验证
  5. 收尾提交: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大模型日报专栏。👇)我的个人博客

posted @ 2026-09-01 19:34  独码侠  阅读(23)  评论(0)    收藏  举报