AI 让写代码变便宜,但让软件工程变得更重要
AI 让写代码变便宜,但让软件工程变得更重要
很多人对 AI Coding 有一个误解:
AI 会写代码了,所以软件工程没那么重要了。
我现在越来越觉得,恰好相反。
Agentic Coding 时代,软件工程不是变轻了,而是变成了整个 AI Coding 系统的控制面。
AI 降低的是“生成代码”的成本,不是“构建正确软件”的成本。
代码可以越来越快地被生成,但需求是否清楚、上下文是否准确、测试是否充分、review 是否有效、发布是否可回滚、出了问题谁负责,这些问题不会因为 Agent 会写代码就自动消失。
相反,它们会被放大。
DORA 2025 的 AI-assisted software development 报告把 AI 称为一种“放大器”:它会放大组织已有的优势,也会放大组织已有的问题。真正的收益不是来自工具本身,而是来自底层组织系统是否能承接 AI 带来的变化。(Dora[1])
这句话很关键。
因为它意味着:
AI Coding 的竞争,不是单纯比谁用的模型更强,而是比谁的软件工程系统更强。
一、AI 没有消灭软件工程,它只是消灭了“写代码很贵”这个前提
过去,软件开发里有一个隐含前提:
写代码是贵的。
所以我们会小心设计,小心讨论,小心排期。因为一旦开始实现,成本很高。
但现在,Agent 可以很快生成代码、改代码、补测试、跑命令、修报错。初始代码的生成成本被极大压低。
这当然是好事。
但问题是,代码变便宜以后,错误代码也变便宜了。
错误需求可以更快地被实现。
错误上下文可以更快地被固化。
错误架构可以更快地扩散。
没有 review 的代码可以更快地进入主干。
没有验证的功能可以更快地上线。
这就是 Agentic Coding 的核心悖论:
代码越容易生成,软件工程越不能缺席。
DORA 的另一份关于 GenAI in Software Development 的研究提到,AI 采用率每提升 25%,与交付吞吐下降 1.5%、交付稳定性下降 7.2% 存在相关性。DORA 给出的解释是,AI 让开发者更快生成代码,但也可能导致更大的 batch size,进而让 review 更慢、系统更不稳定。(Dora[2])
这不是说 AI 没用。
而是说:局部编码效率提升,不等于系统级软件交付能力提升。
这正是软件工程要解决的问题。
二、Agentic Coding 的底层问题,不是“不会写代码”
很多团队第一次用 AI Coding,会把问题理解成:
Agent 写得还不够好。
于是他们不断换模型、调 prompt、换工具、研究更强的 IDE。
这些当然重要,但不是最底层的问题。
Agentic Coding 的底层问题不是“不会写代码”,而是下面这些工程问题:
1. 意图不清 → Agent 很认真地解决了错误问题。2. 上下文不准 → Agent 基于错误材料做了错误判断。3. 步子太大 → 一次改太多,人类 review 跟不上。4. 没有反馈环 → 代码看起来对,但没有测试、构建、运行时证据。5. 自我相信太早 → Agent 很快宣布完成,但没有经过独立审查。6. 完成声明无证据 → “已经修好”只是自然语言,不是工程事实。7. 交付不可逆 → 没有 feature flag、rollback、监控,一上线就是豪赌。
所以,Agent 软件工程最后一定会收敛成一条主线:
Clarify → Context → Specify → Slice → Implement → Verify → Review → Ship → Learn
中文说就是:
澄清意图→ 治理上下文→ 写清规格→ 小步切片→ 实现功能→ 验证证据→ 独立审查→ 可控发布→ 复盘沉淀
这不是流程洁癖。
这是 AI Coding 时代的基本安全带。
三、未来工程师的核心责任,不是亲手写每一行代码
在过去,工程师的核心产出经常被理解成“代码”。
但在 Agentic Coding 时代,这个理解会变得不够准确。
未来工程师的责任会从:
我亲手写代码。
变成:
我设计一个系统,让 Agent 在正确意图、正确上下文、正确边界、正确反馈环里,小步、可验证、可回滚地写代码。
这是一种更高层的软件工程责任。
你不一定亲手写每一行代码,但你必须对这些事情负责:
- 目标是不是清楚?- 非目标有没有写明?- Agent 看的上下文是不是正确?- 任务有没有被切成可验证的小步?- 测试是不是先失败、再通过?- 运行时证据有没有留下?- review 是不是由 fresh context 完成?- 发布有没有 feature flag 和 rollback?- 这次踩坑有没有写回工程系统?
换句话说:
Agent 可以生成代码,但工程师不能外包责任。
Linux kernel 关于 AI coding assistants 的政策就非常明确:AI agent 不能添加 Signed-off-by,只有人类可以认证 Developer Certificate of Origin;人类提交者必须 review 所有 AI 生成代码、确保 license 合规,并对贡献承担全部责任。(Linux Kernel Documentation[3])
这就是未来 AI Coding 的责任边界:
AI can assist.Human owns the contribution.
AI 可以辅助。
人类负责签字。
人类负责理解。
人类负责合并。
人类负责上线。
人类负责后果。
四、AI Coding 最大的新债务:Verification Debt
过去我们经常讲 technical debt,技术债。
AI Coding 时代会多一个更危险的债:
Verification Debt,验证债。
也就是:
AI 写得太快,人类验证跟不上,没有充分验证的代码进入系统。
Sonar 2026 State of Code 相关调查显示,使用过 AI coding 工具的开发者中,72% 每天都在使用;开发者报告当前 42% 的提交代码已经由 AI 生成或显著辅助,并预计到 2027 年这一比例会到 65%。但与此同时,96% 的开发者并不完全相信 AI 生成代码在功能上正确,只有 48% 表示总是在提交前检查 AI-assisted code。Sonar 将这个现象称为 verification gap。(SonarSource[4])
这组数据很刺眼。
大家都不完全信 AI。
但很多人也没有总是验证 AI。
这就是最危险的地方。
不是 AI 一定写错。
而是 AI 写出来的东西经常“看起来像对的”。
它有函数名。
有注释。
有测试。
有错误处理。
有很自信的解释。
但它可能解决了错问题,漏了边界条件,绕过了权限判断,或者引入了安全漏洞。
Veracode 2025 GenAI Code Security Report 测试了 100 多个大模型生成的代码,发现 45% 的代码样本未通过安全测试并引入 OWASP Top 10 漏洞,其中 Java 任务的安全失败率达到 72%。(Veracode[5])
所以,AI Coding 时代最重要的一句话不是:
让 Agent 写完。
而是:
让系统证明它真的对。
五、Agentic Coding 需要五层工程框架
如果把未来 AI Coding 的软件工程框架抽象一下,我认为可以分成五层。
1. Intent Layer 意图层2. Context Layer 上下文层3. Verification Layer 验证层4. Governance Layer 治理层5. Learning Layer 复利层
这五层,才是 Agentic Coding 真正的工程底座。
1. Intent Layer:意图层
意图层解决的问题是:
我们到底要做什么?不做什么?什么算成功?什么算失败?
Agent 最可怕的能力之一,是它能非常认真地实现一个错误需求。
所以在动手前,必须先澄清:
- 目标是什么?- 非目标是什么?- 用户是谁?- 成功标准是什么?- 失败标准是什么?- 哪些约束不能破?- 哪些事情现在不做,未来再做?
这一步看起来慢,但其实是在省后面十倍的返工。
模糊需求进入 Agent,出来的不是软件,是幻觉的固化版本。
2. Context Layer:上下文层
上下文层解决的问题是:
Agent 应该知道什么?不应该知道什么?哪些材料是当前任务真正相关的?
AI Coding 很容易出现两种上下文问题。
第一种是上下文不足。
Agent 没看到关键规则、核心源码、错误日志、业务术语,于是靠猜。
第二种是上下文污染。
Agent 看到太多无关材料,注意力被稀释,反而抓不住关键点。
所以需要给 Agent 准备一个 Context Pack:
- AGENTS.md / CLAUDE.md- 项目规则- 业务术语表- 当前 spec / issue / PRD- 相关源码入口- 相关测试- 错误日志- 复现步骤- 禁止修改区域- 本次任务的边界
OpenAI Codex 官方文档说明,Codex 会在开始工作前读取 AGENTS.md,用全局指导和项目级覆盖来建立一致的任务期望。(OpenAI Developers[6]) Anthropic 的 Claude Code 文档也强调,CLAUDE.md 会在每次会话开始时加载进上下文窗口,并建议指令具体、简洁、结构化。(Claude API Docs[7])
这说明一个趋势:
上下文管理正在变成新的软件工程基本功。
不是给 Agent 越多越好。
而是给它正确的、必要的、结构化的上下文。
3. Verification Layer:验证层
验证层解决的问题是:
我们如何知道它真的对?
这层是 Agentic Coding 的生命线。
未来的工程规则应该非常简单:
No evidence, no claim.
没有证据,不许声明完成。
验证不只是跑单元测试。它至少包括三类证据:
自动化证据:- unit tests- integration tests- type check- lint- build- security scan运行时证据:- curl 输出- CLI 输出- 浏览器截图- Playwright 测试- 日志- 数据库状态- metrics行为证据:- bug 复现前后对比- 边界条件覆盖- 错误路径验证- 权限验证- 性能验证
Simon Willison 在 Agentic Engineering Patterns 里强调 red/green TDD:先写测试,确认它失败,再实现到通过。这样做的重点不是形式上的 TDD,而是先定义成功,再让 Agent 实现。(Simon Willison’s Weblog[8])
对 Agent 来说,这比传统开发更重要。
因为 Agent 很擅长写“看起来像测试”的测试。
但如果这个测试没有经历过失败阶段,它可能根本没有证明任何东西。
所以一个好的 Agent 开发流程应该要求:
1. 先写失败测试;2. 说明它为什么失败;3. 写最小实现;4. 展示测试通过;5. 再跑完整 check;6. 留下运行时证据。
这才叫工程事实。
4. Governance Layer:治理层
治理层解决的问题是:
谁负责?谁 review?什么条件下可以 merge?什么条件下可以 ship?
Agentic Coding 最容易制造一种幻觉:
既然代码是 AI 写的,那责任是不是也可以模糊一点?
答案是不行。
软件工程责任不能被 AI 吸收。
ACM/IEEE Software Engineering Code of Ethics 里有一条非常适合 AI 时代重读:软件工程师只有在有充分根据相信软件是安全的、符合规格、通过适当测试,并且不会损害生活质量、隐私或环境时,才应该批准软件。(ACM[9])
注意这里的关键词:
safemeets specificationspasses appropriate tests
安全。
符合规格。
通过适当测试。
这三件事在 AI 时代没有变得不重要。
它们只是从“人类写代码后的责任”,扩展成了“人类接受 AI 代码后的责任”。
治理层需要明确:
- 哪些变更必须 human review?- 哪些变更需要 fresh-context review?- 哪些变更需要 security review?- 哪些变更必须有 architecture review?- PR gate 是什么?- ship gate 是什么?- 谁最终 sign off?
AI 可以帮你写 PR 描述。
AI 可以帮你 review diff。
AI 可以帮你找 bug。
但 AI 不应该成为责任主体。
最终承担工程责任的,必须是人和组织。
5. Learning Layer:复利层
复利层解决的问题是:
这次踩坑,怎么防止下次再踩?
很多团队用 AI Coding 的方式是一次性的:
让 Agent 修一个 bug。修完。结束。
这当然有效,但没有复利。
真正的工程化应该是:
让 Agent 修一个 bug。补一个测试。更新一条规则。沉淀一个 playbook。把经验写回 AGENTS.md / CI / PR checklist。
也就是说,每一次失败都应该让系统变强。
可以问几个固定问题:
- 这次 Agent 误解了什么?- 哪条规则能防止下次再犯?- 哪个测试应该提前捕获这个问题?- just check 是否要加新命令?- AGENTS.md 是否要更新?- PR 模板是否要新增检查项?- 是否需要新增一个 bug pattern?
这一步,是从“使用 Agent”进入“工程化 Agent”的分水岭。
大多数人只是不断调教一次性 Agent。
真正强的团队,会不断升级自己的工程系统。
六、最终流程:Clarify → Context → Specify → Slice → Implement → Verify → Review → Ship → Learn
把上面的内容压缩成一个流程,就是:
Clarify→ Context→ Specify→ Slice→ Implement→ Verify→ Review→ Ship→ Learn
每一步都有明确的工程责任。
Clarify:澄清
先问清楚:
做什么?不做什么?为什么做?成功标准是什么?失败标准是什么?
不要让 Agent 在模糊意图里自由发挥。
自由发挥适合头脑风暴,不适合直接改生产代码。
Context:上下文
只加载正确上下文:
规则、术语、spec、相关源码、测试、错误输出、运行环境、约束边界。
上下文不是越多越好。
上下文要准。
Specify:规格
把自然语言需求变成可验证规格:
输入是什么?输出是什么?状态如何变化?错误路径是什么?权限边界在哪里?兼容性要求是什么?
没有规格,测试也会变得虚。
Slice:切片
一次只做一个可验证行为。
不要让 Agent 一次性重构半个系统。
小 PR。
小 commit。
小 diff。
小步快跑。
Implement:实现
实现阶段应该尽量遵循:
Red → Green → Refactor
先让测试失败,再让测试通过,最后再整理代码。
不要让 Agent 先写一大坨代码,再倒推测试。
Verify:验证
验证不是一句“测试通过”。
验证要有证据:
- 测试输出- 构建输出- 浏览器截图- curl 结果- 日志- 数据库状态- 安全扫描
没有证据,不许声明完成。
Review:审查
至少需要三类 review:
fresh-context review:让一个没参与实现的上下文重新看。adversarial review:专门找反例、漏洞、边界条件。spec compliance review:逐条对照规格,确认没有偏离需求。
Agent 自己说“我检查过了”,不能算最终 review。
Ship:发布
发布必须可控。
feature flagstaged rolloutmonitoringalertingrollbackPR gateship gate
没有回滚,就不要发布。
Learn:沉淀
结束后把经验写回系统:
AGENTS.mdplaybooktestsCIPR templatebug archivedecision record
让下一次更稳。
这就是工程复利。
七、AI Coding 时代的三条铁律
如果只能保留三句话,我会保留这三句:
Evidence before claim.Review before merge.Rollback before ship.
中文就是:
没有证据,不许声明完成。没有审查,不许合并。没有回滚,不许发布。
这三句话,比任何复杂 prompt 都重要。
因为它们定义的不是“怎么让 AI 写代码”,而是“什么样的 AI 代码可以进入工程系统”。
八、结语:工程控制才是稀缺能力
未来,代码会越来越便宜。
样板代码会越来越便宜。
CRUD 会越来越便宜。
重构、补测试、写脚本、查文档,都会越来越便宜。
但这并不意味着软件工程变得不重要。
恰好相反。
当代码生成成本下降到接近零时,真正稀缺的能力会变成:
定义正确问题的能力;提供正确上下文的能力;设计验证反馈环的能力;控制变更风险的能力;承担工程责任的能力;把失败沉淀成系统能力的能力。
AI Coding 的终局,不是“人人都能随便写软件”。
而是:
有软件工程框架的人,能够安全地放大 AI;没有软件工程框架的人,只是在更快地制造混乱。
所以我越来越相信:
AI makes coding cheaper,not software engineering cheaper.
AI 让写代码变便宜。
但没有让构建正确软件变便宜。
Agentic Coding 时代,代码生成不是稀缺能力。
工程责任和工程框架,才是。
References
- Dora: https://dora.dev/dora-report-2025/?utm_source=chatgpt.com
- Dora: https://dora.dev/ai/gen-ai-report/?utm_source=chatgpt.com
- Linux Kernel Documentation: https://docs.kernel.org/process/coding-assistants.html?utm_source=chatgpt.com
- SonarSource: https://www.sonarsource.com/company/press-releases/sonar-data-reveals-critical-verification-gap-in-ai-coding/?utm_source=chatgpt.com
- Veracode: https://www.veracode.com/blog/genai-code-security-report/?utm_source=chatgpt.com
- OpenAI Developers: https://developers.openai.com/codex/guides/agents-md?utm_source=chatgpt.com
- Claude API Docs: https://docs.anthropic.com/en/docs/claude-code/memory?utm_source=chatgpt.com
- Simon Willison’s Weblog: https://simonwillison.net/guides/agentic-engineering-patterns/red-green-tdd/?utm_source=chatgpt.com
- ACM: https://www.acm.org/code-of-ethics/software-engineering-code?utm_source=chatgpt.com
夜雨聆风