上一篇更新停在 2026 年 7 月 17 日的 v1.1.1。当时 SmartPerfetto 已经有双 Trace 工作台、Quick Mode、私有分析上下文、统一 Agent runtime,以及 Camera、Heap、GPU 等专项分析能力。
从 7 月 18 日到 8 月 21 日,仓库又向前走了五周,版本来到 v1.7.0。这一轮继续增加功能,也把更多精力放在知识来源、分发质量、权限隔离、结果完整性和可回滚改进上。
SmartPerfetto 正在从“能完成一次分析”走向“能在更多环境里稳定、可追溯地完成分析”。
本文以公开发布的 v1.7.0 代码为准,回顾 v1.1.1 之后加入的主要能力。
项目与上篇文章:
版本说明(2026-10 核查):本文保留 v1.7.0 的历史更新范围,对应提交 b21e4646。文中的“现在”“本轮”均指当时版本,插图是流程示意,回归与平台验收是历史记录,不是本次复测。较新的 v1.16.1 发布说明另修复了 HTML 报告的数据保留与离线交互;不能把本文的完整性目标当成所有后续版本都已验证的保证。
五周变化总览

| 项目 | 结果 |
|---|---|
| 时间范围 | 2026.07.18 - 2026.08.21 |
| 版本范围 | v1.2.0 - v1.7.0 |
| 主要版本 | 6 个:v1.2、v1.3、v1.4、v1.5、v1.6、v1.7 |
| 提交数量 | v1.1.1..v1.7.0 共 122 个,含合并提交 |
| 免安装目标 | Windows x64、macOS arm64、Linux x64 |
| 已有本地模型回归证据 | v1.6.0 完成 7 个场景 × 3 套 runtime,共 21 条路径 |
如果把这五周压缩成一张路线图,可以分为七条线:
- Android Internals 从维护者本机资料变成随发行物交付的签名 Knowledge Pack。
- Windows、macOS、Linux 免安装包补齐更新提示、签名、公证、迁移和平台原生验收。
- 双 Trace 开始承载大文件,Code-Aware Analysis 可以把 Trace 证据映射回本机源码。
- Self-Evolution 建立从反馈、回放评估到人工应用和回滚的受控流程。
- 企业 OIDC、workspace 隔离和私有分析投影逐步加入。
- Provider/runtime 与最终报告共享更严格的超时、身份和质量门禁。
- v1.7.0 增加 Qoder BYOK 路由,并完成六份真实 Trace fixture 的公开审查。
1. Android Internals 变成可随版本交付的知识包
v1.2.0 先加入了 Android Internals Knowledge Pack。
过去,系统背景知识更多依赖维护者本机目录或私有 Wiki。现在 npm、Docker、源码和免安装包会携带同一份签名、版本锁定的离线快照。
用户不需要知道维护者的目录结构,也不需要访问私有仓库,安装后就能获得受控的 Android 系统背景检索能力。
这套机制保留了几条重要边界:
- Knowledge Pack 有独立版本和内容指纹,会话开始后固定本次使用的版本。
- 更新通过 TUF stable channel 检查;校验失败时继续使用上一个已知可用版本。
- 模型只接收预算受控、经过 secret redaction 的片段。
- 报告保留来源、版本、fingerprint 和 snippet hash,日志与 SSE 不投影正文。
- 知识命中只能解释系统背景,当前 Trace 的根因仍要由 SQL、Skill 或其他 Trace 证据证明。
Android Skills 的分析防护也被补强。SQL guardrail 会拦住更危险或证据不足的查询模式,Skill 的公开分类与回归覆盖继续补齐。
知识可以帮助 Agent 提出更好的假设,但不能替代当前 Trace 的事实。
对于拥有私有 Android Internals checkout 的团队,私有知识源仍然可用。使用前需要显式配置路径白名单、权利确认、发送给 Provider 的同意,以及本次请求使用的 source id。
公开 Pack 和私有知识是两条不同的路径,不会互相放宽权限。
按 v1.7.0 知识包指南,签名确认的是发布物身份与完整性,不代表每篇内容都已审定。公开 Pack 可包含 draft/review/deprecated 等状态的正文,私有 checkout 的常规检索则限制为严格解析的 finalized/legacy verified 条目。包内容的许可证也独立于 SmartPerfetto 核心代码,使用时应看随包许可。
2. 分析输出开始围绕“完整、可保存、可核对”收口
7 月下旬,SmartPerfetto 对中文分析界面做了一轮系统补齐。Skill 标题、教学内容、关键路径状态和分析输出会根据语言选择投影,减少中文与内部英文状态混杂。
报告保存也增加了路径和生命周期约束。分析完成后,结果、HTML 报告、snapshot 和对比附录分别保留自己的身份,避免在退出 Perfetto 分支、恢复历史会话或继续追问时串到另一份结果上。
v1.6.0 又把最终报告的收尾逻辑做了一次集中加固:
- 双 Trace 的 current/reference 身份会进入最终结果质量检查。
- 缺少对比附录、证据引用或必要章节时,质量问题会反馈给同一次报告 continuation。
- continuation 提示模型补充缺失部分,目标是保留已完成内容;仍需核验返回结果。
- 归一化和 UI 投影保留完整 final report,避免长报告被中间摘要截断。
这类改动在功能列表里不算显眼,却直接决定一份分析能否进入团队协作。报告只有在身份、证据和结论能对应起来时,才适合保存、对比或贴进 issue。
终态事件、报告文件存在与语义验收是不同状态。该阶段也保留超时/轮数受限后的真实 partial 结果;partial、failed 或质量检查不充分的结果不能升级为完整成功。
3. 免安装包从“能打出来”走到“可以按平台交付”

v1.2.x 到 v1.7.0 期间,Windows x64、macOS arm64 和 Linux x64 免安装包经历了连续几轮修正。每个包都包含 Node runtime、后端、提交版 Perfetto UI 和固定版本的 trace_processor_shell,用户解压后即可启动。
这一阶段新增或完善的能力包括:
- Web UI 和
smp update check可以提示当前构建、分发方式、最新版本和对应更新动作。 - 更新检查只负责通知,不会自动覆盖目录、替换源码、重启容器或迁移用户数据。
- macOS 包补齐所有 Mach-O 的签名、Developer ID 公证和 stapling,并明确最低系统版本。
- Windows 启动、health probe、进程回收和 DPAPI 凭据读取改为在 Windows runner 上做原生验证。
- Windows 会优先选择安全的 D 盘数据位置,并保留旧目录迁移与冲突处理规则。
- 启动地址统一使用明确的 IPv4 loopback,减少
localhost在不同机器上的解析差异。
这里也有过一次公开的失误:v1.2.3 的 macOS 资产暴露了最终签名和部署目标问题。
后续版本把签名对象、目标系统、不可变资产、摘要和 target-native smoke 一起纳入发布流程。现在发布页上的包会带 SHA256,发布验收也对准最终上传的那个归档,不再使用临时目录里的相似产物作为发布证据。
图中的“签名”需按平台区分:v1.7.0 Windows 指南明确 launcher 尚未有 Authenticode 签名,SHA256 不替代发布者签名。macOS arm64 包要求 macOS 13.5 或更新;Windows 的技术最低版本与 hosted runner smoke 也不等于所有旧系统都经过实机验收。
4. 大 Trace、最新 Perfetto 与本机源码开始连成一条线

v1.3.0 解决了双 Trace 工作台面对大文件时的关键瓶颈。历史 Trace 不再为了打开第二个窗口而完整复制到浏览器 pane,后端会为它建立隔离的 Trace Processor RPC session。
启动超时会随文件大小调整,processor lease 会保护仍在使用的 viewer,runtime supervisor 负责回收遗留进程。
同一版本还加入了本机目录选择器。源码运行和免安装模式在 loopback 条件下可以调用系统 folder picker,用户无需在 Web 页面里手工输入很长的绝对路径。
v1.5.x 进一步把目录选择扩成 Code-Aware Analysis:
- 支持注册本机 App、AOSP、kernel 或 OEM SDK 源码。
- 用调用栈、native frame、kernel symbol 和按需源码搜索建立候选关联;索引是可选加速。
- 报告使用相对路径、行号和 symbol 形成
CodeRef,不暴露本机绝对 root。 - 源码正文只能通过受控 excerpt 临时读取,并受路径、文件类型、大小、行数和脱敏规则限制。
- 没有为本次 session 选择 codebase 时,原有 trace-only 分析保持不变。
同一阶段还同步了较新的 Perfetto 前端能力。浏览器本地可以使用 Trace Doctor、统一 Stack Samples/flamegraph、Video Frames、Pixel 输入生命周期与 CUJ 视图;本地 WASM 也能处理 zstd trace、strace -ttt 和多 statement SQL。
这些浏览器能力与后端 AI/Skill 仍保持清晰边界,后端继续使用发行物固定的 native Trace Processor。
图中的 metadata-only index 不是使用前置条件。该版本注册且可访问的 root 即可参与按需搜索;仅选择 codebase ID 默认 metadata_only。发送正文还需注册时 sendToProvider 与本次运行 provider_send 双重授权,选中源码/私有知识会使用 full runtime。CodeRef 只是候选定位,必须与实际源码版本、构建标识和 trace 对应后才能支持归因。详见版本化指南。
浏览器功能还依赖实际采集的数据源、设备/系统版本和前端构建;有入口不表示任意 trace 都有 Video Frames 或 Pixel CUJ 数据。浏览器 WASM 与后端 native 的解析/SQL 能力需要分别验证。
5. Self-Evolution:让反馈可评估,也可撤销

v1.4.0 前后加入的 Self-Evolution,面向维护者和 workspace 管理员,默认关闭。
它的目标很明确:让一次有效反馈进入可以审查的改进流程。
- 每次分析生成不可变 RunManifest,固定 runtime、Provider、策略和 overlay generation。
- public/private feedback 分开存储,只有有效公开反馈能进入显式策展。
- 系统生成有界提案,并在固定 validation 与 holdout case 上配对回放 baseline/candidate。
- 提案通过门禁后仍要人工 accept,才能显式 apply 最小 overlay。
- 新分析固定使用某一代 overlay;启动或升级时会对账,有权限且持久化可用时可显式 revert。
整个流程不会自动 commit、push、创建 PR,也不会改写 TypeScript。缺少权限、持久化目录或评估门禁时会 fail-closed,因此普通用户关闭功能时,原有分析路径不受影响。
在另一条普通用户路径上,M10 加入了 Agent 辅助 GitHub 反馈。一次分析完成后,用户可以让独立 Agent 判断问题是否值得反馈、可能属于哪个模块、还能贡献哪些材料。
它只生成待用户审查的 GitHub 草稿;private/code-aware 分析不会走公开反馈,安全问题提示改用 private advisory,由用户另行提交。
v1.7.0 指南规定 apply/revert 需要同时启用 SELF_EVOLUTION_ENABLED 与 SELF_EVOLUTION_APPLY,并具备对应权限及包外可写持久化目录,Docker 还需有效挂载。外部 L2 judge 明确为 not_configured;配对回放未完成、Provider 失败或证据不足应保持 inconclusive,而非已改进。图中的 revert 发布新的 generation,仅影响新分析,并不撤销已经发送给 Provider 的内容或重写旧报告。
6. 企业登录、Provider 与 runtime 的边界更清楚

面向共享部署,v1.4.0 加入默认关闭、需显式配置的企业 OIDC 登录流程。登录、回调、session 与登出路径使用明确的 cookie 和 state 校验,Trace、分析结果与设置按 tenant/workspace/user scope 隔离。
后续修正继续处理 page-scoped analysis,避免同一浏览器里不同页面或 workspace 复用错误的分析上下文。
Agent runtime 也继续演进。7 月加入了可选的 Qoder Agent SDK 生产路径;v1.6.0 把 Pi Agent Core 迁移到 provider-explicit runtime。
激活的 Provider Manager profile 会形成分析开始时的 snapshot,凭据来源和环境注入彼此隔离,分析过程中不会悄悄切到另一个 Provider。
v1.7.0 为 Qoder 加入 BYOK 模型路由。用户可以通过 resolveModel 把 Qoder 请求交给 DeepSeek 等自带 API Key 的模型 Provider,主模型固定,轻量模型可单独指定,未指定时复用主模型。
Qoder PAT 或本机 qodercli 登录仍然负责 Qoder 自身认证。BYOK Key 不进入 SDK 子进程环境、诊断输出或明文 snapshot,只以 secret fingerprint 参与 Provider pinning 和会话恢复判断。
选择 BYOK 路径但缺少 API Key、Provider 或主模型时,该路径会报配置错误,不回退到未固定模型;这不是整个后端进程都无法启动的同义说法。
长时间运行的分析增加了有界执行和 stream timeout 收尾。OpenAI Agents SDK、Pi Agent Core、OpenCode 的最终输出都要经过同一套报告身份与质量门禁。
v1.6.0 发布前,本地 DeepSeek 环境对 7 个场景、3 套 runtime 共 21 条路径做了回归;远程 DeepSeek E2E workflow 已删除,避免把本地凭据和外部服务可用性混进公开 CI。
v1.7.0 又修正了两条收尾路径:DeepSeek reasoning model 在 OpenAI-compatible 多轮工具调用中会继续携带 reasoning_content,Pi 的 final correction 也会收到对比身份等语义质量错误,再生成终态报告。
Qoder 是需单独安装 SDK 的可选路径,默认 Docker/portable 资产不包含该 SDK。其 resolveModel 会把 BYOK Key 用于所选模型请求;图中“Key 不进子进程”准确范围是子进程环境白名单,不能理解成 Key 不参与 SDK/Provider 鉴权。PAT/CLI 登录与模型 Key 是两种独立凭据,具体配置见v1.7.0 指南。
图中 21/21 保留为当时本地矩阵的记录,不是所有 runtime、模型与平台的共同验收,更不能单独证明 Qoder BYOK 路径已测。此次文章核查没有重新运行模型矩阵、OIDC 隔离或凭据泄漏测试。
7. 六份真实 Trace fixture 完成公开审查
SmartPerfetto 的回归不仅依赖构造数据,仓库还维护六份真实 Trace fixture:两份 Android 滑动、两份 Android 启动,以及 Flutter SurfaceView、TextureView 两种滑动路径。
v1.7.0 为这六份 fixture 补齐了明确的 AGPL-3.0-or-later 许可、所有者公开同意、隐私检查和脱敏审查。
对应的 case.json 与 Trace/catalog.json 会记录发布状态,遗留豁免列表也随审查完成而收缩。
这项工作没有改变 Trace 分析算法,但补齐了真实案例进入公开回归库之前的材料边界。后续 Skill、runtime 或报告质量回归可以继续复用这些 Trace,同时保留来源、许可和隐私记录。
这里可核查的是固定 tag 的 Trace/catalog.json 中六条 real case 的许可、同意和 review 状态,不等于本次重新扫描 trace 内容或证明覆盖全部设备。新增 fixture 仍须单独记录来源与审核。
当前完整功能地图
经过这五周,SmartPerfetto 的用户功能可以归纳为下面 15 组:
| 功能组 | 主要入口 | 本轮变化 |
|---|---|---|
| Perfetto UI 内 AI Assistant | AI 面板 | 中文状态、报告收尾和鉴权布局加固 |
| 常见性能场景 | fast/full/auto | Android Skills 分析防护补齐 |
| 选区与上下文追问 | area/track selection | 延续既有能力 |
| SQL、Skill 与证据 | 结果表格、claim/evidence | 知识与 Trace 证据边界更明确 |
| HTML 报告 | 报告入口 | 完整性、Mermaid 和保存安全加固 |
| 双 Trace 实时对比 | compare_arrows |
大 Trace RPC、结果身份保留 |
| 多 Trace 结果对比 | fact_check |
对比附录与结果身份加固 |
| Android Internals 知识 | 内置 Pack、私有 source | 新增签名离线 Pack 与 TUF 更新 |
| Code-Aware 分析 | Codebases、CLI | 新增本机目录选择和 CodeRef |
| Provider/runtime | Providers、runtime selector | Qoder BYOK、Pi provider-explicit、DeepSeek/Pi 收尾修正 |
| Self-Evolution | Evolution 控制台 | 新增受控提案、评估、apply/revert |
| Agent 辅助反馈 | 完成结果下方入口 | 新增 GitHub 草稿判断流程 |
| API、CLI、MCP | smp、workspace API |
batch、capture、update 等入口扩展 |
| 真实 Trace 案例库 | Trace/catalog.json |
六份 fixture 完成许可、公开同意、隐私和脱敏审查 |
| 分发方式 | Docker、portable、源码 | 三平台发布与更新验收持续加固 |
版本时间线
| 日期 | 版本 | 重点 |
|---|---|---|
| 07.18 | v1.2.0 | 签名 Android Internals Knowledge Pack 进入正式发行物 |
| 07.18 - 07.28 | v1.2.x | 中文分析界面、Android Skills 防护、Qoder runtime、更新通知与三平台发布治理 |
| 07.28 | v1.3.0 | 大 Trace 双窗、隔离 Trace Processor RPC、本机目录选择器 |
| 08.03 | v1.4.0 | Self-Evolution、Agent 辅助反馈、企业 OIDC、Perfetto 前端同步与 runtime recovery |
| 08.10 | v1.5.0(Changelog 日期) | Code-Aware Analysis、来源感知报告、Mermaid 加固与 Windows DPAPI 修正 |
| 08.14 | v1.6.0 | Pi provider-explicit、D 盘数据策略、双 Trace 身份和最终报告质量门禁 |
| 08.21 | v1.7.0 | Qoder BYOK、DeepSeek/Pi 收尾修正、六份真实 Trace fixture 公开审查 |
如何体验
免安装包
重现本文版本请打开 v1.7.0 Release,选择 Windows x64、macOS arm64 或 Linux x64 资产,按同一发布页核对 SHA256;不要把 Source code 压缩包当成可运行应用。macOS 需要 Apple Silicon 与 13.5 或更新系统。
完整解压后,Windows 运行 SmartPerfetto.exe,macOS 打开 SmartPerfetto.app,Linux 运行 ./SmartPerfetto。普通新安装可从 Latest Release 选择较新版,并遵循该版的系统要求;不要把不同版本文件混到同一个程序目录。
Docker
下面的 macOS/Linux/WSL shell 示例固定仓库和镜像版本,需已安装 Docker Engine/Desktop 与 Compose 插件:
1 | git clone --branch v1.7.0 --depth 1 https://github.com/Gracker/SmartPerfetto.git |
SMARTPERFETTO_DOCKER_TAG 来自此版本的 Compose 文件,省略会拉 latest,与本文基线不同。默认宿主发布地址是 loopback。打开 http://127.0.0.1:10000,加载 .pftrace 或 .perfetto-trace,再在 Providers 中保存、测试并激活一个模型配置。Web 页面可打开或 /health 返回成功,只证明服务存活,不等于模型已认证或真实分析已通过。
本地源码
此版本需要 Node.js 24 LTS(>=24 <25)及 Git;以下适用于 macOS/Linux/WSL shell。首次启动可能安装依赖并取得固定的 Trace Processor,需相应网络访问:
1 | git clone --branch v1.7.0 --depth 1 https://github.com/Gracker/SmartPerfetto.git |
普通使用与后端/策略修改可使用已提交的前端预构建;修改 Perfetto/AI Assistant 前端源码时才需初始化相应 submodule 并按项目 dev 指南构建。./start.sh 就绪不代表 Provider 或分析质量验收已完成。
反馈与交流
- GitHub Issues:https://github.com/Gracker/SmartPerfetto/issues
- Discussions:https://github.com/Gracker/SmartPerfetto/discussions
- 最新版本:https://github.com/Gracker/SmartPerfetto/releases/latest
以下是当时的交流群二维码,不保证当前仍有效;反馈可使用上方 GitHub 入口:

接下来仍会继续补不同 Android 版本的真实 Trace、验证结果和多 runtime 本地回归。SmartPerfetto 的目标没有变:让一次性能分析能给出答案,也能留下可以复核、保存和继续改进的证据。