OpenAtom openEuler(简称 “openEuler” 或 “开源欧拉”) AI漏洞修复平台是openEuler社区使用AI修复内核CVE和外围包CVE平台。上一篇
《openEuler社区AI漏洞修复平台:通过PatchFlow Agent完成内核CVE漏洞修复》着重介绍了内核CVE漏洞修复。本篇将着重介绍外围包漏洞修复。 ●平台链接:
https://gitcode.com/openeuler/nvwa-cve-fixer
openEuler社区持续推进海量软件包的智能化运维效能提升,其中面向外围包CVE修复场景,由“Agent编排+Harness工程”驱动的Agent Workflow智能化补丁作业系统已在600+外围包仓库完成落地应用,支撑超过110+成功合入。为了方便介绍,下文将这套外围包CVE补丁作业系统简称为PatchHarness。
外围包由于其独特的代码组织模式,相比内核仓的CVE修复流程增加了许多前后置流程,包括基于SPEC更新、自研补丁适配、构建验证等,这些环节拥有相对固定的规范标准,对CVE修复工具的输出稳定性提出了要求。另外由于外围包数量众多,不同外围包的公开CVE补丁获取途径各异,因此要求CVE修复工具拥有高可扩展性,针对不同软件包的CVE补丁获取策略提供快速扩展能力。
PatchHarness面向稳定性、可扩展性以及可靠性,构建了一套“AI自治与刚性工程管控相结合”的混合处理系统,贯穿CVE分析、修复补丁搜索、影响性分析、代码仓Fork、源码压缩包展开、补丁应用与冲突适配、级联补丁搜索、SPEC更新、构建验证、PR创建等环节。其中确定性流程通过脚本固化,复杂任务通过Agent嵌入处理,Agent Skill支持抽屉式替换升级。另外通过状态文件跟踪流水线以及Agent执行状态,PatchHarness还支持检查点保存和恢复。
外围包由于其独特的代码组织模式,相比内核仓的CVE修复流程增加了许多前后置流程,这也给PatchHarness的设计带来了新的挑战:
openEuler外围包采用业界常见的RPM补丁仓管理模式,相比以源码管理的内核仓,新增了SPEC更新、自研补丁管理等环节,具有确定性的社区研发规范,与CVE影响性分析、补丁适配等不确定性流程混合处理,极易带来AI“代码幻觉”,导致AI处理结果差强人意。
openEuler外围包的CVE通过NVD等公开途径披露,不同外围包的披露信息没有固定的规范,有的CVE可以直接从NVD中获取补丁链接,有的则需要通过互联网搜索,有的则需要基于社区历史提交与Issue分析获取,AI使用固定的补丁获取方式难以适应复杂的外围包场景。
openEuler版本分支多,老版本分支与上游源码仓分支版本差距大,由于缺少前置级联补丁,CVE修复补丁在这些老版本分支上往往难以直接合入,并且前置级联补丁可能递归依赖更前置的补丁。
针对上述高频且依赖经验的场景,PatchHarness摒弃了单纯堆砌人工或裸调模型的思路,确立了“Model + Harness(大模型降维为原子工具 + 脚手架工程刚性约束)”的新型治理方案,重点构建了智能化CVE作业流水线。。
PatchHarness由三大层级相互配合,实现全流程的自动化接管:
patch-workflow.sh作为唯一入口,支持通过 6 步流水线进行场景感知与流程编排。系统具备断点续传能力,可通过状态文件记录完成状态,支持从任意中断步骤恢复执行。架构核心理念:入口分发层持续感知,执行引擎支持断点续传,CVE流水线融合 AI 与确定性脚本。
系统遵循“先展开、再检查、后应用”的精细控制粒度,将修复任务切分为标准的CVE流水线,通过“AI自治与刚性工程管控相结合”的设计,提升端到端作业结果的稳定性:
rpmbuild -bp展开源码。git apply --check进行快速分类,区分出可直接应用的补丁与需要 AI 分析的补丁,并基于源码粒度分析CVE的影响性。rpm-patch-applier进行 3 阶段子代理协作(AI 适配 > AI 审核 > AI搜索级联补丁),通过后自动跨仓库提交 PR 并格式化回复 Issue。不同外围包的NVD披露CVE方式存在差异,有些NVD中通过PR链接提供,有些NVD中通过commit链接提供,有些甚至需要自行去社区仓库搜索。对此,PatchHarness构建了一套多源搜索修复补丁的Skill,使用subagent分别从不同源头搜索CVE修复补丁,包括通过NVD API获取匹配版本的补丁、从上游源码历史commits获取、通过Issue/MR追溯等等。
基于脚手架完成源码展开后,PatchHarness中使用Agent完成复杂的补丁适配任务。为了提高CVE补丁的合入成功率,补丁适配Skill采用subagent协同设计,主agent负责任务分配和编排,subA负责补丁冲突适配,subB负责对补丁适配结果进行审核,如果补丁适配失败,则启动subC,根据适配失败的代码hunk从上游源码仓中搜索前置补丁。另外,为了解决级联补丁嵌套搜索的问题,PatchHarness采用AI+工具链混合递归搜索,基于上游源码git blame搜索嵌套级联补丁并适配合入,解决单agent内部递归导致会话超长以及中间状态无法保存的问题。
PatchHarness系统已完成服务化部署上线,并通过webhook集成至openEuler外围包,实现openEuler Issue评论一键触发CVE修复任务。以下展示通过外围包CVE Issue评论触发CVE修复的流程。
PatchHarness提供CVE修复的触发命令,使用格式为
/branches <branch1>,<branch2>,...,比如
/branches master表示对外围包master分支进行CVE修复。
评论后触发自动化处理任务,进行CVE补丁搜索以及影响性分析。任务端到端完成后,PatchHarness会通过评论区反馈漏洞分析结果以及PR链接:
CVE修复补丁回合完成后,会在评论区反馈补丁适配报告:
PatchHarness还提供了一套可视化看板,支持细粒度跟踪当前执行任务的流水线所处的环节,实时显示过程中输出的日志信息:
PatchHarness采用“AI自治与刚性工程管控相结合”的设计,解决AI修复外围包CVE长链路任务下的幻觉问题,已在openEuler 600+外围包仓库完成落地应用,支撑超过110+成功合入。在面对更深层次的复杂场景时,未来主要从以下三个方面持续演进:
【版权声明】Copyright © 2026 openEuler Community。本文由openEuler社区首发,欢迎遵照
CC-BY-SA 4.0协议规定转载。转载时敬请在正文注明并保留原文链接和作者信息。
【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。
欢迎在此反馈您在社区体验中的任何建议或问题
知道了
openEuler是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持ARM、x86、RISC-V、LoongArch、PowerPC、SW-64等多样性计算架构
关于openEuler
新闻与资讯
获取与下载
支持与服务
互动与交流
贡献与成长
友情链接
木兰开源社区鲲鹏社区鹏城实验室InfoQ开源社中科微澜AuthingopenGauss昇思MindSporeopenUBMCopenFuyaoEbaina品牌隐私声明法律声明关于cookies遵循
木兰宽松许可证第2版(MulanPSL2)
版权所有 © 2026 openEuler 保留一切权利
京公网安备 11030102011597 号


openEuler小助手


openEuler公众号