最近一直在用 Claude Code 写代码,越用越觉得:AI 能力越强,软件工程的价值反而越凸显。这篇是从一个 Code Agent 用户的视角,整理一下我对这个问题的思考。

核心逻辑

LLM 上下文窗口有上限,拉长上下文会带来注意力稀释、输出质量下滑。即便依靠上下文工程(Context Engineering)缓解,随着项目代码体量膨胀,依然会出现代码臃肿、项目难维护、性能失控。

AI 擅长写片段代码,但不会自动产出高质量、可长期维护的工程系统。所以人这一侧需要补上"做正确的系统"这一课。


一、这个背景下,重点要学的软件工程板块

1. 系统架构与模块拆分

不要把大项目全部丢给 LLM。学会合理做模块划分、边界定义、依赖隔离,把大系统拆成多个小的独立单元,刚好适配 LLM 有限上下文,每次只让 Agent 处理局部模块。

重点:高内聚低耦合、接口契约设计、分层设计。

2. 项目工程规范体系

代码规范、目录结构、命名规范、依赖管理、版本控制(Git)、CI/CD 流水线。AI 生成代码风格飘忽,统一规范可以约束 Agent 输出,减少后期整改成本;版本控制更是兜底,防止 AI 大面积改写搞坏项目。

3. 测试工程能力

单元测试、集成测试、契约测试。LLM 很容易写出能跑但暗藏 bug、边界 case 缺失的代码。不能只靠 AI 自测,人要会设计测试用例,用测试去校验 Agent 产出,把测试作为约束 AI 输出质量的手段。

4. 上下文工程(Context Engineering)

属于适配 LLM 开发的新型工程能力:

  • 文件选取策略
  • 提示词编排
  • 知识库检索(RAG)
  • 代码切片
  • 上下文过滤

只把当前任务相关代码喂给模型,而不是整个仓库。用来缓解上下文长度不足、注意力分散问题。

5. 可维护性与技术债务管理

识别 AI 带来的技术债务:AI 快速堆出来的代码常出现重复、硬编码、逻辑混乱。学习重构、解耦、代码评审方法,定期清理 AI 遗留债务,避免项目越迭代越失控。

6. 性能、安全与错误处理

LLM 生成代码经常忽略异常捕获、资源释放、性能损耗、安全漏洞。需要掌握性能分析、异常处理、安全校验,对 Agent 产出做审查把关


二、现有 Code Agent 已经具备的能力

能力 说明
局部代码生成与修改 针对单个函数、单个文件完成编码、重构、bug 修复;理解给定片段代码逻辑
基础上下文工程 自动检索项目相关代码片段,把相关文件拉入上下文
基础版本交互 读取 Git 变更,基于现有修改继续迭代代码
简单测试生成 可以为给定代码片段生成单元测试样例
基础代码格式化 按照指令调整代码风格、注释文档

局限:大多只擅长局部任务,缺少全局项目视角。


三、当前 Code Agent 明显薄弱的方向

这块是我自己用下来的痛点,列出来供大家参考:

全局架构把控弱

很难完整理解百万行级项目整体架构,容易破坏原有模块边界,写出破坏系统设计的代码。只看到局部,看不到全局依赖影响

技术债务感知不足

不会主动识别自己产出带来的债务,为了完成当前任务,会堆砌临时方案,不会主动做整体重构。

复杂多模块协同设计差

跨多个模块、多个文件的大规模改造,容易出现接口不匹配、模块联动出错。

测试只做表层

大多生成样板测试,很难挖掘业务边界、异常场景,不会完整设计整套测试策略

性能、安全风险自动识别有限

经常写出存在性能瓶颈、安全隐患代码,不会主动做性能评估和安全审计。

长期项目演进能力缺失

不负责项目版本演进规划,无法自主做版本规划、依赖升级、兼容性处理。


四、作为使用者,你需要做的努力

1. 承担架构师角色,把控全局

不要把整个项目全权交给 Agent。由人定义系统架构、模块边界、接口契约,把大任务拆解成小任务,分配给 Agent,限定 Agent 只能在指定模块范围内工作。

2. 做好上下文管控

善用上下文工程,不要把整个仓库丢给模型。每次只提供当前任务真正需要的代码、文档;做好代码切片,过滤无关内容,规避上下文过长导致质量下降。

3. 建立约束规则,输入给 Agent

把项目规范、目录规则、编码约束、安全要求写进提示词或者项目知识库(CLAUDE.md 之类),约束 AI 输出,减少不合规代码。

4. 严格审查 AI 输出产物

AI 输出不等于可用代码。必须做代码评审:检查逻辑、边界、性能、安全、是否破坏原有架构。不要直接无脑采纳。

5. 用测试来校验产出

人来定义测试目标与关键用例,让 Agent 辅助生成测试,运行测试验证代码正确性;发现问题再反馈迭代。

6. 管理技术债务

定期对 AI 生成代码做重构优化,不能一味堆功能;利用 Git 做好版本备份,出现 AI 改崩代码可以回滚。

7. 分清分工边界

角色 职责
Agent 高效编码助手,负责实现细节
需求、架构、方案决策、质量把关

AI 越强大,人的工程判断能力越不能缺位。


总结

AI 代码助手擅长"实现",但不擅长"做正确的系统",软件工程就是用来弥补这个差距。

LLM 不会替代软件工程师,反而把工程师的工作重心从"写代码"推向了"做决策":架构怎么拆、规范怎么定、测试怎么覆盖、债务怎么管。这些判断才是项目能不能长期跑下去的关键。