CLI JSON Lines 验证 — 2026-10-23¶
分析师任务是将保留的 JavaScript 观察结果导出为独立记录,同时保留它们的 Evidence 来源、覆盖范围和未知项。JSONL 分帧仍保留在 CLI 适配器中;分析与视图投影继续使用与 MCP 相同的应用工作流。
真实工件与已完成工作流¶
已安装并锁定版本的 semver@7.8.5 npm 包通过公开的 analyze-javascript-application 命令进行了分析,未执行其目标代码。它解析了 50 个选定文件,并生成了一份 12,185,829 字节的 Evidence 文档。准备过程耗时 12.295 秒(elapsed)、12.648 秒子 CPU,以及 678.5 MiB 采样峰值进程族 RSS;准备过程与导出测量分开进行。工件摘要为 65c9cce0fbebc34824c1b9657a514e7c5525ab079b232ce9da095697271b7953。保存的 Evidence 文件的 SHA-256 为 b34627bc12894d4c749e5b24c60731dd5a7eaaf90c98954f0e585eb442d484c3。
准备过程在 main 分支提交 169512a35 上运行;两个刷新后的导出变体都复用了完全相同的保留父对象:
{
"source": { "kind": "evidence-file", "path": "/absolute/path/parent.json" },
"view": {
"kind": "javascript-facts",
"property_keys": [],
"include_available_property_keys": true,
"offset": 0,
"limit": 256
}
}
每次完整测量都执行了一次公开的 CLI 调用:
该视图包含 202 个观察行。每组前后配对都重建出完全相同的完整 Evidence JSON,包括身份、主体/提供者、权威/置信度、位置、父/视图摘要、链接、原始覆盖范围、17 个视图限制和 20 个未知项。这些源限制仍然是限制;穷尽这个选定视图并不能建立完整的应用程序分析。Before 输出一个文档;After 输出 202 行和一条元数据记录。
性能¶
基线:刷新的 main 分支提交 2443b949a48c3b2eba687e7381682e49e909d5b9。两个变体均使用 Node 24.22.1 和相同的锁定依赖安装。三对交替运行按顺序执行,使用全新进程和暖的文件系统/构建工件。未配置 Node 编译缓存。未测量冷主机文件系统缓存和重复分析。
| 完成的导出,三次中位数 | Before | After |
|---|---|---|
| 经过时间 | 4.510 s | 4.576 s |
| 含等待的子 CPU | 5.876 s | 5.987 s |
| 采样进程族峰值 RSS | 496.3 MiB | 495.1 MiB |
| 输出的 UTF-8 字节数 | 365,494 | 365,608 |
tokenx token 估计 |
99,004 | 99,041 |
| CLI 调用 | 1 | 1 |
观察到的少量开销并不能证明分析速度提升。114 字节 / 37 个估计 token 的增加是分帧开销,事实相同,且没有额外的工具/模式往返。相同的请求文件为每个案例额外贡献了 74 个估计 token。这些是启发式 tokenx 估计,而非特定于模型的 BPE 计数;编排提示、代理推理和工具定义 token 未被测量。实际的代理上下文消耗还取决于消费者读取哪些行。不声称 token 减少。
行和元数据共享现有的有界 JSON 编码器和等待写入。token 计数复用完全相同的记录计划(包括上下文),并一次估计一行完整内容,而不是物化整个导出。单行仍然必须适合估算器的运行时字符串限制。token 计数性能、更大规模的应用程序以及到达首个被消费行的时间未被基准测试。
测试框架将进程族固定到两个 CPU,使用 2 GiB 的 V8 堆限制、GOMAXPROCS=2、GOMEMLIMIT=2GiB 和两个 libuv 线程。它每 50 毫秒对后代进程的 RSS 进行采样,并在 6 GiB 或 30 分钟时终止任务。没有发生资源停止。RSS 总和可能重复计算共享页面并遗漏短暂峰值;V8 限制是每个进程的,且采样器不是内核内存限制。
验证¶
npm run check 在刷新后的集成上通过,包括类型检查、lint、格式化、依赖/元数据检查和架构保护。当前 main 中的已解析输出控制契约得以保留;处理器、启动器和可复用测试驱动程序都使用相同的事实。
- 241 个测试在 14 个 CLI/MCP/验收文件中通过:实际生产 MCP 目录、经过身份验证的 Evidence 重建、无效的 SDK 值、普通失败和哨兵失败、生成器流式传输、格式化器恢复、空/部分视图、大型输出、管道关闭,以及清理成功/失败后的异步最终写入。该运行耗时 171.097 秒(elapsed)、203.968 秒子 CPU,以及 1589.3 MiB 采样峰值进程族 RSS。
- 另外 60 个测试在四个消费者文件中通过,包括普通图报告、拒绝 JSONL 的标量选择、保留诊断信息的畸形 JSON 输入、托管 CLI 输出,以及直接 SDK update-alias 契约。这些测试耗时 223.152 秒(elapsed)、262.538 秒子 CPU,以及 1079.2 MiB 峰值进程族 RSS。
- 一个新的阴性对照表明,对单个数组值行调用集合编码器会低估 token 数量(15 而不是 21,57 而不是 63)。现在输出和计数共用
jsonLineParts;修复后两种情况以及所有 29 个 JSONL 测试均通过。241 个测试的运行包含这些回归测试。 - 一次真实的
rea mcp doctor --format jsonl运行在一行 JSON 中报告了健康状态。启动/验证失败、完整输出分帧和公开的帮助信息分别被测试。
可选验证器使用共享的 64 KiB 叶子节点,独立检查完整输出的字节和 SHA-256,但不保留完整编码文档:
| 合成序列化夹具 | JSON | JSONL |
|---|---|---|
| 输出字节数(引擎字符串限制:536,870,888) | 536,961,655 | 536,961,779 |
| 耗时 / 子进程 CPU | 9.811 / 10.197 s | 13.940 / 14.451 s |
| 采样峰值家族 RSS | 171.6 MiB | 186.0 MiB |
JSONL 运行还逐行对照实际文件核验了其 Token 计数: 89,492,357 个启发式 Token 全部匹配。JSONL 计时包含这额外的计数 核验,因此这两个测试夹具的计时并非等效工作负载下的性能 对比。共享叶子节点保持输入内存很小;这验证的是序列化 扩展和计数能力,而非 512 MiB 应用程序的分析足迹。 两个临时输出文件已由核验器的清理机制移除。
未发生资源停止。原生提供程序行为不在此 CLI 变更范围内。
npm run docs:check 通过,包括九项 README 一致性测试。
刷新后的测量结果位于 refreshed/ 子目录中;针对
169512a35 的早期测量结果保持独立。原始 stdout/stderr、命令、
每次运行的资源采样、等价性断言和汇总均保留在
/tmp/rea-maintenance-20261023/5629/ 下;它们不是已提交的工件。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea