GPT-5.5 + Codex 三连任务实测:写代码→调试→生成文档,这条工作流在哪里翻了车?

你可能已经用 GPT 写过代码,也可能被 Codex 的宣传片震撼过——但你有没有想过,把它们串成一条流水线完整跑一遍,会在哪里翻车?

我跑了,结果有点出乎意料。

先给你一个反直觉的结论:调试只用了 2 轮就跑通了,但文档生成这步差点把我坑了——不是因为文档写得差,恰恰相反,是因为它写得"太自信",把一个私有函数的用途脑补错了,还写得有模有样,不仔细看根本发现不了。

这篇文章不是功能介绍稿,也不是"AI 写代码太强了"的感叹文。我想做的是把这条工作流完整跑一遍,记录每一步的真实状态,告诉你这个组合的边界在哪里——你能用它做什么,不能指望它做什么。

---

为什么这个组合值得单独测试?

很多人用 GPT-5.5 写代码,体验是这样的:生成出来的代码看起来很对,一跑就报错,把报错贴回去,它解释了一大段,给了个新版本,再跑,又报错……这个循环可能转好几圈。

问题不在于 GPT-5.5 不够聪明,而在于它的定位本来就是理解意图、规划逻辑,对执行环境的感知是有限的。它不知道你的 Python 版本、你装了哪些包、你的文件路径长什么样。

Codex 的定位则是代码生成与执行环境感知,它更了解代码的结构和运行上下文,但单独用它,你会发现它对需求的理解有时候过于"字面"——你说"处理异常值",它可能只做了最基础的 dropna,完全没考虑你说的"异常值"其实是业务逻辑上的离群点。

两者叠加,理论上是互补的。但"理论上"这三个字,值得用一个真实任务来验证。

测试边界说明:我选的是中等复杂度任务——不是 Hello World,也不是大型工程。结论的适用范围就是这个区间:有明确输入输出、有一定调试空间、文档需求清晰的脚本类任务。

---

任务设定与环境准备

测试任务:构建一个本地 CSV 数据清洗脚本,需求包括:
  • 自动检测并处理异常值(基于 IQR 方法)
  • 字段重命名(从英文 snake_case 转换为中文友好的列名)
  • 输出清洗报告(记录处理了哪些行、什么原因)

选这个任务的理由很直接:足够真实(我自己工作中确实需要这类脚本)、调试空间充分(异常值处理逻辑容易出问题)、文档需求明确(清洗报告本身就是一种文档)。

环境配置
  • API 接入:通过 [api.884819.xyz](https://api.884819.xyz) 直连,无需代理
  • GPT-5.5 参数:temperature=0.2(代码任务要稳定,不要创意)、max_tokens=4096
  • Codex 参数:temperature=0.1、执行环境 Python 3.11
  • 本地运行环境:macOS,pandas 2.x,测试数据集约 5000 行
评分维度(给自己一把量尺,避免纯感受): | 维度 | 评分标准 | | 代码首次可运行率 | 第一次不修改直接运行是否成功 | | 调试轮次 | 从报错到跑通需要几轮对话 | | 文档一致性 | 文档描述与代码实际行为的匹配度(人工核查) | | 文档可读性 | 一个没参与开发的人能否看懂 README |

---

三连任务实测全记录

Task 1:写代码

Prompt 输入
你是一个数据工程师。请用 Python 写一个 CSV 数据清洗脚本,要求:

1. 读取本地 CSV 文件(路径作为参数传入)

2. 使用 IQR 方法检测数值列的异常值,并将异常行标记为 'outlier'

3. 支持字段重命名,通过字典传入映射关系

4. 输出一份清洗报告(文本格式),记录:处理了哪些列、发现了多少异常值、最终输出行数

5. 清洗后的数据保存为新的 CSV 文件

请先给出完整代码,再给出使用示例。

生成结果:GPT-5.5 给出了一个结构清晰的脚本,主函数 clean_csv() 接收文件路径、重命名字典、输出路径三个参数,IQR 逻辑写在独立的 detect_outliers() 函数里,报告生成在 generate_report() 里。 第一次运行结果
AttributeError: 'DataFrame' object has no attribute 'append'

这是一个经典的 pandas 版本问题——DataFrame.append() 在 pandas 2.0 之后被移除了,应该用 pd.concat()。GPT-5.5 生成的代码用了旧 API。

首次可运行率:❌ 未通过,但报错原因清晰,不是逻辑错误。

---

Task 2:调试

把报错信息直接喂回去:

运行时报错如下:

AttributeError: 'DataFrame' object has no attribute 'append'

环境:Python 3.11,pandas 2.1.0

请诊断原因并给出修复版本。

GPT-5.5 的诊断过程值得记录:它没有只替换 API,而是先说明了 DataFrame.append() 被废弃的背景,然后扫描了整个脚本里所有潜在的 pandas 2.x 兼容性问题——发现了另外一处用了 inplace=True 的链式操作,也一并修复了。
这是一个超出预期的行为:我只问了一个报错,它顺手修了两个问题。

Codex 接手执行修复后,第二次运行:✅ 通过,输出了清洗报告。

调试轮次:2 轮(第一轮报错 → 第二轮跑通)。

---

Task 3:生成文档

让组合自动输出三类文档:

1. 函数级注释(docstring 格式)

2. README(项目说明 + 使用方法)

3. 使用示例(含样本数据说明)

Prompt
基于上面完整的 clean_csv.py 脚本,请生成:

1. 每个函数的 Google 风格 docstring

2. 一份 README.md,包含:项目简介、环境要求、安装依赖、使用方法、参数说明、输出说明

3. 一个完整的使用示例代码块

要求:面向不熟悉代码的数据分析师,语言简洁,不要用技术黑话。

README 输出样本(节选):
## 使用方法

python

from clean_csv import clean_csv

clean_csv(

input_path="data/raw_sales.csv",

rename_map={"sale_amt": "销售金额", "cust_id": "客户编号"},

output_path="data/cleaned_sales.csv"

)


运行后,会在当前目录生成 cleaning_report.txt,记录本次清洗的详细信息。

文档结构完整,可读性确实超过了我随手写的水平。

但坑在这里generate_report() 函数内部有一个私有辅助函数 _format_column_stats(),文档里对它的描述是"格式化每列的统计摘要,包含均值、中位数和标准差"——但实际上这个函数只输出了异常值数量和处理方式,根本没有均值和中位数。

它脑补了一个"听起来合理"的功能描述,写得还很自信。

---

边界在哪里?三个坑和三个惊喜

三个坑

坑 1:上下文窗口在长调试链路中的衰减

如果调试轮次超过 4-5 轮,GPT-5.5 开始"忘记"早期的设计决策。比如我在第一轮要求"异常值用 IQR 方法",到第五轮修一个不相关的 bug 时,它给出的修复版本悄悄把 IQR 换成了 Z-score,没有任何说明。长链路调试必须人工检查前后一致性。

坑 2:Codex 对中文注释需求的处理偏差

我要求函数注释用中文,Codex 生成的 docstring 是中英混排的——英文参数名、中文说明、英文类型标注,格式上有点割裂。如果你的团队有统一的注释规范,需要在 Prompt 里非常明确地指定格式模板,否则它会自己发挥。

坑 3:文档对私有函数的"脑补"风险

上面 Task 3 里已经展示了这个问题。私有函数(以 _ 开头)的文档描述准确率明显低于公开函数,因为它们在上下文中出现的频率低,模型更容易根据函数名"猜"功能。文档生成后必须人工核查私有函数部分。

---

三个惊喜

惊喜 1:调试轮次比预期少

我原本预期至少 4 轮,实际只用了 2 轮。主要原因是 GPT-5.5 在诊断报错时会主动做"周边扫描",不只修你问的那个错。

惊喜 2:主动识别潜在逻辑漏洞

在 Task 1 生成代码时,GPT-5.5 在代码末尾加了一条注释:

# 注意:当数值列全为 NaN 时,IQR 计算会返回 NaN,

建议在调用前先过滤全空列

我没有要求它做这个检查,但这个边界情况确实是个真实风险。它不只是"完成任务",而是在思考任务的边界。

惊喜 3:文档结构化程度超过人工平均水平

README 的层次结构、参数说明的格式、使用示例的完整性——坦白说,比我自己赶时间写的文档要好。前提是你给了足够清晰的受众定义("面向不熟悉代码的数据分析师"这句话很关键)。

---

一句话结论:这个组合目前最适合"中等复杂度、有明确输入输出定义"的脚本类任务。复杂架构设计和强业务逻辑仍需人介入,文档生成后必须人工校对私有函数描述。

---

怎么把这条工作流用起来?

三套可复用 Prompt 模板

模板一:写代码用
你是一个[语言]工程师。请写一个[功能描述]的脚本,要求:

1. [具体功能点1]

2. [具体功能点2]

3. [具体功能点3,包含输入输出格式]

4. 代码需兼容 [运行环境/版本]

5. 请先给出完整代码,再给出使用示例。

约束:不要使用以下库(如有):[排除项]

使用说明:明确运行环境版本是最关键的一步,能避免 80% 的兼容性报错。
模板二:调试用
运行以下代码时出现报错,请诊断原因并给出修复版本:

[粘贴报错信息]

运行环境:[Python版本、关键库版本]

代码如下:

[粘贴相关代码段]

要求:

1. 先说明报错原因

2. 扫描代码中是否存在同类潜在问题

3. 给出完整修复版本,标注所有修改的位置

使用说明:"扫描同类潜在问题"这句话很重要,能触发 GPT-5.5 的主动检查行为,减少调试轮次。
模板三:文档生成用
基于以下完整代码,请生成项目文档:

[粘贴完整代码]

文档要求:

1. 每个公开函数的 [Google/NumPy/reStructuredText] 风格 docstring

2. README.md,包含:项目简介、环境要求、安装方法、使用示例、参数说明

3. 目标读者:[具体受众描述,如"不熟悉代码的数据分析师"]

4. 语言风格:[简洁/正式/口语化]

注意:docstring 中的功能描述必须严格基于代码实际行为,不要推断未实现的功能。

使用说明:最后那句"不要推断未实现的功能"是防止脑补的关键,加上之后私有函数的描述准确率明显提升。

---

工作流串联最佳实践

什么时候切换模型:写代码和调试用 GPT-5.5 主导,Codex 负责执行验证;文档生成全程用 GPT-5.5,Codex 不参与。 上下文怎么传递效率最高:每次新对话开始时,把"当前代码的完整版本"重新粘贴一遍,不要依赖模型记住上一轮的修改。这一步感觉麻烦,但能避免大量"它改了但没说"的隐性问题。 哪些信息必须人工确认再往下走
  • 调试完成后,人工跑一遍完整测试用例,再进入文档生成
  • 文档生成后,人工逐一核查私有函数的描述
  • 最终输出前,检查文档与代码的版本是否一致(代码改了但文档没更新是常见坑)

---

两条上手路径

最小可用版(小白):直接复制三套 Prompt 模板,填入你的任务描述,按顺序跑三个对话,每步结束后人工检查一遍再往下走。整个流程第一次可能需要 1-2 小时,熟悉之后半小时内能跑完。 进阶定制版:把三套 Prompt 模板写成你自己的"系统提示词库",根据不同任务类型(数据处理/API 开发/自动化脚本)维护不同版本,形成可复用的个人工作流资产。

---

文中所有测试均通过 API 直接调用完成。如果你想复刻这套流程,需要一个稳定的 GPT-5.5 / Codex API 接入点——国内直连、按量计费、无需魔法,我目前在用的是 [api.884819.xyz](https://api.884819.xyz),新用户注册即送体验 token,国产模型(Deepseek、千问等)完全免费,文中 Prompt 模板配合这个入口可以直接跑通。

---

写在最后

这次测的是"脚本级任务"——写、调、记录,一条链路,中等复杂度。结论是:这条工作流今天就能跑,明天上班就用得上。不是未来,是现在。

你的第一步:把模板二(调试用)存下来,下次遇到报错直接用,感受一下"扫描同类潜在问题"这句话带来的变化。

---

这次测的是"脚本级任务"——写、调、记录,一条链路。

>

但如果任务复杂度再上一级:多文件项目、跨模块调用、团队协作场景,这套组合还撑得住吗?

>

下一篇,我打算把同样的流程搬进一个真实的小型项目里跑一遍。不是 Demo,是真实需求,真实踩坑。

>

关注我,下周见。

---

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#AI编程 #GPT-5.5 #Codex #AI工作流 #代码调试 #Prompt技巧 #8848AI #AI教程