跳到主要内容
Agent 实践室CODEX STUDY CLUB

给 Codex 一个能复现的 Bug:修好助手的命令漏检

从本站三个真实漏检问题出发,练习保留失败输入、排除错误假设、约束最小修复,再用正例和反例验收。

验证范围本站检索修复案例;不代表其他客户端或模型的效果。

内容核对

适合准备让 Codex 修复搜索、表单或接口问题,却不知道该提供什么信息的开发者。你需要能运行的项目、一个稳定失败的输入,以及预期结果的依据。本文用本站真实缺陷示范:把“助手不好用”变成可重复的失败,再判断补丁有没有修对。

你可以带走三段任务描述,以及“原始输入、正确结果、错误近似输入、原有功能”四类验收清单。文中的问句是发给本站学习助手的检索文本,不是让你在终端执行登录或恢复会话。

现场:接口返回 200,答案却找不到已有教程

2026-10-27,维护时在基线 f0b7cbd 的本地生产构建中,关闭外部模型调用后,逐个发送以下问题:

原始输入 已存在的正文依据 修复前实际结果
codex --version 第 10 章的命令路径与版本检查;第 12 章也有示例 空来源,回答没有直接相关内容
codex login status 第 10 章的登录检查 空来源,回答没有直接相关内容
codex resume 第 12 章的续接任务说明 空来源,回答没有直接相关内容

三次 HTTP 都是 200,也都有完整结束事件。失败发生在内容召回,不能因为请求成功就验收通过。对应教程可以在安装排查和CLI 选项与命令找到。

这是本站本地实现与现有内容的真实失败,不是人工删文章制造的例子,也不是 OpenAI Codex 客户端的故障报告。本轮没有调用线上付费模型,不能据此评价模型质量。

第一步:把可检查的预期交给 Codex

先保留当前分支、提交和已有改动,不要为了获得“干净环境”清除别人的工作。把占位项换成真实信息:

请先只读诊断这个 Bug,不修改文件。
基线:[提交 SHA,以及已有未提交改动]
入口:[页面或接口、运行命令、环境]
输入:[逐字保留失败输入]
实际结果:[响应、来源链接或可见界面]
预期依据:[哪个已有页面/需求说明能证明应该是什么]

重现一次并保留输入和输出,再沿调用路径定位。
区分已证实的原因和待验证的假设。
如果只是网络、环境或缺失数据,先说明,不直接重写业务逻辑。

官方 Prompting:Fix a bug建议提供复现步骤和约束,并在修改后重跑原始步骤。这里的中文任务描述是本站整理的方法,不能保证所有项目都一次修好。

本例不是“没有把文章加入知识库”:已有测试确认入门章节及其完整正文都在。继续看评分路径,才找到两个影响:围栏代码块被普通正文提取器移除;短命令即使在行内出现,正文词匹配得分也可能达不到最低门槛。

第二步:用小实验排除“看起来合理”的修法

最先想到的办法是“把代码块加回正文”。本站在内存对照中只改这一处,三个查询仍然没有结果:有关条目只得到 1–2 分,而最低门槛是 6。这个失败实验说明,不能把第一处可疑代码当成全部根因。

继续给 Codex 的任务可以这样写:

已确认失败输入与内容依据。请先加回归检查,让旧实现确实失败,再修改。
只修复这条调用路径,不扩展成新的搜索系统。
保留全局噪声门槛,不通过“所有查询都返回文章”消除空结果。
用已有原文支持匹配,不为这几个测试逐条硬编码答案。
同时检查拼错或不存在的近似输入,避免把错误结果包装成支持。
完成后说明哪些假设被实验排除,以及补丁的适用范围。

本轮补丁给原文里的 CLI 命令增加独立匹配机会,普通正文检索和摘要展示仍保留原有边界。完整实现与断言可查看检索代码和回归测试。它不是通用 Shell 解析器,不保证任意长命令、拼写错误或所有问法都能匹配。

第三步:验收正确入口,也验收错误近似输入

验收不只问“有没有结果”,还要看返回的是不是讲解该命令的教程。案例里引用命令不应把真正的操作章节挤出结果。

验收面 应确认什么
原始三个问题 默认结果范围内有相应教程,来源链接可打开
带反引号、中文说明的问题 命令仍被识别,不要求读者记住唯一问法
错误近似命令 不把 resumed 当成 resume,不把 statusx 当成 status
原有查询 Cloud、IDE、安装故障、权限等既有回归继续通过
实际接口与页面 有完整响应、正确来源与可读页面;本地通过和生产部署分开记录

在已按仓库 README 安装依赖的练习副本中执行:

npm run test:knowledge
npm run lint
npm run build
npm run check:content
git diff --check

测试失败时保留失败问句与断言;不要删除负例或降低门槛。在不含生产密钥的练习环境中,确认 3127 端口未占用后启动:

npm run start -- --hostname 127.0.0.1 --port 3127

打开 http://127.0.0.1:3127/#ask,逐次输入表中问题并检查来源;结束后在服务终端按 Ctrl+C。端口占用就同时换启动参数和访问地址,不关闭不明进程。复制检索文本不需要执行那条 CLI 命令,也不需要配置模型 API Key。

收尾任务描述:

按实际证据交付:基线、原始复现、被排除的假设、最小 diff、测试命令和结果。
报告原始输入与反例分别怎样表现,保留未验证范围。
确认没有覆盖已有改动;不要把本地 HTTP 200 当成答案正确。
如果尚未推送或部署,明确写未完成,不借用旧提交的成功检查。

本站结果与限制

新增回归检查在旧实现上出现 2 组失败,原有 7 组仍通过;修复后,包含新案例的正式内容快照通过全部 10 组检查。已完成本地 lint、生产构建和内容一致性检查。这证明本次有界检索行为得到修复,不代表任意命令和表达都能正确回答。

本轮验证记录见 10-27 公开复盘。这里交付的是可核验的源码、回归断言和实际维护过程;没有测量节省时间、提示词成功率或读者完成率,也没有执行 CLI 安装、登录和会话恢复。

官方资料核对日期为 2026-10-27,不是功能发布日期。除上述 Prompting 原文,本轮查阅 CLI 参数参考与官方故障排查,确认样本命令的文档依据;本站修复针对自己的检索实现。

如果只有线上 CI 失败,先看从失败步骤到最小修复;如果代码已改却不知道怎样确认交付,继续看完成但未验证。

把方法用到自己的项目从一个可验收的小任务开始