首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >让 AI 学会 Android 手艺:从零写一个 OpenClaw Skill

让 AI 学会 Android 手艺:从零写一个 OpenClaw Skill

作者头像
陆业聪
发布2026-04-02 12:38:31
发布2026-04-02 12:38:31
1490
举报

• 荣耀 Magic V6 正式发布,MacBook Neo 首发体验出炉——配备手机芯片、入门级定价,苹果试图用最低门槛打开更大的 Mac 市场。

• Matter 协议推动跨品牌智能家居互联,主动感知型智能设备开始从概念走向落地产品。

• 伊朗局势升级引发能源市场波动,国际数据中心与云服务商正密切关注油气价格对电力成本的影响。

你有没有想过,让 AI 学会一门手艺?

比如,当你说"帮我写一个 ViewModel"的时候,AI 不只是给你一段通用代码,而是按照你团队的架构规范、用你们约定的技术栈、遵循你们踩过坑总结出来的最佳实践来生成——这就是 OpenClaw Skill 想解决的问题。

这篇文章,我会从"什么是 Skill"讲起,以一个真实的 android-dev Skill 作为贯穿全文的案例,带你走完从设计到打包的完整流程。

什么是 OpenClaw Skill?

OpenClaw Skill 本质上是一个"领域知识包"——它告诉 AI 在特定场景下该怎么思考、用什么工具、遵循什么规范。你可以把它理解成给 AI 写的"岗前培训手册"。

一个 Skill 的目录结构很简洁:

代码语言:javascript
复制
android-dev/
├── SKILL.md          # 核心:触发条件 + 使用说明
├── references/       # 参考文档,按需加载
│   ├── conventions.md
│   ├── crash_patterns.md
│   └── dependencies.md
└── scripts/          # 可执行脚本

最关键的是 SKILL.md,它分两部分:

  • YAML frontmatter:name 和 description,决定 AI 什么时候触发这个 Skill
  • 正文 Markdown:触发后 AI 读到的指导内容

关键设计原则:description 是触发机制,越具体越好。正文是使用指南,越简洁越好——上下文窗口是公共资源,不要浪费。

案例:android-dev Skill 的设计思路

第一步:明确要解决什么问题

Android 开发中有大量重复性的代码生成需求,但 AI 在没有上下文的情况下,往往给出"教科书式"的代码——用 AsyncTask、忘记处理 Fragment 生命周期、把 Context 存到 ViewModel 里……这些坑,Android 开发者都踩过。

我希望这个 Skill 能做到:

  • 代码生成时自动遵循 MVVM + Hilt + Compose 规范
  • 分析 Crash 日志时能快速定位 Android 特有的根因
  • 提供当前稳定的依赖版本,直接可用

第二步:设计文件结构

把知识分三类存放:

  • conventions.md:ViewModel、Repository、Compose 的标准模板 + 反模式清单
  • crash_patterns.md:NPE、ANR、OOM、IllegalState 的分析步骤和修复模式
  • dependencies.md:libs.versions.toml 格式的最新稳定版依赖

这样设计的好处是"按需加载"——用户问 Crash 分析,AI 只读 crash_patterns.md;问代码规范,读 conventions.md。不会一次把所有文档都塞进上下文。

第三步:写 SKILL.md

SKILL.md 的 frontmatter 是触发的关键,description 要把所有触发场景都写清楚:

代码语言:javascript
复制
---
name: android-dev
description: Android 开发辅助 skill。当用户提出
Android 开发相关需求时使用,包括:生成
Kotlin/Java 代码(ViewModel、Repository、
Compose UI、Room、Retrofit 等)、分析
Crash/ANR 日志、审查代码质量、解释 Android
系统机制、提供依赖版本建议。
---

正文部分则列出核心能力索引和必须遵守的规范要点,把详细内容放到 references 文件里:

代码语言:javascript
复制
## 代码生成规范生成代码时遵循以下规范
(详见 references/conventions.md):- 语言:优先 Kotlin
- 架构:MVVM + Repository pattern
- 异步:suspend fun + Flow/StateFlow
- DI:Hilt
- 状态:UiState sealed class + StateFlow
- 错误处理:Result<T> 包裹,不裸上抛

实战效果演示

场景一:生成符合规范的 ViewModel

输入:"帮我写一个加载用户信息的 ViewModel"

有了 Skill,AI 直接输出:

代码语言:javascript
复制
@HiltViewModel
class UserViewModel @Inject constructor(
private val repo: UserRepository
) : ViewModel() {private val _uiState = MutableStateFlow<UserUiState>(
UserUiState.Loading
)
val uiState: StateFlow<UserUiState> =
_uiState.asStateFlow()fun loadUser(userId: String) {
viewModelScope.launch {
_uiState.value = UserUiState.Loading
repo.getUser(userId)
.onSuccess { user ->
_uiState.value =
UserUiState.Success(user)
}
.onFailure { e ->
_uiState.value =
UserUiState.Error(
e.message
)
}
}
}
}

没有 GlobalScope,没有裸 LiveData,状态管理用 sealed class,DI 用 Hilt——一次到位。

场景二:分析 ANR 日志

粘贴一段 ANR 的 main thread stacktrace,AI 根据 crash_patterns.md 里的分析框架,能快速定位是主线程 IO 还是锁竞争,并给出具体的修复方案——不是泛泛的"把操作移到子线程",而是"这里的 SharedPreferences.commit() 改成 apply() 或换 DataStore"。

打包与分发

写完 Skill 后,一条命令打包成 .skill 文件:

代码语言:javascript
复制
python3 package_skill.py \
./android-dev \
./dist# 输出:dist/android-dev.skill

打包脚本会自动校验:

  • frontmatter 格式是否正确
  • description 是否足够具体
  • 文件结构是否符合规范

校验通过后生成 .skill 文件(本质是 zip),发给团队成员安装即可,大家用的是同一套规范。

写在最后

Skill 的核心价值不是让 AI "更聪明",而是让 AI 知道你的上下文——你的规范、你的技术栈、你踩过的坑。这是通用大模型做不到的,但一个精心设计的 Skill 可以做到。

三个实用建议:

description 要具体:触发场景越清晰,AI 使用 Skill 的准确率越高

references 要分文件:按主题拆分,让 AI 按需加载,别一股脑全塞进 SKILL.md

从真实问题出发:先想"我每次让 AI 做这件事都要重复解释什么",那些内容就是 Skill 该写的

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陆业聪 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档