查看: 2386|回复: 3

鸿蒙Agent Framework Kit小艺智能体槽位兜底

[复制链接]
发表于 前天 08:00 | 显示全部楼层 |阅读模式
在年度规划类应用中,最容易出问题的是目标写得大而全、周期却脱离现实。轻规划(AeroPlan)的这篇实战把HarmonyOS原生Agent Framework Kit接入进来,通过小艺智能体对项目做体检、可行性打分和甘特图拆解。本文按开发链路拆解其意图定义、槽位填充、会话通信、结果解析与本地兜底。

一、端云协同架构与客户端职责
原文把Agent Framework Kit描述为端云双向协同引擎,并不是端侧孤立大模型。应用客户端通过API唤起会话,管理AgentSession生命周期,并在本地做参数安全拦截与格式化;系统智能体引擎运行在独立系统级Service中,通过HarmonyOS IPC与应用建立低延迟信道,从而降低应用本身内存占用;云端NLU与LLM负责接收自然语言输入,运行NER,抽取配置文件中预设的意图槽位,并按System Prompt进行推理生成。由此带来的架构取舍是,客户端无需集成数十GB的大模型权重,只需关注意图契约和槽位定义,就能获取云端泛化推理能力。

二、意图配置与槽位声明
开发前需要在项目的resources/base/profile目录下配置intent_schema.json。原文声明了意图com.aeroplan.intent.DIAGNOSE_PROJECT,并定义槽位projectName(string,mandatory为true)和expectedDays(number,mandatory为false)。该配置文件在应用打包和分发阶段会被华为应用市场与系统意图管理模块解析并注册。槽位是智能体语义理解的基础单元,原文强调合理选择和配置槽位能显著提升小艺识别准确率,并讨论了槽位属性与行为映射。

三、客户端发起体检与会话管理
原文用XiaoyiAgentBridge桥接类维护agentSession。requestProjectDiagnosis中先调用agentFramework.createAgentSession创建端侧会话,agentId为aeroplan_planner_helper_agent,该ID必须与华为开发者联盟平台注册的智能体ID一致。随后做本地前置过滤,expectedDays大于0才采用,否则默认30天。构造AgentRequest时,intentName对应配置中的意图名,slots填充projectName和expectedDays,systemPrompt要求以资深人生规划理论专家角度诊断项目不合理性、打0至100分、给出修正后的里程碑甘特图建议,并要求输出包含JSON score参数和【诊断建议】标记块。sendRequest异步发送后,从response.replyText取回文本,再由parseAgentReply转成结构化DiagnoseResult,其中包括score、suggestions和recommendedSchedule。请求失败时捕获BusinessError并记录code与message,再走fallbackToLocalAnalysis;会话初始化失败也进入本地兜底。destroyBridge在UI组件销毁或退出功能模块时显式清空agentSession,避免IPC资源和内存引用泄漏。

四、结果解析与本地降级
parseAgentReply用正则从回复文本中提取形如score:85的分数,匹配不到时默认75分;再通过【诊断建议】标记截取建议块,recommendedSchedule直接回传replyText;若解析异常则返回60分和未能解析提示。fallbackToLocalAnalysis用于网络异常或云端不可达场景:当projectName长度大于20且expectedDays小于7时给40分,否则给80分,并返回固定的三步甘特图排期。这样即使网络或云端异常,界面也能给出结果,不至于一直卡在诊断中。

五、槽位对齐偏差与本地清洗
原文指出一个典型问题:用户输入往往很口语化,例如在明年春天暖和时去爬珠穆朗玛峰,云端可能把expectedDays槽位提取为空或无法匹配,形成槽位对齐偏差。槽位契约破裂会触发默认错误代码,前台若直接抛错,界面会卡在AI诊断中的loading状态。为此原文设计了LocalSlotInterceptor.extractDaysFromText,在本地用正则识别N天、N个月(按30天粗略折算)、N周或N星期(按7天折算),没有明显时间信息则返回0;调用时用finalExpectedDays = expectedDays大于0 ? expectedDays : (parsedDays大于0 ? parsedDays : 30)做清洗和缺省。原文称这层拦截能保证极端输入和网络延迟重试下分析链路100%成功回调,提升智能诊断体验。

六、技术取舍与落地注意
从原文实现看,这套方案把大模型推理放在系统与云端,应用端只做会话、契约和本地兜底,适合不想在端侧塞大模型的规划类应用。槽位配置文件是端云之间的契约,字段名、类型、是否必填要先定清楚;systemPrompt要约束输出结构,但大模型文本仍可能不稳定,所以正则解析、默认分、离线规则兜底缺一不可。原文还提醒agentSession要显式释放,异常分支要覆盖会话初始化和请求发送两类BusinessError。这些是接入Agent Framework Kit时更值得复用的工程细节。

原文在总结中说明,通过Agent Framework Kit对接小艺智能体,轻规划把计划录入变成了有专家反馈的互动,也完成了前9篇业务核心和Kit接入;后续将进入分布式数据库同步、UserId隔离与基于版本时钟的数据冲突消解。就本篇而言,核心可复用点是意图配置、槽位填充、会话管理、文本解析和本地兜底链路。
回复

使用道具 举报

发表于 前天 19:30 | 显示全部楼层

Re: 鸿蒙Agent Framework Kit小艺智能体槽位兜底

这篇实战梳理得很清楚,尤其是把槽位契约和本地兜底分开讲,比单纯接大模型更贴近落地。意图配置里把 projectName 设为必填、expectedDays 设为非必填,再在客户端用 LocalSlotInterceptor 补天数,这个思路对口语化输入很实用;parseAgentReply 用正则取 score 并给默认分,fallbackToLocalAnalysis 再按项目名长度和周期给离线结果,确实能避免界面卡在诊断中。 有个小疑问:像“明年春天”这种模糊时间,文中提到正则只能识别 N天、N个月、N周,没有明显时间信息就返回 0 再走 30 天默认,后续会不会考虑把这类模糊周期也做成本地规则或可配置策略?整体上会话生命周期释放和两类 BusinessError 分支的提醒很值得借鉴,感谢分享。
回复 支持 反对

使用道具 举报

发表于 前天 19:30 | 显示全部楼层

Re: 鸿蒙Agent Framework Kit小艺智能体槽位兜底

这篇写得很扎实,端云协同、槽位契约和本地兜底链路都拆得比较清楚。我比较认同把大模型推理放在系统与云端、应用端只负责会话管理和兜底的做法,规划类应用确实没必要在端侧硬塞大模型。几个工程细节也很实用,比如expectedDays的本地清洗、解析失败给默认分、会话显式释放,以及覆盖会话初始化和请求发送两类异常,这些在真实项目里很容易漏。 如果继续打磨,我会建议把本地兜底规则和默认分抽成可配置项,后续调策略不用改代码;同时把槽位提取失败、正则解析失败这类情况记一下日志,方便反过来优化intent_schema和systemPrompt。另外,降级结果最好在界面上给用户一个轻提示,避免用户把兜底建议当成云端完整诊断。测试上可以多覆盖口语化时间表达、网络异常、会话初始化失败和解析异常这些分支,正好对应文中提到的槽位对齐偏差问题。期待后续分布式数据库同步和版本时钟冲突消解那部分。
回复 支持 反对

使用道具 举报

发表于 前天 19:35 | 显示全部楼层

Re: 鸿蒙Agent Framework Kit小艺智能体槽位兜底

看完这篇收获挺大,尤其是把意图配置、槽位填充、会话管理、文本解析和本地兜底串成一条完整链路来讲,工程感很强。比较认同两点:一是系统提示词再约束输出结构,大模型文本仍可能不稳定,所以正则解析、默认分和离线规则兜底确实不能省;二是槽位对齐偏差这个坑很真实,像“明年春天暖和时去爬珠穆朗玛峰”这种口语化输入,靠 LocalSlotInterceptor 在本地识别天数并做缺省清洗,能避免界面一直卡在诊断中。另外,agentSession 显式释放和覆盖会话初始化、请求发送两类异常也容易被忽略,这些细节对后续接入很有参考价值。后续如果继续写分布式数据库同步、UserId 隔离和版本时钟冲突消解,也期待看到类似这种贴近落地链路的拆解。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-10-23 11:41 , Processed in 0.033765 second(s), 29 queries , Gzip On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部