最近一年,我使用 AI 编程工具的方式变了很多。
最初,我会把一段报错贴进去,或者让它生成一个函数。效果好的时候很惊喜,效果不好就当搜索引擎。后来工具开始能够读取仓库、修改文件、运行命令,我才感到它不再只是“回答问题”,而是在进入开发流程。
这也带来一个反直觉的变化:能力越强,我越少直接接受结果。
我现在通常先让它做这些事情:
- 找到相关代码和调用链;
- 复述它对问题的理解;
- 列出准备修改的文件;
- 实施尽量小的改动;
- 运行测试或给出无法验证的原因;
- 展示最终差异。
这个流程看起来比“直接生成”慢,但返工少了很多。
参与多 AI 编程源看板的适配时,我也发现真正麻烦的不是多接一个模型,而是如何把不同来源放进同一种工作流。它们的会话结构、状态、配置方式和输出格式不同,需要 Provider 层转换为统一模型。否则每增加一种来源,页面和业务逻辑都会增加一套分支。
Agent 的工程问题与普通后端并不遥远。工具调用要有 Schema,任务要有状态,外部服务要有超时,危险操作要确认,过程要能审计。区别在于模型输出具有不确定性,因此每一层边界都更重要。
我给自己保留了几条使用约束:
- 不把密钥、客户数据和完整私有代码随意发给外部服务;
- 不因为代码“看起来对”就跳过编译和测试;
- 不让 AI 擅自扩大修改范围;
- 不用它编造自己没有做过的性能数字和项目成果;
- 遇到陌生 API,回到官方文档核对。
AI 最有价值的时候,不是代替我打字,而是让我能更快建立上下文、比较方案和验证想法。它扩大了个人能处理的范围,也把“是否真的理解改动”这件事变得更重要。