ARTICLE · 1193217
每周科研skill|REA:AI拆解科研软件
科研软件 AI 专家:把软件结构、证据和复核串起来
软件分析 · 证据追踪 · 工作流改造 · 可复现记录
正文已完整交付;文末「阅读原文」可继续操作
关注「AI-For-Precision-Health」 | 持续更新可复现的 AI 科研实操
食品 · 医药 · 器械 · AI 工具 · 科研 Skill
一句话钩子:实验室的软件没有源码、功能交接说不清,REA 能让 AI 顺着证据追代码;但它不是“读一下就还原原始源码”的魔法按钮。

▲ 图 1|REA 的分析路径与使用边界。图中为流程示意;具体能力以安装版本和所选分析引擎为准。[3]
本文核心要点
▸ REA 是公开的 Skill + MCP(模型上下文协议)工作流,适合分析自有或获授权的软件制品。
▸ 静态分析可先从 Electron/JavaScript 应用入手,不必先装反编译器。
▸ 读者可以照着命令生成 JSON(JavaScript 对象表示法)结果,再用证据链复核功能路径。
▸ 解读结果要分清观察事实、人工智能(AI)推断和未知;动态分析会运行目标程序。
本节结论:它的热度确实突出,但“星标数很高”只能说明关注度高,不等于活跃用户数、分析准确率或科研验证效果。[1]
REA(Reverse Engineer Anything,意为“逆向工程一切”)是一个开源项目。它把人工智能(AI)Agent 与模型上下文协议(Model Context Protocol,MCP)及多类软件分析工具接起来,让 Agent 可以沿着模块、调用关系和证据继续追问。GitHub 仓库页面在 2026 年 10 月 13 日访问时显示约 18.6 万 Star(星标)、约 4.5 万 Fork(派生仓库);数字变化很快,也不能拿来代替实际使用人数。[1]
先提醒一个容易混淆的地方:Meta 也把内部的 Ranking Engineer Agent 简称为 REA。那是广告排序模型实验系统,不是本文要讲的开源 Skill。本文的 REA 是 GitHub 上的 Reverse Engineer Anything。[2]
它为什么突然出圈?吸引人的不是“AI 会反编译”这句话,而是它把多个老工具、Agent 调用和工作流说明放到一个入口。对科研人员来说,最可能用上的场景不是破解别人的产品,而是维护自己有权分析的软件:例如课题组自研的 Electron 数据查看器交接断档,或者需要梳理自己团队开发的导出工具如何从界面按钮走到数据序列化。
热度怎么读:本次只核实了 GitHub 项目页的 Star/Fork 和 npm 发布版本;没有证据证明所有星标者都安装使用,更没有独立基准证明 REA 比 Ghidra、IDA 等分析器更准确。它值得试,是因为入口和工作流打包得方便;是否适合课题组,要用自有样本做小测试。
本节结论:REA 适合“拿到软件制品、需要解释它怎样工作”的任务;如果源代码完整,先用普通代码搜索和调试工具,通常更直接。
科研软件的麻烦,常常不在算法,而在交接:谁维护了这个小工具?某个导出按钮写出的 CSV 到底做了哪些转换?新旧版本的菜单、模块和依赖有什么差别?当源码不在手边、但你有合法分析权限时,REA 可以帮忙把问题拆成可追踪的路径,而不是让模型只凭截图猜实现。
REA 不是新的反编译引擎。原生二进制分析通常还要连接 Ghidra、IDA 或 Hopper;静态 JavaScript/Electron 分析则可在没有这些原生分析器的情况下启动。官方 README 还列出 .NET、网站、Android、固件等不同目标,但每类目标的依赖和宿主支持不同,不能把“支持某格式”理解为每台电脑都能即插即用。[3]
不适合:源码完整、普通仓库结构一目了然的项目;没有授权的商业软件或医疗设备;需要临床/实验结论的任务。REA 读的是软件结构,不会替你验证仪器测量准确性、临床性能或实验结论。
本节结论:装上 Skill 不等于 MCP 已连接;MCP 可用也不等于本机具备每一种分析引擎。
REA 仓库中的核心工作流文件是 .agents/skills/reverse-engineer-anything/SKILL.md。它告诉 Agent 先识别目标类型,再选择对应工具;例如 Electron/JavaScript 目录走应用分析路线,Android 安装包走 Android 路线,原生二进制才需要选择相应分析引擎。文件还要求结论区分观察、推断和未知。[4]
把它拆成四层更容易理解:
Skill:提示 Agent 什么时候该用 REA、从哪个入口开始、怎样保留证据和边界。
MCP:模型上下文协议(Model Context Protocol),负责让 Agent 调用 REA 暴露的本地分析工具。
分析器:静态 JS/Electron 路线可直接分析;原生分析依赖外部 Ghidra、IDA 或 Hopper。
目标文件:你明确提供的软件目录、归档包或其他受支持制品;目标权限由你负责确认。
上游文档特别提醒:从 skills.sh 安装 Skill 主要是安装说明和参考资料,不会自动注册 MCP,也不会安装 Ghidra 等分析器。反过来,安装并注册 MCP 后,已运行的 Agent 可能仍需要重启或重连才能看到新工具。[5]
本节结论:先用一次性 CLI 分析自有/获授权的 Electron 目录;确认有用后,再考虑连接 MCP。
刚接触这类软件分析,先准备一个自有或获授权的 Electron 解包目录,再确认 Node.js 版本和 npm(Node.js 包管理器)。REA 文档要求 Node.js 22.19+、24.11+ 或 26+。本文核对的环境为 Node.js 24.15.0;npm 当前最新包为 6.4.0(2026-10-13 核验)。为减少版本漂移,下面固定用 6.4.0。不同目标可能另有依赖。[3][6]
Step 1|准备合法样本
把你自己开发或拿到书面授权的软件解包到一个新目录,例如 D:/lab-tools/viewer-unpacked。不要拿患者数据、私有密钥、账号令牌或未经授权的商业软件做练习。首次测试优先用静态分析,不运行目标。
Step 2|确认环境和目录
在 PowerShell 执行 node --version、npm --version,确认版本后再创建单独的输出目录。若 Node 版本不符合,不要让安装器替你升级;按官方 Node.js 安装流程单独管理运行环境。
Step 3|执行静态分析并保存结果
把示例路径替换为自己的授权目录。命令会用 npx 临时运行固定版本,不需要先改 Agent 配置。
New-Item -ItemType Directory -Force .\rea-output | Out-Null& npx -y rea-agents@6.4.0 analyze-javascript-application "D:/lab-tools/viewer-unpacked" --json | Tee-Object -FilePath .\rea-output\analysis.jsonif ($LASTEXITCODE -ne 0) { throw "REA analysis failed: $LASTEXITCODE" }
上游示例确认该命令可分析解包后的 JavaScript/Electron 目录或 ASAR(Electron 应用归档格式),并返回模块、导入关系、Electron 边界及证据。[3]
Step 4|只问一个可验证的问题
例如:“在这份授权的自研数据查看器里,CSV 导出入口对应哪些模块和调用关系?请逐项引用分析结果中的证据;把直接观察、推断和未知分开;不要修改文件,也不要尝试寻找凭据。”问题越窄,越容易判断 Agent 有没有把证据和猜测混在一起。
失败时怎么退回
若提示 Node 版本不支持,先停下升级运行环境;若路径无效,检查是否指向解包目录而非安装器;若目标其实是原生二进制,不要反复跑 JS 命令,应先确认许可和操作系统,再看对应 provider 文档。输出过大时先保存 JSON,只聚焦一个模块继续分析。
接入 Codex 前的只读预演:REA 官方安装文档提供 dry-run 计划。先查看会改哪些配置、备份写到哪里、要安装哪个 Skill;不要跳过计划直接授权。
npx -y rea-agents@6.4.0 setup --client codex --dry-run --json只有计划指向预期配置、变更范围清楚且备份可恢复时,再根据计划执行正式 setup。安装后重启 Codex,并用官方只读检查确认注册;这一步不是静态分析必需条件。
本节结论:REA 提供的是带证据的分析线索,不是原始源码,也不是自动验收通过的结论。
输入:明确的软件目标路径、版本/构建来源、分析授权记录、一个窄问题;必要时提供已脱敏的说明和目标功能名称。
输出:工具返回的 JSON/Evidence、模块和依赖线索、可能的调用路径,以及尚未确认的未知项。具体字段随目标类型和版本变化。
验收:①输出目标路径与样本一致;②关键结论能回指具体模块或证据;③推断有单独标记;④用源代码、测试夹具或获授权的实际运行结果做交叉验证。
失败处理:证据缺失就标记“未知”,不让模型补全;关键导出逻辑找不到,就缩小问题、检查入口和依赖,或交由软件工程师用原生工具复核。
建议把结果整理为一页“软件结构记录”:目标文件的 SHA-256 摘要、软件版本、REA/npm 版本、操作系统、分析时间、问题、Evidence 引用、观察/推断/未知、人工复核人和未解决事项。不要把整份私有分析日志直接上传到公开 issue。结构报告必须由熟悉该软件的维护专业人员复核;若要判断仪器测量性能,不能由 AI 单独作结论。
本节结论:把“按钮到底做了什么”改写成一个有输入、有证据、有复核的工程问题,读者就能完成一次可审计分析。
设想课题组维护着一款自研 Electron 光谱查看器,原开发者离组,源码暂时找不到;团队仍有权分析手里的安装包。要回答的问题不是“把软件抄出来”,而是:点击“导出逗号分隔值(CSV)”后,应用经过哪些模块?数据列名、单位和缺失值在哪里处理?下面是可照做的工作单,不代表本文已对某款真实仪器软件进行测试。
Step 1|把问题和边界写进记录
输入:软件名称、版本、安装包来源、授权说明、当前分析问题。
AI 动作:先判断样本属于 Electron/JavaScript 目录、ASAR 还是原生程序;如果权限或目标格式不清楚就停止。
输出:00_scope.md,写明“只追踪 CSV 导出路径,不运行、不修改、不提取凭据”。
人工把关:课题负责人或软件权利人确认用途和权限;涉及第三方授权的软件,按合同和许可条款另行确认。
失败处理:授权不明确、样本来源不明或包含真实患者数据时,不继续分析;改用自研最小复现项目。
Step 2|静态盘点,不先运行安装包
输入:隔离目录中的授权解包文件,保留原始安装包只读副本。
AI 动作:调用 analyze-javascript-application,让 REA 识别模块、导入关系、路由、进程边界及其依据。
输出:rea-output/analysis.json 和脱敏的模块清单。
人工把关:检查路径、文件哈希和模块边界,避免误把另一版本结果当成当前版本。
失败处理:若样本是原生二进制或格式不受支持,停止这条路线;不通过猜测“强行套用”JS 分析。
Step 3|沿导出入口追到数据写出点
输入:模块清单、界面按钮文字、导出 CSV 这一窄问题。
AI 动作:要求 Agent 从界面入口追到事件处理、进程间通信(IPC)边界和可能的序列化位置;每个跳转都注明证据来源,缺口写“未知”。
输出:01_export_trace.md,包含调用路径、证据位置、推断和未确认环节。
人工把关:软件工程师检查证据是否真的支持调用关系;不要只凭字符串命中认定逻辑。
失败处理:路径断在动态拼接或原生扩展处时,把断点列入待查清单,不让模型凭经验补全。
Step 4|用合成数据验证,不碰研究原始数据
输入:自制的几行模拟光谱数据和预先定义的预期 CSV 列名、单位、缺失值规则。
AI 动作:在授权且隔离的环境中,由工程师决定是否运行目标;对照实际输出逐列比对预期,不让模型自动改程序。
输出:02_export_checks.csv、测试记录和版本/哈希信息。
人工把关:数据负责人核对列顺序、单位换算、时间戳、缺失值和样本标识;真实实验数据需另走数据治理流程。
失败处理:结果不一致时保留原始输出和差异,不把差异直接解释成软件缺陷;回到证据路径定位下一段。
Step 5|交付可复查的软件说明
输入:范围记录、REA 输出、合成数据测试结果、人工审核意见。
AI 动作:按“确定事实 / 有证据的推断 / 未知”生成一页流程图和交接说明。
输出:03_handoff.md、导出链路图和未决问题列表。
人工把关:由维护者签字确认边界、复核证据和测试结果;报告不得写成测量算法有效性或仪器临床性能结论。
失败处理:核心路径未复核时,只交付“待验证线索”,不发布为正式标准操作流程(SOP),不据此更改生产软件。
本节结论:REA 的实用价值是缩短“找到证据”的路,不是替实验室承担软件权限、质量体系和科学判断。
第一道:授权门。每次分析都登记目标来源、版本、权利人和书面授权;不分析来源不明的商业软件、第三方设备固件或他人账号数据。
第二道:环境门。静态分析和动态观察分开。官方安全说明明确指出 REA 不是沙箱;打开不可信二进制会把解析工作交给本机分析器,并使用当前用户权限。动态捕获会运行/交互目标程序。敏感目标应先在隔离测试环境评估,不要在含患者资料或实验室生产数据的工作站上试跑。[7]
第三道:证据门。报告把事实、推断、未知分栏;结论落到源码、模块、测试记录或人工复核结果。反编译伪代码不是原始源码,静态结构也不能证明执行时一定如此。
还有一个实际问题:REA 更新很快。npm 6.4.0 的发布包与仓库 main 分支的 Skill 文件不一定同步。教程、工具表和调用参数要以当前已连接服务实际暴露的能力为准;正式课题组流程应固定版本、留存命令和输出哈希,更新后先做回归测试。[5]
我的判断:REA 值得科研软件维护者做一次低风险试用,尤其是 Electron/JavaScript 的自研小工具。但如果你的目标是“分析临床设备算法、证明测量准确、复刻商业软件”,这篇教程不提供那种承诺,也不建议这么用。
▸ 自动化收益:把分析入口、模块关系和证据线索交给 Agent 整理,减少人工在多种工具间来回找路径。
▸ 使用门槛:Node.js/npm、合法目标文件;原生分析还需要匹配 provider。
▸ 验收原则:每个判断留证据;每个推断标边界;关键行为用合成数据或受控测试复核。
▸ 下一步:找一个自研、无敏感数据、获授权的软件包,先跑命令行工具(CLI)静态分析;确认输出值得信任后,再评估是否接入课题组 Agent 和 SOP。
工具与资料一览
REA Skill|Agent 的目标路由和工作流说明
REA MCP / CLI|提供本地分析工具与 JSON 输出
Node.js + npm|运行环境;本文命令固定 rea-agents 6.4.0
Ghidra / IDA / Hopper|仅用于相应原生分析路线,非 Electron 静态入门的必需品
*本文介绍软件分析工作流,不构成法律意见、网络安全评估、医疗器械验证或临床判断。仅分析自有或明确获授权的软件;遵守适用法律、许可协议和机构数据管理要求。
参考资料
[1] morluto. REA: Reverse Engineer Anything. GitHub repository. Accessed 2026-10-13. https://github.com/morluto/rea.
[2] Kumar A, Gao E, Levi M, et al. Ranking Engineer Agent (REA): The Autonomous AI Agent Accelerating Meta’s Ads Ranking Innovation. Engineering at Meta. 2026-03-17. https://engineering.fb.com/2026/03/17/developer-tools/ranking-engineer-agent-rea-autonomous-ai-system-accelerating-meta-ads-ranking-innovation/.
[3] morluto. REA README: Quick start, supported targets, prerequisites and limitations. GitHub. Accessed 2026-10-13. https://github.com/morluto/rea/blob/main/README.md.
[4] morluto. reverse-engineer-anything/SKILL.md. GitHub. Accessed 2026-10-13. https://github.com/morluto/rea/blob/main/.agents/skills/reverse-engineer-anything/SKILL.md.
[5] morluto. REA installation and setup: skill-only install, dry-run, client compatibility and release boundary. GitHub. Accessed 2026-10-13. https://github.com/morluto/rea/blob/main/docs/installation.md.
[6] npm. rea-agents package metadata and latest release. Checked 2026-10-13. https://www.npmjs.com/package/rea-agents.
[7] morluto. REA Security Policy: security boundary and untrusted target warning. GitHub. Accessed 2026-10-13. https://github.com/morluto/rea/blob/main/SECURITY.md.















































































