ARTICLE · 1019648
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 failedAgent 可以继续:
读取日志↓定位失败测试↓分析代码↓修改实现↓重新运行测试
这就形成了一个完整闭环:
分析↓执行↓验证↓修复↓再次验证
这也是 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 + ReviewAI 编程正在从“写代码工具”,逐渐变成“软件工程工具”。
而程序员真正需要升级的,也不只是 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 → 最终交付。