AI 编程智能体比提示词更需要测试

我编写软件已有 25 年。在过去的八个月里,我的工作流发生的变化比我整个职业生涯加起来还要多。

AI 编程工具过去主要用于重构或解释错误等小任务。利用 AI 构建大型功能曾让人感到非常痛苦。

现在,情况不同了。现代智能体遵循一个特定的循环:

  • 读取代码。
  • 修改代码。
  • 运行命令。
  • 查看哪里失败了。
  • 修复它。
  • 重复。

这个循环非常强大,但智能体在处理可视化界面时很吃力。它们无法可靠地通过点击 UI 来检查按钮是否有效。

我改变了方法。我构建新功能时,会先确保它们可以通过命令行运行。

我不再要求智能体“看这个屏幕”,而是给它一个命令:

  • npm run test:feature-x
  • node 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