指出传统代码检查工具不足以管理AI Agent开发,需要建立更完整的工程治理框架。对使用Agent的开发团队有重要启发。
很高兴你来到这里。每周一至周五,我们都会为你送上 TNS 的优质内容,帮助你及时掌握新闻动态,始终保持最佳状态。
请查看收件箱中的确认邮件,你可以在其中调整偏好设置,甚至加入更多群组。
在你喜欢的社交媒体平台上关注 TNS。
在 LinkedIn 上关注 TNS。
在等待第一封 TNS newsletter 期间,不妨先看看最新的精选与热门文章。
毫无疑问,AI Agent 正在改变软件开发。它们可以迅速将一个想法变成可运行的实现,探索不同方案,并承担规模更大的工作——这些工作原本可能会一直积压在 backlog 中。机会确实存在。现在的问题是,如何将这种速度转化为可靠、持久的价值。
Linting 在这一过程中扮演着重要角色。Linter 可以针对语法错误、未定义变量、格式问题和常见错误提供快速的本地反馈。它们帮助团队建立一致的标准,同时不会拖慢开发进度。在 Agent 工作流中,这种即时性和一致性变得更加宝贵。
随着 Agent 生成的变更越来越庞大、越来越复杂,团队需要一套与工作范围相匹配的验证流程。Agent 可以生成格式规范、符合惯用写法且看起来完整的代码,但开发者仍然需要确信:这些变更能够正确运行,可以融入周边系统,并满足安全性与可靠性要求。
“随着 Agent 生成的变更越来越庞大、越来越复杂,团队需要一套与工作范围相匹配的验证流程。”
这需要我们采用与其他高杠杆系统相同的工程纪律:明确目标,提供有用的上下文和约束,并在结果进入生产环境之前完成验证。
Linting 最初的承诺,一直是在开发者编写代码时提供即时、可执行的指导。当团队开始添加 Agent 开发所需的多层验证机制时,也应该延续这一原则。
Linting 擅长在局部范围内检查代码。然而,许多影响重大的软件问题,往往出现在执行路径、数据流动以及组件之间的交互中。
设想这样一段代码:单独看每个函数都合情合理,但某个未经验证的值经过多次调用后,最终进入了数据库查询、文件系统操作或身份验证决策。又或者,某个条件单独来看似乎站得住脚,却导致一条有实际意义的分支永远无法执行。这些问题关注的是系统作为一个整体究竟如何运行。
控制流分析可以推断程序可能经过哪些路径。数据流分析和污点分析可以追踪值如何从外部输入流向敏感操作。这些技术结合起来,有助于团队了解软件在实际运行中可能做什么,尤其是在一项变更跨越多个文件或系统边界时。
目标是让反馈的力度与影响程度相匹配。快速检查应该放在 Agent 的内部推理循环中,而更深入的分析则可以聚焦于安全敏感路径、业务关键工作流以及范围更广的变更。
Agent 开发所加速的不只是第一方代码。Agent 还可能引入依赖项、配置变更、pipeline 更新,以及可能暴露 secrets 的捷径。
这些要素都值得验证。团队需要了解哪些组件进入了自己的软件,扫描依赖项中已知和新出现的风险,在 secrets 扩散之前将其检测出来,并把工作流配置视为代码库中与安全密切相关的一部分进行审查。
在 Agent 环境中,安全边界已经超出了应用程序源文件的范围。它还包括影响 Agent 如何构建软件的工具、软件包、配置和指令。将这些防护措施自动化,可以帮助团队以 Agent 生成代码时同样的速度和一致性完成验证。
代价最高昂的软件问题通常是逐渐积累起来的:重复逻辑、不必要的复杂性、模糊的所有权,以及违反架构边界的依赖关系——而这些架构边界原本是为了确保恰当的抽象而设立的。
“代价最高昂的软件问题通常是逐渐积累起来的:重复逻辑、不必要的复杂性、模糊的所有权。”
Agent 会加速这种积累,因为它们可以在短时间内生成大量单独看来都合情合理的代码。评估每项变更当前是否能正常工作至关重要;评估它对系统长期健康状况的影响,也同样重要。
可维护性是 Agent 生产力的一部分。当 Agent 能够理解自己所处的代码库时,它们的工作效果会更好。清晰的架构、可控的复杂度和明确的约束,可以为问题提供一幅更准确的地图。它们能帮助 Agent 在下一项任务中做出更好的选择,也能帮助开发者更有信心地审查这些选择。然而,由于 Agent 的 memory 空间有限,它们并不擅长始终保留代码库中正确的上下文。
要形成良性循环,随着代码库不断变化,Agent 需要即时、动态且与 specification 相关的上下文。维护良好的系统可以支持更高效的 Agent,而高效的 Agent 又能释放更多能力来改进系统。长此以往,团队便能获得一个经得起时间考验的创新基础。
最实用的理解方式很直接:当验证机制被设计进工作流时,Agent 能够创造更多价值。
这意味着,在 Agent 生成代码之前,就要为其提供相关的上下文和约束;在内部循环中保留 linting,以提供即时反馈;随着变更的范围和影响不断扩大,应用行为、安全性和架构检查;并通过质量门禁和 review 实践验证最终结果,而不只是检查 patch 表面上是否合理。
“下一项竞争优势,将来自有效地引导 Agent、验证它们的工作,以及维护始终清晰易懂的系统。”
Linting、测试、更深入的静态分析、依赖项控制、secrets 检测、架构检查和人工判断,各自提供了不同的信号。它们结合在一起,使团队既能快速推进,又能保护正在构建的系统。
AI Agent 正在让代码生成变得极其充裕。下一项竞争优势,将来自有效地引导 Agent、验证它们的工作,并确保系统在每一波新的开发浪潮中始终保持可理解性与韧性。
Linting 仍然是这一策略不可或缺的一部分。它提供即时反馈,而更广泛的验证工作流则让团队有信心快速推进,并构建经久耐用的系统。