• [新特性] 版本速递 | 华为云AgentArts智能体开发平台,版本重大升级,品牌焕新+体验优化,已全新上线(2026年2月发布)
     < 华为云AgentArts智能体开发平台 体验入口>华为开发者空间--开发平台-- AgentArts (请在PC端打开)   hi各位开发者们,我们很高兴向大家宣布,原Versatile智能体平台迎来里程碑式更新!产品名称由“华为云Versatile智能体平台”变更为“华为云AgentArts智能体开发平台”,围绕“更贴切的产品理念表达、更朗朗上口的产品名“的初衷,实现全新品牌升级。本次版本升级以”如何让开发者更容易地构建出高质量的Agent应用?“为思考主线,面向百万开发者进行分层体验设计,通过极简开箱、模版预置一键应用、操作直观一步直达、意图精准收敛等,缩短端到端开发时间,面向用户开发、运行、运营运维全旅程,构建低门槛、高质量的全链路体验竞争力。新版本的体验改进覆盖界面UI设计、产品菜单布局、公测/订购流程、核心操作流程等多方面,以匹配新的产品架构,更易于用户理解,大幅降低使用门槛。从菜单整合到操作路径简化,从新增特性到交互优化,每一处改变都致力于让智能体的构建更简单、运行更稳健。——AgentArts产品团队   01 品牌焕新,全新启航从Versatile到AgentArts,品牌名称升级彰显华为云智能体家族的全面实力全新视觉系统,传递更专业、更易用、好用、开放的平台形象02 极简设计,一目了然全新界面以用户分类分层体验设计为核心,去除冗余元素,聚焦核心功能菜单架构整合重组,逻辑更清晰,操作路径缩短50%以上03 流程简化,高效操作关键功能界面优化布局,核心数据与操作入口一目了然。产品公测、订阅流程全面简化,一键提交,高效直通04 新增评估,加持运营运维观测能力:多维监测,帮助开发者和运维人员高效管理和优化系统评估能力:支持高效开展评估任务,开箱即用,保障AI应用的稳定运行 🤖TO 开发者:更流畅的智能体编排与调试体验,无论您是业务专家还是开发者,都可以通过自然语言或图形化拖拽,快速构建出具备专业知识、自主决策能力和系统执行力的“智能助手”;⚡TO 运维团队:全链路可视化观测+系统化评估能力,直击运维痛点;📈TO 企业管理者:纵览Agent开发与调用全局,辅助高效决策。    AgentArts是一个企业级一站式智能体构建与运营平台。它打破了传统开发壁垒,支持研发与业务人员通过可视化、低代码的方式,快速搭建从简单助手到复杂业务流的各类AI应用。平台覆盖了智能体全生命周期管理,核心能力包括灵活编排、能力集成、可信运维。AgentArts致力于降低大模型应用门槛,助力企业将AI能力与实际业务深度融合,实现规模化落地。总览首页是平台信息的综合门户,提供多维度的快捷入口,包括快速入门、深度开发、运营运维,以及精选案例、快速指引。资产广场资产广场提供了一系列丰富的资源和工具,包括应用模板、模型、MCP、插件、提示词。面向用户开放共享,快速复用资产,赋能开发者以“搭积木”的方式高效构建智能体。开发中心整合智能体管理、组件库、开发配置,用户在开发中心可灵活编排应用,通过可视化画布、拖拽式编排,极低门槛构建生产级智能体。运营运维囊括观测、评估等能力,实现端到端效果调优,通过运营运维体系确保Agent上线后的质量监控与持续进化。图:产品架构图    · 公测申请:新用户点击“立即申请”,一键提交申请,等待审批即可。大幅简化流程(备注:此项适用于未开通产品、申请公测的用户,将出现弹窗提醒申请) · 登陆平台时,弹窗提示新功能上线:便于用户快速浏览版本更新的新特性,了解产品动态(备注:此项适用于非首次开通产品的用户,将出现弹窗提示) · 首页改版:优化信息呈现,增强平台核心价值传递与入门指引优化点:通过页签切换,提供多维度业务快捷入口;案例区域用户可一键复制开启任务 · 菜单架构优化,整合相关联功能,支持展开、折叠。核心功能模块整合成四大块:总览、资产广场、开发中心、运营运维,以及管理面的授权管理、资源管理。图:菜单全貌图:点击资产广场进入子菜单 · 以页签形式切换展现各功能模块,保持整体形式一致性:分类清晰,提升操作流畅度 · 依赖云服务一键开通及授权:依赖云服务可以在购买页快速授权和开通,一体化开发体验,提升效率 · 一站式模型开通配置:同账号下MAAS已开通部署的模型服务,在AgentArts自动关联,模型配置列表进行标识 · 智能体管理页优化:3项应用构建模式页签切换,为新手提供开发步骤指引 · 单智能体编排体验优化优化点:界面布局优化,功能摆放更符合用户习惯,页面沉浸式增强;优化提示词区域、模版引用与保存功能的交互 · 工作流应用,编排体验优化:提供清晰流程执行逻辑,提升易操作性;优化点:连线操作区域放大,节点右侧输出桩可直接新增节点,新增后自动优化布局,连线结束方向增加箭头展示;支持常见快捷键和入口引导;键鼠结合的形式新增和删除节点 · 提交版本体验优化 :AI应用开发完成后,无需跳转新页面,直接弹窗完成任务 · 渠道管理体验优化:整合调用方式和分享渠道版块,方便用户操作    · 资产广场预置资产达200+:覆盖行业必备的应用模版、模型、MCP、插件、AI Capability等,全面扩展平台能力边界业务价值:开箱即用,支持用户快速复用资产、工具,降低开发门槛,高效构建AI应用,满足个人与企业用户的多样化需求。 ·工作流应用-代码节点支持智能生成代码:支持选择大模型智能优化代码,根据填写的描述、入参、出参及说明,精准生成适配代码。业务价值:AI自动生成适配代码,大幅降低编程门槛,提升代码逻辑和质量,效率加倍。图:填写描述、入参、出参及说明图:智能生成代码   评估是指通过一系列标准化的数据和评估标准,对AI Agent(智能体、工作流)效果评估的过程。评估功能旨在帮助开发者在多个维度上优化AI Agent,确保其在实际应用中表现更佳,同时提高开发效率和准确性。 AgentArts评估的整体业务价值:1)质量定调:为 Agent 的发布提供“准入标准”,通过量化分数(如相关性、合规性、准确性)代替主观感觉2)研发效能:自动化批量评估代替人工逐条审查,将原本需要数天的回归测试缩短至分钟级3)成本优化:在离线环境提前发现模型调用的冗余或逻辑死循环,降低线上 Token 消耗风险4)数据闭环:支持将线上 Bad Case 沉淀为测试集,实现“生产报错 -> 离线复现 -> 修复验证”的闭环 评估功能用户旅程:创建评测集->评估器->评估任务新增亮点功能:· 评估器:支持自定义评估器、离线评估以及模型判定LLM as a Judge;可开展评估器版本管理· 评测集:通过配置列信息,添加评测集数据,建立测试样本;支持多版本管理评测集· 评估任务:支持智能体评估全生命周期管理,借助评测集、评估器,对评估对象进行全面分析;支持实验室任务,可选自动化执行、在线查看评估报告等图:创建评测集图:创建评估器图:创建评估任务   诚邀您立即体验AgentArts智能体开发平台,解锁全新智能之旅!开发个人专属的生产级智能体。点击进入>>控制台  点击可前往>>华为云AgentArts智能体开发平台 官网
  • [技术干货] 一键完成GLM-5模型部署
    场景介绍本案例以Ascend-vLLM框架一键部署GLM-5模型为例,介绍ModelArts一键部署服务并调用的全流程。约束限制仅“西南-贵阳一”区域的控制台新版页面支持一键部署。服务部署在ModelArts管理控制台的“总览”页面,在GLM-5的banner区域,单击“一键部署”进入“创建服务”页面。在“创建服务”页面按照实际情况配置参数,单击“确定”。在对话框中确认计费影响, 单击“确定”。部署完成后,在ModelArts控制台的“模型推理>在线推理”页面,查看服务的基本情况。在线推理列表中,刚部署的服务“状态”为“部署中”,当在线服务的“状态”变为“运行中”时,表示服务部署完成。创建API KEY并绑定在线服务当前一键部署的服务默认使用API KEY鉴权,您需要创建您自己的API KEY,绑定这个预置服务。在ModelArts管理控制台“模型推理 > 在线推理”页面,单击“API Key授权管理”,切换到“API Key授权管理”页签。单击“创建”,在“创建API Key”弹框中,填写API KEY信息,授权范围选择“指定在线服务”,单击“确定”。创建API KEY后自动下载API Key,后续暂不支持手动下载,请妥善保管。如果授权范围选择“全部在线服务”,无需执行后面的绑定服务操作。单击API KEY操作列的“绑定”。在“绑定服务”弹框中,勾选服务部署创建的服务,单击“确定”。在线调试服务在ModelArts管理控制台“模型推理 > 在线推理”页面,单击已部署完成的服务,进入详情页。切换到“预测”页签,填写请求参数:请求参数:需要在已有的URL后添加/v1/chat/completions。Headers:添加请求头。“键”使用默认值“Authorization”,“值”中的API Key替换为创建API KEY并绑定在线服务中保存的API Key值。或删除Authorization键值对,系统将自动切换为IAM Token认证。Body选择“raw”,请求样例如下,复制到Body体区域,单击“预测”,右侧呈现预测结果。{ "model": "GLM-5", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "你好"} ]}实时比对部署后的服务支持和其他服务进行推理效果的实时对比。在ModelArts管理控制台“模型推理 > 在线推理”的服务列表页,单击右侧操作列的“实时比对”,进入“实时比对”页面。此时可以在实时比对页面体验问答服务效果。如果需要比对多个模型效果,在实时比对页面的右上角单击“服务对比”,勾选要对比的服务,单击“确定”。当前仅支持文本生成类服务对比。需要先部署服务才能选择输入问题,查看2个模型的回答效果。实时比对的更多功能介绍请参见文档《实时比对》服务调用部署后的服务支持和其他服务进行推理效果的实时对比。在线服务调用地址:在ModelArts管理控制台“模型推理>在线推理”页面,单击已部署完成的服务,进入详情页,获取服务的“公网调用URL”。大模型接口:GLM-5模型接口为/v1/chat/completions。更多模型接口请见表2。获取API Key:创建API KEY并绑定在线服务中保存的API Key值。参考文档:https://support.huaweicloud.com/bestpractice-modelarts/modelarts_06_0009.html
  • [课程学习] 华为云学堂节前学习大礼包来了!《OpenClaw 智能体与华为云实践》课程上新免费学习!
    《OpenClaw 智能体与华为云实践》一门课带你搞懂这些热门问题:→  OpenClaw是什么?→  OpenClaw何以成为目前开源社区最火项目?→  OpenClaw可以做什么?→  智能体也有专属的社交网站了?→  华为云上如何部署OpenClaw?→  本地部署OpenClaw有什么样安全挑战?→  用好OpenClaw还要有哪些考虑?【在线课程】OpenClaw 智能体与华为云实践:cid:link_0【实验链接】OpenClaw极速部署与应用实战:cid:link_1如果你也对这些问题感兴趣,现在就来华为云开发者学堂,开启你的学习之旅吧!
  • [公告] 新版-AI开发平台ModelArts 昇腾资源的购买指导
    购买资源文档指导华为AI百校计划官网地址:cid:link_3华为云官网:https://www.huaweicloud.com/?utm_source=bing&utm_medium=brand&utm_campaign=&utm_content=&utm_term=&utm_adplace=AdPlace090661价格详情:cid:link_1AI开发平台ModelArts:cid:link_2   
  • [产品解决方案] AICC 二次开发生产环境挂机返回延迟问题
    【问题来源】【必填】    南方电网【问题简要】【必填】  生产环境发现,用户在播报的时候挂机但实际给出的挂机是在播报结束后导致后续操作如播报等失败以及额外调用接口【问题类别】【必填】  二次开发【AICC解决方案版本】【必填】  AICC: 24.200【期望解决时间】  尽快定位问题【问题现象描述】【必填】1.座席测试在播报过程中进行挂机操作,但实际日志是走了播报结束2.查找挂机日志发现是在收号结束后才有而且收号失败为空
  • [案例共创] 【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成儿童跳绳视频计数应用系统开发/调试实践
    案例背景本案例基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发。1、项目开发目的本项目依托华为云 CodeArts 代码智能体的 AI 原生开发能力,快速开发儿童跳绳视频智能计数系统,通过 AI 视觉技术实现跳绳动作的自动识别与精准计数,核心解决传统人工计数、自主数绳的痛点,解放家长与教师的双眼双耳,让儿童专注跳绳运动本身;同时快速落地轻量、易用的智能计数产品,适配家庭日常锻炼、校园体育教学等核心场景,满足高效、精准的计数需求。2、项目开发意义实践应用意义:彻底改变传统跳绳计数模式,解决人工计数精准度低、耗时耗力,以及儿童自主数绳分心的问题,为家庭、校园提供低成本、高便捷性的智能计数工具,让跳绳运动更专注、高效,落地 “智慧体育” 在儿童运动场景的轻量应用。技术实践意义:验证 CodeArts 代码智能体在计算机视觉轻量系统开发中的落地价值,借助其快速开发能力大幅缩短研发周期、降低研发成本,为同类 AI 视觉轻量产品的开发提供可复用的技术路径与实践参考。教育体育意义:响应 “健康中国 2030” 与 “双减” 政策导向,助力校园智慧体育教学落地,减轻体育教师的教学辅助工作量,让教师更专注于运动指导;同时以科技赋能儿童运动,激发儿童跳绳运动兴趣,推动儿童日常体育锻炼的常态化开展。 一、概述1. 案例介绍CodeArts代码智能体是一款集IDE、Code Agent、代码大模型为一体的智能编码产品。它面向项目级代码生成、代码续写、研发知识问答、单元测试用例生成、代码解释、代码注释、代码调试、代码翻译、代码检查、代码优化等场景功能,为开发者提高研发效率,提供极致的智能化编码体验。本案例基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发。2. 适用对象个人开发者高校学生3. 案例时间本案例总时长预计45分钟。4. 案例流程说明:用户下载安装CodeArts代码智能体;登录CodeArts代码智能体,输入指令自动生成儿童跳绳视频计数系统代码;浏览器体验儿童跳绳视频计数系统。5. 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)CodeArts代码智能体通用体验版免费45二、基础环境与资源准备1. 下载安装CodeArts代码智能体参考教程,下载安装IDE:2. 登录CodeArts代码智能体安装完成之后,点击打开文件夹或新建项目,用于存放项目文件:登录CodeArts代码智能体:注意:如果已经登录华为账号,直接跳转至登录授权页面,否则,直接拉起华为账号登录界面。自动拉起华为账号登录界面,输入账号和密码:首次使用CodeArts代码智能体,会进入开通页面(若已经开通,会进入批准登录界面)。需要勾选“我已阅读并同意”后,单击“立即开通”,等待套餐开通完成。开通完成后,跳转至登录授权页面,点击确认授权:CodeArts代码智能体登录成功:登录成功之后,返回CodeArts代码智能体,即可体验使用。3. 验证CodeArts代码智能体输入问题:“你好,请介绍自己!”,验证CodeArts代码智能体:三、儿童跳绳视频计数系统代码实战1. CodeArts代码智能体生成代码输入以下指令,点击发送:接上文情况的优化情况,在TestDemo_06文件夹下实现一个jishu的Web应用,要求生成的界面简洁、美观、易用,针对待办应用的基础功能齐全。使用方法:直接在浏览器中打开 TestDemo_06/index.html 文件即可使用。请设计一款儿童跳绳视频自动计数程序,核心需求与技术方向如下:1. 功能目标:支持视频上传(兼容常见格式),自动完成跳绳次数统计并输出结果,区分跳绳中断重新起跳的情况,流程简洁易操作;2. 核心技术路径:优先基于音频分析实现计数,提取视频中跳绳落地的特征声纹,通过识别声音的时间间隔、重复节奏,判定单次跳绳动作并累加计数,规避环境杂音干扰;3. 辅助方案:可选视觉识别作为补充(如识别跳绳摆动轨迹/身体跳跃动作),无需复杂算法,满足基础计数兜底即可;4. 输出要求:需精准输出跳绳总次数,额外增加视频处理、动作分析、同步计数等附加功能。优化补充:定位具体问题,建议你在代码中加入以下调试步骤:1. 可视化: 画出提取出的波形图,标记出你程序认为的“击打点”。如果图上一片空白或者标记点全在波谷,那就是阈值问题。2. 试听: 将提取出来的 .wav 音频文件保存下来,用耳机听一听,确认人耳能清晰分辨节奏。如果人耳都听不清,算法更做不到。3. 打印中间值: 打印出当前帧的最大音量、计算出的能量值,看看到底是多少,是不是比你的阈值小几个数量级。建议考虑视觉方案,这通常是更稳健的路线:姿态估计: 使用 MediaPipe 或 OpenPose 检测手腕或脚踝的关键点轨迹。物体检测: 检测跳绳本身或人的整体 bounding box 的上下移动。光流法: 计算画面的整体运动像素变化。 注意修复报错信息: (1)Cannot set properties of null (setting 'textContent');(2)drawConnectors is not defined,CodeArts代码智能体通过规划任务,开始创自动生成项目代码:注意:涉及变更文件的时候,我们点击全部接受。大约几分钟之后,CodeArts代码智能体帮助我们在当前工作目录下,创建了一个完整的儿童跳绳视频计数Web应用:2. 测试体验儿童跳绳视频计数系统在浏览器中打开index.html文件或者在agent中右键打开预览:点击或拖拽上传视频或者音频,选择检测类型:点击开始分析,等待分析结果,可多调试几次,调整阈值:(未接入大模型,及深度开发,无法自行优化)3.实际验证部分:  注意:点名签到系统应用是由Agent自动生成,每次提问生成的代码及最后的运行结果均存在出入,开发者可根据自己的需求,调教模型生成自己想要的结果。若想体验与案例一样的结果,请下载源码至本地运行。详见附件。至此,基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发的案例已全部完成。四、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!
  • [案例共创] 【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成儿童跳绳视频智能计数系统应用开发/调试实践
    案例背景本案例基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发。1、项目开发目的本项目依托华为云 CodeArts 代码智能体的 AI 原生开发能力,快速开发儿童跳绳视频智能计数系统,通过 AI 视觉技术实现跳绳动作的自动识别与精准计数,核心解决传统人工计数、自主数绳的痛点,解放家长与教师的双眼双耳,让儿童专注跳绳运动本身;同时快速落地轻量、易用的智能计数产品,适配家庭日常锻炼、校园体育教学等核心场景,满足高效、精准的计数需求。 2、项目开发意义实践应用意义:彻底改变传统跳绳计数模式,解决人工计数精准度低、耗时耗力,以及儿童自主数绳分心的问题,为家庭、校园提供低成本、高便捷性的智能计数工具,让跳绳运动更专注、高效,落地 “智慧体育” 在儿童运动场景的轻量应用。技术实践意义:验证 CodeArts 代码智能体在计算机视觉轻量系统开发中的落地价值,借助其快速开发能力大幅缩短研发周期、降低研发成本,为同类 AI 视觉轻量产品的开发提供可复用的技术路径与实践参考。教育体育意义:响应 “健康中国 2030” 与 “双减” 政策导向,助力校园智慧体育教学落地,减轻体育教师的教学辅助工作量,让教师更专注于运动指导;同时以科技赋能儿童运动,激发儿童跳绳运动兴趣,推动儿童日常体育锻炼的常态化开展。 一、概述1. 案例介绍CodeArts代码智能体是一款集IDE、Code Agent、代码大模型为一体的智能编码产品。它面向项目级代码生成、代码续写、研发知识问答、单元测试用例生成、代码解释、代码注释、代码调试、代码翻译、代码检查、代码优化等场景功能,为开发者提高研发效率,提供极致的智能化编码体验。本案例基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发。2. 适用对象个人开发者高校学生3. 案例时间本案例总时长预计45分钟。4. 案例流程说明:用户下载安装CodeArts代码智能体;登录CodeArts代码智能体,输入指令自动生成儿童跳绳视频计数系统代码;浏览器体验儿童跳绳视频计数系统。5. 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)CodeArts代码智能体通用体验版免费45二、基础环境与资源准备1. 下载安装CodeArts代码智能体参考教程,下载安装IDE:2. 登录CodeArts代码智能体安装完成之后,点击打开文件夹或新建项目,用于存放项目文件:登录CodeArts代码智能体:注意:如果已经登录华为账号,直接跳转至登录授权页面,否则,直接拉起华为账号登录界面。自动拉起华为账号登录界面,输入账号和密码:首次使用CodeArts代码智能体,会进入开通页面(若已经开通,会进入批准登录界面)。需要勾选“我已阅读并同意”后,单击“立即开通”,等待套餐开通完成。开通完成后,跳转至登录授权页面,点击确认授权:CodeArts代码智能体登录成功:登录成功之后,返回CodeArts代码智能体,即可体验使用。3. 验证CodeArts代码智能体输入问题:“你好,请介绍自己!”,验证CodeArts代码智能体:三、儿童跳绳视频计数系统代码实战1. CodeArts代码智能体生成代码输入以下指令,点击发送:接上文情况的优化情况,在TestDemo_06文件夹下实现一个jishu的Web应用,要求生成的界面简洁、美观、易用,针对待办应用的基础功能齐全。使用方法:直接在浏览器中打开 TestDemo_06/index.html 文件即可使用。请设计一款儿童跳绳视频自动计数程序,核心需求与技术方向如下:1. 功能目标:支持视频上传(兼容常见格式),自动完成跳绳次数统计并输出结果,区分跳绳中断重新起跳的情况,流程简洁易操作;2. 核心技术路径:优先基于音频分析实现计数,提取视频中跳绳落地的特征声纹,通过识别声音的时间间隔、重复节奏,判定单次跳绳动作并累加计数,规避环境杂音干扰;3. 辅助方案:可选视觉识别作为补充(如识别跳绳摆动轨迹/身体跳跃动作),无需复杂算法,满足基础计数兜底即可;4. 输出要求:需精准输出跳绳总次数,额外增加视频处理、动作分析、同步计数等附加功能。优化补充:定位具体问题,建议你在代码中加入以下调试步骤:1. 可视化: 画出提取出的波形图,标记出你程序认为的“击打点”。如果图上一片空白或者标记点全在波谷,那就是阈值问题。2. 试听: 将提取出来的 .wav 音频文件保存下来,用耳机听一听,确认人耳能清晰分辨节奏。如果人耳都听不清,算法更做不到。3. 打印中间值: 打印出当前帧的最大音量、计算出的能量值,看看到底是多少,是不是比你的阈值小几个数量级。建议考虑视觉方案,这通常是更稳健的路线:姿态估计: 使用 MediaPipe 或 OpenPose 检测手腕或脚踝的关键点轨迹。物体检测: 检测跳绳本身或人的整体 bounding box 的上下移动。光流法: 计算画面的整体运动像素变化。 注意修复报错信息: (1)Cannot set properties of null (setting 'textContent');(2)drawConnectors is not defined,CodeArts代码智能体通过规划任务,开始创自动生成项目代码:注意:涉及变更文件的时候,我们点击全部接受。大约几分钟之后,CodeArts代码智能体帮助我们在当前工作目录下,创建了一个完整的儿童跳绳视频计数Web应用:2. 测试体验儿童跳绳视频计数系统在浏览器中打开index.html文件或者在agent中右键打开预览:点击或拖拽上传视频或者音频,选择检测类型:点击开始分析,等待分析结果,可多调试几次,调整阈值:(未接入大模型,及深度开发,无法自行优化)3.实际验证部分:  注意:点名签到系统应用是由Agent自动生成,每次提问生成的代码及最后的运行结果均存在出入,开发者可根据自己的需求,调教模型生成自己想要的结果。若想体验与案例一样的结果,请下载源码至本地运行。详见附件。至此,基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发的案例已全部完成。四、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!
  • [技术干货] NPU服务器上配置Lite Server资源软件环境
    服务器SSH连接超时参数SSH登录到Lite Server服务器后,查看机器配置的超时参数。echo $TMOUT如果该值为300,则代表默认空闲等待5分钟后会断开连接,可以增大该参数延长空闲等待时间;如果该值为0可跳过当前步骤。修改方法如下:vim /etc/profile # 在文件最后修改TMOUT值,由300改为0,0表示不会空闲断开 export TMOUT=0执行如下命令使其在当前terminal生效。TMOUT=0export TMOUT=0这个命令在SSH连接Linux服务器时的作用是设置会话的空闲超时时间为0,意味着不会因为空闲而自动断开连接。默认情况下,SSH连接可能会在一段时间没有操作后自动断开,这是为了安全考虑。但是,如果您正在进行需要长时间保持连接的任务,可以使用这个命令来防止连接因为空闲而断开。您可以在当前的终端会话中直接执行TMOUT=0使设置立即生效,或者将export TMOUT=0添加到/etc/profile文件中,以确保所有用户的新会话都不会因为空闲而断开。但是在生产环境或多人使用的公共服务器上,不建议设置TMOUT=0,关闭自动注销功能会带来一定的安全风险。磁盘合并挂载首先通过“lsblk”查看是否有3个7T的磁盘未挂载编辑磁盘挂载脚本create_disk_partitions.sh。该脚本将“/dev/nvme0n1”挂载在“/home”下供每个开发者创建自己的家目录,将nvme1n1、nvme2n1两个本地盘合并挂载到“/docker”下供容器使用(如果不单独给“/docker”分配较大空间,当多人共用同一台Lite Server并创建多个容器实例时容易将根目录占满)vim create_disk_partitions.shcreate_disk_partitions.sh脚本内容如下,可以直接使用,不需要修改。# ============================================================================ # 将nvme0n1本地盘挂载到/home目录下, # 将nvme1n1、nvme2n1本地盘合并作为逻辑卷统一挂载到/docker目录下,并设置开机自动挂载。 # ============================================================================ set -e # 将nvme0n1挂载到用户目录 mkfs -t xfs /dev/nvme0n1 mkdir -p /tmp/home cp -r /home/* /tmp/home/ mount /dev/nvme0n1 /home mv /tmp/home/* /home/ rm -rf /tmp/home # 将nvme1n1、nvme2n1合并挂载到/docker目录 pvcreate /dev/nvme1n1 pvcreate /dev/nvme2n1 vgcreate nvme_group /dev/nvme1n1 /dev/nvme2n1 lvcreate -l 100%VG -n docker_data nvme_group mkfs -t xfs /dev/nvme_group/docker_data mkdir /docker mount /dev/nvme_group/docker_data /docker # 迁移docker文件到新的/docker目录 systemctl stop docker mv /var/lib/docker/* /docker sed -i '/"default-runtime"/i\ "data-root": "/docker",' /etc/docker/daemon.json systemctl start docker # 设置开机自动挂载 uuid=`blkid -o value -s UUID /dev/nvme_group/docker_data` && echo UUID=${uuid} /docker xfs defaults,nofail 0 0 >> /etc/fstab uuid=`blkid -o value -s UUID /dev/nvme0n1` && echo UUID=${uuid} /home xfs defaults,nofail 0 0 >> /etc/fstab mount -a df -h执行自动化挂载脚本create_disk_partitions.sh。sh create_disk_partitions.sh配置完成后,执行“df -h”可以看到新挂载的磁盘信息磁盘合并挂载后,即可在“/home”下创建自己的工作目录,以自己的名字命名安装驱动和固件、安装Docker环境、安装pip源、RoCE网络测试、容器化个人调测环境搭建请参考文档
  • 【话题交流】新年即将到来,大家心里最期待的是什么呢?
    【话题交流】新年即将到来,大家心里最期待的是什么呢?
  • [技术干货] 1月技术干货应用文章合集
     1、 我理解的Kubernetes:从"会用"到"用好"文章链接:cid:link_0文章描述:K8S集群由控制平面(Control Plane)和工作节点(Worker Node)组成。控制平面就是"大脑",负责做全局决策。工作节点就是"四肢",负责实际跑应用。控制平面有几个核心组件:API Server是前台,所有请求都经过它。你执行kubectl命令,其实就是调API Server的接口。etcd是档案室,存着集群的所有状态数据。节点信息、Pod状态、Service配置,都存在这里...2、 AI的2025:从"能用"到"好用"的关键一年文章链接:cid:link_1文章描述:说起来,2025年刚结束的时候,我在即刻上发了一条动态:"回想一下年初写的AI预测文章,现在看真是挺惭愧的。好多事情,我压根没想到会这么快发生。"这条动态引起了不少共鸣。评论区里有人说:"我也一样,年底回看年初,感觉像是过了十年。"为什么会有这种感觉呢?我想了很久,觉得核心原因可能是:2025年,AI完成了一次质变。不是参数更大了,不是评测分数更高了,而是从"能用"变成了"好用"。...3、 【全网最细】CentOS 安装 JDK 1.8 实操指南(避坑版)文章链接:cid:link_2文章描述:一、下载 JDK 1.8 安装包JDK 1.8 是企业级应用的经典稳定版本,优先从官方渠道下载适配 Linux 64 位的压缩包:官方下载地址:Java Downloads | Oracle小技巧:Oracle 官网下载需登录,若嫌麻烦,可选择华为云 / 阿里云镜像站(如 https://mirrors.huaweicloud.com/openjdk),下载速度更快且无需登录。...4、Java IO流实战——文件上传下载与批量处理文章链接:cid:link_3文章描述:IO流是Java核心基础知识点,用于处理文件、网络数据等输入输出操作,在实际开发中应用广泛(如文件上传下载、日志读写、数据导入导出等)。本文将围绕文件上传、文件下载、批量读取文件内容三个核心场景,结合Spring Boot框架,实现完整的IO流实战案例,包含详细代码与场景说明,帮助开发者快速掌握IO流的实际应用...5、 AI病理文摘 | IEEE权威综述: 病理AI中的生成式人工智能——它是什么,又为何重要?文章链接:cid:link_4文章描述:在过去的几年里,生成式人工智能(Generative AI)这个词从技术圈走进了公众视野,从图像到文字、从语言到多模态,几乎无处不在。无论是ChatGPT写文案、Midjourney作画,还是大模型自动生成报告、代码与图像,生成式AI已成为智能时代最具标志性的技术概念之一。但当我们回到病理AI领域,一个常见的困惑出现了:生成式AI在病理AI中到底指的是什么?它和我们熟悉的病理大模型(foundation model)、神经网络、甚至传统的分类与分割算法有什么不同?它生成的究竟是图像、文本,还是一种新的“知识形式”?...6、一文深入浅出了解病理的分类算法原理文章链接:cid:link_5文章描述:传统病理是癌症诊断的“金标准”:医生将组织切成薄片、染色(如H&E),在显微镜下寻找异常细胞。数字病理则是通过扫描仪将切片转为像素高达百亿级的超大图像(WSI)。AI诊断原理:由于WSI体积巨大,无法直接整体输入。AI通过“化整为零”,将大图切成成千上万个小方块(Patch),利用深度神经网络提取每个小方块的特征。AI通过学习海量切片,建立从微观细胞异质性到宏观组织形态的映射...7、 CopyOnWriteArrayList:写时复制机制与高效并发访问文章链接:cid:link_6文章描述:CopyOnWrite容器即写时复制的容器。通俗的理解是当往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器里的值Copy到新的容器,然后再往新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读 要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器...8、 Skills生态建设与未来展望文章链接:cid:link_7文章描述:在AI技术民主化的浪潮中,Skills正从孤立的技术组件演变为繁荣的生态系统。本文探讨Skills生态的建设路径、技术趋势和未来发展方向,为构建开放、协作、创新的Skills生态提供战略思考... 
  • [介绍/入门] RISC-V 架构在 OpenHarmony 中的系统级支持实现
     随着国产芯片生态的发展,鸿蒙系统积极拥抱开源指令集架构 RISC-V。OpenHarmony 作为鸿蒙的开源底座,已完整集成对 RISC-V 的支持,覆盖从启动引导、内核调度到应用运行的全栈能力。这一集成不仅体现技术兼容性,更标志着鸿蒙向“硬件无关”操作系统愿景迈出关键一步。其核心工作集中在三个层面:启动链适配、内核移植与工具链协同。一、安全启动链(Secure Boot)重构RISC-V 平台通常缺乏 ARM TrustZone 等商业 TEE 方案,因此 OpenHarmony 采用 SBI(Supervisor Binary Interface)作为可信根:// boot.s (RISC-V 汇编).section .text.boot.global _start_start: // 1. 关中断,初始化栈 csrw sstatus, zero la sp, __boot_stack_top // 2. 跳转至 C 初始化函数 call platform_init call kernel_main在 platform_init 中,系统验证下一阶段镜像签名:// riscv_boot.cvoid platform_init(void) { // 从 OTP 或 eFuse 读取公钥哈希 uint8_t root_pubkey_hash[32]; read_otp(ROOT_PUBKEY_HASH_ADDR, root_pubkey_hash); // 验证 Kernel 镜像签名(SM2/SHA256) if (!verify_signature(KERNEL_IMAGE_ADDR, root_pubkey_hash)) { panic("Kernel signature verification failed!"); } // 初始化 SBI 控制台(用于早期日志) sbi_console_init();}此流程确保从 BootROM 到内核的每一跳均受密码学保护。二、LiteOS-A 内核 RISC-V 移植OpenHarmony 的轻量内核 LiteOS-A 针对 RISC-V 进行了深度适配,关键包括:中断控制器:支持 PLIC(Platform-Level Interrupt Controller);时钟源:使用 RDCYCLE 寄存器实现高精度计时;内存管理:适配 Sv39 分页机制(39位虚拟地址)。以上下文切换为例:// los_context_riscv.S.globl LOS_SwitchContextLOS_SwitchContext: // 保存当前任务寄存器 addi sp, sp, -16*8 sd x1, 0*8(sp) sd x5, 1*8(sp) // t0 // ... 保存 x8-x31 sd x31, 15*8(sp) // 更新当前任务栈指针 la t0, g_currentTask sd sp, 0(t0) // 加载新任务上下文 mv sp, a0 // a0 = new task stack ld x1, 0*8(sp) ld x5, 1*8(sp) // ... 恢复 x8-x31 ld x31, 15*8(sp) addi sp, sp, 16*8 ret该汇编代码确保任务切换开销控制在 1μs 以内。三、ArkTS 应用运行时适配为支持上层应用,OpenHarmony 在 RISC-V 上构建了完整的运行时环境:# 构建工具链示例riscv64-unknown-linux-gnu-gcc \ -march=rv64gc \ # 支持原子、浮点等扩展 -mabi=lp64d \ # 双精度浮点 ABI -O2 \ -fno-plt \ -I./kernel/include \ -L./libs \ -lark_runtime \ -o app_riscv方舟运行时(Ark Runtime)针对 RISC-V 特性优化:使用 LR/SC 指令实现无锁并发;利用 V 向量扩展加速 GC 扫描;对齐 64 位指针模型,避免地址截断。四、设备抽象层统一OpenHarmony 通过 HDF(Hardware Driver Foundation)屏蔽硬件差异:// riscv_gpio_driver.cstruct GpioMethod g_riscvGpioOps = { .read = RiscvGpioRead, .write = RiscvGpioWrite, .setDir = RiscvGpioSetDirection};int32_t HdfRiscvGpioDriverBind(struct HdfDeviceObject *device) { // 注册 GPIO 接口到 HDF 总线 return GpioDeviceAdd(device->property, &g_riscvGpioOps);}开发者编写一次驱动,即可在 RISC-V、ARM 等平台复用。目前,OpenHarmony 已在多款 RISC-V 开发板(如 VisionFive 2、Lichee RV)上成功运行,支持 Wi-Fi、显示、传感器等外设,并可流畅执行 ArkTS 应用。这一成果不仅推动国产芯片生态发展,更验证了鸿蒙“一次开发,多芯部署”的跨架构能力——无论底层是 ARM、x86 还是 RISC-V,上层应用体验始终一致。这正是操作系统作为数字底座的核心价值:让创新聚焦于应用,而非被硬件碎片化所困。
  • [介绍/入门] 鸿蒙os 系列十二 -超级终端控制中心中的设备协同关系可视化管理
     在鸿蒙的“超级终端”理念中,多设备不再是孤立硬件,而是可自由组合的能力单元。为让用户直观掌控这一复杂协同网络,系统提供了超级终端控制中心——一个图形化界面,实时展示设备拓扑、连接状态与服务流转路径,并支持拖拽式任务调度。其实现融合了分布式软总线发现、设备能力画像与动态 UI 渲染三大技术。当用户从屏幕侧边滑出控制中心时,系统执行以下流程:// 控制中心主逻辑(ArkTS)@Entry@Componentstruct SuperDevicePanel { @State deviceGraph: DeviceNode[] = []; @State activeConnections: ConnectionEdge[] = []; aboutToAppear() { this.refreshDeviceTopology(); } private async refreshDeviceTopology() { // 1. 获取所有可信设备(来自分布式软总线) const devices = await deviceManager.getTrustedDeviceList(); // 2. 为每个设备构建能力画像 const nodes: DeviceNode[] = []; for (const dev of devices) { const capabilities = await this.fetchDeviceCapabilities(dev.deviceId); nodes.push({ id: dev.deviceId, name: dev.deviceName, type: this.mapDeviceType(dev.deviceType), // phone/tablet/watch/car icon: this.getIconByType(dev.deviceType), status: dev.networkStatus, // online/offline services: capabilities // 如: ['audio_output', 'camera', 'display'] }); } // 3. 查询当前活跃连接(如手机音频输出到音箱) const edges = await taskScheduler.getActiveConnections(); this.deviceGraph = nodes; this.activeConnections = edges; } build() { Column() { Text('我的超级终端') .fontSize(20) .fontWeight(FontWeight.Bold) .margin({ top: 16, bottom: 12 }) // 设备拓扑图(使用自定义Canvas组件) DeviceTopologyView({ nodes: this.deviceGraph, edges: this.activeConnections, onNodeClick: (node) => this.showDeviceActions(node), onEdgeRemove: (edge) => this.disconnectService(edge) }) .width('100%') .height(300) } .padding(16) } private async fetchDeviceCapabilities(deviceId: string): Promise<string[]> { // 调用分布式能力注册中心 const registry = distributedCapability.getRegistry(); return await registry.queryCapabilities(deviceId); } private showDeviceActions(node: DeviceNode) { // 弹出操作菜单:如“将视频迁移到此设备” promptActionMenu(node.services, (action) => { if (action === 'migrate_video') { this.migrateCurrentVideoTo(node.id); } }); } private migrateCurrentVideoTo(targetDevice: string) { // 触发分布式任务调度 abilityContext.continueAbility(targetDevice, { task: 'video_playback', current_position: getCurrentPlaybackPos() }); }}其中,DeviceTopologyView 是一个自定义绘制组件,使用 Canvas API 动态渲染设备节点与连接线:@Componentstruct DeviceTopologyView { nodes: DeviceNode[]; edges: ConnectionEdge[]; build() { Canvas(this.drawTopology) .width('100%') .height('100%') } private drawTopology = (canvas: CanvasRenderingContext2D) => { // 绘制设备图标(按类型布局) this.nodes.forEach(node => { const x = this.calculateXPosition(node.type); const y = this.calculateYPosition(node.type); // 绘制设备图标 canvas.drawImage( this.loadIcon(node.icon), x - 24, y - 24, 48, 48 ); // 绘制设备名称 canvas.fillText(node.name, x, y + 40); }); // 绘制活跃连接(带箭头的曲线) this.edges.forEach(edge => { const from = this.getNodeById(edge.from); const to = this.getNodeById(edge.to); canvas.beginPath(); canvas.moveTo(from.x, from.y); canvas.bezierCurveTo( (from.x + to.x)/2, from.y - 50, (from.x + to.x)/2, to.y - 50, to.x, to.y ); canvas.strokeStyle = '#007DFF'; canvas.lineWidth = 2; canvas.stroke(); // 绘制箭头 this.drawArrowhead(canvas, to.x, to.y, Math.atan2(to.y - from.y, to.x - from.x)); }); }; private drawArrowhead(ctx: CanvasRenderingContext2D, x: number, y: number, angle: number) { ctx.save(); ctx.translate(x, y); ctx.rotate(angle); ctx.beginPath(); ctx.moveTo(0, 0); ctx.lineTo(-6, -3); ctx.lineTo(-6, 3); ctx.closePath(); ctx.fillStyle = '#007DFF'; ctx.fill(); ctx.restore(); }}该界面的核心价值在于:实时性:通过分布式软总线事件监听,设备上线/下线即时刷新;语义化:连接线标注服务类型(如“音频”“摄像头”),而非仅显示“已连接”;可操作:点击连接线可断开特定服务,拖拽应用图标到设备可迁移任务。例如,当用户将手机上的视频播放器图标拖到智慧屏节点时,系统自动:检查智慧屏是否支持 video_playback 服务;调用 continueAbility 发起迁移;在拓扑图中新增一条“视频”连接线。这种可视化协同管理,将抽象的分布式能力转化为直观的空间关系,大幅降低用户认知负荷。它不仅是控制面板,更是“超级终端”理念的交互载体——让多设备协同从技术概念变为可感知、可操控的日常体验。
  • [介绍/入门] 鸿蒙os 系列十一 -星盾安全架构中的硬件级可信执行环境集成
     在鸿蒙系统的安全体系中,星盾安全架构(StarShield Security Architecture)通过在麒麟、巴龙等自研 SoC 中集成专用安全芯片,构建从硬件到应用的全栈可信链。其核心是硬件级可信执行环境(TEE, Trusted Execution Environment),为生物识别、数字支付、加密密钥等敏感操作提供物理隔离的执行空间。与软件沙箱不同,TEE 利用 ARM TrustZone 或 RISC-V Keystone 等技术,在 CPU 层面划分 安全世界(Secure World)与普通世界(Normal World)。即使操作系统被完全攻破,攻击者也无法访问 TEE 内存。以下以指纹支付场景为例,展示其工作流程。当用户触发支付时,应用调用系统安全服务:// ArkTS 应用层import security from '@ohos.security';async function initiatePayment(amount: number) { try { // 1. 请求进入安全认证流程 const authResult = await security.authenticate({ authType: security.AuthType.FINGERPRINT, purpose: 'payment', amount: amount.toString() }); if (authResult.success) { // 2. 获取一次性交易令牌(非原始密钥!) const token = authResult.transactionToken; // 3. 将令牌发送至支付网关(经普通世界网络栈) await sendToPaymentGateway(token); } } catch (err) { console.error('Authentication failed:', err.message); }}该请求经由内核路由至 TA(Trusted Application):// TEE 内部 - 支付认证 TA(运行于安全世界)#include <tee_api.h>TEE_Result TA_InvokeCommandEntryPoint( void* session, uint32_t cmd_id, uint8_t* in, size_t in_len, uint8_t* out, size_t* out_len){ switch (cmd_id) { case CMD_AUTHENTICATE_FINGERPRINT: // 1. 验证调用来源(仅允许系统UI进程) if (!IsCallerTrusted()) return TEE_ERROR_ACCESS_DENIED; // 2. 触发指纹传感器(直连安全通道) uint8_t template[TEMPLATE_SIZE]; if (!ReadFingerprintTemplate(template)) return TEE_ERROR_BAD_PARAMETERS; // 3. 在TEE内部比对模板(原始数据永不离开) if (!VerifyAgainstEnrolledTemplate(template)) { RecordFailedAttempt(); return TEE_ERROR_MAC_INVALID; } // 4. 生成一次性交易令牌(绑定设备+时间+金额) TransactionToken token; GenerateOneTimeToken(&token, in /* amount */); // 5. 加密后返回至普通世界 EncryptAndExportToken(&token, out, out_len); return TEE_SUCCESS; } return TEE_ERROR_NOT_IMPLEMENTED;}关键安全机制包括:硬件直连:指纹传感器通过专用总线连接 TEE,数据不经过主内存;密钥隔离:设备唯一密钥(DUK)熔断在 SoC 中,无法读取;防回滚:安全计数器防止降级攻击;侧信道防护:执行时间恒定,抵御功耗/电磁分析。此外,星盾架构还提供 安全存储 能力:// 在TEE中安全保存用户数据TEE_Result SecureSaveUserData(const void* data, size_t len) { // 1. 使用设备唯一密钥派生存储密钥 TEE_OperationHandle op; TEE_DeriveKey(device_unique_key, "userdata", &storage_key); // 2. 加密数据 TEE_CipherInit(op, iv, sizeof(iv)); TEE_CipherUpdate(op, data, len, encrypted_data, &enc_len); // 3. 写入RPMB(Replay Protected Memory Block) return RPMB_Write(encrypted_data, enc_len);}RPMB 是 eMMC/UFS 中的硬件保护区域,每次写入需 HMAC 认证,且支持防重放计数器。对开发者而言,所有 TEE 交互均通过高层 API 封装,无需处理底层细节。但系统强制要求:敏感操作必须声明 ohos.permission.USE_SECURE_ELEMENT;应用签名需通过华为安全审核;TEE 应用(TA)需预置在固件中,不可动态加载。这种“硬件信任根 + 软件最小化”设计,使鸿蒙在移动支付、电子身份证、车钥匙等高安全场景中具备坚实基础。星盾不仅是一个功能模块,更是将安全从“可选项”变为“默认态”的架构承诺——在数据成为新石油的时代,信任必须植根于硅片之中。
  • [介绍/入门] 鸿蒙os 系列十 - 端侧 AI 框架中的模型量化与硬件加速集成
    在鸿蒙的端侧智能场景中,如实时图像识别、语音唤醒或场景感知,AI 模型需在有限算力与功耗下高效运行。MindSpore Lite 作为鸿蒙集成的轻量级推理引擎,通过模型量化与异构硬件调度技术,将大模型压缩至 KB 级,并利用 NPU、DSP 等专用硬件实现毫秒级推理。以下以人脸检测模型为例,展示从训练到部署的全流程。首先,在训练阶段进行量化感知训练(Quantization-Aware Training, QAT):# PyTorch 风格伪代码(实际使用 MindSpore)import mindspore as msfrom mindspore.nn import QuantizationAwareTraining# 加载预训练浮点模型model = load_pretrained_face_detector()# 插入伪量化节点quantizer = QuantizationAwareTraining( weight_bits=8, activation_bits=8, quant_delay=1000 # 前1000步不量化,稳定训练)quantized_model = quantizer(model)# 微调量化模型train(quantized_model, dataset, epochs=5)# 导出为 MindIR 格式ms.export(quantized_model, input_data, file_name="face_det_quant", file_format="MINDIR")量化后,模型体积从 12MB(FP32)降至 3MB(INT8),且精度损失控制在 1% 以内。接着,通过 HUAWEI CANN 工具链将模型编译为设备专用格式:# 转换并优化模型atc --model=face_det_quant.mindir \ --framework=5 \ # MindSpore --output=face_det_om \ # 输出.om模型 --soc_version=Ascend310 # 目标NPU芯片 --precision_mode=allow_mix_precision # 允许混合精度在应用层,通过 ArkTS 调用推理接口:import { model } from '@ohos.ai';@Entry@Componentstruct FaceDetectionApp { private inferenceModel?: model.Model; aboutToAppear() { this.loadModel(); } private async loadModel() { try { // 1. 创建模型实例 this.inferenceModel = new model.Model(); // 2. 加载设备优化后的.om模型 const modelPath = 'entry/models/face_det_om.om'; await this.inferenceModel.load(modelPath); // 3. 配置推理参数(自动选择最优硬件) const options: model.ModelOptions = { // 优先使用NPU,若不可用则回退到CPU device: model.DeviceType.NPU | model.DeviceType.CPU, precision: model.PrecisionType.INT8 }; await this.inferenceModel.setOptions(options); console.info('Model loaded and ready for inference'); } catch (err) { console.error('Model loading failed:', JSON.stringify(err)); } } private async runInference(imageData: ArrayBuffer): Promise<FaceBox[]> { if (!this.inferenceModel) return []; try { // 构造输入Tensor(假设输入尺寸224x224 RGB) const inputTensor = new model.Tensor( [1, 3, 224, 224], model.DataType.FLOAT32, imageData ); // 执行推理(底层自动调度至NPU) const outputs = await this.inferenceModel.run([inputTensor]); // 解析输出:[num_boxes, 4] + [num_boxes] const boxes = outputs[0].getData() as Float32Array; const scores = outputs[1].getData() as Float32Array; // 过滤低置信度结果 const results: FaceBox[] = []; for (let i = 0; i < scores.length; i++) { if (scores[i] > 0.7) { results.push({ x: boxes[i * 4], y: boxes[i * 4 + 1], width: boxes[i * 4 + 2] - boxes[i * 4], height: boxes[i * 4 + 3] - boxes[i * 4 + 1] }); } } return results; } catch (err) { console.error('Inference error:', JSON.stringify(err)); return []; } } build() { // UI 部分略... }}系统底层根据设备能力自动选择执行后端:麒麟 SoC:调度至 NPU(达 16TOPS 算力),推理耗时 < 15ms;无 NPU 设备:回退至 CPU SIMD 指令(NEON),耗时 < 80ms;低功耗场景:可强制使用 DSP,功耗降低 40%。此外,MindSpore Lite 还支持动态批处理与内存复用:// C++ 层优化(开发者不可见)void OptimizeMemory(Model* model) { // 合并生命周期不重叠的张量 model->enable_memory_reuse(); // 自动调整 batch size 以匹配硬件缓存 model->set_dynamic_batching({1, 2, 4});} 
  • [介绍/入门] 鸿蒙os 系列九 - 形式化验证在鸿蒙微内核安全中的实践
     在操作系统安全领域,传统测试方法难以覆盖所有边界条件和并发场景。鸿蒙微内核为实现“无后门、无死锁”的可信底座,引入形式化验证(Formal Verification)技术,通过数学逻辑对关键模块进行端到端证明。这一过程并非理论空谈,而是与代码开发深度集成的工程实践。其核心方法是:将内核行为建模为状态机,用逻辑公式描述安全属性,再通过定理证明器自动验证这些属性是否恒成立。以进程间通信(IPC)模块为例,需确保以下安全不变式(Safety Invariants):权限隔离:非授权进程无法读取或篡改其他进程的消息;内存安全:消息传递不越界访问内核或用户内存;活性保障:发送方不会因接收方阻塞而永久挂起(无死锁)。上海交通大学团队为此构建了 FLYS 验证框架,其工作流程如下:# FLYS 框架伪代码示例class IPCVerifier: def __init__(self): # 1. 构建状态模型 self.state = StateModel( processes=Set[Process], message_queues=Dict[PortID, Queue[Message]], memory_map=Dict[Addr, Permission] ) # 2. 定义安全属性(Hoare 逻辑三元组) self.safety_rules = [ # 规则1:发送消息需持有目标端口能力 ForAll(p: Process, m: Message, Requires(p.has_capability(m.dst_port)), Ensures(m in self.message_queues[m.dst_port]) ), # 规则2:接收消息不能越界读取 ForAll(p: Process, port: PortID, Requires(p.is_bound_to(port)), Ensures(Not(OutOfBoundsAccess(p.recv_buffer))) ) ] def verify_ipc_send(self): # 3. 将C代码转换为逻辑公式 send_code_ir = translate_c_to_ir("ipc_send.c") # 4. 调用Z3求解器验证 result = z3_solver.prove( preconditions=self.safety_rules[0].pre, postconditions=self.safety_rules[0].post, program_logic=send_code_ir ) if not result.is_valid(): raise VerificationError("IPC send violates capability check")在实际开发中,该流程嵌入 CI/CD 管道:开发者提交微内核 C 代码;自动化工具提取函数逻辑,生成中间表示(IR);FLYS 框架加载预定义的安全规范;调用 Coq 或 Z3 进行自动推导;若验证失败,返回反例路径(如特定调度序列导致死锁)。例如,一段简化版的 IPC 发送函数:// 微内核 C 代码 (ipc_send.c)int ipc_send(port_t dst_port, void* data, size_t len) { // 获取调用者进程 process_t* sender = current_process(); // 检查能力令牌 if (!has_capability(sender, dst_port)) { return -EPERM; } // 拷贝数据到内核缓冲区(关键:长度校验) if (len > MAX_MSG_SIZE) { return -EINVAL; } memcpy(kernel_msg_buf, data, len); // 假设已校验用户地址有效性 // 入队并唤醒接收方 enqueue_message(dst_port, kernel_msg_buf, len); wake_up_receiver(dst_port); return 0;}形式化验证会重点检查:has_capability 是否在 memcpy 之前调用;len 是否被用于数组索引前已校验;wake_up_receiver 是否可能引发优先级反转死锁。经验证,鸿蒙微内核的 IPC、内存管理、中断处理等 12 个核心模块共 5.7 万行 C 代码,全部通过形式化验证,覆盖 100% 的安全属性。这意味着,只要硬件行为符合预期,这些模块在任何输入和并发调度下都不会违反安全规范。对开发者而言,这一过程透明但影响深远:不再需要手动编写大量边界测试用例;并发 bug 在编码阶段即被发现;安全审计从“找漏洞”变为“验证证明”。形式化验证不是替代测试,而是将安全保证提升到数学确定性层面。在万物互联时代,当汽车、医疗设备运行于同一内核之上,这种“可证明的安全”不再是奢侈品,而是必需品——鸿蒙微内核的形式化实践,正是对此的坚定回应。