详细内容或原文请订阅后点击阅览
AI 生成代码的架构护栏
考虑一下故障模式的组合,这种故障模式在将人工智能辅助开发扩展到少数爱好者的团队中变得越来越常见。一位名叫 Priya 的工程师提出了一个 Pull 请求。 PR 有 340 行,并添加了一个直接写入客户表的端点,绕过内部客户服务 API。 [...]
来源:O'Reilly Media _AI & ML考虑一下故障模式的组合,这种故障模式在将人工智能辅助开发扩展到少数爱好者的团队中变得越来越常见。
一位名叫 Priya 的工程师打开了一个 Pull 请求。 PR 有 340 行,并添加了一个直接写入客户表的端点,绕过内部客户服务 API。代码很干净。测试通过。六个月来,编写该代码的 AI 编码代理一直是该团队最高效的贡献者。评审员在加入团队三个月后批准了。公关当天下午发货。
两周后,在集成调试期间,有人注意到该端点写入的客户记录缺少审核日志条目。审核挂钩位于客户服务 API 中。正是出于这个原因,该团队在两年前禁止了直接数据库访问,并编写了一份架构决策记录(一个版本化的 Markdown 文档,该团队积累的数十个文档之一,记录了决定的内容、原因以及被取代的内容)来记录该规则。撰写 ADR 的工程师现已离开。目前团队中没有人记得这个决定。该文档位于当前工作流程从未触及的目录中。
端点被重写。审计空白得到填补。团队将冲刺的大部分时间花在清理上。没有人称这是人工智能辅助开发的失败。人工智能编写了功能代码。它只是在人工智能无法查看的文档中编写了违反团队已经做出的决定的代码。
这是一种特定的故障模式。这不是幻觉,因为输出是有依据的、语法上有效的并且是惯用的。这不是模型质量问题,因为如果决策仍然不存在于上下文中,那么在同一提示下更好的模型不一定有帮助。这是一个记忆问题。不是上下文窗口的模型内部意义,而是组织意义。 ADR 可在存储库中找到。它从未向代理人透露过,审稿人也没有阅读过。
