很多应用已经具备完整的任务管理能力,但用户仍然需要进入应用、找到新增入口、填写内容,才能完成一次简单操作。对高频任务来说,这条路径还有进一步优化的空间。
HarmonyOS 7 的 Skill 能力支持应用将特定功能接入系统级智能入口,使用户有机会通过自然语言调用应用服务。在我的设计中,Skill 不负责重新实现任务管理,而是负责把已有的业务能力以清晰的方式开放出去。
先梳理适合开放的功能
我会优先选择边界明确、调用频率较高的能力,例如新增任务、查询任务和查看截止时间。删除任务、批量修改等操作则需要更严格的确认机制。
对于新增任务,我先定义统一的数据模型:
interface TodoTask {
title: string;
dueAt?: number;
priority: 'low' | 'normal' | 'high';
}
function validateTask(task: TodoTask): string | null {
if (!task.title.trim()) {
return '任务标题不能为空';
}
if (
task.dueAt !== undefined &&
!Number.isFinite(task.dueAt)
) {
return '截止时间格式无效';
}
return null;
}这段代码是应用侧的参数校验示例,不是 HarmonyOS 7 Skill 的官方定义格式。正式接入时,需要按官方文档完成 Skill 描述、参数声明、能力注册、调测和审核配置。
让自然语言参数变成可靠的数据
用户可能说“明天下午提醒我交报告”,但系统需要进一步确定日期、具体时间和任务标题。如果缺少必要信息,应该继续询问用户,而不是根据模型猜测直接创建任务。
因此,我会把自然语言理解和业务执行分开。Skill 的调用参数进入应用后,先转换成标准的数据结构,再由业务层进行校验和持久化。页面按钮和智能入口共用同一个任务服务,避免两套实现出现规则不一致。
时间处理尤其需要注意时区、日期边界和模糊表达。对于“下周”“月底”等表达,必须遵循明确的解析规则;如果无法确定具体日期,就应要求补充信息。
调测不能只测一次成功调用
我会测试正常创建、缺少标题、截止时间无效、重复调用和用户取消等情况。还要验证 Skill 调用成功后,应用内的任务列表是否同步更新,以及重新启动应用后数据是否仍然存在。
如果创建任务涉及系统通知或提醒能力,还需要单独处理对应的授权、触发时间和失败反馈,不能把“创建任务成功”直接等同于“提醒一定会按时触发”。
这次实践让我认识到,Skill 的接入重点不是增加一个新的输入入口,而是将应用能力整理成系统能够理解、调用和验证的服务。业务逻辑越独立,Skill 的复用空间越大;参数和权限边界越清晰,智能入口的执行结果也越可靠。
相关推荐
15
0
87年的鸿蒙开发者
25
0
16
0
21
0还可以
我还没有写个人简介......
帖子
提问
粉丝
1024码上尝鲜,让端侧 Agent 理解应用状态:本地知识管理能力的智能化改造
2026-10-27 11:23:09 发布学鸿蒙踩过的几个坑:ArkUI页面布局真没我想的那么简单!@向光而行 码向未来
2026-10-20 14:32:08 发布


京公网安备:11010502051901号