【免费下载链接】awesome-android-agent-skills
A collection of standardized Agent Skills to teach GitHub Copilot, Claude, Gemini and Cursor about modern Android development (Kotlin, Jetpack Compose, etc.).
awesome-android-agent-skills是一个为 AI 编程助手(Copilot、Claude、Gemini、Cursor 等)提供标准化 Agent Skills 的开源项目,其中就内置了Compose 性能审计技能,能帮你快速定位 Jetpack Compose 应用里的重组风暴(Recomposition Storms)与不稳定键(Unstable Keys)——这正是导致界面卡顿的两大元凶。
本文将从新手视角出发,带你用这套技能完整走一遍"找卡顿 → 定根因 → 给修复 → 验证效果"的实战流程。🔍
一、awesome-android-agent-skills 是什么?为什么能帮你查卡顿?
Agent Skills是一种标准化的"能力封装"方式:把最佳实践、检查清单和工作流写成一个个SKILL.md文件,放进项目后,AI 助手在检测到相关任务时会自动加载这些专家指令。
换句话说,你不再需要反复粘贴"帮我检查 Compose 性能"之类的长提示词,AI 会自动按照官方 2025 年最佳实践(Compose、Hilt、Room)来分析你的代码。
项目的核心结构如下:
- 全局上下文:Agent.md —— 所有 AI Agent 都会隐式读取它,了解项目架构、最低 SDK 与测试哲学
- 技能目录:
.github/skills/—— 按领域分组的 18+ 个技能,性能相关的都在performance/分组下 - 本项目主角:.github/skills/performance/compose-performance-audit/SKILL.md —— 专门审计 Compose 运行时性能
二、一键安装:两步给 AI 装上性能审计技能
最快配置方法:拷贝到项目根目录
- 拷贝技能目录:把仓库中的
.github/skills/文件夹复制到你的 Android 项目根目录 - 拷贝全局上下文:把 Agent.md 复制到项目根目录,确保 AI 始终遵循你的架构规范
- 验证结构:项目应类似这样——
my-android-project/ ├── Agent.md ├── .github/ │ └── skills/ │ └── performance/ │ └── compose-performance-audit/ │ └── SKILL.md- 重新加载窗口:部分插件(如 Copilot)需要 Reload Window 才能索引新技能
💡 其他环境:Claude 类工具通常识别
.claude/skills/,可以直接把.github/skills复制或软链接过去。
三、先搞懂原理:重组风暴与不稳定键是怎么造成卡顿的?
1. 什么是"重组"(Recomposition)
Jetpack Compose 是声明式 UI:状态一变,框架就会重组依赖该状态的 Composable 函数。少量重组很正常,但如果一次状态变化引发整棵组件树反复重组,就形成了"重组风暴",主线程被 CPU 占满,滚动和动画就开始掉帧。
2. 两大典型诱因
① 不稳定参数(Unstable Parameters)
Compose 通过"跳过未变化子树"来优化性能。但以下类型默认不稳定,每次重组都会让子组件被迫重新组合:
| 类型 | 默认稳定? | 修复方式 |
|---|---|---|
基本类型(Int、String、Boolean) | ✅ 稳定 | 无需处理 |
字段稳定的data class | ✅ 稳定 | 确保所有字段稳定 |
List、Map、Set | ❌ 不稳定 | 换用 kotlinx 的ImmutableList |
含var属性的类 | ❌ 不稳定 | 外部稳定时加@Stable注解 |
| Lambda | ❌ 不稳定 | 用remember { }包裹 |
② 不稳定键(Unstable Keys)
在LazyColumn/LazyRow中,如果不用key而默认按索引识别条目,那么列表中间插入一条数据时,后面所有条目都会被误认为"变了"而全部重组——这就是典型的键抖动(key churn)。
⚠️ 审计技能的核心原则:用稳定、唯一的 ID 作为懒加载列表条目的 key。
四、实战:让 AI 按五步工作流完成一次性能审计
安装技能后,你只需对 AI 说类似的话:
"我的列表页滚动很卡,帮我做 Compose 性能审计。"
AI 会自动加载 compose-performance-audit 技能,按内置的决策树执行五步工作流:
第 1 步:代码先行审查(Code-First Review)
优先看代码,不急着上工具。AI 会收集目标 Composable、状态流(state、remember、派生状态、ViewModel 连接)以及复现步骤,重点排查:
- 不稳定参数或大范围状态变化引发的重组风暴
- 懒加载列表中缺失/抖动的 key
- 组合阶段的重活:格式化、排序、过滤、对象分配
- 缺
remember导致的每次重组都重建对象 - 无尺寸约束的大图、深层嵌套导致的布局抖动
第 2 步:引导你收集 Profile 数据
代码看不出问题时,AI 会指导你取证(注意:必须在开启 R8 的 release 包上测量,debug 包开销很大):
- Android StudioLayout Inspector:直接查看每个 Composable 的重组次数
- 开启 Compose 工具的Recomposition Highlights高亮
- Perfetto / System Trace:分析帧时间
- Macrobenchmark:启动与滚动指标
第 3 步:分析诊断
AI 会按影响排序列出疑似根因,并用 Trace 与 Layout Inspector 的证据佐证结论,而不是拍脑袋。
第 4 步:给出定向修复
技能内置了"代码坏味道 → 修复"对照表,常见的有 6 类:
- 不稳定的 Lambda 捕获:每次重组都新建
onClickLambda → 用remember(item) { { ... } }或方法引用缓存 - 组合阶段做重活:每次重组都执行
sortedBy→ 用remember(items) { items.sortedBy { it.name } }缓存结果 - LazyColumn 缺 key:按索引识别条目 → 改成
items(items, key = { it.id })稳定键识别 - 不稳定 data class:字段含
List导致整体不稳定 → 换ImmutableList并加@Immutable注解 - 过早读取状态:在组合期读
scrollState.value导致整棵树随滚动重组 → 改用 lambda 形式Modifier.offset { ... }把读取推迟到布局阶段,或用derivedStateOf只在跨过阈值时触发 - 组合期对象分配:每次重组都重建 Modifier 链 → 对动态 Modifier 使用
remember
第 5 步:验证对比
修复后,AI 会要求你重跑 Layout Inspector 与 Macrobenchmark,对比修复前后的重组次数、掉帧率、卡顿度,并输出"修复前/后"指标表和按影响排序的问题清单。
📌 配套阅读:状态提升与derivedStateOf的用法,在 ui/compose-ui/SKILL.md 中同样有详细说明。
五、不止 UI:配套技能组成完整性能闭环
卡顿有时不是界面代码的问题,这套技能库还能继续往下挖:
- ViewModel 状态管理:architecture/android-viewmodel/SKILL.md —— 用
StateFlow承载 UI 状态、SharedFlow承载一次性事件,从源头避免"状态一变全树重组" - Gradle 构建性能:performance/gradle-build-performance/SKILL.md —— 如果你的痛点是"每次验证修复都要等 10 分钟构建",这个技能用 Build Scan 帮你定位配置/执行/注解处理的瓶颈
- 架构规范总纲:architecture/android-architecture/SKILL.md —— 保证重构不偏离 Clean Architecture
六、上手清单:3 步完成你的第一次审计 🚀
- 装技能:把
.github/skills/和 Agent.md 拷入项目根目录,重载窗口 - 提问题:直接对 AI 描述症状("列表滚动掉帧")并贴出相关 Composable 代码,触发性能审计技能
- 看报告:拿到按影响排序的问题清单 + 修复建议 → 逐项修复 → 用 Layout Inspector 对比重组次数,确认卡顿消除
总结一下:Compose 卡顿大多不出意外——重组风暴与不稳定键是 90% 的元凶。awesome-android-agent-skills 把这套"审查代码 → 采集 Trace → 定位根因 → 定向修复 → 数据验证"的专家流程固化成了 AI 可自动执行的技能。装上它,AI 助手就变成了一位随身随叫的 Compose 性能审计工程师。
【免费下载链接】awesome-android-agent-skills
A collection of standardized Agent Skills to teach GitHub Copilot, Claude, Gemini and Cursor about modern Android development (Kotlin, Jetpack Compose, etc.).
相关推荐
如何构建高效的船舶轨迹预测系统:TrAISformer深度解析与实战指南
如何构建高效的船舶轨迹预测系统:TrAISformer深度解析与实战指南 TrAISformer是一个基于Transformer架构的智能船舶轨迹预测系统,通过
解决Mac鼠标卡顿:用Instruments揪出内存泄漏元凶
解决Mac鼠标卡顿:用Instruments揪出内存泄漏元凶 你是否遇到过使用Mac Mouse Fix时鼠标响应变慢、光标卡顿的问题?本文将带你通过Apple
桌面应用系统编程Hotkey Detective:一键揪出Windows热键占用元凶
Hotkey Detective:一键揪出Windows热键占用元凶 当你的Ctrl+Alt+Delete莫名失效,或者精心设置的全局快捷键突然失灵,问题往往隐
桌面应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考