02 / 入门教程 / 阅读约 8 分钟

如何使用 REA:追踪应用的导出按钮

点击“Export notes”后,CSV 文件去了哪里?用 REA 追踪一个小型 Electron 应用中的按钮,再测试生成文件内容的代码。

本页内容
JavaScript / Electron无需原生分析引擎官方教学示例
你将学会
  • 下载一个小型应用,将文件夹路径交给 REA。
  • 找到导出处理函数及预期保存位置: Downloads/notes.csv.
  • 运行简短验证,检查逗号和引号能否正确导出。

01. 选择一个问题

“解释这个应用”范围太大。先从一个能描述清楚、也能核对答案的行为开始:

我们的问题
点击 Export notes 后,CSV 文件会保存在哪里?如果笔记标题包含逗号或引号,会怎样处理?

我们使用 REA 官方 Notes 示例:六个小文件组成的 Electron 教学示例,并非生产应用。静态分析不需要安装 Electron。

02. 获取示例

从 rea.tools 下载 notes-example.zip 并解压到新文件夹。记好文件夹路径,应该看到以下文件:

示例文件
notes-example/
  package.json
  index.html
  renderer.js
  preload.js
  main.js
  csv.js

如果尚未连接 REA,请先阅读 安装指南。这个示例无需启动桌面窗口即可分析。

03. 让智能体分析

将提示词中的示例路径替换为解压文件夹的绝对路径。

分析提示词
使用 REA 静态分析 /absolute/path/to/notes-example。沿渲染进程、preload 桥接层和主进程追踪 Export notes 按钮。给出输出文件路径、CSV 列,以及支持结论的文件和行号。不要启动 Electron。区分实际观察到的代码与推测。

也可以直接在终端收集 REA 的静态证据:

终端
npx -y rea-agents@6.4.0 analyze-javascript-application "/absolute/path/to/notes-example" --json > notes-analysis.json

命令固定了本教程使用的版本。输出 JSON 是分析证据,并非自然语言解释;编程智能体会利用它指导后续检查。

04. 追踪导出路径

答案是: 按代码设计,应用会将 notes.csv 保存到操作系统的下载文件夹。设置位于 main.js。下面追踪按钮如何到达这段代码。

按钮→Preload→IPC→CSV 文件

在 Electron 中,页面和应用主进程独立运行。 Preload 暴露一个页面可以调用的方法。 IPC 是把请求传给主进程的消息,主进程可以写入文件。

位置代码的作用
renderer.js点击处理函数调用 window.notes.exportCsv().
preload.js暴露的方法调用 notes:export IPC 通道。
main.js对应处理函数构造下载目录路径,并写入 notes.csv.
csv.js格式化函数写入 id,title,为每个标题加引号,并将内部引号写成双引号转义。

代码使用 Electron 的 app.getPath("downloads")。这只能确定预期保存位置,不能证明文件已实际写入你的电脑。下文会直接验证格式化函数。

05. 验证一个预测

向格式化函数传入标题为 Hello, "REA"的笔记。预期 CSV 行为:

预期输出
id,title
1,"Hello, ""REA"""

逗号应保留在同一个带引号字段中,每个内部引号变为两个引号。要验证,请把以下内容保存为 check.cjs,放在解压后的 notes-example 文件夹中:

check.cjs
const assert = require("node:assert/strict");
const { toCsv } = require("./csv.js");

const actual = toCsv([{ id: 1, title: 'Hello, "REA"' }]);
const expected = 'id,title\n1,"Hello, ""REA"""\n';
assert.equal(actual, expected);
console.log(actual);
console.log("PASS: comma and quotes stay in one field.");
在示例文件夹中运行
node check.cjs

已在本地验证。 我们于 2026 年 10 月 12 日执行 REA 6.4.0 静态分析和此格式化验证,输出一致。我们没有启动 Electron 界面,也没有通过导出按钮测试文件系统权限。

06. 用更具体的问题继续

接下来提出一个能检验解释的追问,而不是要求更多笼统描述:

追问提示词
如果 notes.csv 写入失败,错误如何传回页面?追踪所提供文件中的错误处理。指出任何缺失的处理函数,但不要修改应用。

每份报告都保留三件事: 发现、源码位置,以及实际测试过什么。 这样更容易识别听起来合理、却超出证据支持范围的解释。

下一篇 / 真实软件包案例查明为什么生成的 URL 仍包含“!”。

示例和流程: REA 官方首次分析。本页是独立教程,额外进行了本地分析和格式化验证。 下载分析摘要。

第一次使用这个工具? REA 是什么? · 我们如何核查教程