CLI 版本报告验证 — 2026-10-23¶
rea --version --json 在不加载分析命令实现的情况下报告包/运行时/平台事实。共享 CLI 预检保留了配置和输出选项的错误优先级。未添加缓存:不必要的工作在于加载完整命令图,且运行时事实必须保持最新。
范围与身份标识¶
- 真实应用:REA 6.7.0 所构建的公共 CLI,运行于 Linux x64;Node 24.22.1 和 npm 11.16.0(仓库固定版本)。不需要目标或分析提供方。
- 宿主机 CPU:AMD EPYC 7B12;CPU 亲和性限制为两个逻辑 CPU。Node 可执行文件 SHA-256:
e32e2d16081cf644f88392934288086e7662529d0d43277c34f7aad2207cfafb。 - 基线:
5655fbf17,结合了 main60accad2d与原始 PR #6530 的 HEAD044bd861b2df082eca5d4ad91d7cb79876c13430。它已经包含格式化报告;该比较衡量的是等效事实的交付,而非纯文本与 JSON 的对比。 - 原始作者提交被保留。优化后的源码是此 PR 的启动器/预检变更;下文源码哈希绑定到被测代码。
- 两条通道使用相同的锁定依赖、可执行文件和环境控制。包清单 SHA-256:
2218e615dc1e68ca31c02ee5f6f2dee1e2cf7aa6a78c1c22ac090e27fe49d2eb。 - 构建树摘要:基线
a4bc8722b69046c5ace1d3e764bba81812427766f088418c27c6876812796722(2147 个文件);优化后9919d1b6177536f75fd1acb9240525e82cb5af5a55f4db07cbcc4b243a5f8eb4(2153 个文件)。每个摘要对排序后的相对路径、NUL 分隔符以及每个文件的二进制 SHA-256 进行哈希。
47eae72df85b722dcabab6860980a7285886a854daaec74b47490b41f9652154 scripts/rea.mjs
73e5f50400b11012ccf6c6c312e1f91e027e92c4a5616f112bf97ea135e3253d src/cliOutput.ts
64d82457c9f9f276379f9734caff181117afc3fd17fa50d90140a92853395f43 src/cliConfiguration.ts
fa221460cf337bb2463bd47cd919066a612f369ab866cc1dfbf27ae49259e182 src/domain/versionReport.ts
已完成公共任务与资源测量¶
命令,每个命令都在各检出目录的全新进程中运行:
node scripts/rea.mjs --version --json
node scripts/rea.mjs --version
node scripts/rea.mjs providers --json --filter-output 'capabilities[0,1].provider.id,open'
每项任务三对交替运行,第二对反转顺序。全部 18 次运行均以退出码 0 完成,且每项任务内的标准输出逐字节相同。这些是热构建/文件缓存测量;未测量 OS 冷启动运行或进程内热会话。NODE_DISABLE_COMPILE_CACHE=1 在两条通道中都禁用了 Node 的编译缓存。CPU 亲和性为 0–1;Node 堆限制为 2048 MiB;GOMAXPROCS=2、GOMEMLIMIT=2GiB 和 UV_THREADPOOL_SIZE=2。采样式的 6 GiB 提前停止保护从未达到;它不是内核内存限制。
耗时包括从进程启动到退出。CPU 为通过 wait 统计的子进程 CPU。峰值家族 RSS 是每隔 50 ms 对负载进程家族采样的最大总和;共享页面可能被多次计数,短暂峰值可能被遗漏。外部采样器被排除在外。此处所有被测命令都没有分析引擎子进程。宿主机上的其他工作不受控制,因此微小的对照差异不能证明性能改进。
中位数;配对值为 修改前 / 修改后:
| 任务 | 耗时(秒) | CPU(秒) | 峰值家族 RSS(MiB) | 标准输出字节数 |
|---|---|---|---|---|
| 格式化版本 | 1.716 / 0.203 | 1.968 / 0.198 | 335.6 / 72.1 | 207 |
| 纯文本版本对照 | 1.876 / 1.783 | 2.221 / 1.990 | 346.8 / 338.9 | 6 |
| 过滤后提供方对照 | 2.467 / 2.182 | 2.624 / 2.461 | 384.7 / 378.2 | 67 |
首次测量的格式化版本进程(与重复中位数区分开):
| 通道 | 耗时(秒) | CPU(秒) | 峰值家族 RSS(MiB) |
|---|---|---|---|
| 修改前 | 1.716 | 1.968 | 335.6 |
| 修改后 | 0.203 | 0.198 | 72.1 |
JSON 负载仍为 207 字节,包含所有已记录的字段。不声称 Token 数量有所减少。Token 数量、宿主机 Prompt 处理以及实际模型使用情况均未被测量;这些 CLI 任务没有 MCP 发现或后续调用。此前的开发探测(包括与聚焦测试重叠的探测)被排除在最终比较之外。不声称存在普遍的分析/提供方加速。
正确性与兼容性¶
- 以下 12 个精确选定文件上的 231 个测试全部通过,且为串行执行。这涵盖了运行时/领域契约、实际 CLI 输出与错误处理、调度器清理、运行时打包、真实 MCP doctor 目录、doctor 组合,以及两个已编译的 CLI 测试驱动。
- 新的调度器回归测试使用真实构建的预检和 CLI 模块,这些模块在导入时会抛出异常。JSON 在没有这些导入的情况下成功;无效输出和配置保留其错误。恢复原始启动器会使该回归测试在受阻的分析导入处明确失败(阴性对照)。
- 一次真实 PTY 调用返回了与管道运行结果一致的缩进 JSON。纯文本版本、YAML 和帮助优先级仍通过公共 CLI 覆盖。
- 一次真实 Node 20.20.2 调用返回了其版本,且
supported_runtime.satisfied: false;这不能证明对 Node 20 的分析支持。Bun、Windows 和 macOS 的端到端行为仍未得到验证。 - 此前的并行 210 测试选择中,209 个通过,1 个现有
cliOutput案例超过其 3000 ms 进程截止时间。该失败尝试被保留;随后的串行 231 测试选择在未放宽任何截止时间的情况下通过。其原因尚未最终归因。上面的过滤后提供方基准测试将同一公共命令作为兼容性对照运行。 npm run check在向 Knip 声明现有cliOutput运行时入口点后通过。这使实际动态消费的入口保持可见,而不是忽略新的预检导出。npm run docs:check通过,包括 9 个 README 一致性测试。
所用串行选择使用了已构建的先决条件:
node scripts/run-exact-tests.mjs run --maxWorkers=1 --no-file-parallelism \
src/domain/runtimeVersion.test.ts src/domain/versionReport.test.ts \
tests/boundary/cli/cliOutput.test.ts tests/boundary/cli/versionReportCli.test.ts \
tests/boundary/cli/dispatcher.test.ts tests/boundary/process/runtimeBundle.test.ts \
tests/boundary/mcp/mcpDoctor.test.ts tests/boundary/cli/mcpDoctorHelpCli.test.ts \
src/doctorRuntime.test.ts src/application/Doctor.test.ts \
tests/boundary/cli/compiledCliSession.test.ts \
tests/boundary/cli/sharedJavaScriptCliSession.test.ts
此工作流报告的是运行时元数据,而非目标分析证据。现有 MCP 服务器身份仍保留为 MCP 版本表面;未引入重复的工具或模式。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea