夜雨聆风学习资料网

ARTICLE · 1073791

当 Codex 可以快速写完功能,软件架构反而变得更重要了

当 Codex 可以快速写完功能,软件架构反而变得更重要了

过去的软件开发,有一个非常现实的问题:

功能实现成本很高。

一个需求从想法到上线,往往需要经过:

需求分析
↓
技术设计
↓
编码
↓
联调
↓
测试
↓
上线

其中大量时间花在:

把设计变成代码

因此很多团队天然会把重点放在:

怎么更快实现?

这也是为什么过去几十年软件工程一直在不断提高开发效率:

高级语言
Framework
Library
Cloud
Low Code
Copilot
Codex

而 Coding Agent 出现之后,一个新的变化正在发生。

实现代码的成本开始快速下降。

一个过去需要开发人员几天才能完成的普通功能,现在可能在 Codex 辅助下几个小时就完成。

甚至未来可能进一步变成:

工程师定义目标
↓
Agent 实现
↓
自动测试
↓
人工 Review

这看起来似乎意味着:

软件开发会越来越简单。

但我反而认为事情可能朝另一个方向发展。

编码越容易,软件架构反而越重要。

因为当“生成代码”不再稀缺以后,真正决定系统长期质量的,将越来越是:

代码应该放在哪里?
模块边界是什么?
谁可以依赖谁?
哪些东西应该共享?
哪些东西必须隔离?
未来怎么扩展?

也就是说:

Implementation 变便宜以后,Architecture 会变得更贵。


一、为什么 AI 会放大架构问题

假设一个项目的架构非常混乱。

比如:

Controller
直接访问数据库

Service
直接操作 Redis

Utility
包含大量业务逻辑

不同模块
互相调用内部实现

如果全部由人工开发,系统虽然会越来越乱,但变化速度通常有限。

因为程序员每天只能写有限数量的代码。

但 Coding Agent 出现以后,情况会改变。

一个 Agent 可以快速:

增加 10 个接口
修改 20 个文件
新增多个 Service
增加大量辅助函数

如果项目没有清晰架构约束,Agent 很容易复制已有的坏模式。

于是:

Bad Architecture
+
Fast Code Generation
=
Faster Architecture Decay

也就是说:

AI 不只会放大开发效率,也会放大架构问题。

以前一个坏设计可能半年以后才扩散。

未来一个 Agent 可能几天就复制几十次。


二、AI 最擅长的事情之一,是模仿已有代码

这既是优势,也是风险。

假设项目里已经形成统一模式:

Controller
↓
Service
↓
Repository

Agent 新增一个订单功能时,大概率会找到现有:

UserController
UserService
UserRepository

然后模仿。

最终生成:

OrderController
OrderService
OrderRepository

这种情况下:

好架构会强化好架构。

但如果项目里已有:

Controller
直接写 SQL

Agent 同样会学。

于是:

坏架构也会强化坏架构。

这意味着未来代码仓库本身其实就是一个非常大的:

Few-shot Example

Agent 会不断从已有代码学习:

这个项目“通常怎么做”。

所以项目现有代码质量,会直接影响未来 AI 生成代码的质量。


三、未来架构规则必须越来越显式

传统团队里,经常存在很多潜规则。

例如:

Controller 不允许包含业务逻辑

Domain 层不能依赖 Infrastructure

跨模块调用必须经过公开接口

公共模块不能引用业务模块

老员工都知道。

新人进来以后,慢慢学。

但 Agent 不会自动知道这些规则。

所以 AI Coding 时代一个非常重要的变化是:

Architecture Rules Need to Be Explicit

架构规则必须显式化。

例如项目中可以明确写:

# Architecture Rules

## Dependency

API → Application → Domain

Infrastructure 可以依赖 Domain。

Domain 不允许依赖 Infrastructure。

## Module Boundary

Order 模块不允许直接访问 Payment Repository。

跨模块调用必须通过公开 Service。

## Database

业务模块只能访问自己的表。

这样 Codex 在开始任务之前,就能够先建立:

Architecture Context

而不是根据经验猜。


四、架构文档不能只画一张图

很多团队所谓的架构文档,其实是一张:

系统架构图.pptx

里面画着:

前端
↓
网关
↓
微服务
↓
数据库

这种图对领导汇报可能很有用。

但对 Coding Agent 来说,价值有限。

Agent 真正需要的是:

哪些模块存在?
每个模块负责什么?
谁可以调用谁?
哪些接口是公开的?
哪些实现不能直接引用?

所以未来更加实用的架构说明应该接近:

Machine Readable Architecture

例如:

modules:
  order:
    owns:
      - orders
      - order_items
    can_call:
      - payment.public_api
      - inventory.public_api

  payment:
    owns:
      - payments
    can_call:
      - notification.public_api

这种信息比一张漂亮的大图更适合 Agent 使用。


五、架构边界其实是在减少 Agent 的决策空间

为什么架构越清晰,Agent 越容易工作?

因为它减少了:

Search Space

搜索空间。

假设没有任何架构规则。

Agent 要实现:

查询订单。

它可以:

Controller 直接 SQL

新增 Repository

调用其他 Service

新增缓存

创建公共工具类

选择非常多。

选择越多,犯错概率越高。

但如果架构明确规定:

Controller
只能调用 Application Service

Application Service
通过 Repository 访问数据

那么 Agent 的决策空间立即缩小:

OrderController
↓
OrderService
↓
OrderRepository

所以架构规则的另一个重要作用是:

帮助 Agent 少做决策。

这和人类团队完全一样。

成熟团队并不是因为每个人每天都做无数架构决策。

而是因为:

大量决策已经通过规范提前完成。

六、未来好的架构应该具备一个新特征:Agent Friendly

过去评价软件架构,通常看:

可维护性
可扩展性
可靠性
性能
安全性

未来可能还会增加:

Agent Friendliness

也就是:

Agent 是否容易理解和修改这个系统?

例如一个 Agent Friendly 的模块应该具有:

明确入口
明确职责
有限依赖
稳定接口
完整测试
清晰命名

假设一个模块:

order/
  api/
  application/
  domain/
  infrastructure/
  tests/

Agent 很容易理解。

但如果整个系统是:

common.py
common2.py
utils.py
utils_new.py
helper.py
business_helper.py

人都看不懂。

Agent 同样会迷失。

所以:

好架构不仅降低 Human Cognitive Load,也降低 Agent Cognitive Load。


七、模块化会因为 AI 重新获得更大价值

这些年软件工程经历过:

Monolith
↓
Microservices
↓
Modular Monolith

很多团队逐渐意识到:

服务拆得越多,不一定越好。

但无论是微服务还是单体,真正关键的其实都是:

Module Boundary

模块边界。

为什么在 Agent 时代边界更加重要?

因为未来多个 Agent 可能同时工作。

例如:

Agent A
修改 Order

Agent B
修改 Payment

Agent C
修改 Notification

如果模块之间边界清晰:

Order
Payment
Notification

就可以并行。

但如果:

所有模块共享大量全局状态
所有 Service 相互调用

多个 Agent 会频繁修改同一批文件。

最终:

Git Conflict
Context Conflict
Behavior Conflict

都会明显增加。


八、未来架构还有一个非常重要的指标:可并行修改性

过去设计架构时,我们很少会问:

这个系统适不适合 10 个 Agent 同时修改?

未来可能需要考虑。

例如两个系统。

系统 A:

User
Order
Payment
Inventory

边界清晰

系统 B:

所有业务都依赖一个 CommonService

如果同时运行多个 Agent:

系统 A:

Agent 1 → User
Agent 2 → Order
Agent 3 → Payment

几乎互不影响。

系统 B:

Agent 1 → CommonService
Agent 2 → CommonService
Agent 3 → CommonService

天天冲突。

所以未来好的软件架构,除了:

Maintainability

还可能需要:

Parallelizability

可并行开发性。


九、“公共模块”可能成为 Agent 时代最大的技术债来源之一

很多项目有一个目录:

common/

最开始只有几个工具。

几年以后:

common/
  string_utils
  date_utils
  db_utils
  user_utils
  order_utils
  auth_utils
  payment_utils

最后:

什么都在 common。

这种设计对 Coding Agent 尤其危险。

因为 Agent 很容易搜索到:

common

然后觉得:

这是大家共享的地方。

于是继续往里面加。

最终 common 会像黑洞一样吸收整个项目。

所以未来架构规则应该更加明确:

什么东西可以共享
什么东西绝对不能共享

特别是:

业务逻辑

尽量不要进入通用模块。


十、Codex 可以反过来帮助发现架构腐化

Agent 不只是架构问题的制造者。

它也可以成为:

Architecture Observer

例如让 Codex 定期分析:

模块依赖关系

它可以发现:

Order
突然开始依赖 Inventory Repository

而原本规定:

Order
只能调用 Inventory Service

于是提示:

发现新的跨模块内部依赖。

甚至可以生成依赖图:

Order
↓
Payment
↓
Notification

并检查有没有:

Circular Dependency

例如:

Order
↓
Payment
↓
Order

这就是非常典型的架构风险。


十一、Architecture as Code 会越来越重要

如果架构规则只存在:

架构师脑子里

那其实不是真正规则。

真正成熟的方式应该是:

Architecture as Code

例如:

Domain
不得依赖 Infrastructure

可以通过自动工具检查。

或者:

Order
不得直接依赖 PaymentRepository

也可以加入 CI。

最终形成:

Code Change
↓
Architecture Check
↓
Pass / Fail

这和:

Lint
Test
Security Scan

本质上是一样的。

只不过检查的是:

Architecture Constraint

架构约束。


十二、AI 会推动架构从“建议”变成“机器规则”

过去架构师经常说:

大家尽量不要跨层调用。

这种话执行效果通常一般。

因为:

赶需求

的时候,总有人直接:

Controller
→ Database

如果以后 Agent 大规模写代码,仅靠“建议”更加不够。

因为 Agent 会高频产生修改。

所以架构规则必须能够被:

自动检查

例如:

forbidden dependencies
module ownership
public API
database ownership

全部进入工程流水线。

未来架构治理可能逐渐从:

Architecture Review Meeting

变成:

Continuous Architecture Validation

持续架构验证。


十三、Codex 时代,接口设计会比实现细节更加重要

如果实现代码越来越容易生成,那么真正需要人重点设计的东西是什么?

我认为其中之一就是:

Interface

接口。

例如两个模块:

Order
Payment

真正重要的是:

Order
应该知道 Payment 的多少信息?

最差的方式是:

Order
直接访问 payment 表

更好的方式:

PaymentService.pay()

再进一步:

Payment API
明确输入输出 Contract

这样以后 Payment 内部怎么实现,都不会影响 Order。

这也是 AI 时代非常关键的一点。

因为 Agent 最适合:

在明确边界内部快速实现。

而不适合:

每次修改都重新思考整个系统边界。

所以人应该更多设计:

Stable Contract

然后让 Agent 在边界内部工作。


十四、“黑盒模块”可能成为 Agent 时代最理想的模块

一个设计良好的模块,对外应该像:

Black Box

外部只需要知道:

输入
输出
错误

不需要知道内部实现。

例如:

PaymentService.pay(orderId, amount)

外部根本不需要知道:

Stripe
PayPal
Bank API

如果模块边界做到这种程度,未来你甚至可以:

让 Agent 完全重写 Payment 内部实现

只要:

Contract 不变
Tests 全部通过

其他模块根本不用改。

这会大幅提高 Agent 的可操作空间。


十五、稳定边界 + 快速内部变化,可能成为 AI 时代的重要设计原则

未来系统可能出现一种新的节奏:

Interface
稳定

Implementation
快速变化

比如:

Payment Contract
几年不变

但内部:

Agent
不断重构
优化
迁移

这其实非常符合软件工程一直追求的:

High Cohesion
Low Coupling

高内聚、低耦合。

只不过 AI 的出现让这个原则变得更加现实。

因为:

内部重写成本大幅下降之后,边界稳定的重要性进一步提升。


十六、架构设计的重点会从“怎么实现”转向“怎么限制”

传统架构讨论经常是:

系统应该怎么实现?

未来可能越来越变成:

Agent 不应该做什么?

例如:

Order 不允许访问 Payment DB

Controller 不允许包含业务逻辑

Domain 不允许访问网络

Agent 不允许新增跨模块依赖

这些都是:

Negative Constraints

负向约束。

它们告诉 Agent:

可以在什么范围内自由发挥。

这种模式其实非常适合 AI。

因为模型越强:

需要告诉它的
不是每一步怎么做

而是:

哪些边界不能跨。

十七、这和“护栏”思维非常类似

可以把架构理解成高速公路。

Agent 是汽车。

如果没有任何道路规则:

哪里都能走

看起来非常自由。

但结果一定混乱。

好的架构其实是在建立:

Road
Lane
Guardrail

Agent 可以:

在车道里高速运行。

只要不突破边界。

所以 Agent 时代好的软件工程并不是:

把 Agent 限制得什么都不能做。

而是:

建立清晰护栏以后,让 Agent 在护栏内部拥有更大自主权。


十八、架构决策记录会重新变得重要

为什么系统使用:

Kafka

而不是:

RabbitMQ?

为什么订单和支付分开?

为什么没有做微服务?

为什么文件存储不用数据库?

这些问题几年以后,新人可能完全不知道。

Agent 更不知道。

所以 Architecture Decision Record,也就是:

ADR

会非常有价值。

例如:

# ADR-008

## Decision

订单和支付保持独立模块。

## Reason

支付未来需要支持多个渠道,
生命周期与订单不同。

## Constraint

Order 模块不能直接访问 Payment 表。

以后 Codex 修改 Order 时,就可以读取这个决策。

这样架构历史就不再只存在:

人的记忆

而成为:

Agent Context

十九、未来架构师可能不再画那么多图,而是设计 Agent Rules

传统架构师大量工作是:

画图
写技术方案
开评审会

未来可能增加一种新的工作:

Agent Architecture Rules

例如:

定义模块所有权

定义 Dependency Rule

定义公开接口

定义禁止依赖

定义修改风险等级

然后让这些规则进入:

Codex Context
+
CI
+
Review Agent

架构治理从:

人告诉人

逐渐变成:

规则约束 Agent

这会让架构真正进入日常开发,而不是:

半年一次架构评审

二十、未来可能出现专门的 Architecture Agent

可以想象一个:

Architecture Agent

它平时不负责写功能。

而是不断观察 Repository。

例如每天检查:

新增模块依赖

循环依赖

公共模块膨胀

跨层调用

数据库越界访问

重复能力

然后生成:

Architecture Drift Report

例如:

本周新增 7 条模块依赖。

其中:

Order → PaymentRepository
违反模块边界。

Notification → UserRepository
属于新的跨模块数据访问。

common 模块新增 12 个业务函数。

这种能力可能让架构治理第一次真正做到:

Continuous

持续化。


二十一、AI 可能让“模块重构”成本大幅下降

过去一个模块架构非常差。

大家都知道:

应该重构。

但没人愿意做。

因为:

太耗时间
风险太高

未来 Agent 可以帮助:

分析依赖
↓
补 Characterization Test
↓
提取接口
↓
迁移代码
↓
验证

重构成本下降以后,团队可能更愿意:

持续修复架构

而不是:

等到系统彻底失控
再重写

这可能是 AI 对软件架构非常积极的一面。


二十二、但 AI 同样可能制造“看起来很高级”的过度设计

这里必须警惕一个问题。

模型非常擅长:

Factory
Strategy
Abstract
Interface
Manager
Provider

如果你告诉 Codex:

设计得更加优雅。

一个原本 50 行能解决的问题,可能最后变成:

8 个类
5 个接口
3 个 Factory

从设计模式角度看:

非常专业

但从工程角度看:

完全没必要

所以 AI 时代一个非常重要的架构原则可能是:

Prefer Simplicity

优先简单。

不要因为代码生成便宜,就增加更多代码。


二十三、代码便宜之后,“少写代码”反而可能更重要

这听起来有点反直觉。

AI 可以大量生成代码。

为什么还要少写?

因为:

Code Generation Cost
↓

但是:

Maintenance Cost

并没有消失。

今天 Agent 写的:

10000 行代码

未来:

还是有人或者 Agent
需要理解它

而系统复杂度会一直存在。

所以真正优秀的软件工程可能越来越强调:

更少的概念
更少的依赖
更少的状态
更少的抽象

而不是:

生成更多代码。

二十四、未来架构质量会直接决定 Agent Productivity

可以把这个关系简单写成:

Agent Productivity
=
Model Capability
×
Repository Quality
×
Architecture Clarity

即使模型非常强,

如果:

系统高度耦合
没有模块边界
没有测试
没有规则

Agent 仍然很难可靠工作。

反过来,如果系统:

边界清晰
Contract 稳定
测试完整
架构规则明确

那么一个 Agent 就可以在局部拥有很大自主权。

因此未来企业如果想真正发挥 Codex 的价值,

不能只投资:

Model

还需要投资:

Architecture

二十五、AI Native Architecture 可能是什么样?

如果为 Agent 时代重新设计一个系统,我认为它可能有几个特点。

第一:

模块边界明确。

第二:

公开 Contract 稳定。

第三:

模块内部可以独立测试。

第四:

架构规则机器可检查。

第五:

不同模块可以独立修改。

第六:

架构决策有明确记录。

最终目标不是:

让架构看起来高级。

而是:

让 Human 和 Agent 都能快速理解,安全修改,并独立验证。

这可能才是真正的:

AI Native Architecture


结语:AI 越会写代码,人越需要设计边界

软件工程过去很长时间里,一直受到一个限制:

代码很贵。

所以我们关注:

怎么更快地把想法变成代码?

Codex 正在快速降低这个成本。

但当:

Code

越来越便宜以后,另一些东西会显得越来越昂贵:

复杂度
耦合
架构债
错误边界
隐性依赖

所以未来最有价值的软件工程能力,可能不是:

如何让 Agent 写更多代码。

而是:

如何设计一个环境,让 Agent 即使高速写代码,也不会把系统写乱。

这就是架构真正的价值。

好的架构并不是告诉开发人员:

每一行代码应该怎么写。

而是定义:

哪里可以自由变化
哪里必须保持稳定
谁可以依赖谁
哪些边界不能突破

然后在这些边界内部:

Human
和
Agent

都可以快速工作。

所以 Codex 时代的软件架构,可能会越来越像一种:

Governance System

治理系统。

它不负责生成代码。

它负责控制:

复杂度
依赖
边界
演化方向

而当 Coding Agent 的执行能力越来越强时,

这种治理能力反而会成为软件团队真正稀缺的东西。

最终,AI Coding 可能让我们重新认识一个非常经典的软件工程事实:

真正难的从来不是把代码写出来,而是让一个系统在不断变化十年以后,仍然保持可理解、可修改、可演进。

如果 Codex 能让“实现”越来越便宜,

那么软件架构的任务,就是确保:

这种越来越便宜的实现能力,不会换来越来越昂贵的复杂度。

相关学习资料