适用AI工具:DevEco Code / Cursor
前置博客:第02篇
预计阅读时间:22分钟
一、什么是鸿蒙的 Agent Framework?
2026 年鸿蒙生态最重要的变化之一:系统级智能体框架正式开放。过去应用提供的是"被调用的功能",Agent Framework 之后,应用可以注册自己的能力给系统智能体(小艺)编排调用,也可以在自己的应用内嵌入智能体运行时。
一句话理解三层角色:
- 应用:通过 Agent Framework 注册能力(FunctionComponent),声明"我能做什么、需要什么参数"
- 系统智能体:理解用户意图后,从所有已注册能力中选择并调用
- AgentExtensionAbility:应用侧承接智能体调用的扩展入口,把调用翻译成业务执行
对开发者意味着两件事:你的应用能被一句话唤醒(第 07 篇 Intents Kit 是轻量版),以及复杂多步任务可交给智能体编排(本篇重点)。
二、整体架构与调用链路
关键点:一次用户请求可能并行唤起多个应用的能力,智能体负责汇总融合。所以你的返回结果必须是结构化、自描述的,而不是一段 UI 文案。
三、FunctionComponent:注册你的能力
能力注册的核心是声明"函数签名 + 语义描述"。语义描述写得越清楚,智能体匹配越准:
// agent/TravelCapabilities.ets
import { functionComponent, FunctionResult } from '@kit.AgentFrameworkKit';
@functionComponent({
name: 'query_travel_itinerary',
description: '查询用户未来N天的旅行行程安排,包含航班、酒店与景点预约',
parameters: [
{ name: 'days', type: 'number', description: '查询未来几天,默认3', required: false },
{ name: 'city', type: 'string', description: '按城市过滤,可选', required: false }
]
})
export async function queryItinerary(params: Record<string, Object>): Promise<FunctionResult> {
const days = (params.days as number) ?? 3;
const city = params.city as string ?? '';
const list = await ItineraryModel.query(days, city); // 复用既有业务层
return new FunctionResult({
summary: `未来${days}天共${list.length}项安排`,
items: list.map(i => ({
title: i.title, time: i.startTime, location: i.city
})),
deepLink: 'travelapp://itinerary/list' // 用户点卡片可跳回应用
});
}
AI 用法:把现有业务接口(如 ItineraryModel.query)贴给 AI,要求"按 Agent Framework 规范生成 @functionComponent 注册代码,parameters 从函数签名推导,description 补充中文语义"。能力注册是典型的模式化代码,AI 一次成型,人工只需校对 description 的措辞——description 决定匹配率,值得逐字打磨。
四、AgentExtensionAbility:承接调用
注册了能力,还要有入口承接智能体的调度:
import { AgentExtensionAbility, AgentRequest, AgentResponse } from '@kit.AgentFrameworkKit';
export default class TravelAgentExtension extends AgentExtensionAbility {
async onInvoke(request: AgentRequest): Promise<AgentResponse> {
// request.functionName 对应注册的 name
switch (request.functionName) {
case 'query_travel_itinerary':
return await queryItinerary(request.params);
default:
return AgentResponse.notSupported(request.functionName);
}
}
}
同时在 module.json5 中声明扩展:
"extensionAbilities": [{
"name": "TravelAgentExtension",
"type": "agent",
"exported": true,
"srcEntry": "./ets/agent/TravelAgentExtension.ets"
}]
五、应用内嵌智能体:本地执行复杂任务
除了"被系统调用",Agent Framework 也支持应用内嵌智能体运行时:应用自己定义一组工具(Tools)+ 目标(Goal),由运行时循环"规划 → 调工具 → 观察结果 → 再规划"直到完成。
典型场景:旅游 App 内"帮我规划一个三天的杭州行程"——智能体依次调用 search_scenic(查景点)、check_weather(查天气)、book_hotel(订酒店)三个工具,自行决定调用顺序与参数。工具越多、任务越开放,编排价值越大。
AI 在这里的角色是"工具工厂":每个工具本质是"函数 + schema 描述",把业务方法清单给 AI,让它批量生成工具定义与参数校验,人工聚焦在异常分支的设计上。
六、调试与验证
智能体开发最痛苦的是"不知道智能体会怎么调用你"。三个调试抓手:
- 模拟器内置智能体调试台:DevEco 模拟器可模拟用户指令(语音转文字),直接观察你的 Extension 是否被拉起、收到的参数是什么
- hilog 过滤:Extension 生命周期与调用参数会打进系统日志,
hdc shell hilog | grep AgentExt全程可见 - 让 AI 反推测试用例:把 description 与 parameters 喂给 AI,生成 20 条"用户可能的说法"清单,逐条验证匹配——description 的打磨依据就在这里
实测经验:query_travel_itinerary 的 description 从"查询行程"扩写为"查询用户未来N天的旅行行程安排,包含航班、酒店与景点预约"后,小艺的意图命中率从约 55% 提升到约 90%。语义描述不是注释,是产品。
七、下一步
本篇是"应用能力被智能体编排"的重量级方案。下一篇介绍轻量级入口——Intents Kit 意图框架,让应用被小艺"一句话唤醒"。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_31532979/article/details/168121354





