掘金 人工智能 07月03日 11:33
如何让Cursor精通鸿蒙开发?
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文分享了如何利用Cursor,结合官方文档和CursorRules,提高鸿蒙开发效率。通过配置官方文档知识库和构建ArkTS语法规范、最佳实践的CursorRules,使Cursor能够准确、高效地生成鸿蒙代码,从而解决开发过程中遇到的问题。此方法同样适用于其他新框架开发。

💡 **构建文档知识库:** 针对鸿蒙开发,首先在Cursor中添加鸿蒙官方文档的URL,使其能够索引并学习UI、网络等应用框架知识,利用RAG方案解决信息检索问题。

✅ **定义ArkTS语法规范:** 通过AI总结官方的《从 TypeScript 到 ArkTS 的适配指南》,将其转化为67条规则,放入CursorRules中,确保Cursor生成的代码符合ArkTS语法约束,提高代码质量。

🚀 **沉淀最佳实践为CursorRules:** 采用分层总结的方式,将官方最佳实践文档处理为CursorRules。先总结三级模块规则,再聚合为二级模块规则,实现不同模块规则在不同目录生效,优化上下文,提高生成效果。

近两年,华为在加速推广鸿蒙生态,越来越的应用需要适配或者重新开发鸿蒙版。鸿蒙官方也顺势推出了AI开发助手 DevEco CodeGenie,希望能帮开发者提效。

由于最近我们也要开发鸿蒙项目,就我的体验而言,CodeGenie目前还不太好用。无论是问答还是代码补全,都频繁出错。这对于用惯了Cursor的开发者来说,难以忍受。

那么,能直接使用Cursor来开发鸿蒙么?效果同样不理想。

鸿蒙系统很新,主流 AI 大模型在训练时,相关的代码语料不足。这导致 Cursor 在生成鸿蒙代码时,表现也差强人意。

这篇文章,我就来聊聊如何解决这个问题,让 Cursor 能为我们准确、高效地生成鸿蒙代码。

项目已开源:github.com/skindhu/har…

如何让 Cursor 精通鸿蒙开发?

想让Cursor成为鸿蒙开发专家,我个人认为需要从三个方面入手:应用框架语法规范最佳实践

1. 喂给它“应用框架”官方文档

首先,要让 Cursor 了解鸿蒙的应用框架,比如 UI、网络、文件服务等。这样它才能在生成代码时,正确地引用各种库和组件。

可以看到,官方开发文档内容非常多,最适合使用RAG(检索增强)方案来解决。幸运的是,我们不需要自己去搭建完整的RAG工作流,Cursor内置了第三方文档知识库功能(必须是在线文档)

你只需要在 Cursor 的设置中,添加鸿蒙官方文档入口的 URL 即可。

可以看到,我配置的URL以“/”结尾,这是因为我们在URL后加上斜杠,Cursor就会索引该网址下的所有子页面,学得更全面。看Cursor官方文档的说明:

通过这种方式,Cursor自己也预索引了一批知名的第三方库,具体配置在:raw.githubusercontent.com/getcursor/c…

添加完成后,在与 AI 对话时,使用 @ohos (你自定义的文档名) 就能引用鸿蒙知识库,让它基于官方开发文档来回答问题或生成代码。

2. 用 CursorRules 定义“ArkTS 语法规范”

鸿蒙使用 ArkTS 语言开发。它基于 TypeScript,但增加了许多严格的语法约束,来保证程序更健壮、性能更高。

如果直接让 Cursor 生成 ArkTS 代码,它经常会写出不符合约束规范的代码,我们还得手动修改。因此,我们必须让Cursor牢记ArkTS相对于TypeScript的语法约束规则。

官方提供了一份详细的《从 TypeScript 到 ArkTS 的适配指南》。

但这次,我们不能把它加到文档知识库里。原因有两点:

所以这种情况比较适合的方案是,将官方的这份手册抓取下来后,通过AI梳理成一份完整的语法约束规范,放在CursorRules中,这样每次生成代码时就能作为上下文强制AI遵守。

我使用 Gemini 将官方文档总结成了 67 条规则,格式如下:

# ArkTS Lint Rules - Cursor Rules## 概述ArkTS(TypeScript的子集)的Lint规则,用于确保代码符合HarmonyOS开发规范。## 规则统计- 总规则数量: 67- 严重程度: error- 适用范围: ArkTS/TypeScript代码## 规则列表### JSON格式```json[  {    "name""arkts-no-aliases-by-index",    "severity""error",    "description""ArkTS不支持索引访问类型。",    "suggestion""请改用类型名称。"  },  {    "name""arkts-no-ambient-decls",    "severity""error",    "description""ArkTS不支持环境模块声明,因为它有自己的与JavaScript互操作的机制。",    "suggestion""请从原始模块中导入所需的内容。"  },  {    "name""arkts-no-any-unknown",    "severity""error",    "description""ArkTS不支持any和unknown类型。",    "suggestion""请显式指定类型。"  },  {    "name""arkts-no-as-const",    "severity""error",    "description""ArkTS不支持as const断言,因为在标准TypeScript中,as const用于使用相应的字面量类型标注字面量,而ArkTS不支持字面量类型。",    "suggestion""请避免使用as const断言。请改用字面量的显式类型标注。"  },......### 规则应用这些规则主要用于:- TypeScript到ArkTS的迁移- HarmonyOS应用开发- 确保代码符合ArkTS规范## 参考资源- [HarmonyOS ArkTS开发指南](https://developer.huawei.com/consumer/en/doc/harmonyos-guides-V14/typescript-to-arkts-migration-guide-V14)---*此文件由ArkTS规则提取器自动生成*

由于规则太多,我这里就没有完全展示。这样一来,Cursor生成的每一行代码都会戴上“紧箍咒”,符合 ArkTS 的规范。

3. 将最佳实践也沉淀为CursorRules

和语法规范一样,鸿蒙官方也提供了一系列最佳实践文档,指导我们写出更高质量的代码。

处理这些文档,我们沿用CursorRules的思路,但方法却需要升级。

官方的最佳实践是分层级的,比如“界面开发”下有“组件封装”,再往下还有“组件动态创建”。如果把所有规则都揉进一个全局的 CursorRules 文件,会导致上下文窗口过大,影响生成效果。

更好的方式是,分而治之:

这样做的好处是,我们可以将不同模块的规则,应用到工程项目的不同目录。比如,UI 相关的规则只在 src/main/ets/ui 目录下生效,互不干扰,也更节省上下文。

手动处理这些文档既低效又易出错,一旦文档发生更新,又要重来一次。为此,我开发了一个开源项目,实现了自动化处理:

项目地址:github.com/skindhu/har…

目前,项目已内置了 “ArkTS 语法规范”“界面开发最佳实践“ 的生成逻辑。如果你需要其他模块的规则,只需在配置文件 harmony_modules_config.json 中添加相应模块信息,然后运行项目即可。

最终生成的规则文件都在final_cursor_rules文件夹里。你只需将内容复制到 Cursor Rules中,并配置好应用范围,就能让Cursor真正懂鸿蒙,生成高质量代码。

总结

通过“文档知识库 + 分层 CursorRules”这套组合拳,我们成功地让 Cursor 掌握了鸿蒙开发的方方面面,成为我们项目开发中的得力助手。

当然,这套方法论同样适用于其他任何新的、小众的或内部的开发框架。希望能给你带来启发。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Cursor 鸿蒙开发 RAG CursorRules
相关文章