ARTICLE · 1143454
看中一个软件功能,能让 AI 帮你弄懂它吗?|GitHub今日值得看 #049

用软件时,偶尔会遇到一个让人想研究的功能。
比如,笔记应用复制一段内容,粘贴回来之后,原来的结构还能保留。又比如,老游戏里击中不同位置的砖块,声音也会跟着偏向左边或右边。
如果想在自己的项目里实现类似效果,该从哪里开始?

今天介绍的开源项目 REA,就在尝试帮助 AI 回答这类问题。
它的全名是 Reverse Engineer Anything。你可以给 AI Agent 提供一个本地应用或程序文件,让它借助 REA 查找相关代码、追踪调用关系,再根据找到的证据解释功能是怎么工作的。项目 GitHub
我们通常把这种从现有程序反推实现逻辑的过程,叫作“逆向分析”。

REA 把分析工具接到了 AI Agent 身上,让你可以从一个具体问题开始调查。
比如:
这个应用点击“导出”之后,数据经过了哪些处理,最后保存在哪里?
官方的 Electron 示例就演示了这个过程。REA 先识别应用的入口和模块关系,找到页面调用的接口,再沿着进程之间的消息找到处理函数,最后定位到生成 CSV 和写入文件的位置。
返回结果里会附上对应的代码位置,方便继续检查。对于无法确定的连接,也需要进一步分析或运行验证。官方 JavaScript / Electron 指南
这样,AI 可以围绕一个功能逐步缩小查找范围。
Notion 的复制功能,就是一个很直观的案例。
REA 官方分析了 Notion 桌面版的剪贴板调用链:页面发起请求,经过中间接口传到主进程,主进程检查请求来源后,再调用系统剪贴板接口。
案例还解释了复制内容如何关联到原来的块结构。
在分析的版本中,Notion 会在本地保存结构化的块数据,并在复制出去的 HTML 中放入一个标识。粘贴时,如果这个标识能匹配本地保存的数据,就能恢复相应的块结构。
这让“复制后还能保留结构”变成了一条可以追踪的实现路径。官方页面列出了相关代码片段,以及这些结论对应的应用版本和资源来源。Notion 官方案例
如果你正在做笔记工具或编辑器,就可以借这个案例研究:纯文本、HTML 和应用自己的结构化数据,如何在复制粘贴过程中配合。
另一个案例来自老游戏 DX-Ball。
这个案例研究的问题很小:砖块被击中时,游戏怎样根据它在屏幕上的横向位置,计算声音向左还是向右偏?
Agent 通过 REA 查看原程序的指令、调用关系和相关数值,再据此写出对应的 C 函数。
官方案例报告,这个函数通过了 3,205 组与原始代码的行为对比;使用指定的旧版编译工具链,还复现了该函数完整的 63 字节机器码。
这里的验证范围是一个具体函数。按照官方 2026 年 10 月 7 日的进度说明,完整可玩游戏的重建仍在继续。DX-Ball 官方案例
我觉得这个例子很能说明 REA 的用法:选定一段行为,找到实现证据,写出代码,再检查结果是否一致。
对于原生程序,反编译出来的伪代码也可能缺少信息。DX-Ball 案例中,Agent 就需要继续结合底层指令和调用者,才能补全计算过程。因此,拿到一段看起来合理的代码之后,验证仍然是必要的一步。原生程序分析指南
如果平时就在研究桌面应用、维护旧程序,或者需要弄清某种文件是怎样被处理的,REA 值得关注。它比较适合带着明确问题使用:功能范围越具体,越容易判断分析有没有回答到点上。
想自己试一下,可以从官方的小型 Electron 示例开始。
先准备 Node.js 和 npm。以 Node.js 24.x 为例,需要至少 24.11,然后运行:
npx rea-agents@latest setup按照提示选择使用的 Agent,查看并确认配置方案,完成后重启 Agent。官方安装流程支持 Claude Code、Codex、Cursor 等客户端,会配置 MCP 连接并安装配套的分析 Skill。安装文档
之后可以把目标文件夹的完整路径提供给 Agent,例如:
使用 REA 分析这个应用的导出功能。找出入口、相关调用和最终写入文件的位置,给出每一步的代码依据,并说明哪些部分还没有验证。
官方提供了可以下载的示例应用,用它做静态分析,只需要 Node.js 和 npm,无须启动 Electron。示例与下载入口
如果要进一步分析原生可执行文件,则需要配置 Ghidra、Hopper 或 IDA 等分析工具。不同工具支持的平台和配置方式有所区别,可以按自己的环境选择。官方上手指南
还有一个与使用方式有关的细节:REA 在本地分析目标文件,但分析结果会交给你的 Agent;如果 Agent 使用云端模型,这些结果的处理仍取决于模型服务商的数据政策。官方说明
我会建议第一次只选一个小功能,例如导出文件或复制文本。让 Agent 先讲清楚它找到了什么、依据在哪里,再尝试为自己的项目编写实现。
能沿着证据把一个功能弄明白,就已经是一次很有价值的尝试。
项目地址:morluto/rea