claude-howto PR Review 插件之 performance-analyzer 子代理从算法复杂度到数据库与缓存的性能影响评估实战指南【免费下载链接】claude-howtoA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-howto本指南围绕 claude-howto 仓库中 PR Review 插件 内嵌的performance-analyzer子代理展开讲解它如何在代码审查阶段对一次变更做性能影响评估——覆盖算法计算量、数据库查询效率、内存使用与缓存利用余地四个维度。读完本文你将掌握该子代理的定义结构、评估方法与可操作的量化工具并能把它与安全、测试等其他审查子代理组合成一条完整的 PR 审查流水线。一、子代理定位从 frontmatter 读懂 performance-analyzerperformance-analyzer的英文源定义位于 07-plugins/pr-review/agents/performance-analyzer.md日文版位于 ja/07-plugins/pr-review/agents/performance-analyzer.md。该文件的核心是 YAML frontmatter 与正文描述--- name: performance-analyzer description: Performance impact analysis tools: Read, Grep, Bash ---name子代理的唯一标识供上层命令如/review-pr委派调用。descriptionPerformance impact analysis性能影响分析。它是 Claude Code 决定何时调用该子代理的匹配依据因此在委派式工作流中这一句描述就是路由的关键。toolsRead, Grep, Bash。这界定了子代理的能力边界——它能读取文件全文Read、在仓库内做正则检索Grep、执行命令Bash但不包含编辑权限无Edit。这保证了审查代理只读、不改代码符合评审职责分离的原则。正文明确其核心使命评估变更带来的性能影响Evaluates performance impact of changes并列出四个审查维度算法复杂度Algorithm complexity数据库查询效率Database query efficiency内存使用Memory usage缓存机会Caching opportunities二、在 PR Review 插件中的角色与调用链performance-analyzer并不是一个孤立文件而是 07-plugins/pr-review 插件三个子代理之一。该插件的完整组成包括组件文件职责斜杠命令commands/review-pr.md、commands/check-security.md、commands/check-tests.md触发不同类型的审查子代理agents/security-reviewer.md、agents/test-checker.md、agents/performance-analyzer.md安全、测试、性能三个专业方向MCP 服务器mcp/github-config.json通过 GitHub MCP 拉取 PR 数据钩子hooks/pre-review.js审查开始前校验环境插件的 README 给出了完整的执行工作流见 07-plugins/pr-review/README.mdUser: /review-pr Claude: 1. Runs pre-review hook (validates git repo) 2. Fetches PR data via GitHub MCP 3. Delegates security review to security-reviewer subagent 4. Delegates testing to test-checker subagent 5. Delegates performance to performance-analyzer subagent 6. Synthesizes all findings 7. Provides comprehensive review report也就是说/review-pr是编排入口定义见 07-plugins/pr-review/commands/review-pr.md它依次执行前置校验运行 hooks/pre-review.js。该 Node.js 钩子会执行git rev-parse --git-dir确认当前目录是 Git 仓库并通过git status --porcelain检测未提交的改动并给出警告——这保证了审查发生在有效的版本控制上下文内。拉取 PR 数据通过 mcp/github-config.json 配置的 GitHub MCP 服务器获取 PR 的 diff、评论与元数据。该配置以npx modelcontextprotocol/server-github启动并从环境变量注入GITHUB_TOKEN。分头委派把安全、测试、性能三个维度分别交给security-reviewer、test-checker、performance-analyzer。汇总输出Claude Code 综合三方结论输出一份带严重级别标记的完整审查报告。performance-analyzer在这个流水线中负责第 5 步即对性能维度给出结论例如 README 示例中的✅ Performance: No significant impact性能无显著影响。三、四维评估方法详解1. 算法复杂度Algorithm complexity评估变更后代码的时间与空间复杂度是否退化。实践中建议对新增或修改的函数做Big O 分析判断是否存在从 O(n) 退化到 O(n²) 的隐患例如循环内嵌套循环、循环内重复调用昂贵的查找操作。关注数据结构选择是否合理例如用哈希表HashMap实现 O(1) 查找而不是在线性表中反复遍历。检查是否消除了冗余迭代与重复计算重复计算同一结果、同一查询执行多次等。仓库中的 03-skills/refactor/scripts/analyze-complexity.py 提供了可直接运行的量化依据。它对 Python / JavaScript / TypeScript 文件计算多组指标圈复杂度Cyclomatic Complexity基于 McCabe 方法CC E - N 2P简化实现为判定点数 1统计if/elif/for/while/except/case/try等决策点认知复杂度Cognitive Complexity衡量代码的可理解难度嵌套结构if内嵌if会使权重递增可维护性指数Maintainability Index综合 Halstead 体量、圈复杂度与代码行数计算 0–100 分其中 85–100 为高可维护65–84 为中等50–64 为难以维护0–49 为极难维护。配合 03-skills/refactor/scripts/analyze-complexity.py 的对比模式传入before.py after.py两个版本可以输出重构前后逐项指标的变化表让复杂度是否上升变成可验证的数字而不是主观判断。2. 数据库查询效率Database query efficiency针对涉及数据访问的变更重点核查N1 查询问题循环中逐条执行查询应改用 JOIN 或批量获取batch fetch合并。索引匹配频繁用于过滤与排序的列是否有对应索引无索引的过滤在数据量增长后会线性劣化。分页与投影是否通过分页避免加载无界结果集是否只SELECT需要的列而不是SELECT *。连接池数据库连接是否复用而非在每次请求中新建。仓库的 04-subagents/performance-optimizer.md 提供了一个可复用的数据库核查清单Detect and fix N1 query problems、Add indexes for frequently filtered/sorted columns、Use pagination to avoid loading unbounded result sets、Prefer projections、Use connection pooling可以作为performance-analyzer在数据库维度的检查模板并在Bash工具支持下执行EXPLAIN ANALYZE SELECT ...;之类的真实查询计划分析。3. 内存使用Memory usage评估变更对内存占用与 GC 压力的影响是否一次性把整个大文件读入内存而非使用流式处理streaming热路径hot path上是否频繁分配对象造成 GC 压力是否存在内存泄漏隐患——定时器未清理、事件监听器未移除、长生命周期容器持有大对象等。4. 缓存利用余地Caching opportunities识别变更中值得缓存的重复昂贵计算对频繁执行且结果可复用的计算应用记忆化memoization或缓存为缓存结果设置合理的 TTL平衡新鲜度与命中率对数据库查询结果、HTTP 响应等做适度缓存减少下游压力。四、工具矩阵Read / Grep / Bash 的审查用法performance-analyzer只被授予Read, Grep, Bash三个工具在审查时应按如下方式组合使用工具典型用途对应证据Read通读 diff 涉及文件的完整上下文理解调用关系与数据流源码文件Grep检索模式用法如对同一表名、同一函数的引用定位重复查询、相似实现全仓库正则搜索Bash运行复杂度分析脚本、执行EXPLAIN ANALYZE、跑基准测试go test -bench、分析访问日志中耗时最高的端点03-skills/refactor/scripts/analyze-complexity.py 等需要注意的是该子代理没有Edit权限它的产出是发现问题并给出修复建议而不是直接改写代码——修复动作应交给主代理或具备编辑权限的代理完成。五、报告输出如何沉淀一份可执行的性能审查结论参考 04-subagents/performance-optimizer.md 的输出格式performance-analyzer对每个发现的问题应提供Bottleneck瓶颈哪里慢、为什么慢Root Cause根因是算法、I/O、内存还是网络层面的问题Before基线优化前的量化指标ms、MB、RPS、查询次数Change建议变更具体的代码或配置修改方向After预期结果优化后应达成的指标Trade-offs取舍优化带来的可读性、复杂度或运维成本。同时建议在审查结束前自检基线指标是否已采集、热点是否通过剖析确认而非猜测、根因是否被验证、测试是否仍然通过、是否有后续监控/告警建议。这与 03-skills/code-review-specialist/SKILL.md 中Performanceif issues found——List performance problems with complexity analysis的报告要求相互呼应。六、配置与使用前提要实际运行这条 PR 审查流水线需满足以下前提Claude Code 2.1见 07-plugins/pr-review/README.md 的 RequirementsClaude Code 2.1、GitHub access、Git repository。安装插件在 Claude Code 中执行/plugin install pr-review。配置 GitHub 令牌由于 mcp/github-config.json 从环境变量读取令牌需要先执行export GITHUB_TOKENyour_github_token。在 Git 仓库中发起前置钩子pre-review.js会强制校验 Git 环境非 Git 仓库会直接退出exit 1。执行时只需在 Claude Code 中输入/review-pr性能评估即作为整个流水线的一环自动触发也可以在需要单独聚焦性能时直接要求 Claude 调用performance-analyzer子代理对指定文件或变更做专项分析。七、与相邻能力的协同横向协作performance-analyzer与 security-reviewer.md、test-checker.md 三个子代理共同覆盖安全—测试—性能三角最终由/review-pr汇总为一份多维审查报告避免单一视角的盲区。纵向复用仓库中 03-skills/code-review-specialist/SKILL.md 提供的 analyze-metrics.py 与 compare-complexity.py 脚本以及 03-skills/refactor/scripts/analyze-complexity.py为性能与复杂度评估提供了开箱即用的数值化工具04-subagents/performance-optimizer.md 则给出了从剖析profiling到优化再到验证的完整闭环方法论。这些内容可以理解为performance-analyzer在执行时的工具箱——前者负责在评审中发现问题后者负责在修复阶段解决问题二者构成评估 → 优化 → 再评估的闭环。小结performance-analyzer用极简的定义一个 frontmatter、四行能力描述挂载了一套严肃的性能审查职责。理解它的关键在于把它放回 PR Review 插件 的流水线中看待前置钩子校验环境GitHub MCP 提供 PR 上下文三个子代理分工审查最终汇总成报告。而真正让性能结论从感觉变成证据的是仓库中那些可运行的复杂度分析脚本与优化清单——这正是本仓库看得见、可复制的指南定位的体现。【免费下载链接】claude-howtoA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-howto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考