AI重塑软件工程02-从DeepWiki源代码知识库到逆向建模工程

B站影视 内地电影 2025-10-17 08:29 1

摘要:大家好,我是人月聊IT。今天继续聊AI软件工程方面的话题,先做个预告,就是最近我们完全用Claude Code做了一个真实的商业客户交付项目。后续我会进一步分享这方面的实践。

大家好,我是人月聊IT。今天继续聊AI软件工程方面的话题,先做个预告,就是最近我们完全用Claude Code做了一个真实的商业客户交付项目。后续我会进一步分享这方面的实践。

今天简单聊一下基于源代码项目的wiki知识库,大家是否遇到过一个问题,比如说你去学习take up一个开源软件项目,或者是你去接手团队里面的一个新的遗留的it系统的时候,你怎么样快速的去熟悉这个源代码,有没有一个工具能够回答你关于这个源代码项目相关的一些问题,或者是给出这个源代码项目完整的设计文档,包括架构图设计模型,包括关键功能的一些类似于序列图的实现。

其实在20年前就有相关的基于源代码的逆向工程,比如说可以逆向核心的类图和类关系图,但随着AI大模型的发展,现在又有了新的进展即DeepWiki源代码知识库。简单来说就是你给AI一个源代码的完整项目或Repo代码仓库地址,那么AI大模型可以快速去阅读理解这个项目,并给出这个项目完整的设计文档和源代码知识问答库。

这块实际有很多实现,当前主流的是CongnitionAI的DeepWiki,但是这个项目本身是一个商业非开源项目,而且也无法进行私有化部署。当然在GitHub上还有一个参考该项目思路实现的开源项目,叫DeepWiki-Open。

地址: https://github.com/AsyncFuncAI/deepwiki-open

这个项目可以进行私有化本地部署,并配置相应的大模型API Key就可以使用,感兴趣的朋友可以自己做下试验。

当然,为何聊起DeepWiki这件事情?

因为前几天在我们的架构师技术沟通群里面就在聊这个东西,当时就聊到了类似于阿里的Qoder这么一个AI-IDE工具,它的付费版本身也提供了一个Rep Wiki的这么一个功能,这个功能就是连接到相关的一个代码仓库以后,它可以快速的去构建这么一个代码仓库的wiki百科知识库,既输出完整的架构图设计文档,又能够回答你关于源代码项目的问题。

所以基于这么一个场景,我也一直在思考,当前随着AI大模型的发展,基于已有的大型的历史项目进行相关的逆向工程建模是相当重要的一个事情。它的意义不仅仅局限在帮助开发人员快速的去熟悉大型的项目,回答大型项目基于源代码相关的一些疑难问题,它其实还有两个重要的作用。

第一个作用项目交付文档生成。我把它理解成就是我把这个工具做好以后,其实它可以反向输出我们在整个软件工程里面用到的所有的相关的文档,其中就包括了需求文档、数据库设计文档、架构设计文档、概要设计文档,包括你最终的用户操作手册,我能不能基于第一位的思路,来去做这么一个工具,帮我逆向生成所有的类似于软件建设实施的项目交付的时候,它需要的所有的文档,如果有这么一种完整的工具,那这个工具肯定是有用的。

大家都知道其实像现在对于大一点的软件建设实施项目,对于甲方招投标的要求,它仍然要求你交付完整的概要设计文档,详细设计文档、用户操作手册。那么如果有了这个工具的协助,那么整个的对于软件交付的工作将极大地提高相关的效率。

第二个作用就是源代码项目的模型化数字化孪生。当借助AI辅助有了这种逆向建模的工具,我觉得另外一个重要的作用就是让AI也帮助我们快速地去了解我们的大型项目。大家都知道如果我有一个几十万上百行代代码的软件的大的项目,我要让AI大模型去完整的阅阅读我这个项目,哪怕就类似于第一步一个思路去建立这么一种知识库,它也需要好几十分钟甚至一两个小时的时间,它才能够完整的建立。

但是如果我如果我已经意向了核心的这么一种基于源代码项目的本身的设计文档设计模型,那么AI就可以快速的去理解我已有的一个源代码工程项目,然后基于我的需求的问题,有针对的性的去展开阅读相应的相应的部分的一些源代码就可以了,这样的话可以极大的缩小对整个AI大模型上下文长度的一些要求,也提升了AI理解学习处理我们已有工程项目问题的速度,这个反而是这种在AI大模型发展下面这种逆向建模,实现模型和你的源代码项目之间数字孪生很重要的一个作用。

好了,由于我前篇文字刚讲解了iflow cli,因此正好用这个大模型CLI工具来验证下我前面讲到的关键内容的一些思路。对于该工具的安装和简单使用,我在周一的文章已经做了说明,为了配合该功能,还需要安装Playwright MCP工具用于网页的自动浏览和截图。

iflow mcp add-json -s user 'playwright' "{\"command\":\"npx\",\"args\":[\"-y\",\"@iflow-mcp/playwright-mcp@0.0.32\"]}"

由于我在前面还谈到,AI逆向还有一个重要作用就是只有源代码或只有部署包,其他所有过程文档全部缺失的项目的理解。因此这里我从一个Jar部署包来开始讲。就是我手里面只有一个部署包,如何逆向关键的需求设计类文档。在这里需要安装一个代码反编译开源工具。

通过该工具,我们导入Jar包选择对应的包进行反编译操作,然后在反编译完成后将源代码完全导出形成一个工程项目。

在反编译完成后我们构建一个MFT的目录项目,然后启动iFlow进入到这个项目里面。在这里通过/model可以选择大模型。我当前验证选择了阿里的Qoder大模型进行验证。

注意在这里我仅仅给出最简单的说明,即该源代码项目是一个文件传输平台的源代码项目,该平台重点是实现端到端的文件传输和传输管理监控等功能。具体不再提示,即让AI进行完整的代码阅读和分析。

注意我先让AI输出这个源代码项目实现的完整功能清单,具体我们得到如下的功能清单列表,这个功能清单实际我们实现的功能完全一致。

好了,接着朝后面验证。

我们让AI帮我们输出传输管理中的端点管理和传输任务配置管理的操作手册或用户手册,具体内容需要包括功能说明,操作流程和操作步骤,详细的数据项填写规则和示例等。得到如下结果:

大家注意看,整个内容仍然相当完整,和我们当初实现的功能一致。但是出现了明显缺点,就是没有界面原型界面截图。

那么你拿到的Jar包能够真正运行起来吗?实际我们要将Jar包真正运行起来还有相当多的工作,基础配置组件等要做才行。那么如果在项目没有真实运行起来的适合逆向界面原型?

因为在我们的源代码项目里面是有前端界面的,AI如果理解了完整的前端源代码是可以输出界面原型的。我们完全可以让AI理解后通过SVG绘图的方式来绘制界面原型。但是实际这种方式并不是最佳方式。经过验证,更好的方式是让AI从已有的源代码项目中剥离出静态的html页面的界面原型。

于是我又给了AI提示词,即:

我现在需要你将文件传输端点配置功能和文件传输任务配置功能两个的功能进行详细分析,包括前端界面。然后帮我输出这两个功能的静态html网页界面原型。这个html页面需要能够浏览器直接打开,而且整体的界面风格布局,CSS等要和真实的源代码项目界面风格保持一致。

好了,有了这个提示后,AI果然不负众望,帮我逆向导出了静态Html网页的界面原型。浏览Html网页后界面如下:

包括点击新增传输任务的二级页面也完全生成,如下:

好了,到这里AI应该具备了完整的写一个图文并茂的软件需求说明书的能力。对于界面截图就采用前面谈到的Playwright mcp工具自动浏览网页后自动截图抓取即可。

因此我们准备了如下的提示词:

好的,现在任务升级了,即我需要你在前面理解我整个MFT文件传输源代码项目的基础上,帮我生成传输管理中的传输端点管理和传输任务配置两个功能的详细的软件需求说明书,具体的要求如下:

1.注意功能需求拆分到每个功能点,每个功能点都需要有需求功能概述,详细的输入,输出,业务规则,基本流程,扩展流程等描述。注意对于录入类界面需要表格化展示所有的的数据项,包括数据项的名称,类型,填写说明,控件类型等。对于查询类功能需要对查询条件和查询结果表格都通过表格化方式进行列表说明数据项。对于基本流程,扩展流程,业务规则都需要通过条目化描述。

2.注意,需求说明书需要界面原型图。注意在当前项目screen目录下已经提前生成了两个静态原型文件,如下:

2.1endpoint_management : 传输端点管理功能界面原型,注意里面有按钮,比如点新增的时候还有对应的跳窗录入界面。

2.2 transfer_config 传输任务配置功能,注意点击新增传输任务按钮有跳窗录入界面,界面中还有多个tab页签分别录入不同的内容。

2.3 我需要你采用 playwright mcp工具自动浏览正两个界面原型,并对相关的内容进行原型截图单纯存储为一个个独立的jpg文件,注意点击按钮后出现的关键界面原型界面,tab页签转换的界面等都需要截图。

2.4 所有的截图最终都要体现在需求文档对应的文字说明地方,直接使用相对路径的图片超链接。

3. 对于软件需求规格说明书的编写方式,你还可以参考主流的软件需求规范要求进行补充。但是我前面强调的内容都必须要有

4. 我只需要你生成 传输端点管理和传输任务配置两个功能的详细的软件需求说明书,其他都不要生成。

5. 最终生成的说明书返回一个 markdown 格式的文档给我。注意界面截图要放在screen目录下面,需求文档放在当前目录下面。

有了这个提示词,AI继续不负众望,帮我生成的完整的软件需求文档。这个文档基本可以项目交付的需求文档要求,具体参考如下:

说实话,到这里已经基本给了我不小的惊喜,看来以后对于历史项目要补充面向客户交付的完整项目工程文档可以通过AI辅助极大的提示效率了。而且比人补充的还详细。

接着我们让AI帮我生成传输任务执行的详细说明书文档,我截图部分说明如下,可以看到里面有详细的类设计,任务执行算法流程设计等。

好了,到这里看,还是少了点东西。

即我们需要有类似UML相关的设计图进行展示。当然这个mermaid工具来实现,当然这里通用提供了MCP工具可以直接安装。

iflow mcp add-json -s user 'mcp-mermaid' "{\"command\":\"npx\",\"args\":[\"-y\",\"@iflow-mcp/mcp-mermaid@0.1.3\"]}"

在安装了这个mcp工具后。我们接着让AI出设计图。提示词如下:

很好,我现在需要你接着mermaid mcp工具来帮我绘制两个UML图。一个是实现上面文件传输任务执行的核心类关系图。体现实现该功能用到的核心类和类之间的关系,一个是实现该传输任务功能的UML 序列图。然后在Mermaid绘图完成后,你需要单独生成两个独立的图片文件给我。

当然,这一次AI的表现也没有让我失望,输出完整的UML类关系图和传输任务算法实现的序列图,截图参考如下:

既然这个地方能够完全走通,那么AI自然具备了输出完整的概要设计说明书或详细设计说明书的能力。

以上即我们在没有使用DeepWiki工具,仅仅接着iflow CLI+大模型+MCP工具集完成简单的设计文档和模型逆向的输出。从前面的简单验证也可以看到大模型逆向设计文档完全可行,当然里面还有不少细节需要进一步处理和完善,但是至少可以看到该思路和策略是没有任何问题的。

今天的分享就到这里,希望对大家有所启发。

来源:人月聊IT

相关推荐