2026年7月更新:ChatGPT Pro、Plus 与 Codex 如何进入事件驱动软件架构(GPT-5.6与AI Agent技术分享)
过去的软件系统,大多是围绕“请求”构建的。
用户点击按钮,前端发起请求,后端执行逻辑,数据库返回结果,系统完成响应。
这种模式可以被抽象为:
Request
↓
Controller
↓
Service
↓
Database
↓
Response
它是一种典型的请求驱动架构。
系统只有在收到明确指令时才开始工作。
但随着 ChatGPT Plus、ChatGPT Pro 与 Codex 逐渐进入开发流程,软件系统正在出现另一种趋势:
AI 不再只是响应一次请求,而是开始围绕事件、状态与目标持续推进任务。
这意味着,AI Agent 与传统软件的结合,不应该只停留在聊天窗口或代码生成接口。
更值得讨论的方向,是如何把 ChatGPT Pro、Plus 与 Codex 放入事件驱动架构中,使 AI 能够感知系统变化、判断任务优先级、生成执行计划,并在边界内完成工程操作。
这并不是简单增加一个模型接口。
它涉及事件总线、状态机、任务编排、幂等控制、权限治理、可观测性和人工审批。
从这个角度看,ChatGPT Plus、ChatGPT Pro 与 Codex 正在推动软件架构从“请求驱动”走向“事件驱动的智能执行系统”。
一、传统请求驱动架构的局限
请求驱动架构非常适合确定性业务。
例如:
用户提交订单
系统创建订单
系统返回订单编号
对应代码可能是:
async function createOrder(
input: CreateOrderInput
): Promise<Order> {
validateOrderInput(input)
const order = await orderRepository.create(input)
return order
}
这种结构具有几个优点:
输入明确
执行路径明确
输出明确
错误边界明确
但它并不擅长处理持续变化的复杂任务。
例如:
项目测试失败后自动分析原因
依赖库更新后判断兼容风险
生产指标异常后生成排查计划
代码仓库变化后检查架构约束
用户反馈积累后识别高频问题
这些问题没有一个单一请求可以完整描述。
它们更像事件:
测试失败事件
依赖更新事件
性能异常事件
代码提交事件
用户反馈事件
系统需要在事件发生后,根据上下文决定下一步。
这已经不再是普通函数调用,而是任务协调。
二、事件驱动系统的中心是状态变化
在事件驱动架构中,系统关注的不是“谁调用了哪个函数”,而是“系统发生了什么变化”。
例如:
OrderCreated
PaymentCompleted
InventoryReserved
OrderCancelled
RefundCompleted
每个事件都描述一个已经发生的事实。
事件不会告诉系统所有后续动作,而是由其他组件订阅事件并做出响应。
OrderCancelled
↓
Inventory Service:恢复库存
Payment Service:判断是否退款
Notification Service:发送通知
Analytics Service:记录取消数据
可以定义一个基础事件结构:
type DomainEvent<TPayload> = {
id: string
type: string
occurredAt: string
aggregateId: string
payload: TPayload
metadata: {
correlationId: string
causationId?: string
source: string
}
}
例如:
type OrderCancelledPayload = {
orderId: string
userId: string
reason: string
}
const event: DomainEvent<OrderCancelledPayload> = {
id: "evt-1001",
type: "ORDER_CANCELLED",
occurredAt: new Date().toISOString(),
aggregateId: "order-9001",
payload: {
orderId: "order-9001",
userId: "user-101",
reason: "USER_REQUEST"
},
metadata: {
correlationId: "flow-88",
source: "order-service"
}
}
这种结构让系统可以围绕状态变化协作。
而 AI Agent 的加入,会让事件处理进一步升级。
三、ChatGPT Plus 可以成为事件语义归一化层
系统事件通常来自不同来源:
代码仓库
测试平台
监控平台
用户反馈
项目管理系统
日志系统
CI/CD
这些事件格式不同、语义不同、重要程度不同。
例如:
GitHub Push Event
Unit Test Failed Event
Production Error Event
Customer Complaint Event
Dependency Vulnerability Event
如果直接把所有事件交给 ChatGPT Pro 或 Codex,系统会产生大量噪声。
ChatGPT Plus 可以承担第一层语义归一化。
Raw Events
↓
ChatGPT Plus
↓
Normalized Engineering Events
例如,多个原始事件:
测试失败:UserServiceTest
日志异常:NullPointerException
用户反馈:修改昵称后页面报错
可以被归一化为:
event:
type: USER_PROFILE_UPDATE_FAILURE
confirmed_facts:
- 用户修改昵称后出现异常
- UserServiceTest 当前失败
- 错误涉及空值处理
affected_area:
- user-profile
- user-service
severity:
level: medium
unknowns:
- 是否影响所有用户
- 是否与旧数据有关
这一步不是解决问题。
而是把不同来源的信号转成统一工程语义。
四、ChatGPT Pro 可以成为事件推理与任务规划器
当事件被归一化后,ChatGPT Pro 可以进一步判断:
这是一个真实故障还是偶发噪声?
是否需要立即处理?
哪些模块可能受影响?
应该先分析还是直接修复?
是否需要 Codex 介入?
是否需要人工审批?
因此,ChatGPT Pro 更适合位于事件协调层。
Normalized Event
↓
ChatGPT Pro Reasoning
↓
Task Plan
↓
Codex / Test Agent / Human
可以定义一个任务规划结果:
type AgentTaskPlan = {
eventId: string
objective: string
priority: "low" | "medium" | "high" | "critical"
tasks: Array<{
id: string
agent: "CODEX" | "TEST" | "REVIEW" | "HUMAN"
action: string
dependsOn: string[]
scope: string[]
}>
constraints: string[]
approvalRequired: boolean
}
示例:
{
"eventId": "evt-1001",
"objective": "定位并修复用户昵称为空时的异常",
"priority": "medium",
"tasks": [
{
"id": "task-1",
"agent": "CODEX",
"action": "只分析 user profile 模块,不修改代码",
"dependsOn": [],
"scope": [
"src/user/profile.service.ts",
"tests/user/profile.test.ts"
]
},
{
"id": "task-2",
"agent": "TEST",
"action": "生成昵称为空和 null 的失败场景",
"dependsOn": [
"task-1"
],
"scope": [
"tests/user/profile.test.ts"
]
}
],
"constraints": [
"不修改数据库结构",
"不改变接口返回格式",
"不影响登录模块"
],
"approvalRequired": false
}
这就是事件到任务的转换。
五、Codex 是事件驱动架构中的受控执行者
Codex 在这个系统中不应该负责决定任务是否值得执行。
它更适合承担具体工程任务。
Event
↓
ChatGPT Plus:整理语义
↓
ChatGPT Pro:规划任务
↓
Codex:执行代码层任务
Codex 接收到的不是原始事件,而是经过约束的工程任务。
codex_task:
trigger_event:
type: USER_PROFILE_UPDATE_FAILURE
goal:
- 修复 nickname 为 null 时的保存异常
allowed_files:
- src/user/profile.service.ts
- tests/user/profile.test.ts
forbidden_files:
- src/auth/*
- database/migrations/*
- src/payment/*
constraints:
- 不改变接口返回字段
- 不引入新依赖
- 保持旧用户数据兼容
verification:
- 原测试必须通过
- 新增 null 测试
- 新增空字符串测试
stop_conditions:
- 需要修改数据库
- 需要修改认证模块
- 影响文件超过 3 个
这里最重要的是:
事件可以触发 Codex,但不能直接授权 Codex 无限执行。
事件只是信号。
任务规格才是执行协议。
六、事件驱动 AI 系统必须有状态机
一个事件触发后,任务不会立即完成。
它会经历多个状态:
RECEIVED
↓
NORMALIZED
↓
ANALYZED
↓
PLANNED
↓
APPROVED
↓
EXECUTING
↓
VERIFYING
↓
REVIEWING
↓
COMPLETED
异常状态包括:
CONTEXT_MISSING
SCOPE_VIOLATION
VERIFICATION_FAILED
HUMAN_REJECTED
BASELINE_CHANGED
可以定义:
type AIEventTaskState =
| "RECEIVED"
| "NORMALIZED"
| "ANALYZED"
| "PLANNED"
| "APPROVED"
| "EXECUTING"
| "VERIFYING"
| "REVIEWING"
| "COMPLETED"
| "CONTEXT_MISSING"
| "SCOPE_VIOLATION"
| "VERIFICATION_FAILED"
| "HUMAN_REJECTED"
| "BASELINE_CHANGED"
状态转换必须受到控制。
const allowedTransitions: Record<
AIEventTaskState,
AIEventTaskState[]
> = {
RECEIVED: [
"NORMALIZED"
],
NORMALIZED: [
"ANALYZED",
"CONTEXT_MISSING"
],
ANALYZED: [
"PLANNED"
],
PLANNED: [
"APPROVED",
"HUMAN_REJECTED"
],
APPROVED: [
"EXECUTING",
"BASELINE_CHANGED"
],
EXECUTING: [
"VERIFYING",
"SCOPE_VIOLATION"
],
VERIFYING: [
"REVIEWING",
"VERIFICATION_FAILED"
],
REVIEWING: [
"COMPLETED",
"HUMAN_REJECTED"
],
COMPLETED: [],
CONTEXT_MISSING: [],
SCOPE_VIOLATION: [],
VERIFICATION_FAILED: [],
HUMAN_REJECTED: [],
BASELINE_CHANGED: []
}
这可以防止 AI Agent 跳过关键步骤。
七、事件驱动 AI 必须保证幂等性
事件系统中,事件可能重复投递。
这是分布式系统的常见现象。
例如:
同一个测试失败事件被发送两次
同一个代码提交事件被重复消费
同一个监控告警被多次触发
如果 Codex 每收到一次事件都重新修改代码,就可能造成重复变更。
因此,事件处理必须幂等。
type ProcessedEvent = {
eventId: string
taskId: string
status: "PROCESSING" | "COMPLETED" | "FAILED"
}
处理前检查:
async function handleEngineeringEvent(
event: DomainEvent<unknown>
) {
const existing =
await eventRepository.findByEventId(
event.id
)
if (existing?.status === "COMPLETED") {
return {
status: "IGNORED",
reason: "EVENT_ALREADY_PROCESSED"
}
}
await eventRepository.markProcessing(
event.id
)
const result =
await processEvent(event)
await eventRepository.markCompleted(
event.id,
result.taskId
)
return result
}
AI Agent 系统不能假设每个事件只会出现一次。
八、事件溯源可以保存 AI 工程决策历史
传统事件溯源不是只保存当前状态,而是保存所有状态变化事件。
例如:
OrderCreated
PaymentCompleted
OrderShipped
OrderCancelled
通过重放事件,可以恢复当前状态。
AI 工程也可以使用类似结构。
EngineeringTaskCreated
ContextNormalized
PlanGenerated
HumanApproved
CodexStarted
FileModified
TestFailed
PatchRevised
HumanMerged
可以定义:
type EngineeringAgentEvent =
| {
type: "TASK_CREATED"
taskId: string
goal: string
}
| {
type: "CONTEXT_NORMALIZED"
taskId: string
contextVersion: string
}
| {
type: "PLAN_GENERATED"
taskId: string
planVersion: string
}
| {
type: "CODEX_EXECUTION_STARTED"
taskId: string
baselineCommit: string
}
| {
type: "FILE_MODIFIED"
taskId: string
file: string
}
| {
type: "VERIFICATION_FAILED"
taskId: string
reason: string
}
| {
type: "TASK_COMPLETED"
taskId: string
commitId: string
}
这样可以追踪:
任务为什么被创建?
ChatGPT Pro 当时如何规划?
Codex 基于哪个代码版本执行?
测试为什么失败?
最终谁批准了合并?
事件历史会成为 AI 工程审计基础。
九、事件总线不能成为无限自动化通道
如果所有事件都可以自动触发 Agent,系统可能迅速失控。
例如:
每次测试失败都启动 Codex
每次日志异常都创建修复任务
每次用户投诉都修改代码
这会导致任务风暴。
因此,事件需要经过过滤、聚合和优先级判断。
Raw Events
↓
Filter
↓
Deduplication
↓
Aggregation
↓
Priority Classification
↓
Agent Planning
例如,连续出现 100 条相同错误日志,不应该创建 100 个 Codex 任务。
应该聚合为:
aggregated_event:
type: DATABASE_TIMEOUT_SPIKE
count: 100
time_window:
minutes: 5
affected_services:
- order-service
- payment-service
severity:
level: high
之后由 ChatGPT Pro 判断是否需要执行工程任务。
十、ChatGPT Pro 应该区分事实、推测和建议
事件分析中最大的风险,是把推测当成事实。
例如:
事实:
订单接口延迟增加。
推测:
可能与数据库连接池有关。
建议:
检查连接池使用情况。
这三者必须分开。
可以定义:
type EventAnalysis = {
facts: EvidenceItem[]
hypotheses: Hypothesis[]
recommendations: Recommendation[]
}
例如:
{
"facts": [
{
"statement": "订单接口 P95 延迟从 200ms 上升到 1200ms",
"source": "monitoring"
}
],
"hypotheses": [
{
"statement": "可能与数据库连接池耗尽有关",
"confidence": 0.62
}
],
"recommendations": [
{
"action": "检查连接池等待时间和活跃连接数"
}
]
}
ChatGPT Pro 可以生成假设,但不能把假设直接当成 Codex 修改依据。
Codex 应该优先执行诊断任务,而不是直接改代码。
十一、事件驱动 AI 要支持“诊断任务”和“修改任务”分离
面对异常事件,第一步不应该总是修改代码。
应先诊断。
异常事件
↓
诊断任务
↓
确认原因
↓
修复任务
可以定义两种任务:
type AgentTask =
| {
type: "DIAGNOSTIC"
readOnly: true
objective: string
allowedResources: string[]
}
| {
type: "MODIFICATION"
readOnly: false
objective: string
allowedFiles: string[]
requiredVerification: string[]
}
诊断任务示例:
task:
type: DIAGNOSTIC
objective:
- 分析订单接口延迟增加原因
read_only:
- true
allowed_resources:
- application logs
- database metrics
- order-service source
- recent commits
output:
- confirmed facts
- likely causes
- missing evidence
- recommended next action
只有诊断结果足够明确,才生成修改任务。
这能避免 Codex 基于错误假设直接改代码。
十二、Codex 修改代码前必须验证仓库基线
事件发生时,代码仓库可能处于某个版本。
但当 Codex 真正开始执行时,仓库可能已经变化。
例如:
事件生成时:
Commit A
ChatGPT Pro 规划时:
Commit A
Codex 执行时:
Commit B
此时任务可能已经过期。
任务必须绑定仓库基线:
type VersionedCodexTask = {
taskId: string
baselineCommit: string
contextVersion: string
planVersion: string
allowedFiles: string[]
}
执行前检查:
async function verifyTaskBaseline(
task: VersionedCodexTask
) {
const currentCommit =
await git.getCurrentCommit()
if (
currentCommit !== task.baselineCommit
) {
return {
valid: false,
reason: "BASELINE_CHANGED"
}
}
return {
valid: true
}
}
如果基线变化,应重新规划。
十三、事件优先级不应该只由模型决定
ChatGPT Pro 可以分析事件严重程度,但最终优先级不应该完全由模型自由判断。
应结合确定性规则。
Priority
=
Rule-based Severity
+
Business Impact
+
AI Analysis
例如:
function calculatePriority(
event: NormalizedEvent,
analysis: EventAnalysis
): Priority {
if (
event.type === "SECURITY_BREACH"
) {
return "CRITICAL"
}
if (
event.affectedUsers > 10000
) {
return "HIGH"
}
if (
analysis.confidence < 0.5
) {
return "REVIEW_REQUIRED"
}
return "MEDIUM"
}
安全、支付、权限、数据丢失等事件,可以由规则直接提升优先级。
AI 负责补充分析,而不是单独控制优先级。
十四、事件驱动 AI 系统需要背压机制
当事件产生速度超过 Agent 处理速度时,系统会积压。
Event Production Rate
>
Agent Processing Rate
这会导致:
任务堆积
上下文过期
重复分析
资源耗尽
高优先级任务被阻塞
因此需要背压机制。
可以按优先级建立队列:
Critical Queue
High Queue
Medium Queue
Low Queue
调度器优先处理高风险事件。
type TaskQueue = {
critical: AgentTask[]
high: AgentTask[]
medium: AgentTask[]
low: AgentTask[]
}
还可以设置任务过期时间:
type ExpiringAgentTask = {
taskId: string
expiresAt: string
baselineCommit: string
}
如果任务已经过期,应丢弃或重新分析。
十五、人工审批应该根据风险动态插入
不是所有任务都需要相同审批强度。
低风险任务可以自动执行并等待事后审查。
中风险任务可以先审批计划。
高风险任务必须人工批准每个关键步骤。
approval_policy:
low:
before_execution: false
before_merge: true
medium:
before_execution: true
before_merge: true
high:
before_execution: true
before_write: true
before_merge: true
例如:
低风险:
修正文档
补充注释
增加测试
中风险:
修复业务 bug
调整缓存逻辑
小范围重构
高风险:
修改权限
修改支付
数据库迁移
生产部署
ChatGPT Pro 可以评估风险,但审批规则应由系统策略控制。
十六、事件驱动 Agent 的可观测性
传统事件系统需要观察:
Event Throughput
Consumer Lag
Failure Rate
Retry Count
Dead Letter Queue
AI Agent 系统还需要观察:
Planning Latency
Context Conflict Rate
Codex Scope Violation Rate
Verification Failure Rate
Human Rejection Rate
Task Drift Rate
可以定义指标:
type AgentEventMetrics = {
receivedEvents: number
normalizedEvents: number
createdTasks: number
planningLatencyMs: number
scopeViolationRate: number
verificationFailureRate: number
humanRejectionRate: number
averageCompletionTimeMs: number
}
这些指标可以帮助判断 AI 工作流是否真正可靠。
十七、死信队列可以保存无法处理的 AI 任务
传统消息系统使用 Dead Letter Queue 保存处理失败的消息。
AI Agent 系统也需要类似机制。
无法自动处理的任务可以进入:
Agent Dead Letter Queue
原因包括:
上下文冲突
权限不足
仓库版本变化
连续验证失败
任务范围无法确定
需要业务决策
死信任务结构:
type AgentDeadLetterTask = {
taskId: string
originalEvent: string
failureReason: string
retryCount: number
lastAttemptAt: string
requiredHumanAction: string
}
这比无限重试更安全。
十八、一个完整的事件驱动 AI 工程架构
可以把整个系统分成六层:
Event-driven AI Engineering Platform
├── Event Ingestion Layer
│ ├── Git Events
│ ├── CI Events
│ ├── Monitoring Events
│ ├── User Feedback Events
│ └── Security Events
│
├── Normalization Layer
│ └── ChatGPT Plus
│
├── Reasoning Layer
│ └── ChatGPT Pro
│
├── Coordination Layer
│ ├── Task State Machine
│ ├── Priority Queue
│ ├── Approval Policy
│ └── Version Check
│
├── Execution Layer
│ ├── Codex
│ ├── Test Agent
│ └── Documentation Agent
│
└── Governance Layer
├── Human Review
├── Audit Log
├── Rollback
└── Observability
这里的关键不是模型数量。
而是层与层之间的责任边界。
十九、一个简化的事件驱动 Agent 程序
type EngineeringEvent = {
id: string
type: string
payload: unknown
occurredAt: string
}
class EventDrivenAIEngineering {
async handle(
event: EngineeringEvent
) {
const duplicated =
await this.isDuplicateEvent(
event.id
)
if (duplicated) {
return {
status: "IGNORED"
}
}
const normalized =
await chatgptPlus.normalize(
event
)
const analysis =
await chatgptPro.analyze(
normalized
)
if (
analysis.contextConflicts.length > 0
) {
return this.sendToHumanReview({
event,
analysis
})
}
const plan =
await chatgptPro.createPlan({
normalized,
analysis
})
const approved =
await this.checkApprovalPolicy(
plan
)
if (!approved) {
return {
status: "APPROVAL_REQUIRED",
plan
}
}
const baselineValid =
await this.verifyBaseline(
plan.baselineCommit
)
if (!baselineValid) {
return {
status: "BASELINE_CHANGED"
}
}
const result =
await codex.execute(
plan.codexTask
)
const verification =
await this.verify(result)
if (!verification.passed) {
return {
status: "VERIFICATION_FAILED",
result,
verification
}
}
return this.sendToHumanReview({
event,
plan,
result,
verification
})
}
private async isDuplicateEvent(
eventId: string
): Promise<boolean> {
return false
}
private async checkApprovalPolicy(
plan: AgentTaskPlan
): Promise<boolean> {
return plan.priority !== "critical"
}
private async verifyBaseline(
commit: string
): Promise<boolean> {
return true
}
private async verify(
result: unknown
) {
return {
passed: true
}
}
private async sendToHumanReview(
payload: unknown
) {
return {
status: "HUMAN_REVIEW_REQUIRED",
payload
}
}
}
这段代码表达了事件驱动 AI 工程的基本原则:
先去重
再归一化
再推理
再规划
再审批
再检查版本
再执行
再验证
最后人工审查
二十、ChatGPT Plus、Pro 与 Codex 的价值,不只是模型能力
从事件驱动架构的角度看,ChatGPT Plus、ChatGPT Pro 与 Codex 的价值不应该只用“更强”来描述。
它们处在完全不同的位置。
ChatGPT Plus:
事件语义整理层
ChatGPT Pro:
事件推理与任务规划层
Codex:
代码仓库执行层
三者组合后,系统才可能从被动响应走向持续任务处理。
但模型只是其中一部分。
真正决定系统可靠性的,还有:
事件幂等
任务状态机
版本控制
范围约束
优先级队列
背压机制
人工审批
审计日志
回滚能力
如果没有这些工程结构,AI 越能执行,系统越容易失控。
二十一、结语:AI Agent 时代,软件开始从“响应请求”走向“响应变化”
传统软件等待用户请求。
事件驱动软件监听系统变化。
AI Agent 系统则在变化发生后,尝试理解变化、判断影响、规划任务并推进执行。
这三者可以表示为:
Request-driven System:
收到命令后执行
Event-driven System:
状态变化后响应
Agent-driven System:
状态变化后理解、规划并执行
ChatGPT Plus、ChatGPT Pro 与 Codex 共同构成了这种系统的基础雏形。
事件发生
↓
ChatGPT Plus 整理语义
↓
ChatGPT Pro 判断影响并规划
↓
Codex 在边界内执行
↓
测试系统验证
↓
人类审批
这并不意味着系统会完全自治。
相反,越接近真实执行,越需要严格治理。
可以用一个公式概括:
Event-driven AI Reliability
=
Event Quality
× Context Accuracy
× Planning Quality
× Execution Control
× Verification Strength
如果事件本身不准确,后续推理没有意义。
如果上下文过期,ChatGPT Pro 的计划可能错误。
如果任务边界不清,Codex 可能扩大修改范围。
如果没有测试和人工审查,执行结果就无法被信任。
因此,2026 年的软件工程讨论,不应该只停留在 ChatGPT Plus、ChatGPT Pro 或 Codex 能生成多少代码。
更值得关注的问题是:
当软件系统开始能够感知事件、理解变化并自动推进任务后,我们应该如何设计它的边界、状态、权限和责任?
这才是 ChatGPT Pro、Plus、Codex 与 AI Agent 真正进入工程系统之后,最有价值的技术问题。
更多推荐


所有评论(0)