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 — 高优先级,直接提升分析质量¶
-
SQL Summarizer 机制: SI 的 perf_analyzer 和 frame_analyzer 都直接把 SQL 结果丢给 LLM。实现一个统计值+采样的压缩函数,可节省 80%+ token,同时减少幻觉。
-
4 层验证 + 反思纠错: SI 目前单次 LLM 调用无验证。至少引入: (1) 结果是否包含具体数据 (heuristic check), (2) 根因是否追溯到具体原因 (depth check)。
-
厂商定制层: 国内 Android 碎片化严重,SI 的 analyze 场景应考虑不同厂商的 trace 差异。
P1 — 中优先级,扩展分析能力¶
-
YAML Skill DSL: 将 SI 中散落的 SQL 查询和 prompt 模板抽取为 YAML skill。初期可用 Python dict 替代 YAML,逐步演进。
-
内存/GPU/Binder 分析场景: SI 目前只有帧性能和启动分析,缺少系统级分析维度。
-
Trace 对比功能: 对比优化前后的 trace 是性能回归分析的核心需求。
P2 — 低优先级,锦上添花¶
-
背景知识库: SP 的 lookup_knowledge 工具提供渲染管线/Binder/GC 等领域知识,SI 可内嵌类似的 RAG。
-
Jank 根因编码: SP 的 21 种 Jank 根因优先级决策树,可标准化 SI 的卡顿分类输出。
-
跨会话模式记忆: SP 的 recall_patterns 用加权 Jaccard 匹配历史分析模式,避免重复犯错。
SmartInspector 独有优势 (SP 不具备)¶
- 源码归因 (SI$): 通过 TraceHook + Pine AOP 将性能热点精确到源码行,这是 SI 的核心差异化能力
- IO 追踪: 网络/数据库/图片加载的独立 Hook 和归因
- 自动采集: CLI 一键完成设备 trace 采集,无需手动操作
- CI/CD 集成: Headless 模式 + JSON 输出,可直接集成到构建流水线
- HarmonyOS 规划: 面向鸿蒙生态的扩展计划
- 轻量部署: 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 从"硬编码分析"升级为"可配置分析平台"。