Understand-Anything大型Monorepo基准测试体系详解如何获得可复现的性能数据【免费下载链接】Understand-AnythingGraphs that teach graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.项目地址: https://gitcode.com/GitHub_Trending/un/Understand-AnythingUnderstand-Anything 是一款把任意代码库变成可交互知识图谱的开源工具支持 Claude Code、Codex、Cursor、Copilot、Gemini CLI 等。本文详解它内置的大型 Monorepo 基准测试体系如何在不运行 LLM 的前提下对静态分析流水线测出可复现的性能数据——耗时、CPU、峰值内存、输出规模与 SHA-256 摘要并让其他贡献者能在自己的机器上复算出同一份证据。一、为什么先做「无 LLM」的基准测试/understand命令的完整流程里LLM 推理成本昂贵且结果不稳定直接拿它做性能回归并不公平。因此官方把基准测试Benchmark限定在确定性环节跑的都是/understand真实使用的确定性辅助脚本不联网、不调 API、不估算 token、不渲染仪表盘。⚠️ 官方明确要求不要把这份结果宣传为端到端/understand基准。报告里的estimatedAgentInputBytes只是确定性批处理载荷的大小不是 token 估算。完整设计文档见 docs/benchmarks/large-monorepo.md。二、基准测试覆盖的四阶段流水线Runner 依次执行四个阶段每个阶段独立采集墙钟时间、CPU 时间、峰值内存RSS与输出字节数阶段作用对应脚本scan文件扫描、分类与行数统计scan-project.mjsimports静态导入图import map抽取extract-import-map.mjsbatching语义批处理规划把文件切成语义相关的小批compute-batches.mjsstructureTree-sitter 结构抽取并发 1–32 个 worker默认 5extract-structure.mjs其中structure阶段的内存口径值得注意它报告的是单个 worker 的最大峰值 RSSmaxWorkerPeakRssBytes而非各 worker 之和CPU 时间则是所有 worker 的累加避免了并发数据的误读。三、一键运行最快上手步骤# 1. 安装依赖并构建 core 包 corepack pnpm install --frozen-lockfile corepack pnpm --filter understand-anything/core build # 2. 对目标仓库跑基准报告必须输出到仓库之外 corepack pnpm benchmark:large-repo /绝对路径/目标仓库 --label 仓库公开名称 --output /绝对路径/benchmark-results/仓库公开名称.json运行完成后会同时生成两个文件仓库公开名称.json符合版本化报告 schemalarge-repo-report-1.0.0.schema.json的机器可读报告仓库公开名称.md同目录下的可读摘要。两个文件共享同一个pairId消费者应比对两份文件的pairId是否一致这是刻意设计的配对校验而非崩溃级原子事务。其他实用参数--concurrency 1~32结构抽取并发度对比不同 run 时必须保持一致--keep-artifacts保留中间产物注意其中含绝对路径发布前需自行清洗所有中间文件放在系统临时目录、跑完即删.ua/、.understand-anything/等既有分析数据会被自动排除。命令行入口为 scripts/benchmark-large-repo.mjs核心实现参数解析、路径脱敏、并发调度、报告投递与回滚在 scripts/lib/large-repo-benchmark.mjs单阶段采集在 scripts/lib/benchmark-stage-worker.mjs。四、读懂基准测试报告状态、摘要与退出码一份真实样例见 understand-anything-pr587-full-sample.md对应 JSONunderstand-anything-pr587-full-sample.json。该样例在 459 个文件、约 12.7 万行代码的仓库上跑完仅用约 11.7 秒结构抽取占去 8 秒一眼就能定位瓶颈。报告分四块关键信息区块关注点Run状态ok/degraded/failed、双方 commit 与dirty标记、工具版本、并发度Scale文件数、总行数、字节数、按语言/类别分布——跨机器比较规模的证据Integrity结构覆盖率、缺失/重复/意外路径数、inputDigest与outputDigestSHA-256Environment操作系统、CPU 型号、逻辑核数、Node.js 版本、内存退出码语义退出码含义报告行为0完成状态为ok或degraded写出 JSON 与 Markdown1确定性阶段、完整性检查或临时产物清理失败输出位置可写时仍写部分报告2命令行用法错误不写报告degraded表示流水线跑完了但存在警告或跳过文件例如某语言没有注册结构解析器使用前请检查warnings与integrity。另外报告刻意省略了远程 URL、主机名与绝对路径发布前请核对--label等公开信息。五、可复现性协议6 条黄金规则 官方给出一份明确的复现协议保证数据任何人可复算锁定双方 commit同时记录 Understand-Anything 与目标仓库的不可变 commitGit 工作树会被自动捕获进报告保持工作树干净报告记录dirty: trueMarkdown 摘要会对脏工作树给出醒目警告固定变量操作系统、Node.js 版本、机器、并发度、.understandignore规则在对比 run 之间保持一致至少跑 3 次保留所有报告把第一次当作可能的冷缓存结果而不是默默丢弃只在同一台机器上比较时间与内存跨机器报告是有价值的规模证据但不是公平的性能回归对比先核对摘要比较性能前确认两次 run 的inputDigest与outputDigest一致。六、TensorFlow 复现配方与社区规模计划 官方把 TensorFlow大型、多语言 monorepo作为手工验证的推荐对象。配方思路是以浅克隆检出钉死的具体版本 tag校验HEAD与钉死的 commit 完全一致后再跑基准且报告输出放在仓库之外。社区计划分五步落地可复现的确定性 harness 与经过校验测试的报告契约为 TensorFlow 及其他社区 monorepo 各收集至少 3 份inputDigest/outputDigest一致的报告只做同机对比用这些证据选择下一个要优化的瓶颈LLM、token 与成本基准作为独立的未来层不从中外推端到端性能。七、关键源码与文档导航 模块路径基准测试设计文档docs/benchmarks/large-monorepo.md报告 JSON Schemadocs/benchmarks/large-repo-report-1.0.0.schema.jsonCLI 入口scripts/benchmark-large-repo.mjs核心 Runner 实现scripts/lib/large-repo-benchmark.mjs阶段采集 Workerscripts/lib/benchmark-stage-worker.mjsRunner 单元测试tests/benchmark/test_large_repo_benchmark.test.mjs报告 schema 测试tests/benchmark/test_large_repo_report_schema.test.mjs样例报告MD/JSONdocs/benchmarks/samples/需要本地运行整套工具时可从https://gitcode.com/GitHub_Trending/un/Understand-Anything克隆仓库后按第三节命令执行。小结这套体系的价值在于证据可复现——确定性四阶段流水线 版本化报告契约 双方 commit 锁定 SHA-256 摘要校验让大型 monorepo 的性能数据不再是口头结论而是一份可被任何人复算的公开证据链。【免费下载链接】Understand-AnythingGraphs that teach graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.项目地址: https://gitcode.com/GitHub_Trending/un/Understand-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考