夜雨聆风学习资料网

ARTICLE · 1019648

AI Agent 正在改变软件开发:程序员真正要升级的,不只是 Prompt

AI Agent 正在改变软件开发:程序员真正要升级的,不只是 Prompt

如果你对 AI 编程的理解还停留在:

“写一句 Prompt,让 AI 帮我生成代码。”

那么,是时候更新一下认知了。

这两年,AI 编程工具的变化非常明显。

从代码补全,到 AI 对话,再到 Coding Agent,AI 正在从“帮你写代码”,逐渐走向“帮你完成软件工程任务”。

真正值得关注的,不是谁能多生成几百行代码。

而是:

AI 能不能把一个真实的开发任务完整做完。


一、AI 编程已经不只是“代码补全”

回头看,AI 编程大致经历了几个阶段。

1. 代码补全

最早的 AI 编程工具,主要解决一个问题:

帮程序员少写代码。

例如:

public User getUserById(Long id) {

AI 自动补出:

return userMapper.selectById(id);

这种方式很实用。

但它解决的主要还是局部问题。


2. AI 对话

随后,ChatGPT、Claude 等大模型进入开发流程。

开发者可以直接问:

帮我写一个 Spring Boot Controller。

或者:

这个 NullPointerException 是什么原因?

AI 开始承担“技术助手”的角色。


3. Coding Agent

真正的变化发生在 Coding Agent 出现之后。

开发者可以把一个更完整的任务交给 Agent:

分析这个项目,实现用户标签管理,修改数据库,补充 Service 和 Controller,增加权限控制,编写测试,最后运行 Maven 测试。

这时候,AI 做的已经不只是代码生成。

它需要:

理解项目↓搜索代码↓制定方案↓修改多个文件↓执行命令↓运行测试↓分析错误↓继续修改

AI 开始参与完整的软件工程流程。


二、代码写得更快,不等于项目交付得更快

这是 AI 编程最容易被忽略的问题。

假设产品经理提出一个需求:

增加系统参数管理功能。

如果只看代码生成,AI 很快就能生成:

EntityMapperServiceController

甚至连 CRUD 测试都可以一起写出来。

但真正开发时,问题远不止这些。

例如:

  • config_key
     是否必须唯一?
  • 删除采用物理删除还是逻辑删除?
  • 禁用后的参数还能不能被业务读取?
  • 修改参数后是否需要清理 Redis?
  • 两个请求同时创建相同参数怎么办?
  • 接口需要哪些权限?
  • 参数修改是否需要审计?
  • 测试是否覆盖异常场景?
  • 数据库约束是否和业务规则一致?

这些问题,才决定这个功能能不能真正上线。

所以:

代码生成速度,不等于软件交付速度。


三、AI 编程的新瓶颈:上下文

AI Agent 越强,对项目上下文的要求反而越高。

一个企业 Java 项目,通常包含:

项目规范+代码结构+数据库设计+业务规则+权限模型+异常处理+缓存策略+测试规范+历史代码

如果这些信息没有提供给 Agent,它可能生成一段“能运行”的代码。

但不一定符合当前项目。

例如项目规定:

Controller    ↓Service    ↓Mapper

结果 AI 为了省事,直接在 Controller 中调用 Mapper。

代码可能能运行。

但架构已经被破坏了。

所以,AI 编程真正难的部分开始从:

“怎么生成代码”

逐渐转向:

“怎么让 AI 正确理解这个项目。”


四、这也是 Spec-Driven Development 的价值

这也是为什么最近越来越多人开始关注Spec-Driven Development,简称 SDD。

核心思想其实并不复杂:

先把需求和约束定义清楚,再让 AI 执行。

传统开发:

需求 ↓程序员理解 ↓写代码

AI Agent + Spec:

需求 ↓Specification ↓Plan ↓Tasks ↓Agent Implement ↓Test ↓Review

例如开发“系统参数管理”。

不要只告诉 AI:

帮我开发系统参数管理。

而是先明确:

功能:系统参数管理业务规则:1. config_key 全局唯一2. 删除采用逻辑删除3. 禁用参数不能参与业务读取4. 修改参数后清理相关缓存5. 创建操作需要考虑并发6. 管理接口需要权限控制7. 必须补充自动化测试

这样 Agent 面对的是一组明确的工程约束。

后面的代码,才有依据。


五、一个更适合企业项目的 AI 开发流程

如果让我设计一套比较实用的 AI Coding 流程,我会把它拆成下面几个阶段:

业务需求   ↓Brainstorming   ↓Specification   ↓Plan   ↓Tasks   ↓AI Agent   ↓Code + Test   ↓Bug Fix   ↓Code Review   ↓Converge   ↓Git PR

这里有一个非常重要的变化:

人不再负责把每一行代码都写出来,而是负责定义目标、规则和边界。

AI 则负责执行大量重复性和工程性的工作。


六、Claude Code 应该怎么用?

很多人第一次使用 Claude Code,会这样提需求:

帮我写一个 UserController。

当然可以。

但这种方式实际上只发挥了 Agent 的一部分能力。

更适合真实项目的方式,是先让 Agent 理解项目。

例如:

请先分析当前项目。重点了解:1. 项目结构2. 技术栈3. 数据访问方式4. Service 层规范5. 异常处理方式6. 权限体系7. 测试结构暂时不要修改代码。然后分析“系统参数管理”的实现方案,列出:- 数据库变化- 需要修改的文件- API 设计- Service 设计- 缓存策略- 权限设计- 测试场景等我确认后再执行。

这个过程看起来比“直接写代码”慢。

实际上是在减少后面的返工。


七、真正有价值的,是让 AI 自己跑起来

Agent 和普通聊天机器人的区别之一,就是它可以参与实际开发环境。

例如:

mvn clean test

测试失败:

Tests failed

Agent 可以继续:

读取日志 ↓定位失败测试 ↓分析代码 ↓修改实现 ↓重新运行测试

这就形成了一个完整闭环:

分析 ↓执行 ↓验证 ↓修复 ↓再次验证

这也是 Coding Agent 和普通 AI 对话最大的区别之一。


八、举一个真实开发中非常常见的问题

还是以系统参数为例。

应用层可能先做:

if (parameterMapper.existsByConfigKey(configKey)) {    throw new BizException(”参数编码已存在”);}

看起来没问题。

但如果两个请求同时进来:

请求 A → 查询 → 不存在请求 B → 查询 → 不存在请求 A → INSERT请求 B → INSERT

如果数据库没有唯一约束,最终还是可能产生重复数据。

所以更可靠的设计是:

应用层校验     +数据库唯一约束     +异常兜底

例如数据库:

CREATE UNIQUE INDEX uk_sys_parameter_keyON sys_parameter(config_key);

然后 Java 层对唯一键异常进行处理。

这就是一个典型例子:

业务规则不能只存在于 Prompt 里。

最终必须落到:

数据库约束+代码逻辑+自动化测试

九、Redis 也是 AI 很容易“写对代码、做错事情”的地方

例如参数读取使用 Redis:

查询参数 ↓Redis ↓没有缓存 ↓数据库 ↓写入 Redis

那么修改参数以后:

更新数据库 ↓删除缓存

如果 AI 只完成了数据库更新,却忘记清理缓存:

数据库:新值Redis:旧值

程序可能没有任何异常。

测试也可能全部通过。

但是线上数据已经出现不一致。

所以 AI 编程必须关注:

数据的一致性,而不仅仅是代码能不能编译。


十、测试,正在成为 AI Agent 的重要“反馈系统”

以前写测试,很多时候是:

功能写完以后,再补测试。

AI Agent 时代,这种方式需要改变。

更合理的是:

需求 ↓测试场景 ↓代码实现 ↓运行测试 ↓根据结果修复

至少应该覆盖:

正常场景

创建成功查询成功修改成功删除成功

异常场景

参数不存在参数重复参数格式错误

边界场景

空值最大长度非法字符

权限场景

无权限访问越权访问

并发场景

同时创建相同参数

这样测试就不再只是“验收代码”。

而是成为 Agent 的反馈机制。


十一、还可以故意给 AI 制造一个 Bug

这其实是非常适合做 AI Coding 实验的一种方式。

比如故意修改:

updateParameter();

但忘记:

redisTemplate.delete(cacheKey);

然后告诉 Agent:

系统参数修改后读取到的还是旧值。请不要直接修改代码。先:1. 定位问题2. 分析调用链3. 判断可能原因4. 给出修复方案确认后再修改。最后补充回归测试。

如果 Agent 最终能够:

定位问题+修改代码+补测试+执行测试

那么它完成的就不再是简单的“代码生成”。

而是一次完整的工程任务。


十二、AI Agent 越强,Code Review 越重要

这是一个很有意思的变化。

以前:

程序员写代码↓Reviewer Review

以后可能变成:

AI 写代码↓AI 自测↓AI 自我 Review↓Human Review

但最后一道人工 Review 仍然重要。

原因很简单:

AI 可以执行,但最终的业务责任不能简单交给 AI。

尤其是:

数据库结构权限资金核心业务规则数据删除生产配置安全策略部署

这些环节,更适合保留人工审批。


十三、企业真正需要关注的,是 Agent 的权限边界

如果 AI 只能修改本地代码:

风险相对有限

但如果 Agent 可以:

访问数据库+修改代码+Git Push+执行 CI/CD+访问云资源+读取 Secrets

事情就完全不同了。

它已经具备了一定的真实执行能力。

企业使用 AI Agent 时,需要考虑:

权限控制审计Secrets 隔离执行环境隔离生产环境保护人工审批代码 Review自动化测试

所以 AI Coding 的下一阶段,不只是模型能力竞争。

也是:

工程治理能力的竞争。


十四、程序员真的会被 AI 替代吗?

这个问题其实没必要天天争论。

更值得关注的是:

程序员的工作内容正在发生变化。

过去大量时间可能花在:

CRUDDTOVOMapperController重复代码简单重构基础测试

这些工作越来越适合交给 Agent。

而人需要投入更多精力:

业务理解架构设计系统边界性能安全复杂问题技术决策Code Review

所以未来真正有价值的能力,不只是:

“我会写 Java。”

而是:

“我知道一个系统应该怎么设计,并且能够让 AI 把它可靠地实现出来。”


十五、未来的软件开发,会更像“人机协作”

以前:

产品 ↓程序员 ↓代码 ↓测试 ↓上线

现在越来越接近:

需求 ↓人:定义目标 ↓Spec:明确规则 ↓AI Agent:执行 ↓Test:验证 ↓AI:修复 ↓Human:Review ↓PR ↓上线

AI 负责的是执行效率。

人负责的是:

方向、判断和责任。


最后:AI 编程真正的竞争,才刚刚开始

过去我们比较 AI 编程工具,经常问:

谁补代码最快?

谁生成代码最多?

谁的模型参数更大?

这些问题当然有意义。

但进入 Agent 时代以后,更值得问的是:

谁能把一个真实的软件工程任务真正做完?

从:

代码补全

到:

AI 对话

再到:

Coding Agent

再到:

Spec + Agent + Test + Review

AI 编程正在从“写代码工具”,逐渐变成“软件工程工具”。

而程序员真正需要升级的,也不只是 Prompt。

更重要的是:

需求分析能力、架构能力、任务拆解能力、验证能力,以及驾驭 AI Agent 的能力。


你现在怎么用 AI 写代码?

评论区可以直接告诉我你的情况:

A:主要用 AI 补代码B:AI 帮我写完整功能C:已经在用 Claude Code / Codex / Cursor 等 AgentD:已经开始尝试 Spec Kit、SDD 等 AI 原生开发流程

如果你已经在实际项目中使用 AI,也欢迎分享一个真实案例:

一个原本需要多久完成的任务,现在交给 AI 后用了多久?又返工了多久?

下一篇,我准备直接做一次实战:

《Claude Code vs Codex:同一个 Java / Spring Boot 项目,到底谁更能把任务真正做完?》

不看宣传页。

直接看:

数据库设计 → Java 开发 → 测试 → Bug 修复 → Code Review → 最终交付。

相关学习资料