当前位置: 首页 > news >正文

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手

适用平台:HarmonyOS 7.0 (API 26 Beta+)

一、引言

HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架)之后,智能体技术的又一次重要演进。不同于 HMAF 的端云一体大模型集成,AgentCard 聚焦于桌面级的轻量智能体呈现——它允许应用在桌面上展示一个"活的"智能体卡片,无需打开应用即可完成高频、轻量的信息获取和操作。

在我们的英语学习 App 中,AgentCard 的最佳落地场景就是"每日一词":用户在桌面上就能看到今日要学的单词、音标和释义,点击直接进入详情页,甚至可以在卡片上直接标记"已掌握"或"待复习"。本文将从 AgentCard 的配置声明、生命周期管理、通信机制和实际落地四个方面展开。

二、AgentCard 配置声明与解析流程

2.1 配置文件声明

AgentCard 的声明方式与普通的 Form 卡片类似,但增加了智能体相关的配置项。在resources/base/profile/目录下创建agent_card_config.json

{"agentCards": [ {"cardName":"DailyWordAgent","cardType":"agent","description":"每日一词智能体卡片","updateEnabled": true,"scheduledUpdateTime":"08:00","agentConfig": {"agentId":"com.example.englishapp.dailyword","displayMode":"compact","interactiveActions": ["mark_known","mark_review"],"dataSource":"LearningPlanManager"},"formConfig": {"dimension":"2x2","supportDimensions": ["2x2","4x2"],"defaultGrid":4,"colorMode":"auto"} } ] }

其中agentConfig是 AgentCard 独有的配置段,定义了智能体的 ID、展示模式、支持的交互动作和数据源。这个配置文件需要在module.json5中注册:

{"module": {"proxyConfigs": [ {"type":"agentCard","configFile":"resources/base/profile/agent_card_config.json"} ] } }

2.2 解析流程

系统在应用安装时解析agent_card_config.json,验证配置合法性后注册到卡片管理服务中。解析流程依次校验:

  1. 语法校验:JSON 格式是否正确,必填字段是否完整
  2. 语义校验:agentId 是否唯一、displayMode 是否在支持范围内
  3. 资源校验:引用的布局文件、图标资源是否存在
  4. 权限校验:应用是否声明了所需的权限

通过校验后,卡片服务将 AgentCard 注册到桌面,用户即可在桌面添加该卡片。

三、AgentCard 持久化与状态恢复

AgentCard 真正的价值在于其持久化能力——即使应用进程被系统回收,卡片仍然在桌面上存活,状态不会丢失。

3.1 状态持久化策略

AgentCard 使用独立的持久化存储通道,与应用自身的 Preferences 存储隔离:

exportclassDailyWordAgentCard{privatecardState:AgentCardState;publicasyncsaveState():Promise<void> {conststateData = {currentWord:this.cardState.currentWord,wordIndex:this.cardState.wordIndex,status:this.cardState.status,lastUpdateTime:Date.now() };awaitagentCard.savePersistentState('daily_word_state', stateData); }publicasyncrestoreState():Promise<void> {constsavedState =awaitagentCard.getPersistentState('daily_word_state');if(savedState) {this.cardState= savedStateasAgentCardState; } } }

系统在下列时机自动触发状态保存:

  • 应用进程进入后台
  • 卡片执行交互操作后
  • 定期(每 30 分钟)快照保存

3.2 状态恢复时机

当用户重启设备或应用被重新拉起时,AgentCard 按以下流程恢复:

  1. 桌面卡片服务启动,加载持久化的卡片状态快照
  2. 应用进程被唤醒(如果未运行)
  3. 系统调用onCreateForm()回调,传入上次保存的状态
  4. 应用根据状态重建卡片 UI
onCreateForm(want: Want): formBindingData.FormBindingData {constsavedState = want.parameters?.agentCardState;if(savedState) {// 恢复状态constword = JSON.parse(savedStateasstring);returnthis.buildFormData(word); }// 首次创建,从 LearningPlanManager 获取今日单词returnthis.buildFormData(LearningPlanManager.getInstance().getTodayWord()); }

四、卡片与主应用的通信机制

AgentCard 支持双向通信:卡片 → 应用的跳转和事件传递,以及应用 → 卡片的数据更新推送。

4.1 卡片跳转主应用

在卡片布局中配置点击跳转事件:

@Entry@Componentstruct DailyWordCard { build() { Column() { Text(this.wordText) .fontSize(16) .onClick(() => { postCardAction(this, { action:'router', bundleName:'com.example.englishapp', abilityName:'EntryAbility', params: { page:'CourseHomePage', wordId:this.wordId, from:'agent_card'} }); }); } } }

postCardAction是 AgentCard 特有的 API,支持三种 action 类型:

  • router:跳转到应用指定页面
  • message:向应用发送消息(无需跳转)
  • call:调用应用的后台能力

4.2 应用更新卡片数据

当 LearningPlanManager 的今日目标发生变化时,应用主动刷新卡片:

publicasyncupdateCardWithTodayWord(): Promise<void>{consttodayWord =this.getTodayWord();constformData = formBindingData.createFormBindingData({ wordText: todayWord.word, phonetic: todayWord.phonetic, meaning: todayWord.meaning });awaitformProvider.updateForm(this.cardId, formData); }

五、智能体卡片生命周期管理

AgentCard 的生命周期比普通 Form 卡片更加复杂,因为它包含了智能体的状态管理:

CreatedActiveBackgroundSuspendedDestroyedInteractive(用户操作触发)

不同状态的资源占用策略:

状态更新频率内存占用是否可交互
Active实时正常
Background按策略(默认 30 分钟)
Suspended不更新极低
Destroyed0

应用可以监听生命周期回调,合理管理资源:

onFormEvent(formId:string,event:string) {switch(event) {case'onVisibilityChange':// 卡片从桌面消失/重新出现break;case'onAcquire':// 卡片被添加到桌面this.startDailyUpdate();break;case'onReload':// 卡片状态需要刷新this.refreshCardData();break; } }

六、项目落地:桌面"每日一词"智能体卡片

6.1 卡片布局设计

卡片采用 2x2 尺寸,展示核心信息:

┌──────────────┐ │ 📖 每日一词 │ │ │ │ enthusiasm │ │/ɪnˈθjuːziæzəm/│ │ n. 热情,热忱 │ │ │ │ [已掌握] [待复习] │ └──────────────┘

6.2 核心代码实现

@Entry@Componentstruct DailyWordAgentCard {@LocalwordText: string ='';@Localphonetic: string ='';@Localmeaning: string ='';@LocalwordId: number =0;build() {Column({ space: 4 }) {// 顶部标题Row() {Image($r('app.media.ic_daily_word')).width(16).height(16)Text('每日一词').fontSize(12).fontColor('#666666') }// 单词信息Text(this.wordText).fontSize(18).fontWeight(FontWeight.Bold)Text(this.phonetic).fontSize(12).fontColor('#888888')Text(this.meaning).fontSize(14).margin({top:4})// 操作按钮Row({ space: 8 }) {Button('已掌握').onClick(() => {postCardAction(this, { action: 'message', data: { action: 'mark_known', wordId: this.wordId } }); })Button('待复习').onClick(() => {postCardAction(this, { action: 'message', data: { action: 'mark_review', wordId: this.wordId } }); }) } }.padding(12).backgroundColor('#FFFFFF').borderRadius(12) } }

七、最佳实践与注意事项

7.1 数据更新策略

AgentCard 的自动更新依赖系统调度,并非精确到秒。我们的策略是:

  1. 每日 08:00 系统触发定时更新,展示今日单词
  2. 用户在应用内学习新词后,主动推送更新
  3. 卡片上执行"已掌握"操作后,立即刷新为下一个待学单词

7.2 性能考量

AgentCard 运行在独立进程(卡片服务)中,但渲染资源有限。因此:

  • 卡片布局尽量扁平,避免深层嵌套
  • 图片资源控制在 50KB 以内
  • 避免在卡片 onUpdate 中执行耗时操作

7.3 与 Form 卡片的区别

维度普通 Form 卡片AgentCard 智能体卡片
数据源静态绑定动态智能推荐
交互能力有限的点击跳转丰富的行内操作
状态持久化基础快照完整状态机
更新策略固定刷新周期智能触发 + 差异化刷新

八、总结

AgentCard 智能体卡片是 HarmonyOS 7.0 在桌面交互维度的重要创新。对于英语学习 App 而言,"每日一词"AgentCard 将学习入口前置到桌面,用户无需打开应用即可完成"看单词→回忆释义→标记状态"的完整学习闭环。这种高频轻量的交互模式,天然适合语言学习场景。随着 API 的进一步成熟,AgentCard 还可以扩展到"每日一句""听力训练"等更多学习场景。

http://www.jsqmd.com/news/1303474/

相关文章:

  • 2026导入视频自动生成文案工具汇总:电脑手机在线软件实操指南 - 工具软件使用方法推荐
  • 《大话文渊慧典》:外三篇-不是我们不行,是赛道不同——中国古籍OCR的“非对称作战”优势
  • 天津立体库货架养护维保
  • 2026上海热水器维修全攻略:平台对比与实用选择技巧 - 匠心24小时快修
  • 2026年7月辽宁省大连市移动单宽带实测办理全流程 - 找卡家园
  • 2026年7月浙江省杭州市移动宽带办理避坑全攻略 - 找卡家园
  • 2026必备!AI论文网站测评:最新推荐与深度对比
  • 打破语言壁垒:Apache Dubbo如何轻松实现Java与Go微服务互通
  • 【YOLOv11模型改进系列】08 数据增强的终极形态:用AutoAugment让YOLOv11自己学会“什么数据最有用”
  • 2026 广州黄埔区管道疏通优质服务商精选 全域上门服务全覆盖指南 - 园子一号
  • HarmonyOS NEXT 企业级记账APP:账单编辑与删除
  • 2026小一寸证件照App制作全指南:尺寸标准与免费工具实操教程 - 工具软件使用方法推荐
  • Markdown数学公式全解析:从LaTeX语法到实战排版技巧
  • LibreDWG终极指南:免费开源DWG文件处理完整教程
  • 2026年7月徐州市联通1000M融合宽带办理申请全攻略与真实避坑经验 - 找卡家园
  • 2026 年更新:武穴热门的设备搬迁工厂深度解析,旧机床搬进新厂房,没人知道这活儿藏着能省十万的门道? - 鉴选官
  • 小波变换在图像加密与压缩中的原理与C++实现
  • 摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具
  • 2026 广州越秀区管道疏通优质服务商精选 全域上门服务全覆盖指南 综合本地口碑甄选 - 园子一号
  • 2026 年更新:辉县靠谱的边框护栏网批发厂家推荐,村里搭养殖围栏选这玩意儿,居然比传统护栏省一半成本还更耐用? - 企业推荐官【认证】
  • 爱回收上门和估价差的多吗?测评博主实测记录 - 甄选测评馆
  • 2026年7月四川省成都市移动融合宽带申请避坑实录 - 找卡家园
  • 如何用IP-Adapter-FaceID轻松创作个性化AI人像:新手完整指南
  • Jackett终极指南:一站式种子搜索引擎搭建与自动化下载教程
  • AI 智能电动窗帘电机高集成、低功耗 MOSFET 精准选型方案
  • 深度解析ExoPlayer后台播放:从Service架构到系统级媒体控制
  • 起步——抽象类
  • 导师推荐!2026最新AI论文工具测评与实用推荐
  • 掌握浏览器Cookie的终极指南:Cookie Editor完整教程
  • 智能降重实用技巧分享 高效实现文本内容原创性提升的方法指南