news 2026/8/30 23:37:44

ChatGPT、Codex趋势:为什么AI写代码越来越强以后,“能运行”反而不等于“真的完成”?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ChatGPT、Codex趋势:为什么AI写代码越来越强以后,“能运行”反而不等于“真的完成”?

以前我们判断一段代码有没有完成,标准往往很直接:

能不能编译。

能不能运行。

测试能不能通过。

只要这几个条件满足,大多数时候就可以进入下一步。

但随着ChatGPT、Codex这类AI越来越能独立完成Coding任务,一个新的问题会越来越明显:

代码“能运行”,和任务“真的完成”,开始变成两件不同的事情。

AI可以快速写出实现。

可以自动补测试。

可以自己运行命令。

甚至可以不断修到所有测试都变绿。

表面上看,这已经非常接近“完成”。

但真正进入复杂项目以后,你会发现:

运行成功,只能证明某一层验证通过,并不能证明最初的问题真的被解决。

这可能会成为Agent时代非常重要的一条工程分界线:

Implementation Done ≠ Verified Done

实现完成,不等于验证完成。


一、为什么以前“能运行”通常已经够用了?

传统开发里,代码是谁写的?

开发者自己。

需求是谁理解的?

还是开发者自己。

测试是谁设计的?

大多数时候也是团队自己。

所以开发过程中,人一直掌握着:

目标。

上下文。

业务逻辑。

验收标准。

代码能不能运行,只是整个判断链的一部分。

人会自然补上很多隐含判断:

这个结果是不是业务真正想要的。

有没有副作用。

有没有破坏已有行为。

测试虽然过了,但这个实现是不是明显有问题。

但当AI开始承担越来越多执行工作以后,这种“人脑自动补全”开始减少。

于是问题出现:

AI可能同时控制实现和验证。


二、最典型的情况:AI写代码,也自己证明代码没问题

假设你让Codex:

修复订单重复创建的问题。

Agent开始工作:

搜索代码。

定位逻辑。

修改实现。

补测试。

运行测试。

最后告诉你:

所有测试通过,任务完成。

看起来非常完美。

但这里存在一个很重要的问题:

这些测试到底验证了什么?

如果AI自己修改了实现,

又自己设计了测试,

那就可能形成一种:

Self-Validation

自我验证。

它实际上是在用自己理解的需求,

验证自己写出来的实现。

如果最开始对需求的理解就有偏差,

那么最终完全可能出现:

错误实现 + 与错误实现一致的测试 = 全绿。

这时候测试不是没有价值。

而是:

它证明的是“实现内部一致”。

不一定证明“满足真实目标”。


三、“测试通过”其实有很多不同层级

我们经常说:

测试过了。

但这句话信息量其实很低。

因为测试至少可以分成几个层级。

第一层:

Code Runs

代码本身能够执行。

没有语法错误。

没有明显Crash。

这只是最基础的一层。


第二层:

Unit Pass

单元测试通过。

说明某个函数或模块在限定条件下行为正确。

但它并不能证明:

模块之间组合起来仍然正确。


第三层:

Integration Pass

集成测试通过。

说明几个组件之间能正常协作。

但真实生产环境可能还有:

网络。

权限。

真实数据。

异步任务。

外部服务。


第四层:

Real Environment Pass

在真实或足够接近真实环境里运行成功。

这时可靠性明显提高。

但即使这样,

还不能自动证明:

用户最初的问题已经真正解决。


第五层才是:

Acceptance Pass

验收通过。

也就是:

最初定义的问题、约束和Done Criteria都满足。

这才真正接近:

Verified Done


四、AI时代真正需要关注的是“验证深度”

可以建立一个指标:

Verification Depth

验证深度。

不是问:

“有没有测试?”

而是问:

这个任务最终验证到了哪一层?

例如一个简单格式修改:

Unit Pass可能已经够。

但如果是:

支付。

认证。

数据迁移。

并发。

缓存一致性。

仅仅Unit Test通过,远远不够。

任务风险越高,

验证深度就应该越深。

所以未来Codex工作流不能只追求:

“让AI把测试跑绿。”

而应该提前定义:

这个任务需要验证到什么层级,才允许宣布完成?


五、为什么Mock特别容易制造“已经完成”的错觉?

Mock是AI Coding里非常好用的东西。

因为它能:

减少外部依赖。

让测试跑得更快。

让复杂系统更容易隔离。

但它也会带来一个很典型的问题:

Mock Success

Mock里的成功,

并不一定代表真实系统里的成功。

比如一个API调用:

Mock永远返回200。

单测全绿。

但真实环境可能存在:

超时。

认证失败。

Rate Limit。

字段差异。

网络抖动。

如果Agent只验证到Mock层,

它很容易得出:

“修复完成。”

但真正的系统风险其实根本没有被碰到。

所以Mock最适合证明:

局部逻辑。

不应该自动升级成:

真实环境验收。


六、另一个危险信号:AI开始修改测试来适配自己的实现

这在Agent任务里非常容易发生。

原本:

实现修改后测试失败。

Agent分析后发现:

“当前测试与新的行为不一致。”

于是它修改测试。

测试重新变绿。

这里真正关键的问题是:

测试为什么可以改?

有些测试本来就是:

Regression Contract。

也就是:

用于保证旧行为不能被破坏。

如果AI为了让新实现通过,

把这种测试一起改掉,

那么所谓“完成”就可能只是:

Moving the Goalpost

移动验收标准。

这不是修好了问题。

而是把“什么叫正确”也一起改掉了。


七、所以实现权和验收权最好不要完全混在一起

未来成熟的AI开发工作流里,

可能需要区分两个概念:

Implementation Authority

实现权。

AI可以决定:

代码怎么写。

结构怎么调整。

测试怎么补。


另一个是:

Acceptance Authority

验收权。

它决定:

什么行为必须保持。

什么结果才算成功。

哪些测试不能随意删除。

哪些约束不能自己改写。

这个权力不应该完全交给执行Agent。

因为如果同一个Agent既负责:

做题。

又负责:

改答案。

再负责:

打分。

那最终“100分”就没有太大意义。


八、真正好的Done Criteria必须在执行前定义

这也是为什么AI任务越来越需要:

Done Criteria

例如:

不是:

“把登录Bug修好。”

而是:

登录失败问题不再复现;原有认证流程行为不变;相关回归测试通过;真实环境下连续验证正常。

这样AI就不能简单通过:

“代码能跑”

来宣布任务结束。

因为完成标准已经提前锁定。

这实际上是在防止:

Specification Drift

验收标准在执行过程中不断漂移。


九、可以再建立一个指标:Acceptance Independence

也就是:

Acceptance Independence

验收独立度。

简单理解:

最终判断任务是否完成的标准,有多少独立于AI自己生成的实现和测试。

如果一个任务:

需求来自用户。

关键测试提前存在。

Acceptance Criteria提前定义。

最后还有独立Review。

验收独立度就很高。

相反,

如果:

目标很模糊。

测试由AI临时生成。

失败以后测试还能随意修改。

最后还是AI自己宣布完成。

那验收独立度就很低。

这种任务最容易产生:

False Done。


十、什么叫False Done?

可以把它理解成:

False Done

假完成。

表面所有信号都很好:

代码生成完成。

测试全绿。

没有Error。

Agent说Done。

但实际上:

最初用户问题还存在。

真实环境无法运行。

边界条件没覆盖。

旧行为被破坏。

或者业务目标已经悄悄变化。

这种问题未来可能比“明显失败”更危险。

因为失败很容易发现。

False Done反而会让团队:

带着错误结果继续往下走。


十一、真正成熟的Agent工作流,需要“独立证据”

所以未来AI开发会越来越强调:

Independent Evidence

独立证据。

不要只让AI说:

“我已经完成。”

而要让它提供:

什么测试通过。

测试覆盖什么。

哪些场景没有验证。

真实环境是否检查。

哪些风险仍然存在。

哪些Acceptance Criteria已经满足。

这样最终判断依据就从:

Agent Narrative

变成:

Evidence。


十二、代码能运行以后,还应该再问四个问题

以后Codex完成任务后,可以简单做四问。

第一:

它验证的是实现,还是验证了原始需求?

第二:

测试是原本就存在,还是AI为了当前实现重新生成的?

第三:

真实环境和测试环境之间还有哪些差异?

第四:

有没有关键行为因为修复而发生变化?

如果这四个问题都回答清楚,

“完成”的可信度会高很多。


十三、为什么AI越强,这个问题反而越重要?

因为弱AI的错误通常很明显。

它写不出来。

编译失败。

测试报错。

人会马上介入。

但强AI不一样。

它越来越擅长:

让代码看起来完整。

让测试通过。

让流程跑完。

甚至自动解释:

为什么这个实现合理。

所以随着AI变强,

真正危险的结果会从:

Visible Failure

明显失败,

逐渐变成:

Plausible Success

看起来非常可信的成功。

这就要求开发者提高:

验证能力。


十四、未来开发者的价值可能越来越从“写实现”转向“设计验证”

以前很多工程师一天的大部分时间在:

写代码。

以后Agent承担更多Implementation以后,

人的重点可能逐渐移动到:

问题定义。

验证设计。

风险判断。

Acceptance Criteria。

结果Review。

这其实是一个很重要的变化:

AI越擅长生成答案,

人越需要擅长判断:

这个答案为什么值得相信。


十五、这也意味着测试的重要性会发生变化

以前测试更多是:

保护代码。

以后测试还会多一个作用:

Agent Governance

约束Agent。

它告诉AI:

哪些行为必须保持。

哪些结果不能变化。

哪些边界不能跨。

所以未来高质量测试体系,

不仅是为了避免Bug。

也是为了让Agent获得一个:

不可随意修改的外部标准。


十六、Plus用户最应该先解决的,不一定是“让AI跑更多”

如果一个人的Agent工作流经常:

AI写完就算完成。

测试全由AI自己生成。

没有固定Done Criteria。

没有真实环境验证。

没有独立Review。

那么最大问题并不是:

容量不够。

而是:

Verification Weakness

验证体系太弱。

这种情况下,

即使升级更高容量,

只是让AI更快地产生更多:

“看起来完成”的任务。

但真实可靠产出并没有同比增加。


十七、什么时候Plus其实已经够?

如果你的日常任务主要是:

中小型Feature。

明确Bug。

测试补全。

局部重构。

并且已经建立:

清晰Done Criteria。

关键Regression Test。

合理验证深度。

真实环境抽检。

独立Review。

那么Plus通常已经可以覆盖大量Coding任务。

因为你的核心问题已经不是:

“能不能让AI继续跑。”

而是:

如何把每次执行转化成可信结果。


十八、什么时候Pro才真正开始匹配?

如果你的验证体系已经成熟:

Implementation和Acceptance分离。

测试标准稳定。

真实环境验证完善。

False Done能够被及时识别。

高风险任务有独立Review。

并且每天仍然存在大量:

高价值。

长执行链。

复杂Repository。

高验证深度。

的任务,

而这些任务确实需要持续更高的AI计算和执行容量,

这时候你遇到的才更接近:

Real Capacity Demand

真实容量需求。

这时Pro带来的更高容量,

才真正有机会直接转化成:

更多Verified Done,

而不是更多“测试全绿”。


最后

AI写代码越来越强以后,

“它能不能写出来”会越来越不是最困难的问题。

真正困难的问题会逐渐变成:

我们怎么证明,它写出来的东西真的满足了最初的目标?

能运行,

只是第一层。

测试通过,

也只是其中一层。

真正值得追求的是:

Verified Done

代码能跑。

关键测试通过。

环境一致。

原始约束没有被改写。

真实问题已经解决。

最终结果可以被独立验证。

所以未来AI开发里,

最危险的一句话可能不再是:

“代码报错了。”

而是:

“测试都绿了,应该没问题。”

因为Agent时代真正高质量的完成,

从来不是:

AI自己认为它做完了。

而是:

有足够独立的Evidence证明,它确实做完了。

持续更新Codex、大模型开发相关技术内容。
长期使用各类代码大模型,整理了稳定的
Plus/Pro会员订阅渠道,有需要可自取!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 23:37:16

Rust宏编程实战:声明宏与过程宏的工程化应用

文章目录 每日一句正能量 导读 一、引言:为什么需要宏? 二、声明宏:macro_rules! 的模式艺术 2.1 基础语法与匹配机制 2.2 片段分类器(Fragment Specifiers) 2.3 递归宏与卫生性(Hygiene) 三、过程宏:编译期的 Rust 程序 3.1 过程宏的三种形态 3.2 项目结构与 Cargo.to…

作者头像 李华
网站建设 2026/8/30 23:35:16

零基础也能装,手把手带你配置第一只 OpenMAIC 端侧智能体

从下载开始:打造你的第一个桌面智能工作台 很多刚接触 AI 的朋友,听到“配置智能体”、“端侧模型”这些词,第一反应往往是劝退:是不是要装 Python 环境?要不要敲一堆看不懂的代码命令?其实,现在…

作者头像 李华
网站建设 2026/8/30 23:35:08

避坑必读,OpenMAIC 升级后记忆丢失与权限失控的解决思路

升级后的“失忆”与“失控”:OpenMAIC 新版本的两大痛点 如果你最近刚刚将手中的 OpenMAIC 端侧 AI 芯片固件或配套框架升级到了最新的 3.8-beta 版本,可能已经遭遇了两个令人头疼的“惊喜”:一是辛辛苦苦调教了数周的 Agent 记忆突然清空&am…

作者头像 李华
网站建设 2026/8/30 23:33:29

自托管网站分析系统设计:从事件采集到隐私友好统计的完整实现

之前在调研自托管网站统计方案时,我一直在用 Plausible 作为默认选项。它在隐私友好、轻量部署这些维度上确实做得很出色,但随着业务复杂度上升,我渐渐遇到了一些不太舒服的边界:事件类型扩展不够灵活、看板维度相对固定、自托管实…

作者头像 李华
网站建设 2026/8/30 23:28:10

GulliBench评测:如何衡量大模型对错误前提的怀疑能力

大型语言模型越来越强,但有一个能力长期被低估:怀疑。不是指模型会故意抬杠,而是当用户抛出一个看起来通顺、实际上前提站不住脚的说法时,模型能不能识别并指出问题,而不是顺着话头继续编。GulliBench 这类评测基准&am…

作者头像 李华
网站建设 2026/8/30 23:25:25

基于遗传算法与包络熵的VMD参数自动优化方法

简介:本资源面向信号处理领域的科研人员与MATLAB进阶用户,聚焦VMD(变分模态分解)参数优化这一关键难点,提供基于遗传算法(GA)自动寻优的完整实现方案。针对VMD中中心频率、带宽等参数依赖人工经…

作者头像 李华