7月18日更新,ChatGPT Plus、ChatGPT Pro 与 Codex:未来的软件开发(GPT5.6)

在传统编译器中,源代码通常不会直接变成机器指令。

编译器会先把源代码转换成一种中间表示,也就是 Intermediate Representation,简称 IR。

text 复制代码
高级语言
    ↓
语法树
    ↓
中间表示
    ↓
优化
    ↓
机器代码

中间表示的价值,是把"人类容易编写的语言"和"机器容易执行的指令"分离开。

前端编译器负责理解源语言。

后端编译器负责生成目标代码。

中间表示负责连接两端。

当 ChatGPT Plus、ChatGPT Pro 与 Codex 进入软件开发之后,一个类似的问题正在出现:

自然语言需求,是否也需要先转化成一种工程中间表示,再交给 Codex 执行?

很多人现在使用 AI 编程,仍然采用一种非常直接的方式:

text 复制代码
自然语言需求
    ↓
Codex 修改代码

例如:

text 复制代码
帮我优化订单模块。

或者:

text 复制代码
给登录系统增加验证码。

这种方式的问题在于,自然语言天然模糊,而代码执行必须精确。

如果中间缺少一层结构化表达,Codex 就只能自己猜测任务边界、业务规则、影响范围和验收条件。

这会让 AI 编程高度依赖模型临时推理。

更成熟的方式,应该是:

text 复制代码
自然语言意图
    ↓
ChatGPT Plus 整理背景
    ↓
ChatGPT Pro 生成工程中间表示
    ↓
Codex 映射到代码仓库
    ↓
测试和审查验证

这层工程中间表示,可以被称为:

text 复制代码
Engineering Intermediate Representation

简称 EIR。

它可能成为未来 AI 软件工程中非常重要的一层。


一、为什么自然语言不能直接作为执行语言

自然语言的优点是表达能力强。

一个人可以用一句话描述复杂目标:

text 复制代码
把订单取消流程做得更安全,避免库存重复恢复。

但这句话存在大量未定义信息:

text 复制代码
什么叫"更安全"?
哪些订单允许取消?
重复恢复发生在哪一层?
是否涉及支付状态?
是否要求幂等?
哪些接口必须保持不变?
如何验证修复有效?

人类工程师会根据经验补全这些信息。

Codex 也会尝试补全。

但补全本身就意味着推测。

在软件工程中,推测越多,风险越高。

自然语言适合描述目标,却不适合直接描述完整执行约束。

可以把两种语言的特点对比一下:

text 复制代码
自然语言:
- 语义丰富
- 表达灵活
- 容易存在歧义
- 边界经常隐含

程序代码:
- 语义精确
- 可执行
- 可验证
- 必须处理细节

ChatGPT Pro 和 Codex 之间,需要一种介于两者之间的表达。

它既要保留业务意图,又要增加工程约束。

这就是 EIR 的意义。


二、什么是工程中间表示

工程中间表示不是代码,也不是普通需求文档。

它是一种面向 AI Agent 执行的结构化任务模型。

一个最基础的 EIR 可以包含:

text 复制代码
Engineering IR
├── Goal
├── Scope
├── Constraints
├── State Model
├── Invariants
├── Dependencies
├── Verification
├── Risk
└── Stop Conditions

例如,一个订单取消任务可以表示为:

yaml 复制代码
goal:
  description: "修复订单取消时库存重复恢复的问题"

scope:
  allowed_modules:
    - order
    - inventory

  forbidden_modules:
    - payment
    - authentication

constraints:
  - 不改变订单接口返回结构
  - 不修改数据库 schema
  - 不影响已完成订单
  - 必须保证重复请求幂等

state_model:
  valid_states:
    - CREATED
    - PAID
    - CANCELLED
    - COMPLETED

invariants:
  - 同一个订单只能恢复一次库存
  - COMPLETED 状态不能进入 CANCELLED
  - CANCELLED 状态重复取消不得产生新副作用

verification:
  - 原有订单测试通过
  - 新增重复取消测试
  - 新增并发取消测试
  - 输出行为差异报告

stop_conditions:
  - 需要修改支付模块
  - 需要修改数据库结构
  - 影响文件超过 6 个

这已经比普通 Prompt 更接近工程执行协议。

Codex 不再需要自己猜测所有条件。

它只需要把 EIR 映射到代码仓库。


三、ChatGPT Plus 负责语义清洗

在 EIR 生成之前,往往存在大量原始材料:

text 复制代码
产品需求
用户反馈
会议记录
Issue
历史文档
代码注释
错误日志
测试失败信息

这些材料可能互相冲突,也可能包含重复内容。

ChatGPT Plus 可以承担语义清洗层。

text 复制代码
Raw Context
    ↓
ChatGPT Plus
    ↓
Normalized Context

例如,原始材料中可能出现:

text 复制代码
需求文档:
取消订单必须恢复库存。

会议记录:
已支付订单需要先退款再恢复库存。

历史 Issue:
重复取消会导致库存增加两次。

代码注释:
订单取消操作可能被消息队列重复触发。

ChatGPT Plus 可以将它们整理成:

yaml 复制代码
confirmed_facts:
  - 未完成订单取消后需要恢复库存
  - 取消操作可能被重复触发

business_rules:
  - 已支付订单需要先完成退款流程
  - 已完成订单不允许取消

known_risks:
  - 重复取消导致库存重复增加
  - 消息重试可能重复执行补偿逻辑

unknowns:
  - 并发取消是否有锁
  - 库存服务是否支持幂等键

这一步的重点不是做最终决策,而是减少上下文噪声。

Plus 将碎片信息转化成可分析材料。

Pro 再基于这些材料生成工程 IR。


四、ChatGPT Pro 负责从语义模型生成工程 IR

ChatGPT Pro 更适合承担 IR Builder。

它需要把业务语义转换成工程结构。

可以抽象成:

ts 复制代码
type NormalizedContext = {
  confirmedFacts: string[]
  businessRules: string[]
  knownRisks: string[]
  unknowns: string[]
}

type EngineeringIR = {
  goal: Goal
  scope: Scope
  constraints: Constraint[]
  stateModel: StateModel
  invariants: Invariant[]
  dependencies: Dependency[]
  verification: VerificationRule[]
  risks: Risk[]
  stopConditions: StopCondition[]
}

生成过程可以写成:

ts 复制代码
async function buildEngineeringIR(
  context: NormalizedContext
): Promise<EngineeringIR> {
  return chatgptPro.transform({
    context,
    objectives: [
      "消除语义歧义",
      "明确执行范围",
      "提取不可破坏约束",
      "定义验证方式",
      "识别停止条件"
    ]
  })
}

这里的关键不是让 ChatGPT Pro 直接给出代码。

而是让它先完成工程建模。

就像编译器不会直接从高级语言跳到机器指令一样,AI 软件工程也不应该直接从一句自然语言跳到代码变更。


五、Codex 负责把工程 IR 映射到仓库

当 EIR 已经生成后,Codex 的任务会更清晰。

Codex 需要回答的是:

text 复制代码
哪些文件实现了这些状态?
哪些函数负责库存恢复?
哪些测试对应这些不变量?
哪些依赖会受影响?

可以定义一个仓库映射结果:

ts 复制代码
type RepositoryMapping = {
  affectedFiles: string[]
  affectedSymbols: string[]
  dependentModules: string[]
  relatedTests: string[]
  missingContext: string[]
  riskLevel: "low" | "medium" | "high"
}

映射流程:

text 复制代码
Engineering IR
    ↓
Symbol Search
    ↓
Dependency Analysis
    ↓
Repository Mapping
    ↓
Execution Plan

示例:

json 复制代码
{
  "affectedFiles": [
    "src/order/order.service.ts",
    "src/inventory/inventory.service.ts",
    "tests/order/order-cancel.test.ts"
  ],
  "affectedSymbols": [
    "cancelOrder",
    "restoreInventory",
    "OrderStatus"
  ],
  "dependentModules": [
    "message-consumer"
  ],
  "relatedTests": [
    "order-cancel.test.ts"
  ],
  "missingContext": [
    "inventory service idempotency policy"
  ],
  "riskLevel": "medium"
}

如果存在关键上下文缺失,Codex 不应该直接执行。

它应该进入阻塞状态:

text 复制代码
MISSING_CONTEXT

这比模型自行猜测更加可靠。


六、EIR 可以将业务不变量显式化

真实系统中,很多关键规则并不直接写在需求里。

例如:

text 复制代码
库存不能为负数。
支付成功订单不能直接删除。
权限校验不能依赖前端参数。
同一个事件不能重复产生副作用。

这些规则属于不变量。

text 复制代码
Invariant
=
在所有合法系统状态中都必须成立的条件

传统开发中,不变量往往分散在代码、测试和人的经验里。

ChatGPT Pro 生成 EIR 时,可以把这些规则提取出来。

ts 复制代码
type Invariant = {
  id: string
  statement: string
  source: string
  severity: "critical" | "high" | "normal"
  verificationMethod: string
}

例如:

json 复制代码
{
  "id": "INV-INVENTORY-001",
  "statement": "同一个取消事件最多恢复一次库存",
  "source": "order-domain-rule",
  "severity": "critical",
  "verificationMethod": "idempotency integration test"
}

Codex 修改代码时,必须为每条关键不变量提供验证映射。

text 复制代码
Invariant
    ↓
Code Location
    ↓
Test Evidence

这样,代码变更就不再只是"实现功能",而是"维护不变量"。


七、工程 IR 可以充当多 Agent 的公共语言

当系统中不止一个 Agent 时,EIR 的价值会更明显。

例如:

text 复制代码
ChatGPT Plus Agent
ChatGPT Pro Agent
Codex Agent
Test Agent
Review Agent
Documentation Agent

如果每个 Agent 都直接处理自然语言,很容易出现不同理解。

EIR 可以成为它们之间的公共协议。

text 复制代码
                Engineering IR
                /      |      \
           Codex    Test Agent  Review Agent

Codex 读取:

text 复制代码
目标
修改范围
依赖关系
停止条件

Test Agent 读取:

text 复制代码
不变量
边界场景
验收规则

Review Agent 读取:

text 复制代码
风险等级
不可破坏约束
行为差异

Documentation Agent 读取:

text 复制代码
业务规则
架构影响
接口变化

这类似编译器中的 IR:

不同后端都基于同一种中间表示工作。


八、EIR 需要版本化

工程任务在执行过程中可能变化。

例如:

text 复制代码
v1:
修复重复取消。

v2:
增加并发取消场景。

v3:
明确已支付订单不能直接恢复库存。

如果 Codex 使用 v1,测试 Agent 使用 v3,就会产生不一致。

因此,EIR 必须版本化。

ts 复制代码
type VersionedEngineeringIR = {
  id: string
  version: number
  parentVersion?: number
  repositoryBaseline: string
  createdAt: string
  changes: string[]
  payload: EngineeringIR
}

例如:

yaml 复制代码
eir:
  id: ORDER-CANCEL-102
  version: 3
  repository_baseline: a91f3e8

  changes:
    - 新增并发取消不变量
    - 增加已支付订单限制

Codex 执行前必须验证:

text 复制代码
当前仓库版本
=
EIR 基线版本

否则需要重新映射。


九、EIR 可以降低 Prompt 漂移

长时间使用 ChatGPT Pro 和 Codex 时,任务很容易逐渐偏离最初目标。

例如:

text 复制代码
初始目标:
修复库存重复恢复。

中途发现:
订单状态逻辑重复。

继续扩展:
顺便重构状态机。

最终结果:
修改了整个订单模块。

这就是任务漂移。

有了 EIR,可以进行范围检查。

ts 复制代码
function detectScopeDrift(
  ir: EngineeringIR,
  proposedChanges: ProposedChange[]
): ScopeViolation[] {
  return proposedChanges
    .filter(change => !ir.scope.allowedFiles.includes(change.file))
    .map(change => ({
      file: change.file,
      reason: "outside allowed scope"
    }))
}

如果 Codex 想修改 EIR 范围外的内容,必须先生成变更申请。

text 复制代码
Scope Extension Request
├── 为什么必须扩大范围
├── 需要新增哪些文件
├── 新增风险
├── 是否需要重新规划
└── 是否需要人工批准

这能显著降低 AI Agent 越改越大的问题。


十、工程 IR 应该区分声明和实现

EIR 不应该包含过多具体代码细节。

否则它会变成另一份代码。

更合理的做法是区分:

text 复制代码
Declarative IR
Implementation Plan

声明式 IR 描述:

text 复制代码
要满足什么
不能破坏什么
如何验证

实现计划描述:

text 复制代码
具体改哪些文件
增加哪些函数
调整哪些调用

例如:

yaml 复制代码
declarative_ir:
  invariant:
    - 重复取消不能重复恢复库存

implementation_plan:
  - 在 cancelOrder 中增加幂等键
  - 在 restoreInventory 中检查事件 ID
  - 增加重复事件测试

ChatGPT Pro 负责声明层。

Codex 负责实现计划和代码层。

这样能避免 ChatGPT Pro 过早绑定具体实现。


十一、EIR 可以支持多种代码后端

一个高层任务可能需要在不同技术栈中实现。

例如:

text 复制代码
目标:
为接口增加幂等性保护。

在 Node.js 项目中,可能使用 Redis。

在 Java 项目中,可能使用数据库唯一键。

在 Go 项目中,可能使用分布式锁或事件去重表。

如果 EIR 是声明式的:

yaml 复制代码
invariant:
  - 同一 idempotency_key 只能产生一次业务副作用

不同 Codex 执行后端可以生成不同实现。

text 复制代码
Engineering IR
├── TypeScript Backend
├── Java Backend
├── Go Backend
└── Python Backend

这类似编译器中同一个 IR 可以生成不同目标平台代码。


十二、ChatGPT Plus、Pro 与 Codex 的推荐分工

在这种架构下,三者可以这样分工:

text 复制代码
ChatGPT Plus
├── 读取与整理原始需求
├── 归一化术语
├── 提取事实和冲突
└── 生成上下文摘要

ChatGPT Pro
├── 构建领域模型
├── 提取不变量
├── 生成工程 IR
├── 设计验证规则
└── 分析任务风险

Codex
├── 将 IR 映射到仓库
├── 生成执行计划
├── 修改代码
├── 补充测试
└── 输出证据包

人类则负责:

text 复制代码
确认业务意图
批准高风险 EIR
判断架构方案
审查最终结果
承担上线责任

十三、一个完整的 EIR 工作流

可以用 TypeScript 抽象整个过程:

ts 复制代码
type RawRequirement = {
  text: string
  attachments: string[]
}

type NormalizedRequirement = {
  facts: string[]
  rules: string[]
  conflicts: string[]
  unknowns: string[]
}

type EngineeringIR = {
  goal: string
  scope: {
    allowedModules: string[]
    forbiddenModules: string[]
  }
  invariants: string[]
  constraints: string[]
  verification: string[]
  stopConditions: string[]
}

class AICompilerPipeline {
  async compile(
    requirement: RawRequirement
  ) {
    const normalized =
      await chatgptPlus.normalize(
        requirement
      )

    const ir =
      await chatgptPro.generateIR(
        normalized
      )

    const repositoryMapping =
      await codex.mapToRepository(ir)

    if (
      repositoryMapping.missingContext.length > 0
    ) {
      return {
        status: "MISSING_CONTEXT",
        missingContext:
          repositoryMapping.missingContext
      }
    }

    const executionPlan =
      await codex.createExecutionPlan({
        ir,
        repositoryMapping
      })

    const approval =
      await humanApprove({
        ir,
        executionPlan
      })

    if (!approval.accepted) {
      return {
        status: "REJECTED"
      }
    }

    const result =
      await codex.execute(executionPlan)

    const verification =
      await runVerification({
        invariants: ir.invariants,
        rules: ir.verification,
        changedFiles: result.changedFiles
      })

    return {
      status: verification.passed
        ? "READY_FOR_REVIEW"
        : "VERIFICATION_FAILED",
      ir,
      executionPlan,
      result,
      verification
    }
  }
}

这个流程和编译器非常相似:

text 复制代码
需求是源语言
EIR 是中间表示
Codex 是代码生成后端
测试系统是验证器
人工审查是最终链接与发布阶段

十四、EIR 不能完全由 AI 决定

需要注意的是,工程 IR 不是绝对真理。

ChatGPT Pro 生成的状态模型、不变量和风险判断,也可能有误。

因此,EIR 应该被看成可审查的工程提案。

text 复制代码
Raw Intent
    ↓
AI-generated IR
    ↓
Human Review
    ↓
Approved IR

高风险领域尤其需要人工确认:

text 复制代码
支付
认证
权限
库存
数据迁移
安全策略
公共 API

AI 可以帮助提取和结构化约束。

但不能替代业务责任和架构决策。


十五、未来的 Pull Request 可能附带 EIR

传统 Pull Request 主要包含代码 Diff。

未来由 Codex 产生的 PR,可以附带对应的工程 IR。

md 复制代码
## Engineering IR

### Goal

防止订单重复取消导致库存重复恢复。

### Invariants

- 一个取消事件最多恢复一次库存
- 已完成订单不能取消
- 重复请求不得产生新副作用

### Scope

允许修改:

- order
- inventory
- order tests

禁止修改:

- payment
- authentication
- database schema

### Verification

- 单元测试
- 幂等性集成测试
- 并发取消测试

### Codex Mapping

- `cancelOrder`
- `restoreInventory`
- `order-cancel.test.ts`

### Remaining Risks

- 消息队列真实重试场景尚未压测

审查者可以先看 EIR,再看代码。

这样比直接进入复杂 Diff 更容易判断方向是否正确。


十六、未来代码评审可能先评审 IR

当代码生成速度越来越快,代码审查压力会不断上升。

更高效的方法可能是先评审 EIR。

text 复制代码
第一阶段:
评审目标、范围、不变量和风险

第二阶段:
批准 Codex 执行

第三阶段:
评审代码与验证证据

如果 EIR 本身就错误,就没有必要让 Codex 继续生成代码。

这相当于把问题提前发现。

text 复制代码
错误需求
→ 在 IR 阶段发现

错误范围
→ 在规划阶段发现

错误实现
→ 在编译和测试阶段发现

发现越早,修复成本越低。


十七、EIR 会让软件开发更接近"意图编译"

传统软件开发是:

text 复制代码
程序员手动把需求翻译成代码

EIR 模式则是:

text 复制代码
人类确认意图
ChatGPT Pro 编译成工程 IR
Codex 编译成代码变更
测试系统验证语义保持

可以用一个公式表示:

text 复制代码
Human Intent
→ Engineering IR
→ Repository Patch
→ Verified Behavior

这是一种新的编译链。

自然语言不再直接控制代码。

它先经过工程 IR 约束。

这让 AI 编程从自由生成走向结构化编译。


十八、工程 IR 可能成为新的软件资产

过去,软件资产主要包括:

text 复制代码
源代码
测试
文档
架构图
部署配置

未来,EIR 也可能成为重要资产。

它记录:

text 复制代码
为什么修改
哪些约束必须保持
当时的业务不变量
Codex 如何映射到代码
哪些风险仍未解决

这对于未来维护非常有价值。

半年后,团队不只可以查看 Git Diff,还能查看当时的工程意图。

text 复制代码
Git 记录代码历史
EIR 记录意图历史

两者结合,才能更完整地解释系统演进。


十九、工程 IR 会提高代码仓库的可迁移性

当任务语义只存在于某种技术实现中时,系统迁移非常困难。

例如从 Node.js 迁移到 Java,团队需要重新理解大量历史代码。

如果核心业务规则、不变量和状态模型已经沉淀在 EIR 中,那么迁移过程会更容易。

text 复制代码
旧代码仓库
    ↓
提取 EIR
    ↓
新技术栈 Codex Backend
    ↓
新代码仓库

当然,这并不意味着可以自动完成大型迁移。

但至少业务语义不再完全被旧代码绑定。


二十、结语:ChatGPT Pro、Plus 与 Codex 之间,缺少的可能不是更强模型,而是更好的中间表示

ChatGPT Plus、ChatGPT Pro 与 Codex 正在让自然语言更接近软件执行。

但从自然语言直接跳到代码,始终存在巨大的语义风险。

自然语言过于模糊。

代码执行过于具体。

二者之间需要一层新的工程抽象。

text 复制代码
ChatGPT Plus:
整理和归一化语义

ChatGPT Pro:
生成工程中间表示

Codex:
将中间表示映射到代码仓库

测试系统:
验证执行是否满足不变量

人类:
确认意图和承担最终责任

这层 Engineering IR 可以包含:

text 复制代码
目标
范围
状态
不变量
约束
依赖
风险
验证
停止条件

它不是代码。

也不是普通需求文档。

它是专门为 AI Agent 执行设计的工程协议。

未来成熟的 AI 软件开发,可能不会再是:

text 复制代码
一句 Prompt
    ↓
一堆代码

而会变成:

text 复制代码
自然语言需求
    ↓
ChatGPT Plus 清洗上下文
    ↓
ChatGPT Pro 生成 EIR
    ↓
人工确认
    ↓
Codex 生成代码变更
    ↓
测试验证
    ↓
人工合并

可以用一个公式概括:

text 复制代码
AI Engineering Reliability
=
Intent Quality
× IR Precision
× Codex Execution Quality
× Verification Strength

如果没有工程 IR,ChatGPT Pro 和 Codex 之间只能依赖自然语言传递复杂任务。

模型越强,虽然能处理更多内容,但也可能更自信地解释错误上下文。

真正稳定的方式,不是让 Codex 猜得更准,而是减少它必须猜测的内容。

这也许是 ChatGPT Plus、ChatGPT Pro 与 Codex 进入下一阶段后,软件工程最值得探索的方向:

为自然语言意图和代码执行之间,建立一种可版本化、可审查、可验证的工程中间表示。

当这层中间表示成熟之后,AI 编程才可能真正从"生成代码"走向"编译工程意图"。

相关推荐
武子康15 小时前
2026 开源视频生成模型全景图:按 9 类任务路由比按参数量选模型更可靠
人工智能·ai·chatgpt·openai·claude·世界模型·视频模型
dunge202616 小时前
2026年7月更新:ChatGPT Pro、Plus 与 Codex 如何进入事件驱动软件架构(GPT-5.6与AI Agent技术分享)
人工智能·gpt·chatgpt
春波petal17 小时前
大模型底层逻辑:优势局限与天生短板
人工智能·自然语言处理·chatgpt·大模型·多模态·语音大模型
无处安放_a17 小时前
ChatGPT Agent 发布:OpenAI 把整个电脑装进了对话框
chatgpt
顿哥GPT18 小时前
7月更新 ChatGPT、Codex、Pro、Plus 背后的工程难题:AI Consistency 将成为 LLM-Native 系统的下一道门槛(5.6)
人工智能·chatgpt
NiceCloud喜云2 天前
ClaudeAPI 接入 n8n / Dify / Open WebUI 实战:Base URL 配置、调用示例与排错
开发语言·ai·chatgpt·aigc
yalipf2 天前
chatgpt调研-强化学习训练资源
chatgpt
CypressTel2 天前
OpenAI推出ChatGPT Work:AI开始从“回答问题”走向“完成工作”——赛柏特AI快讯
人工智能·chatgpt
yyyyyuanxian2 天前
一次 ChatGPT Plus 订阅经历:网页端支付受限后,我在 iPhone 内购页完成了订阅
人工智能·chatgpt·iphone·chatgpt plus