跳到主要内容

2 篇博文 含有标签「legacy-code」

查看所有标签

我们已经有了:当 AI 功能在重新造你已有的代码轮子

· 阅读需 13 分钟
Tian Pan
Software Engineer

我合作过的一个团队在上季度发布了一个“智能”日期提取器。该模型可以解析像“下周二”和“14 号之后的两周”这样的自然语言短语,在生产环境中通过功能标志 (feature flag) 运行,在选定的层级上每次请求的成本约为 3 美分。六周后,一位后端工程师偶然参加了一场设计评审,随口提到公司其实早就有了一个日期解析器。它编写于 2019 年,存在于一个 AI 团队中没人读过的工具模块里,能以不到 1 毫秒的延迟处理 99.4% 的相同输入,而且运行成本几乎为零。那个 AI 功能并没有被撤下,而是被合理解释了——“模型可以处理长尾情况”——于是团队继续前进,发布了一个比公司已有方案更贵、更慢、准确度更低的版本。

这并非个案。对于那些比 AI 团队成立时间更久的公司来说,这是 AI 功能最主要的失败模式。这种模式不断重复:一个智能分类器复制了多年前编写的正则表达式流水线;一个检索系统获取了一个内部服务一直作为类型化表维护的供应商列表;一个智能体 (agent) 学习提取那些解析器已经可以确定性提取的实体。AI 功能发布的质量标准甚至低于它并不知道其存在的确定性系统,而构建确定性系统的团队往往在跨团队会议上才发现这一点。

AI 编程代理在遗留代码库上的表现:为什么在你最需要它们的地方,它们往往会失败

· 阅读需 12 分钟
Tian Pan
Software Engineer

最迫切需要 AI 编程帮助的团队,通常并不是那些正在构建全新服务(greenfield services)的团队。他们往往正在维护 2012 年产出的 50 万行 Rails 单体应用,或是处理过数十亿笔交易的 COBOL 支付系统,亦或是架构师早在三次收购前就已离职的微服务网格。在这些代码库中,一个位置不当的重构就可能引入隐蔽的数据损坏漏洞,而这些漏洞往往在三周后的生产环境中才会浮现。

而这恰恰是目前的 AI 编程助手(agents)失败得最惨烈的地方。

令人沮丧的是,这种失效模式在爆发前是隐形的。AI 助手生成的代码可以通过编译,通过现有测试,并在审查中看起来非常合理。问题往往出现在预发环境(staging)、深夜的批处理作业,或者是某个客户在月份特定日期才会触发的边缘情况中。