第7.1篇Skill 开发入门——Vibe Coding 与系统级智能入口难度⭐⭐⭐ 高级前置知识第 1.1 篇 ArkTS 语言入门涉及源文件鸿蒙 HMAF 框架、小艺开放平台、module.json5、skills/目录结构概述在之前的文章中我们完整构建了画伴梦工厂的应用层能力——从画布涂鸦、图片识别到图生视频的 AI 编排链路。然而这些强大的功能目前只在应用内部可用。用户必须打开应用、层层导航才能使用这些能力。有没有一种方式让用户只需对小艺说一句话就能直接调用应用中的某一项功能比如“帮我把这张涂鸦变成动画”“看看这幅画里有什么”“帮我生成一张恐龙在森林里的图片”这就是鸿蒙 Skill应用技能的核心价值——将应用能力外化为系统级智能体的可调用服务单元。本文将深入讲解 Skill 的概念、架构、开发流程以及如何将画伴梦工厂的现有 AI 能力封装为 Skill接入鸿蒙全场景智能生态。一、什么是 Skill——系统级智能入口1.1 从人找 App到能力找人传统的 App 使用路径是这样的解锁手机 → 找到图标 → 点击打开 → 在菜单中寻找功能 → 完成操作用户在完成每一个操作前都需要经历漫长的导航过程。而鸿蒙 Skill 的出现彻底改变了这一范式将交互路径缩短为唤醒小艺 → 说出需求 → 系统自动调用 Skill → 获取结果Skill 是一份声明式的能力外化机制。开发者将应用内可被外部调用的业务能力组织为若干能力单元每个单元包含一份描述文件SKILL.md声明触发场景、入参约束与返回值契约一份 ArkTS 入口脚本将外部调用桥接到应用内既有的业务逻辑模块配置绑定将 Skill 绑定到指定 Ability运行时系统智能体小艺依据描述文件完成意图—能力的语义匹配将用户语音/文本指令路由到匹配的 Skill执行后返回结果。1.2 Skill 与智能体、应用的关系┌─────────────────────────────────────────────────────────────┐ │ 鸿蒙系统智能体生态 │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │ 小艺 AI │───→│ 意图理解 │───→│ 服务分发引擎 │ │ │ │ (系统入口) │ │ (NLU) │ │ (Skill 匹配) │ │ │ └──────────┘ └──────────┘ └────────┬─────────┘ │ │ │ │ │ ┌─────────────────────────────────┼─────────┐ │ │ │ 鸿蒙应用生态 │ │ │ │ │ ┌──────────┐ ┌──────────┐ ▼ │ │ │ │ │ Skill A │ │ Skill B │ Skill C │ │ │ │ │ 图生动画 │ │ 图片识别 │ 文生图 │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ │ │ │ │ │ │ └────────┬────┴────────────┘ │ │ │ ▼ │ │ │ ┌──────────────────┐ │ │ │ │ 画伴梦工厂 应用 │ │ │ │ │ (业务逻辑实现) │ │ │ │ └──────────────────┘ │ │ └──────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────┘1.3 Skill 与传统开发模式对比维度传统 App 开发Skill 开发入口方式用户手动打开 App小艺语音/文本触发交互模式页面导航式交互意图驱动的对话式交互分发渠道应用市场下载安装小艺意图匹配自动分发设备覆盖需逐个设备适配一次开发全场景部署开发模式手写代码Vibe Coding 对话式开发跨应用协作需自行实现 IPCA2A 协议自动协同二、Vibe Coding——自然语言驱动的 Skill 开发2.1 什么是 Vibe CodingVibe Coding氛围编程是 HDC2026 上华为推出的创新开发模式。开发者可以用自然语言对话的方式描述需求小艺开放平台自动生成 Skill 的核心代码框架开发者审核反馈、AI 持续优化开发完成后一键发布到小艺入口。2.2 Vibe Coding 开发流程在小艺开放平台上通过 Vibe Coding 创建 Skill 的流程如下步骤 1登录小艺开放平台 → 进入 Skill → 新建 Skill → Vibe Coding 步骤 2填写 Skill 名称、描述、触发意图等基础信息 步骤 3选择拓展能力 按钮添加 步骤 4点击生成AI 解析需求 步骤 5需求澄清与规划AI 自动提出问题 步骤 6选择是否使用生成式 UI 步骤 7AI 自动生成 Skill 代码SKILL.md 入口脚本 步骤 8测试与评测平台自动校验合规性 步骤 9填写 Skill 描述供 Agent 语义匹配 步骤 10自动打包 → 真机测试 → 上架2.3 Vibe Coding 的核心价值降低门槛非技术背景的产品经理、设计师也能开发 Skill持续协作开发者可通过对话提出修改意见AI 实时响应优化生成式 UI根据用户指令复杂度动态调整交互形式简单查询展示轻量卡片复杂需求自动扩展为详细视图一键上架开发完成后直接打包发布省去繁琐的配置环节2.4 传统 Skill 开发 vs Vibe Coding开发方式技能要求开发周期迭代方式适用场景传统手动开发掌握 ArkTS、HMAF 框架数天手动修改代码复杂业务逻辑Vibe Coding自然语言描述能力数分钟对话式迭代标准能力外化、快速原型三、Skill 开发全流程3.1 环境准备要将应用能力封装为 Skill需要满足以下条件开发环境DevEco Studio 5.0鸿蒙 SDK API 26.0.0 及以上测试设备ROM 版本 6.0.0 及以上小艺 APP 版本 11.3.8.300 及以上华为账号完成开发者实名认证应用已上架Skill 需要关联已在 AppGallery Connect 中的应用3.2 Skill 包结构一个标准的 Skill 包目录结构如下entry/ ├── skills/ │ └── {SkillName}/ │ ├── scripts/ │ │ └── {SkillScript}.ets ← 入口脚本 │ └── SKILL.md ← 契约描述文件 ├── src/main/ets/ │ ├── entryability/ │ │ └── EntryAbility.ets │ └── service/ │ └── {BusinessService}.ets ← 业务服务实现 └── src/main/ └── module.json5 ← 模块配置关键约定skills/是当前模块所有 Skill 的根目录路径固定不可更改每个 Skill 以独立子目录组织方法名必须和SKILL.md中的functionName完全一致入口脚本的第一个参数固定为scriptManager.ArkTSScriptInfo执行结果必须通过completeArkTSScriptInApp回传3.3 SKILL.md 契约描述文件SKILL.md是 Skill 的核心描述文件包含元数据、触发场景、入参契约和返回值契约四部分。元数据YAML Front Matter---skill_name:画作识别skill_version:1.0.0description:识别儿童画作中的主角、场景、情绪等元素返回结构化识别结果functionName:recognizeDrawing---触发场景trigger_scenarios## trigger_scenarios - 看看这幅画里有什么 - 帮我识别这张涂鸦 - 这幅画画的是什么 - 分析一下这张图片的内容 - 这张画的主角是谁执行参数契约## parameters | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | imageUri | String | 是 | 图片的本地 URI支持 content:// 和 file:// 协议 | | language | String | 否 | 返回结果的语言默认 zh-CN |返回值契约## returns | 字段 | 类型 | 说明 | |------|------|------| | success | Boolean | 识别是否成功 | | protagonist | String | 画作中的主角描述 | | scene | String | 场景描述 | | emotion | String | 情绪描述 | | animationSuggestion | String | 动画建议 | | confidence | Object | 各维度的置信度百分比 |3.4 入口脚本实现// skills/recognize-drawing/scripts/RecognizeDrawingSkill.etsimport{completeArkTSScriptInApp}fromkit.AgentKit;import{ImageRecognitionService}from../../src/main/ets/service/ImageRecognitionService;interfaceRecognizeParams{imageUri:string;language?:string;}interfaceRecognizeResult{success:boolean;protagonist?:string;scene?:string;emotion?:string;animationSuggestion?:string;confidence?:Recordstring,number;error?:string;}exportfunctionrecognizeDrawing(scriptInfo:ArkTSScriptInfo,params:RecognizeParams):void{recognizeDrawingAsync(scriptInfo,params).catch((error:Error){completeArkTSScriptInApp(scriptInfo,{result:{success:false,error:error.message}});});}asyncfunctionrecognizeDrawingAsync(scriptInfo:ArkTSScriptInfo,params:RecognizeParams):Promisevoid{// 调用应用内已有的识别服务constresultawaitImageRecognitionService.recognizeDrawing(params.imageUri);completeArkTSScriptInApp(scriptInfo,{result:{success:true,protagonist:result.protagonist,scene:result.scene,emotion:result.emotion,animationSuggestion:result.animationSuggestion,confidence:result.confidence}});}3.5 module.json5 配置{ module: { name: entry, type: entry, srcEntry: ./ets/entryability/EntryAbility.ets, skills: [ { name: recognize-drawing, srcPath: ./skills/recognize-drawing } ], requestPermissions: [ { name: ohos.permission.INTERNET } ] } }3.6 开发、调测、审核、上架全流程┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ 开发阶段 │───→│ 调测阶段 │───→│ 审核阶段 │───→│ 上架阶段 │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ ├─ 编写 SKILL.md │ │ │ ├─ 实现入口脚本 ├─ 真机调试 │ │ ├─ module.json5 ├─ hilog 检查点 ├─ 合规校验 ├─ 上架到小艺 └─ 本地化测试 └─ 端到端验证 └─ 语义测试 └─ 全网发布开发阶段编写 SKILL.md 描述文件、实现入口脚本、配置 module.json5调测阶段使用真机进行端到端验证通过 hilog 确认参数传递和执行结果正确审核阶段平台自动校验 SKILL.md 合规性测试执行工具调用结果上架阶段Skill 自动打包一键发布到小艺入口等待全网分发四、Skill 架构深度解析4.1 意图匹配机制当用户说帮我看看这幅画里有什么时系统内部的匹配流程如下用户语音/文本输入 │ ▼ ┌──────────────────┐ │ 小艺 NLU 引擎 │ 自然语言理解提取意图和实体 │ (Intent Resolve) │ └────────┬─────────┘ │ { intent: recognize_drawing, entities: { image: ... } } ▼ ┌──────────────────┐ │ Skill 匹配引擎 │ 扫描所有已注册 Skill 的 trigger_scenarios │ (Service Match) │ 计算语义相似度选择最佳匹配 └────────┬─────────┘ │ matched_skill: recognize-drawing ▼ ┌──────────────────┐ │ 执行 Skill 入口 │ 调用 recognizeDrawing(scriptInfo, params) │ (Script Execute) │ 等待 completeArkTSScriptInApp 回传结果 └────────┬─────────┘ │ { success: true, protagonist: 恐龙, scene: 森林, ... } ▼ ┌──────────────────┐ │ 结果呈现 │ 小艺用自然语言回复用户 │ (Response Gen) │ 这幅画的主角是一只小恐龙场景是森林... └──────────────────┘4.2 执行流程详解// 入口脚本的执行生命周期// 1. 小艺解析用户意图匹配到 Skill// 2. 系统创建 ArkTSScriptInfo 上下文对象// 3. 调用入口函数传入参数// 4. 入口函数内部调用应用业务服务// 5. 业务服务执行完毕调用 completeArkTSScriptInApp 回传结果// 6. 系统将结果格式化为自然语言回复给用户exportfunctionrecognizeDrawing(scriptInfo:ArkTSScriptInfo,// ★ 系统注入的上下文params:RecognizeParams// ★ 从用户意图中提取的参数):void{// ★ 异步执行结果通过回调返回doWork(scriptInfo,params);}asyncfunctiondoWork(scriptInfo:ArkTSScriptInfo,params:RecognizeParams):Promisevoid{try{constresultawaitImageRecognitionService.recognizeDrawing(params.imageUri);completeArkTSScriptInApp(scriptInfo,{result});// ★ 结果回传}catch(error){completeArkTSScriptInApp(scriptInfo,{error:{message:error.message}});}}4.3 Skill 生命周期一个 Skill 从创建到下线经历以下完整生命周期创建 → 开发 → 调试 → 发布(上线) → 运行(被调用) → 更新 → 下架阶段状态说明草稿Draft刚刚创建尚未提交审核审核中Reviewing提交审核等待平台校验已上线Published审核通过已发布到小艺入口已下架Unpublished主动下架或因违规被下架已更新Updated新版本审核通过替换旧版本五、HMAF 2.0 与鸿蒙智能体框架5.1 HMAF 2.0 三层架构HarmonyOS 智能体框架HMAF2.0 是鸿蒙系统级智能体能力的核心支撑其架构分为三层┌────────────────────────────────────────────────────────────┐ │ 应用层 (App Layer) │ │ Agent Framework Kit / FunctionComponent / AgentController │ │ 开发者通过 Kit 接入智能体嵌入 Skill 调用能力 │ ├────────────────────────────────────────────────────────────┤ │ 框架层 (HMAF Framework) │ │ ┌──────────┐ ┌──────────┐ ┌────────────────────┐ │ │ │ 意图识别 │ │ 工具调度 │ │ 多智能体协同引擎 │ │ │ │ Intent │ │ Tool │ │ Multi-Agent │ │ │ │ Resolve │ │ Dispatch │ │ Orchestration │ │ │ └──────────┘ └──────────┘ └────────────────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌────────────────────┐ │ │ │ 对话管理 │ │ 知识检索 │ │ 分布式软总线 │ │ │ │ Context │ │ RAG │ │ Distributed Bus │ │ │ │ Manager │ │ Engine │ │ │ │ │ └──────────┘ └──────────┘ └────────────────────┘ │ ├────────────────────────────────────────────────────────────┤ │ 能力层 (Capability Layer) │ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────────┐ │ │ │端侧 LLM │ │ 语音识别 │ │ 视觉理解 │ │ Intents Kit│ │ │ │On-device│ │ASR/TTS │ │CV/OCR │ │ 意图框架 │ │ │ └────────┘ └────────┘ └────────┘ └────────────┘ │ └────────────────────────────────────────────────────────────┘5.2 Skill 在 HMAF 中的定位Skill 在 HMAF 体系中处于能力外化层是应用向系统智能体暴露能力的标准化接口。HMAF 通过以下组件与 Skill 交互HMAF 组件与 Skill 的关系意图识别引擎将用户自然语言映射到 Skill 的 trigger_scenarios工具调度器根据意图匹配结果调度对应的 Skill 入口函数多智能体协同引擎当一个任务需要多个 Skill 协作时负责编排调用顺序对话管理器维护多轮对话上下文在连续对话中保持 Skill 状态分布式软总线跨设备传输 Skill 调用请求和结果5.3 A2A 协议与多 Skill 协同HMAF 2.0 通过A2AAgent-to-Agent协议实现多 Skill 之间的协同工作。例如用户说帮我把这张恐龙涂鸦变成动画然后发到朋友圈系统可能会串联多个 Skill用户意图: 帮我把这张恐龙涂鸦变成动画然后发到朋友圈 │ ▼ ┌──────────────────┐ │ 主 Agent: 任务拆解 │ └────────┬─────────┘ │ ┌───────────┼───────────┐ │ │ │ ▼ ▼ ▼ ┌────────────┐ ┌──────────┐ ┌──────────┐ │ Skill: │ │ Skill: │ │ Skill: │ │ 画作识别 │→│ 图生动画 │→│ 社交分享 │ │ (识别内容) │ │ (生成视频) │ │ (发朋友圈) │ └────────────┘ └──────────┘ └──────────┘六、多设备分发6.1 一次开发全场景部署Skill 的跨设备能力源自鸿蒙系统的分布式架构。开发者只需开发一次即可在以下设备上运行设备类型分发方式交互形态手机小艺语音唤醒语音文本对话平板小艺语音手写全屏半屏卡片车机方向盘语音键纯语音交互智慧屏远场语音语音大屏展示手表语音唤醒轻量卡片展示2in1 笔记本小艺键鼠桌面级交互6.2 生成式 UI 自适应HDC2026 引入的A2UI 协议让 Skill 在不同设备上自动适配 UI 形态简单结果如查询天气显示轻量卡片中等复杂度如图片识别结果显示结构化信息卡片复杂交互如多步骤操作自动扩展为详细视图开发者无需手动适配每种设备A2UI 协议通过标准化描述语言系统自动根据当前设备生成合适的 UI。6.3 华为账号跨设备同步Skill 通过华为账号实现跨设备状态同步用户一次授权所有设备可用对话历史跨设备同步个人偏好设置自动流转七、画伴梦工厂现有 AI 能力的 Skill 封装7.1 可封装的现有能力画伴梦工厂项目目前拥有以下 AI 能力均可封装为独立的 Skill现有功能对应服务可封装的 Skill画作识别ImageRecognitionService.recognizeDrawing()画作识别 Skill文生图AIGenerationService.generateImage()文生图 Skill图生视频AIGenerationService.generateVideo()图生视频 Skill语音识别VoiceRecognitionService语音转文字 Skill7.2 图生视频 Skill 示例# skills/animate-drawing/SKILL.md---skill_name:图生动画skill_version:1.0.0description:将儿童画作转换为动画视频支持自定义动作风格functionName:animateDrawing---## trigger_scenarios-帮我把这幅画变成动画-让我的涂鸦动起来-把这个涂鸦变成视频-给我生成的画做个动画-让这张图动起来## parameters|参数名|类型|必填|说明||--------|------|------|------||imageUri|String|是|画作的图片 URI||prompt|String|否|动作风格描述如跳跃、奔跑||style|String|否|动画风格可选值:cute,natural,cartoon|## returns|字段|类型|说明||------|------|------||success|Boolean|是否生成成功||videoUri|String|生成的视频 URI||duration|Number|视频时长秒||prompt|String|实际使用的 Prompt|入口脚本实现// skills/animate-drawing/scripts/AnimateDrawingSkill.etsimport{completeArkTSScriptInApp}fromkit.AgentKit;import{AIGenerationService}from../../src/main/ets/service/AIGenerationService;import{WorkRepository}from../../src/main/ets/service/WorkRepository;interfaceAnimateParams{imageUri:string;prompt?:string;style?:cute|natural|cartoon;}exportfunctionanimateDrawing(scriptInfo:ArkTSScriptInfo,params:AnimateParams):void{animateDrawingAsync(scriptInfo,params).catch((error:Error){completeArkTSScriptInApp(scriptInfo,{result:{success:false,error:error.message}});});}asyncfunctionanimateDrawingAsync(scriptInfo:ArkTSScriptInfo,params:AnimateParams):Promisevoid{constfinalPromptparams.prompt??让画作中的角色动起来;constgeneratedVideoawaitAIGenerationService.generateVideo(params.imageUri,finalPrompt,(message:string){// 可选的进度回调用于实时反馈});// 自动保存到作品集constworkWorkRepository.createWork(ai-chat,generatedVideo.prompt,params.imageUri,generatedVideo.videoUri);WorkRepository.save(work);completeArkTSScriptInApp(scriptInfo,{result:{success:true,videoUri:generatedVideo.videoUri,duration:generatedVideo.duration??3,prompt:generatedVideo.prompt}});}7.3 Skill 封装的优势将现有 AI 能力封装为 Skill 后画伴梦工厂能够获得以下好处新流量入口用户无需打开 App直接通过小艺对话即可使用核心功能降低使用门槛儿童或老人不需要理解复杂的 UI 导航一句话就能完成操作跨应用协同其他 App 的 Skill 也可以调用画伴梦工厂的能力在用户授权下全场景覆盖手机、平板、车机、智慧屏上都能使用八、触发场景详解8.1 语音触发用户通过唤醒小艺后使用自然语言描述需求。小艺的 NLU 引擎解析意图匹配到对应的 Skill。这是最主要的触发方式覆盖手机、车机、智慧屏等场景。8.2 文本触发在小艺对话框内用户通过文字输入触发 Skill。适合不便使用语音的场景如安静环境、公共场合。8.3 上下文感知触发系统根据用户当前的行为和上下文主动推荐或触发 Skill触发类型触发条件示例习惯推荐用户行为模式学习每天下午自动推荐文生图Skill事件推荐时间事件特征周末推荐图生视频Skill位置推荐地理位置围栏在画展场景推荐画作识别Skill小艺建议系统智能预测检测到相册有新的涂鸦照片时推荐8.4 跨应用触发通过 A2A 协议一个 Skill 的执行结果可以作为另一个 Skill 的输入参数实现跨应用的自动协作。九、最佳实践9.1 SKILL.md 编写规范trigger_scenarios 覆盖面要广为同一个功能编写 5~10 种不同的自然语言表达方式覆盖用户可能的各种说法description 要详细准确给模型看的自然语言说明要具体避免太笼统导致模型误匹配参数 Schema 要完整明确 required 字段和 optional 字段减少模型传入空对象的概率返回值结构要稳定一旦上线勿随意修改字段名和类型避免调用方解析失败9.2 入口脚本开发规范// ★ 规范一统一使用 try-catch 包裹异步逻辑asyncfunctionhandler(scriptInfo:ArkTSScriptInfo,params:Params){try{// 业务逻辑completeArkTSScriptInApp(scriptInfo,{result});}catch(error){// ★ 必须回传错误否则系统会一直等待completeArkTSScriptInApp(scriptInfo,{error:{message:error.message,code:error.code}});}}// ★ 规范二参数校验前置functionvalidateParams(params:Params):boolean{if(!params.imageUri){thrownewError(imageUri 是必填参数);}returntrue;}// ★ 规范三超时控制asyncfunctionwithTimeoutT(promise:PromiseT,ms:number):PromiseT{consttimeoutnewPromiseT((_,reject){setTimeout(()reject(newError(Skill 执行超时)),ms);});returnPromise.race([promise,timeout]);}9.3 调测建议使用真机调试模拟器无法完全模拟小艺的意图匹配过程检查 hilog 日志确认入口函数是否被正确调用参数是否完整传递测试多种触发语句验证 trigger_scenarios 中所有的触发方式异常场景覆盖测试参数缺失、网络超时、服务不可用等异常情况性能基线确保 Skill 响应时间在合理范围内建议 5s9.4 安全与隐私最小权限原则只申请 Skill 运行所必需的权限用户授权涉及敏感数据相册、位置等必须经过用户授权数据最小化只传输 Skill 执行所需的数据不要过度采集安全通信使用 HTTPS 加密通信避免敏感数据泄露9.5 Skill 上架检查清单检查项说明SKILL.md 格式正确YAML Front Matter Markdown 结构trigger_scenarios 不少于 5 条覆盖用户常用表达参数 Schema 完整类型、描述、必填都正确入口脚本有异常处理所有分支都调用 completeArkTSScriptInApp应用已在 AppGallery Connect 上架Skill 必须关联已发布的应用真机调试通过至少 3 种触发语句测试通过权限声明最小化无多余权限申请十、总结与对比10.1 Skill 开发 vs 传统 App 开发对比维度传统 App 开发Skill 开发核心思路构建完整的独立应用将功能片段外化为服务开发方式手动编写全部代码Vibe Coding 对话式开发交互方式页面手势导航语音/文本对话用户获取方式应用市场搜索下载小艺意图匹配自动分发设备适配逐设备适配 UIA2UI 协议自动适配跨应用协同需要自行实现A2A 协议自动编排分发效率用户需主动搜索系统智能分发到精准用户开发周期数周到数月数小时到数天10.2 核心要点回顾本文围绕鸿蒙 Skill 开发的核心主题完整覆盖了以下内容知识点核心要点Skill 概念应用能力外化为系统智能体可调用的服务单元Vibe Coding自然语言对话驱动的 Skill 开发模式Skill 架构SKILL.md 入口脚本 module.json5 三层结构HMAF 2.0鸿蒙智能体框架意图识别 → 服务匹配 → 执行回传多设备分发一次开发覆盖手机/平板/车机/智慧屏/手表项目集成画伴梦工厂的识别、生成能力可封装为 Skill10.3 下一步Skill 开发是鸿蒙智能体生态的入口。掌握 Skill 开发后你还可以继续探索元服务开发无需安装即可使用的轻量服务Agent Framework Kit在应用内嵌入智能体 UIIntents Kit将应用意图共享到小艺建议、小艺搜索A2A 协议实现多智能体协作的复杂工作流下一节我们将进入第 7.2 篇深入了解Agent Framework Kit的实战应用学习如何在画伴梦工厂中嵌入系统级智能助手实现真正的应用智能体融合体验。参考文档本文内容参考自以下官方文档小艺开放平台 — Skill 开发指南https://developer.huawei.com/consumer/cn/doc/service/develop-skill-0000002623371043创建 SkillVibe Codinghttps://developer.huawei.com/consumer/cn/doc/service/vibe-skill-0000002623211165HMAF 鸿蒙智能体框架HarmonyOS SDK API 26.0.0 文档智能体场景开发案例https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-agent