Skip to content

SmartPerfetto vs SmartInspector 对比分析

tags: #Perfetto #AI-Performance #Architecture-Comparison #Android #Agent source: SmartPerfetto + SmartInspector 项目源码 score: 技术深度8/10 | 实用价值9/10 | 时效性9/10 | 领域匹配10/10 | 综合 9.0/10

核心差异定位

SmartPerfetto 是 纯分析工具(只分析已有 trace),SmartInspector 是 全流程工具(采集→分析→源码归因→报告)。两者在分析环节高度重叠,但在定位和架构选择上有本质差异。

维度 SmartPerfetto SmartInspector
核心定位 Trace 深度分析专家 全流程性能分析 CLI
技术栈 TypeScript + Claude Agent SDK Python + LangGraph
Agent 框架 Claude Agent SDK (MCP 协议) LangGraph (图编排)
Trace 获取 用户手动上传 自动采集 (adb + Perfetto)
源码归因 ❌ 无 ✅ SI$ TraceHook → Pine AOP
IO 追踪 ❌ 无 ✅ 网络/数据库/图片加载 Hook
CI/CD 集成 ❌ 无 ✅ Headless/JSON 模式
HarmonyOS ❌ 无 📋 规划中
Skill 系统 146 个 YAML 声明式 Skill 硬编码在 Agent 中
场景策略 12 种场景 playbook orchestrator 路由 + 专用 agent
Token 优化 SQL Summarizer (~85%) + Artifact Store 消息窗口裁剪 + 路由 token 限制
验证机制 4 层 Verifier + 反思纠错 单次 LLM 调用,无验证
多 LLM ✅ 10+ LLM 通过 API Proxy ✅ 可配置任意 LLM
测试覆盖 1029 个单元测试 有基础测试
部署方式 Docker Compose (Web UI) CLI 工具 (uv)

功能覆盖度详细对比

分析能力

功能 SmartPerfetto SmartInspector 说明
滑动卡顿分析 SP 有 21 种 Jank 根因编码
冷启动分析 SI 自动识别启动阶段
ANR 分析 SP 有专用 ANR 策略
CPU 调度分析
内存分析 SP 有 memory 场景策略
GPU 分析 SP 支持 GPU 负载分析
Binder 分析 SP 有 Binder tracing skill
GC 分析 SP 有 GC 背景知识
游戏性能分析 SP 有 game 场景策略
交互响应分析 SP 有 interaction 场景
温控分析 SP 有 thermal 背景知识
锁竞争分析 SP 有 lock contention 知识
多架构支持 ✅ 4种 ✅ Standard SP: HWUI/Flutter/Compose/WebView
厂商定制 ✅ 8家 SP: Pixel/Samsung/Xiaomi/OPPO/vivo/Honor/QC/MTK
Trace 对比 ✅ 双 trace SP 有 compare_skill 工具
帧分析 (Perfetto UI) 都支持 UI 插件集成

采集与流程

功能 SmartPerfetto SmartInspector 说明
自动采集 SI 通过 adb 自动采集
源码归因 ✅ SI$ SI 独有核心能力
IO 追踪 SI 独有
CI/CD ✅ Headless SI 独有
WebSocket 通信 SI CLI↔App
多轮追问
流式输出 ✅ SSE ✅ streaming

架构设计差异分析

Agent 编排方式

SmartPerfetto: Claude Agent SDK + MCP 协议 - 优势: LLM 自主决定工具调用顺序,灵活应对复杂分析 - 代价: 强依赖 Claude SDK,MCP 工具定义较重 - 安全: Watchdog + Circuit Breaker + 4 层验证

SmartInspector: LangGraph 图编排 - 优势: 流程可控、可预测,LangGraph 原生支持状态管理和节点重试 - 代价: 灵活性较低,新增分析类型需修改图结构 - 安全: node_error_handler + 全局 try/except

Skill 系统对比

SmartPerfetto YAML DSL:

# 声明式定义分析 pipeline
skill:
  id: scrolling_analysis
  level: L2
  steps:
    - query: "SELECT frame_no, dur FROM frame_timeline WHERE dur > 16ms"
    - transform: classify_jank_root_cause
    - output: { format: table, columns: [frame_no, dur, root_cause] }
  • 优势: 非开发者可维护、可扩展、可测试
  • 代价: 需要构建 YAML DSL 引擎

SmartInspector 硬编码:

# perf_analyzer.py 中直接编写 SQL + prompt
async def analyze_frame(ctx, state):
    result = await run_sql(ctx, "SELECT ... FROM frame_timeline")
    prompt = f"分析以下帧数据: {result}"
    return await llm.invoke(prompt)
  • 优势: 简单直接,开发速度快
  • 代价: 难以维护和扩展,SQL 逻辑分散在各 agent 中

Context Engineering 对比

SmartPerfetto 的深度优化: - SQL Summarizer: 返回统计值 + 采样行,而非全量数据 - Artifact Store: Skill 结果按 summary/rows/full 三级缓存 - System Prompt: 4500 token 精确预算,按场景动态组装 - Complexity Classifier: 简单查询走 Lightweight Mode

SmartInspector 的基础优化: - 消息窗口裁剪: 保留最近 N 条消息 - 路由 token 限制: 不同 agent 不同 token 预算 - 缺少: SQL 结果压缩、分级缓存

可借鉴功能 (按优先级)

P0 — 高优先级,直接提升分析质量

  1. SQL Summarizer 机制: SI 的 perf_analyzer 和 frame_analyzer 都直接把 SQL 结果丢给 LLM。实现一个统计值+采样的压缩函数,可节省 80%+ token,同时减少幻觉。

  2. 4 层验证 + 反思纠错: SI 目前单次 LLM 调用无验证。至少引入: (1) 结果是否包含具体数据 (heuristic check), (2) 根因是否追溯到具体原因 (depth check)。

  3. 厂商定制层: 国内 Android 碎片化严重,SI 的 analyze 场景应考虑不同厂商的 trace 差异。

P1 — 中优先级,扩展分析能力

  1. YAML Skill DSL: 将 SI 中散落的 SQL 查询和 prompt 模板抽取为 YAML skill。初期可用 Python dict 替代 YAML,逐步演进。

  2. 内存/GPU/Binder 分析场景: SI 目前只有帧性能和启动分析,缺少系统级分析维度。

  3. Trace 对比功能: 对比优化前后的 trace 是性能回归分析的核心需求。

P2 — 低优先级,锦上添花

  1. 背景知识库: SP 的 lookup_knowledge 工具提供渲染管线/Binder/GC 等领域知识,SI 可内嵌类似的 RAG。

  2. Jank 根因编码: SP 的 21 种 Jank 根因优先级决策树,可标准化 SI 的卡顿分类输出。

  3. 跨会话模式记忆: SP 的 recall_patterns 用加权 Jaccard 匹配历史分析模式,避免重复犯错。

SmartInspector 独有优势 (SP 不具备)

  1. 源码归因 (SI$): 通过 TraceHook + Pine AOP 将性能热点精确到源码行,这是 SI 的核心差异化能力
  2. IO 追踪: 网络/数据库/图片加载的独立 Hook 和归因
  3. 自动采集: CLI 一键完成设备 trace 采集,无需手动操作
  4. CI/CD 集成: Headless 模式 + JSON 输出,可直接集成到构建流水线
  5. HarmonyOS 规划: 面向鸿蒙生态的扩展计划
  6. 轻量部署: CLI 工具 vs Docker + Web 服务的重量级部署

质量评估

维度 SmartPerfetto SmartInspector
代码质量 9/10 (1029 tests, TypeScript 严格模式) 7/10 (有测试但覆盖不足)
架构成熟度 9/10 (清晰的分层和抽象) 7/10 (LangGraph 结构合理但 skill 硬编码)
分析深度 9/10 (L1-L4 分层, 21 种根因) 7/10 (LLM 直接分析,深度依赖 prompt)
易用性 8/10 (Docker 一键, Web UI) 8/10 (CLI + Tab 补全)
可扩展性 9/10 (YAML skill + vendor override) 6/10 (新场景需改代码)
Token 效率 9/10 (Summarizer + Artifact Store) 6/10 (基础裁剪)
实用性 9/10 (生产级, 多厂商支持) 8/10 (源码归因是杀手级功能)

结论

SmartPerfetto 在 分析深度和工程成熟度 上领先(146 skill、4 层验证、Context Engineering),SmartInspector 在 全流程集成和源码归因 上有独特优势。最关键的借鉴点: SQL Summarizer (立竿见影的 token 优化) 和 验证纠错机制 (提升分析可靠性)。YAML Skill DSL 是中期值得投入的方向,可以将 SI 从"硬编码分析"升级为"可配置分析平台"。