【HarmonyOS 7开发者前瞻】04 HarmonyOS 7 应用能力拆分方法:页面功能如何走向 Skill
前言做 HarmonyOS 应用时我们过去很自然地按照页面来组织功能。比如会议类应用会有会议列表页、会议详情页、新建会议页、待办页、联系人页、周报页。每个页面都有自己的按钮、状态、数据加载和跳转逻辑。这个方式在传统 App 开发里很好理解项目刚开始也很容易推进。到了 HarmonyOS 7情况开始有一点变化。Skill、Agent、AI 开放能力被放到了系统智能化方向里应用功能不再只停留在页面内部。HarmonyOS 7 新能力页面里Skill Vibe Coding 覆盖 Skill 开发、调测、审核、上架并且目标是让应用功能能够被系统级智能入口调用。这对我们写应用的影响是很大的。页面仍然要开发交互仍然要优化数据仍然要保存。但在页面背后还要多一层思考这个功能能不能被整理成一个独立能力它需要什么输入返回什么结果失败以后怎么反馈哪些动作可以自动执行哪些动作必须确认这次我们就围绕这个问题展开聊聊。从页面功能到 Skill 能力HarmonyOS 7 应用到底应该怎么拆分。一、先判断哪些页面功能值得拆成能力我们在改一个已有项目时很容易一上来就想着怎么接 Skill。这个顺序其实有点急了。更稳的做法是先回到项目里看看哪些功能本身已经具备独立能力的特征。很多页面里的按钮看起来只是一次点击背后其实已经包含完整的业务动作。比如生成会议纪要、提取待办事项、生成周报草稿这些功能都有明确输入也有明确输出还能单独判断成功或者失败。这类功能就适合优先进入能力拆分表。相反一些纯展示类页面、简单设置项、普通跳转按钮暂时没有必要都拆成 Skill 候选能力。它们继续留在页面内部会更自然维护成本也更低。我们不需要为了追新能力把所有按钮都改造成外部可调用能力。可以先用三个问题筛选。判断问题适合拆成能力的表现用户意图是否清晰用户一句话就能表达目标比如生成纪要、创建待办输入输出是否明确有清楚的输入参数也有可保存或可展示的结果是否能脱离当前页面执行不强依赖当前页面临时状态可以放到服务层执行如果一个功能同时满足这三个条件就可以进入 Skill 候选清单。以会议类应用为例下面这些功能就比较适合优先整理。页面功能是否适合拆分原因创建会议适合输入明确输出是会议记录生成纪要适合输入是会议内容输出是纪要草稿提取待办适合输入是会议文本输出是待办列表分配责任人适合但要确认涉及协作动作需要用户确认切换页面 Tab暂不适合只是页面导航不是独立业务能力修改主题颜色暂不适合设置项简单系统调用价值不明显这里大家可以先别急着写代码。第一步先把功能列出来然后给每个功能写一句自然语言描述。比如生成纪要可以写成根据会议文本生成摘要、决议和待办事项。如果一句话都说不清楚这个功能暂时就不适合拆成 Skill 能力。二、再把页面结构改成能力结构很多 HarmonyOS 项目刚开始都会按页面组织。这个方式符合开发习惯也方便快速搭建功能。但当应用需要接入系统级智能入口时只看页面结构就不够了。页面结构关注的是用户怎么操作。能力结构关注的是系统能调用什么。这两件事的侧重点不同。页面里可以有按钮、列表、弹窗、加载状态能力里需要有输入、输出、执行过程、确认要求和失败回退。我们拆 Skill 的时候真正要做的事情就是把页面中的业务动作抽出来。以会议类应用为例页面结构通常是这样的。页面页面职责会议列表页展示会议记录支持进入详情会议详情页展示会议内容、录音、纪要、待办新建会议页创建会议并保存基础信息待办页展示待办事项更新完成状态周报页整理阶段进展生成周报草稿换成能力结构以后就会变成另一张表。能力名称用户意图输入输出是否需要确认创建会议帮我记录一次会议标题、时间、参与人会议记录可选生成纪要帮我总结这次会议会议文本、录音转写文本纪要草稿建议确认提取待办帮我找出行动项会议内容待办列表建议确认分配责任人把待办分给对应人员待办、联系人更新后的待办需要确认生成周报整理本周项目进展时间范围、项目周报草稿需要确认这张表比页面结构更接近 Skill 思路。它不关心按钮放在哪里也不关心页面怎么布局它关心的是这个能力能不能被清楚调用。这里有一个很实用的判断方法。如果一个功能必须依赖某个页面的临时状态才能执行它还没有准备好变成 Skill 能力。如果一个功能可以通过明确参数启动并且返回稳定结果它就可以进入 Skill 候选池。比如生成纪要这个功能如果只写在会议详情页的按钮点击事件里后续复用会比较麻烦。更好的方式是把它抽到服务层。页面点击按钮时调用服务层以后 Skill 或 Agent 需要调用时也可以复用同一套能力边界。能力结构整理完成以后页面和服务层的关系也会变得更清楚。层级主要职责页面层展示界面、触发操作、展示状态服务层执行业务能力数据层保存输入、结果和状态校验层检查参数、权限和边界确认层处理高风险动作确认这样拆完以后项目结构会比原来更适合扩展。即使暂时不接 Skill后续维护也会轻很多。三、给每个能力补齐输入、输出、确认和回退一个页面功能能不能变成 Skill 候选能力关键不只是名字好不好听。真正要看的是它有没有完整的调用契约。我们可以把调用契约理解成四件事。输入是什么输出是什么是否需要确认失败以后怎么处理这四件事没有整理清楚能力就很难稳定复用。页面内部调用时很多细节可以靠上下文补齐系统级智能入口调用时就不能依赖这些隐含状态了。以生成纪要为例简单说生成一份会议纪要还不够。我们要继续补充更具体的信息。项目内容能力名称生成纪要输入会议 ID、会议文本、录音转写文本输出摘要、决议、待办、风险点确认要求建议用户确认后保存失败情况文本为空、文本过长、生成失败、用户取消回退方式保留原始文本允许重新生成或手动编辑这张表看起来有些繁琐但它会直接影响后续接入质量。比如生成失败时页面可以提示重新生成如果是系统级智能入口调用就需要返回明确失败原因。再比如文本过长时是截断、分段还是提示用户选择内容范围也需要提前考虑。否则能力虽然可以被调用体验却很不稳定。这里可以用一个项目侧接口草案来固定能力边界。它描述的是业务能力结构不代表 HarmonyOS 7 新 API 的实测结果。exportinterfaceMeetingSummaryInput{meetingId:string;transcript:string;language?:string;}exportinterfaceMeetingSummaryResult{summary:string;decisions:string[];actionItems:string[];risks?:string[];}exportasyncfunctiongenerateMeetingSummary(input:MeetingSummaryInput):PromiseMeetingSummaryResult{return{summary:,decisions:[],actionItems:[],risks:[]};}这段代码的作用是把能力边界提前固定下来。你可以先不接任何 HarmonyOS 7 新能力也不接 AI 模型只要先把输入输出结构整理好后面接入 Skill、Agent 或 AI 能力时页面层就不会被反复改动。对于高风险动作还要单独加确认流程。比如分配责任人和生成周报。它们不像生成草稿那么轻量一旦保存或者发送就可能影响协作流程。所以这类能力不适合直接自动执行。更稳的方式是先生成候选结果再让用户确认。可以这样整理。能力自动执行程度处理建议查询会议可以自动执行只返回结果不修改数据生成纪要草稿可以自动生成保存前建议确认提取待办可以自动提取保存前建议确认分配责任人不建议自动完成必须确认删除会议不建议自动完成必须确认我们在拆 Skill 能力时最好不要只盯着成功路径。失败路径和确认路径同样重要。真实项目里很多问题都不是出在功能能不能执行而是出在用户取消、权限不足、数据缺失、结果不准确这些边界情况上。四、把能力沉到服务层不要只挂在页面事件里拆 Skill 的过程最后一定会回到代码结构。很多项目一开始写得很快按钮点击事件里直接处理业务逻辑这很正常。比如在会议详情页里点击生成纪要直接读取文本、调用生成逻辑、更新页面状态、保存结果。项目规模小时这种写法没有太大问题。但当功能开始变多页面之间开始复用同一类能力时问题就会出现。同样的生成逻辑会议详情页要用周报页也可能要用以后 Skill 要调用Agent 任务链路也可能要调用。如果能力一直挂在页面事件里每增加一个入口就要复制或者重新包装一遍逻辑。这样维护成本会越来越高。更稳的结构是把能力沉到服务层。可以把会议相关能力整理成类似这样的结构。features/ meeting/ pages/ MeetingListPage.ets MeetingDetailPage.ets MeetingCreatePage.ets services/ MeetingService.ets MeetingSummaryService.ets MeetingActionService.ets models/ MeetingModel.ets ActionItemModel.ets页面层只负责交互和展示服务层负责执行能力模型层负责数据结构。这样拆完以后页面入口、Skill 候选入口、Agent 任务链入口都可以指向同一套服务能力。比如生成纪要可以放到MeetingSummaryService里。exportclassMeetingSummaryService{asyncgenerateSummary(input:MeetingSummaryInput):PromiseMeetingSummaryResult{// 这里先保留业务接口边界// 后续可以接入 AI 能力、云端服务或本地模型returngenerateMeetingSummary(input);}}这段代码仍然属于项目结构草案。它的意义不是展示某个 HarmonyOS 7 新接口而是说明能力应该从页面事件里抽出来。这样后续接入 Skill 时页面不需要知道能力来自哪里只需要处理状态展示和用户确认。页面调用时可以保持很清楚。constresultawaitthis.summaryService.generateSummary({meetingId:this.meetingId,transcript:this.transcript});这里有一个很重要的思路页面不应该承担所有业务判断。页面可以负责按钮状态、加载提示、结果展示、错误提示能力是否可以执行、输入是否完整、输出如何保存这些更适合放到服务层和校验层。拆到这里项目会更接近下面这条路径。页面操作 → 服务能力 → 数据保存 → 用户确认 → 状态反馈这个结构对 Skill 很重要。因为系统级智能入口调用能力时不一定经过原来的页面路径。如果能力只能通过页面按钮触发系统就很难稳定复用。服务层越清楚能力接入外部入口时就越轻。五、用一张表确定拆分优先级页面功能很多不可能一次性全部拆完。真正落到项目里还是要排优先级。优先级可以按照三个维度判断。维度判断方式用户价值这个能力是否能明显减少操作成本接入难度输入输出是否清楚是否依赖复杂页面状态风险等级是否会修改关键数据是否需要确认把这三个维度放在一起就能大概排出拆分顺序。以会议类应用为例可以这样安排。优先级能力原因P0创建会议输入简单主流程高频P0查询会议风险低适合系统入口调用P1生成纪要用户价值高但需要确认P1提取待办业务价值高适合和纪要联动P1生成周报输出价值高但依赖多个数据来源P2分配责任人涉及协作动作需要更强确认P2删除会议高风险动作不建议优先开放这个表可以帮助我们避免两个问题。第一个问题是所有功能都想接入 Skill结果项目还没整理完主流程已经变乱了。第二个问题是一直停留在观望阶段什么准备工作都没有做等真正需要接入时发现页面逻辑和业务能力完全绑在一起。比较稳的方式是先拆 P0 和 P1。P0 用来打基础P1 用来验证业务价值。P2 保留观察等确认机制、权限边界、日志记录更完整后再考虑。对于会议随记类应用或会后行动台这个顺序比较合适。阶段要完成的事情第一阶段整理页面功能清单第二阶段选出 Skill 候选能力第三阶段补齐输入、输出、确认、回退第四阶段沉淀服务层接口第五阶段选择 1 到 2 个能力做最小验证这里的最小验证不一定要马上接入完整 Skill 发布链路。可以先验证服务层是否稳定、页面是否能复用、输入输出是否清楚、确认流程是否完整。等 HarmonyOS 7 Skill 接入路径进一步稳定之后再进入实际接入。到这里页面功能到 Skill 能力的拆分逻辑就比较清楚了。不是所有页面都要改成 Skill也不是所有按钮都要变成系统入口。更合理的做法是把那些意图清晰、输入输出明确、业务价值高、风险边界可控的功能先整理出来。这样做即使短期内还没有完整接入 Skill项目结构也会先变得更清楚。总结从页面功能到 Skill 能力关键不是马上接入某个新接口而是先把应用功能整理成可以被系统理解的能力单元。这件事可以按照五步处理。步骤要做什么1从页面里筛选高价值业务动作2把页面结构整理成能力结构3给能力补齐输入、输出、确认和回退4把能力沉到服务层减少页面耦合5按用户价值、接入难度和风险等级排序如果你已经有 HarmonyOS 6 原生项目可以先不急着改页面。更实际的做法是先挑 3 个功能整理能力表。比如创建会议、生成纪要、提取待办。等这些能力的输入输出、确认流程和服务层接口都清楚以后后续接入 Skill、Agent 或 AI 能力都会顺很多。

相关新闻

013-输出倒逼输入

013-输出倒逼输入

费曼学习法系列 第013篇 输出倒逼输入——为什么教是最好的学 一、一个反直觉的真相 大多数人认为学习的流程是:输入→理解→存储→输出。先读书听课,然后消化理解,最后考试或应用。但费曼把这个顺序完全颠倒了过来:输出应该发生在输入之前,或者说,输出本身就是最好的…

2026/7/7 18:49:57阅读更多 →
ComfyUI整合包部署指南:从环境检查到KREA2模型实战

ComfyUI整合包部署指南:从环境检查到KREA2模型实战

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这类工具最值得先看的不是功能列表,而是能不能在普通环境里稳定跑起来。ComfyUI 290集 KREA2模型整合包,加上萝…

2026/7/7 18:49:57阅读更多 →
PyTorch Tensor 与 NumPy 互操作:5个常见陷阱与内存共享机制解析

PyTorch Tensor 与 NumPy 互操作:5个常见陷阱与内存共享机制解析

PyTorch Tensor 与 NumPy 互操作:5个常见陷阱与内存共享机制解析在深度学习与科学计算领域,PyTorch Tensor 和 NumPy 数组的互操作是开发者日常工作中不可或缺的部分。这种无缝转换看似简单,却隐藏着诸多可能引发错误的陷阱。本文将深入剖析内…

2026/7/7 18:49:57阅读更多 →
REPENTOGON脚本扩展器:彻底改变《以撒的结合》MOD开发体验的终极方案

REPENTOGON脚本扩展器:彻底改变《以撒的结合》MOD开发体验的终极方案

REPENTOGON脚本扩展器:彻底改变《以撒的结合》MOD开发体验的终极方案 【免费下载链接】REPENTOGON Script extender for The Binding of Isaac: Repentance 项目地址: https://gitcode.com/gh_mirrors/re/REPENTOGON 你是否曾经因为《以撒的结合》MOD功能受限…

2026/7/7 20:00:03阅读更多 →
BackgroundTasks 的使用场景与注意事项

BackgroundTasks 的使用场景与注意事项

🎯 后台任务能帮你干点啥?先给没接触过的朋友打个比方。你在一家高级餐厅,点完菜之后,服务员马上把单子给你,说“已经安排上了”,你就不用站在那儿等厨师切菜、开火。FastAPI里的后台任务就是那个贴心的服务…

2026/7/7 20:00:03阅读更多 →
从tcpdump到Wireshark:网络抓包实战与TCP/HTTP协议深度解析

从tcpdump到Wireshark:网络抓包实战与TCP/HTTP协议深度解析

1. 项目概述:从命令行到图形界面的网络流量洞察如果你是一名运维工程师、后端开发,或者对网络通信原理充满好奇,那么掌握网络抓包与分析技能,几乎是一项必备的生存技能。当你的服务响应变慢、连接莫名断开,或者你只是想…

2026/7/7 20:00:03阅读更多 →
Mac用户终极指南:5分钟搞定PDM文件查看,告别虚拟机烦恼!

Mac用户终极指南:5分钟搞定PDM文件查看,告别虚拟机烦恼!

Mac用户终极指南:5分钟搞定PDM文件查看,告别虚拟机烦恼! 【免费下载链接】ParsePDM Mac os 查看PDM文件 项目地址: https://gitcode.com/gh_mirrors/pa/ParsePDM 还在为Mac上无法查看PDM文件而烦恼吗?🤔 今天给…

2026/7/7 20:00:03阅读更多 →
基于AhMyth构建私有Android远程管理方案:从原理到实战部署

基于AhMyth构建私有Android远程管理方案:从原理到实战部署

1. 项目概述:为什么我们需要重新审视移动设备管理在移动办公和远程协作成为常态的今天,对Android设备进行安全、高效的管理与控制,早已不再是少数技术专家的专属领域。无论是企业IT部门需要批量部署应用、排查员工设备故障,还是个…

2026/7/7 20:00:03阅读更多 →
从零构建React电商项目:酷淘商场架构设计与核心模块实战

从零构建React电商项目:酷淘商场架构设计与核心模块实战

1. 项目概述与核心价值 最近几年,电商项目一直是前端开发者练手和面试展示的热门选择。从早期的仿京东、仿淘宝,到如今各种细分领域的商城,这类项目之所以经久不衰,是因为它几乎涵盖了现代Web应用开发的所有核心要素:用…

2026/7/7 19:55:02阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/7 4:43:43阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/7 2:56:31阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/7 1:03:28阅读更多 →
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践

Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践

1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8…

2026/7/7 0:02:41阅读更多 →
国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot) 🌐 演示地址:http://ruoyioffice.com | 📦 源码1GitHub:ruoyi-office | 📦 源码2GitCode:ruoyi-o…

2026/7/7 0:02:41阅读更多 →
CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS SSH连接故障排查:从基础检查到深度修复的完整指南引言当你尝试通过Xshell或其他SSH客户端连接CentOS服务器时,突然遭遇"Connection refused"或"Connection timed out"的错误提示,这种经历对任何运维人员或开发者来…

2026/7/7 0:02:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/7 5:11:21阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/7 5:11:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/7 5:11:21阅读更多 →