AI 编程智能体比提示词更需要测试
我编写软件已有 25 年。在过去的八个月里,我的工作流发生的变化比我整个职业生涯加起来还要多。
AI 编程工具过去主要用于重构或解释错误等小任务。利用 AI 构建大型功能曾让人感到非常痛苦。
现在,情况不同了。现代智能体遵循一个特定的循环:
- 读取代码。
- 修改代码。
- 运行命令。
- 查看哪里失败了。
- 修复它。
- 重复。
这个循环非常强大,但智能体在处理可视化界面时很吃力。它们无法可靠地通过点击 UI 来检查按钮是否有效。
我改变了方法。我构建新功能时,会先确保它们可以通过命令行运行。
我不再要求智能体“看这个屏幕”,而是给它一个命令:
npm run test:feature-xnode scripts/run-new-feature-client.js
智能体非常喜欢命令。这为它们提供了一个可执行的反馈循环。
我目前的工作流如下:
- 在 Markdown 文件中规划功能。
- 创建测试客户端或单元测试。
- 定义清晰的测试用例。
- 让智能体实现功能。
- 让智能体反复运行测试。
- 审查结果。
一个警告:如果你告诉智能体“让所有测试都通过”,它真的会这么做。为了成功,它可能会犯下“软件工程罪行”。它可能会编写脆弱的测试,或者使用 try/catch 块来隐藏错误,仅仅是为了停止报错信息。
这就是为什么定义测试是我最重要的手动任务。你必须询问:
- 这个测试是否代表了真实的用例?
- 它能否捕捉到真实的回归问题?
- 它是否过于狭隘?
在 AI 时代,测试驱动开发 (TDD) 不仅仅是一个安全网,它更是方向盘。没有测试,智能体只会生成看起来合理的代码;有了良好的测试,智能体才有了可衡量的目标。
另一个技巧:使用结构化文件来输出测试结果。 不要将庞大的日志直接丢进聊天框,而是让你的脚本将结果写入文件夹中的 JSON 或 Markdown 文件。
这很有帮助,因为:
- 智能体可以直接跳转到相关数据。
- 上下文保持精简。
- Token 使用量降低。
- 节省成本。
AI 智能体并不会取代开发者。它们转移了我们的重心。我们花在敲代码上的时间变少了,而花在以下方面的时间变多了:
- 清晰地描述问题。
- 创建反馈循环。
- 定义高质量的测试。
- 审查架构。
AI 开发的未来不属于写出最强提示词的人,而属于构建出最佳反馈循环的人。
Source: https://dev.to/stoefln6/ai-coding-agents-need-tests-more-than-prompts-11pm
Optional learning community: https://t.me/GyaanSetuAi
