我构建了一个 AI 代理,用于修复 Sonar 和 Snyk... 笔记

我构建了一个 AI 代理,用于修复 Sonar 和 Snyk 发现的问题。

AutoRemediate AI 是一个智能体,旨在自动修复 Java/Spring Boot 项目中低风险代码质量和依赖漏洞。它处理诸如未使用的导入、变量以及已知存在漏洞的库等常见问题,这些问题常因繁琐而被忽视。该智能体高度重视安全与验证,绝不盲目信任 AI 的建议。相反,它采用多步骤流程:AI 提出最小化补丁,确定性工具验证其安全性,最终由人工批准。工作流程始于克隆仓库,通过测试和扫描建立基线,随后对发现的问题进行分类。对于每个“安全”的问题,AI 生成一个经过验证的小补丁,并对其进行严格审查。成功的关键在于“安全网关”,该网关验证构建状态保持绿色、所有测试通过、目标问题已解决,且未引入新问题。为防止 AI 造成危害,已部署关键保障措施:编辑操作极小,严格限定于特定文件类型,依赖项升级由代码处理而非大语言模型(LLM)。系统遵循“失败即关闭”原则,拒绝模糊或有误的补丁,仅自动化安全类别的问题发现,将安全问题留给人工审查。为防止执行不可信代码,该智能体隔离进程、清理环境变量,并将仓库内容视为不可信输入。作业生命周期由显式状态机管理,确保状态转换可预测,并避免将既存的失败归咎于智能体。技术栈包括 Java 21、Spring Boot、Maven,并利用 Anthropic 的 Messages API 作为 LLM。本项目的重要经验表明,可测量的基线、对 AI 输出的严格约束,以及仅利用 LLM 的“思考”能力而将关键流程保持确定性至关重要。系统设计支持回滚、检查点记录和重试,且关键的是始终保留人工在环进行最终审批。该项目鼓励讨论其他人在代码接触型 AI 智能体安全自动化方面的实践方法。