@sandeco:Reversa:一个反向文档工程框架,用于将遗留软件转换为AI代理的操作规范
摘要
本文介绍了Reversa,一个多智能体框架,能够将遗留软件转换为可追溯的操作规范供AI代理使用,从而实现更安全的修改和迁移。文中还包含一个探索性案例研究,即将一个ATM系统从COBOL迁移到Go。
查看缓存全文
缓存时间: 2026/05/23 06:05
Reversa:一个面向AI智能体的逆向文档工程框架,用于将遗留软件转换为可操作规格说明
遗留系统集中了业务规则、架构决策和操作异常,这些内容通常隐含在代码、数据、配置和维护实践中。与此同时,基于语言模型的编码智能体依赖可靠的上下文、正确性标准和行为契约,以较低风险修改真实系统。本文提出Reversa,一个逆向文档工程框架,旨在将遗留软件转换为AI智能体可追溯的操作规格说明。Reversa将此过程组织为多智能体流水线:专用智能体映射项目表面、分析模块、提取隐含规则、综合架构、编写单元级规格说明,并审查生成的声明。该方案强调三种机制:代码与规格说明之间的可追溯性、显式置信度标记,以及为人工验证保留空白。该框架以Node.js CLI形式分发,可在多个智能体引擎上安装技能,并使用SHA-256清单在更新或卸载操作期间保留已修改文件。
Reversa:一个面向AI智能体的逆向文档工程框架,用于将遗留软件转换为可操作规格说明
来源:https://arxiv.org/html/2605.18684 Sanderson Oliveira de Macedo 戈亚斯联邦研究所 - 巴西 [email protected] ORCID: 0000-0002-5255-596X (https://orcid.org/0000-0002-5255-596X) Ronaldo Martins da Costa 戈亚斯联邦大学 - 巴西 [email protected] ORCID: 0000-0003-1892-9080 (https://orcid.org/0000-0003-1892-9080)
(2026年5月18日)
摘要
遗留系统集中了业务规则、架构决策和操作异常,这些内容通常隐含在代码、数据、配置和维护实践中。与此同时,基于语言模型的编码智能体依赖可靠的上下文、正确性标准和行为契约,以较低风险修改真实系统。本文提出Reversa,一个逆向文档工程框架,旨在将遗留软件转换为AI智能体可追溯的操作规格说明。Reversa将此过程组织为多智能体流水线:专用智能体映射项目表面、分析模块、提取隐含规则、综合架构、编写单元级规格说明,并审查生成的声明。该方案强调三种机制:代码与规格说明之间的可追溯性、显式置信度标记,以及为人工验证保留空白。该框架以Node.js CLI形式分发,可在多个智能体引擎上安装技能,并使用SHA-256清单在更新或卸载操作期间保留已修改文件。除架构描述外,我们报告了一个探索性案例研究:将ATM从COBOL迁移到Go,流水线生成了517个按内部置信度指数分类的声明、10个已注册空白、53个Gherkin对等场景,以及一个重建计划(清单时完成11项任务中的9项)。本研究未完成最终对等验证和切换。我们不声称广泛的实证优越性;我们根据逆向工程、基于LLM的文档和软件智能体的文献定位该贡献,并提出了一个包含覆盖度、可追溯性、置信度、效用和成本指标的评估协议。
关键词:逆向文档工程;遗留系统;AI智能体;操作规格说明;可追溯性;软件迁移。
1 引言
遗留系统很少仅仅是源文件的古老集合。在许多情况下,它们集中了多年维护、现代化和演化过程中积累的业务规则、架构决策、操作异常、数据约定和使用流程[35,27,2,25,9,22]。部分知识体现在函数名、SQL查询、验证、注释或配置文件中;另一部分则隐含在实现模式、变更历史、实际系统使用或隐性知识中。因此,修改、现代化、重新平台化或迁移遗留系统的编程语言不仅仅需要编辑代码;它需要以一定置信度重建系统做什么、为什么这样做以及哪些行为不能被破坏。
如果没有一个系统性的桥梁,在缺乏显式规格说明的遗留系统和需要操作契约的智能体之间,AI辅助的维护自动化往往在不完整的上下文和隐含的置信度下运行。近期文献表明,中间表示、仓库级文档和规格说明生成仍然是理解、比较和维护软件的核心[35,22,3,37,18,13]。与此同时,AI智能体已经在仓库中执行实际任务,并需要自己的接口才能有效操作[15,38,19,20]。尽管有这些进展,如何将隐含的遗留知识转化为可追溯的操作规格说明(带有显式的不确定性)以指导编码智能体,这一问题仍然悬而未决。
在本工作中,我们提出Reversa,一个面向遗留系统和编码智能体的逆向文档工程框架。我们将“逆向文档工程”定义为:从现有系统中推导出技术文档和操作规格说明的过程,这些文档使行为、架构、领域规则、空白和置信度水平显式化。Reversa将此过程组织为多智能体流水线:一个中央编排器协调专用智能体,以映射项目表面、分析模块、提取隐含规则、综合架构、编写单元级规格说明,并审查生成的声明。除描述框架外,我们介绍了一个探索性案例研究,其中Reversa支持将ATM从COBOL迁移到Go重新实现。
预期结果不仅是叙述性文档,而是可追溯到代码、带有置信度水平标记、并伴有需要人工验证空白的操作规格说明。术语是有意选择的:“逆向工程”通常让人联想到从二进制中恢复代码或架构;而在这里,目标是将现有系统转换为文档化契约,用于指导AI辅助的维护、迁移和演化。这一重点也界定了论文的范围:Reversa并非作为人工验证的替代品,也不是优于其他方法的确定性实证证据,而是作为一个系统框架、一个评估协议以及第一个探索性证据点。
本文做出五项贡献:(i) 我们在遗留系统和AI智能体的背景下操作性地定义了逆向文档工程;(ii) 我们提出了Reversa,一个用于将遗留代码转换为可追溯操作规格说明的多智能体框架;(iii) 我们描述了一个置信度和空白模型,以降低生成文档中虚假确定性的风险;(iv) 我们详细描述了一个可移植到多种编码智能体引擎的架构,其安装和更新由清单控制;(v) 我们提出了一个评估协议,并在一个探索性的COBOL-Go案例研究中进行了实例化。
这些贡献由四个研究问题引导:
RQ1 一个多智能体框架如何将遗留代码转换为AI智能体可消费的操作规格说明?
RQ2 需要哪些可追溯性和置信度机制,以防止智能体生成的规格说明隐藏遗留行为的不确定性?
RQ3 智能体角色的分离如何帮助覆盖理解、综合、规格说明编写和审查的不同阶段?
RQ4 什么评估协议可以衡量生成的规格说明对于AI辅助维护、迁移或演化是否有用?
论文其余部分组织如下:第2节讨论相关工作;第3节介绍框架;第4节描述评估方法;第5节报告探索性案例研究;第6节讨论启示;第7节介绍有效性威胁;第8节总结论文。
2 背景与相关工作
本节将Reversa置于四条研究线中:逆向工程与程序理解;仓库文档与LLM摘要;需求与规格说明生成;以及基于LLM的软件智能体。这些研究线的综合表明,核心问题不在于缺乏理解软件、生成文档或使用智能体执行任务的技术,而在于缺乏一个系统性的桥梁,连接缺乏显式规格说明的遗留系统和需要可追溯操作规格说明的编码智能体。
2.1 逆向工程与程序理解
Reversa建立在最新的逆向工程、架构描述和现代化工作之上,这些工作将现有系统视为重构结构、行为以及现代化选项的证据来源。程序元模型和中间表示对于分类和扩展逆向工程工具仍然很重要[35]。模型驱动的遗留信息系统逆向工程以及当代现代化研究,强化了在更换技术平台时保留领域知识的必要性[27,2,25,9]。这一框架定义了本文提案的范围:Reversa不会自动重新编译、重构或现代化系统;而是从现有证据中推导出技术文档和操作规格说明。
近期关于架构实践的实证工作表明,软件架构活动在需求、设计、构建、测试和维护中仍然困难重重,并在知识管理、文档、工具和流程方面反复出现挑战[31]。这一观点与Reversa的假设一致:在将维护、迁移或演化委托给AI智能体之前,必须重建关于系统的操作知识。Reversa与这种现代逆向工程和现代化传统保持一致,但改变了工件的首要消费者:从人类和分析工具,转向需要可操作、可追溯和可审查契约的编码智能体。
2.2 仓库文档与LLM摘要
近期工作显示,LLM可以在仓库级别支持文档和代码理解。RepoAgent提出了一个用于生成、维护和更新仓库级代码文档的框架[22]。层次化摘要方法也探索了多个级别的摘要,聚合函数、文件和包的信息,以支持业务应用程序的理解[8]。关于LLM生成文档用于遗留现代化的研究专门研究了遗留语言,既突出了生成注释的前景,也强调了需要更好的评估指标[9]。知识图谱和基准导向的工作进一步表明,仓库级上下文正在成为代码生成和评估的一等对象[3,39]。这些工作与Reversa接近,因为它们将仓库视为分析单元,而不仅仅是孤立的函数。
然而,生成的文档并不自动作为智能体的安全基础。Macke和Doyle通过实证表明,不正确的文档可能损害LLM的代码理解,而缺失或不完整的文档则不一定会产生同类的危害[23]。这一结果支持了Reversa的一个核心决策:文档性声明应带有显式的置信度水平和空白,而不是将脆弱的推断呈现为事实。因此,Reversa的目标不仅是生成解释性文本,而是将逆向文档组织为可追溯到代码且适合人工验证的操作规格说明。
2.3 基于LLM的需求与规格说明生成
另一条与Reversa接近的研究线是使用LLM生成需求和规格说明。Xie等人评估了LLM从注释或文档生成软件规格说明的能力,比较了多种模型与传统方法,并分析了失败案例[37]。Krishna等人评估了GPT-4和CodeLlama在生成、验证和纠正软件需求规格文档方面的能力[18]。ReqInOne提出了一个模块化智能体,通过摘要、提取和需求分类等阶段将自然语言转换为结构化的SRS工件[42]。相邻的需求工程工作探索了生成式AI、检索增强生成、用例模型生成和因果图生成,作为改进需求和测试相关工件的机制[1,24,11,17]。
这些工作表明LLM可以生成有用的规格说明工件,但它们与Reversa有两个方面的不同。第一,许多工作从已经可用的需求、注释或文档开始,而Reversa从现有系统开始,其中操作知识可能仅隐含在代码、数据和实现约定中。第二,Reversa中的规格说明面向编码智能体的使用,可追溯性、置信度和显式空白是契约的一部分。诸如AutoReSpec、KerSpecGen和RAG驱动的断言生成等正式规格说明和断言生成工作,强化了可验证规格说明和验证反馈的相关性[5,34,21],但其范围比整个遗留系统的逆向文档工程更局域或更专门。
2.4 软件智能体与多智能体工作流
基于LLM的智能体已经是软件工程中的一个活跃前沿。近期的调查研究了数百篇关于LLM for SE和LLM-bas
相似文章
@seclink: openai 的 codex 一步到位,基于 rust 来写. 如果你想知道细节,你可以用 claude code + mimo 来做逆向分析。 使用AI harness工具 , 从代码 直接还原为 业务需求 , 然后从业务需求出发, 生…
讨论使用OpenAI Codex(基于Rust)、Claude Code和Mimo进行逆向分析,以及AI harness工具从代码还原业务需求,并提及Kimi团队从Python CLI转向TypeScript+Bun。
@mattpocockuk: 为智能体编写ADR一直是一个非常好的决定 捕获代码库中所有非显而易见的决策使得所…
Matt Pocock建议为智能体编写架构决策记录(ADR),以捕获非显而易见的决策,从而以最少的文档使得栈中的智能体更加智能。
ReAct 还是 CodeAct,这是问题所在
本文探讨了 AI 工程中 ReAct 和 CodeAct 两种编排范式的利弊,强调了 CodeAct 在处理复杂任务时的高效性,并介绍了一个新的开源框架。
@sairahul1: https://x.com/sairahul1/status/2058464422306443766
一份关于AI智能体的全面指南,涵盖基础知识、ReAct循环、任务分解、上下文工程以及自主性光谱,面向初学者和构建生产系统的人员。
为会议前研究构建基于AI的辅助规划助手
作者分享了他们使用Claude Opus 4构建自主AI研究助手的经验,用于会前辅助规划任务,但在扩展到会后文档生成时,由于合规和模板问题遇到挑战。他们寻求建议:这两个阶段是否应保持分离,以及在受监管环境中如何衔接。