切换主题
AI 编程:从生成代码到管理变更
AI 可以快速生成函数、页面和测试,但软件工程的主要风险从来不只是“写不出来”。更常见的问题是改错位置、遗漏调用方、破坏隐含约束,或在没有验证的情况下宣布完成。
生成之前先定位
面对已有代码库,第一步应是建立最小事实集:
- 目标行为由哪个模块负责?
- 类型、接口和数据从哪里定义?
- 哪些测试描述了现有契约?
- 是否存在项目级约定和生成文件?
- 当前工作区有没有用户尚未提交的修改?
语义检索、符号查找和 AST 工具通常比大范围全文读取更有效。目标不是把整个仓库塞进上下文,而是找到真正影响决策的代码。
把修改限制在最小闭环
一次变更最好能清楚表达为:
在保持 A、B 契约不变的前提下,把输入 X 的行为从 Y 调整为 Z,并由测试 T 验证。
这会自然限制文件范围,也让审查者容易判断是否夹带无关重构。
验证顺序应贴近风险
一个实用顺序是:
- 运行直接覆盖改动行为的测试;
- 运行受影响包的类型检查或构建;
- 检查格式、Lint 和静态诊断;
- 对跨服务功能做最小协议级冒烟测试;
- 检查差异,确认没有覆盖用户已有修改。
如果某项检查无法运行,应记录原因和次优验证,而不是把“未验证”写成“通过”。
文档也属于变更
接口、端口、配置路径和运维入口发生变化时,文档必须同步。过时 Runbook 的风险不低于代码缺陷,因为它会在故障时引导下一位维护者执行错误操作。
人仍然负责最终判断
AI 适合搜索、生成、执行重复检查和整理证据。目标选择、风险接受、生产确认和最终责任仍应由人承担。
真正高效的 AI 编程,不是每分钟生成更多代码,而是用更少的返工完成可验证、可维护的变更。