我的 AI 编程助手总是出错 —— 我做了哪些改变

六周前,我的 AI 编程助手生成的全是垃圾代码。

它写的函数虽然能编译通过,但毫无作用。它通过测试的原因完全不对。它修复了一个 bug,却又制造了三个新 bug。

我原以为问题出在助手身上。但我错了。问题在于我自身的缺乏自律。

我 40% 的工程工作都交给 AI 助手处理。它负责重构、生成测试和调查 bug。当我的代码库很乱时,AI 会让这种混乱程度增加三倍。

AI 并不能取代自律。它只会放大你现有的任何特质。

以下是我为了改善输出结果而改变工作流的方式:

  • 测试必须断言行为,而非状态。 别再写类似 assert user is not None 这样的测试了。这是一种欺骗。测试应该检查具体的数据,例如 assert user.email == expected_email。如果测试很薄弱,AI 就会钻空子。

  • 阅读每一个 diff。 我以前在不看代码的情况下就接受重构。这导致了循环依赖和混乱的架构。如果你无法解释为什么某项改动更好,那就拒绝它。

  • 使状态显式化。 不要让 AI 去“琢磨”如何处理缓存或会话。在你的 prompt 或 schema 中明确定义它们。推断出的状态会导致在生产环境中崩溃的隐性 bug。

  • 为助手的改动编写自己的测试。 每当助手修改代码时,我会先编写一个由人工编写的测试。这虽然会花费 15 分钟,但能节省数小时的调试时间。

  • 要求“响亮的失败”。 如果某项改动通过了测试但破坏了逻辑,系统必须将其标记出来。永远不要把“测试通过,直接上线”作为有效的衡量标准。

结果如下:

  • 每周 bug 数量从 5 个降到了不到 1 个。
  • 每周调试时间从 6 小时降到了 1 小时。

助手没有变,变的是我。

如果你在使用 AI 助手,请先修复你的代码库。改进你的测试,明确你的状态,并加强你的代码审查。

AI 助手是一面镜子。确保你本身拥有值得被放大的价值。

Source: https://dev.to/susiloharjo/my-ai-coding-agent-kept-breaking-what-i-changed-4l5f

Optional learning community: https://t.me/GyaanSetuAi