HarmonyOS鸿蒙Next中【小艺智能体/意图框架】端侧插件本地hdc模拟能拉起本地APP,但我开发的智能体触发时无响应,求排查思路!

HarmonyOS鸿蒙Next中【小艺智能体/意图框架】端侧插件本地hdc模拟能拉起本地APP,但我开发的智能体触发时无响应,求排查思路!

一、 业务背景与问题表现

我们正在接入了小艺智能体开放平台。希望通过端侧插件(Insight Intent),让智能体下发包含复杂 JSON 数据的 StartSport 意图,App 接收后进行页面状态更新。

当前现象:

  • 本地调试: 使用 hdc 命令模拟系统下发前台意图,App 能够完美热启动(走 onNewWant),并成功提取到 executeParam 中的 JSON 数据,业务逻辑完全正常。
  • 真机云端触发: - 无论是在 App 内部通过 launchAgent 拉起小艺半屏,还是退到桌面用系统小艺语音触发; 端插件配置为 foreground; 智能体大模型正常生成了计划,但在向 App 下发意图时,App 没有任何反应(没有触发 onCreate、onNewWant,也没有触发 InsightIntentExecutorImpl)。 控制台抓不到任何 want 投递的日志。系统疑似在底层将云端发来的高级意图静默抛弃了。

二、 核心验证数据(本地能跑通的证明)

我们在本地使用的 hdc 模拟命令如下,该命令能成功拉起 App 并打印我们拦截到的数据:

hdc shell aa start -b com.youjiazheng.fitless -a EntryAbility --ps ohos.insightIntent.intentName StartSport --ps ohos.insightIntent.executeMode foreground --ps ohos.insightIntent.executeParam '{"planJson":"测试数据"}'

App 端日志成功打印出 DEBUG_WANT_RAW,证明 module.json5 的 metadata 和 insight_intent.json 的本地注册完全有效。

三、 我们的配置详情与已排查步骤

目前我们使用的是 DevEco Studio 官方的 “新建意图框架(New -> Insight Intent)” 自动生成的底层模板,确保了基础结构的准确性:

  • insight_intent.json: domain 选用了官方白名单里的 FitnessDomain,意图名为 Test1,executeMode 设为 foreground。
  • 云端配置一致性: 智能体平台上,插件的工具严格配置为 Test1(大小写完全一致),包名配置正确,执行方式选择了“前台执行”。
  • 版本号检查: 已确保 AppScope/app.json5 中的 versionName(1.0.0) 大于等于云端配置的最小端插件版本号(1.0.0)。(注:此前在网页版调试台曾看到过 code: 204, status: VersionNotMatch 的提示)。
  • App内部触发日志: 在使用 launchAgent 时,日志显示 ReportManager: write behaviour event success 及 launch onapp agent success,说明端云连接本身是通的,问题卡在“下发意图”这一步。

四、 我的疑问 / 诉求

既然 hdc 本地模拟一切正常,说明端侧代码(接收拦截器、配置文件)无误。佬们,

  • 前台死锁限制? 是否因为我在 App 前台调用 launchAgent,导致系统内核判定“目标应用已在前台”,从而拒绝再次使用 foreground 模式投递意图?如果是,为何改成 background 可以吗?
  • 签名/账号校验拦截? 端云协同下发意图时,底层的 TEE(可信执行环境)是否会对“小艺云端开发者账号”、“手机登录账号”和“App本地调试自动签名证书”进行强一致性校验?如果是本地调试生成的测试证书,是否会被系统拦截意图下发?
  • 如何获取内核拦截日志? 我们该过滤哪个底层 tag 才能看到系统内核因为什么原因拒绝分发这个 Intent?

更多关于HarmonyOS鸿蒙Next中【小艺智能体/意图框架】端侧插件本地hdc模拟能拉起本地APP,但我开发的智能体触发时无响应,求排查思路!的实战教程也可以访问 https://www.itying.com/category-93-b0.html

12 回复

真机测试分为三个步骤:基础信息提供,环境准备,联调验证。
能力申请了吗?
《意图接入流程》
端插件工具的名称和版本号一定要和insight_intent.json文件中的intentName、intentVersion匹配。

更多关于HarmonyOS鸿蒙Next中【小艺智能体/意图框架】端侧插件本地hdc模拟能拉起本地APP,但我开发的智能体触发时无响应,求排查思路!的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这个意图申请需要企业开发者吗?我申请没有这个选项可以申请,

需要企业开发者

开发者你好,建议排查一下可能的原因:

是否为前台模式限制,在App前台调用launchAgent后,系统或许认为应用已在前台,拒绝再次以foreground模式投递意图,试试改为background模式。

好的我试一下,

本地 hdc 能拉起只证明 App 侧 Ability、metadata 和 Want 解析是通的;云端触发还会多一层平台能力申请、端插件版本、应用签名、包名、工具名和账号绑定校验。

如果能力申请页里根本看不到意图框架/端插件选项,优先确认当前开发者账号和当前应用是否已开通该能力,而不是继续改 onNewWant 代码。真机联调建议用和平台绑定一致的签名包,确认 intentName、intentVersion、executeMode、工具名大小写完全一致;如果 App 侧 onCreate/onNewWant/InsightIntentExecutor 都没有任何脱敏日志,问题基本在云端投递前的校验或分发链路。

开发者您好,请参考这两篇文档:Intents Kit接入流程意图框架开发指导,首先选择特性确定意图,确定好特性后,在AppGallery Connect平台上提交对应特性类型的能力申请。申请能力通过后,可根据审核成功的反馈提示,提供测试应用的信息,用于开通意图调试权限。确认下是否正常申请,以及hilog日志提供下,感谢您的支持和配合。

本地 hdc shell aa start 能拉起,只能证明 App 侧 Ability/Want 解析链路没问题;云端智能体触发还要经过平台发布状态、白名单、端插件版本、工具名/intentName、executeMode、账号绑定和端侧安装包签名等校验。建议把排查点从 App 代码往平台链路前移:1)确认智能体使用的是已发布/审核通过的同一版端插件配置;2)平台工具名、intentName、parameters 和端侧 insight_intent.json 完全一致;3)真机安装包的 bundleName、签名和平台绑定应用一致;4)在 onCreate/onNewWant/InsightIntentExecutor 都打脱敏日志。如果 App 侧完全没有 Want 进入,优先查云端是否真的选择了端插件并完成投递,而不是继续改本地解析代码。

先确认云端插件工具名、insight_intent.json 里的 intentName、intentVersion、包名和执行方式是否一一对应,尤其名称大小写必须完全一致。再补充能力申请状态、账号类型、真机系统版本、签名方式,以及触发前后 hilog 完整日志,才能判断是版本不匹配、注册未生效,还是云端分发被系统拦截。

这个好像是通过hdc命令或者在IDE中run出来的应用,insight_intent.json 只是写入了本地沙箱,应该并没有向系统的意图管理中心成功注册,或者说云端根本不知道你这个本地版本包含了这个意图。

  1. 确认意图(Intent)注册的action与智能体触发时传递的action一致,大小写敏感。
  2. 检查module.json5abilitiesskillsactions声明是否完整,类型为systemcustom
  3. 验证插件bundleNameabilityName在智能体配置中完全匹配。
  4. hdc模拟成功,智能体无响应,需检查调用是否携带正确uriparameters,部分触发需显式传递parameters
  5. 确认permissions中已申请ohos.permission.INTERACTION_SERVICE等必要权限。

问题核心:hdc本地模拟正常,表明端侧代码和配置无问题;云端触发无响应,需排查端云链路。

1. 前台死锁限制
当目标App已在前台(尤其是通过launchAgent拉起小艺半屏覆盖当前页面),系统可能因UI栈状态拒绝再次以foreground模式投递意图。可验证:将executeMode临时改为background,触发时需先将App退到后台,观察是否收到onNewWantInsightIntentExecutorImpl回调。若后台能收到则说明是前台窗口占用问题,需优化交互流程。

2. 签名/账号校验拦截
华为意图框架要求云端配置的包名与签名指纹必须匹配真机安装的应用。本地自动调试签名未在AGC绑定,云端会判定签名非法并静默丢弃。需在AGC将调试证书(或发布证书)的指纹添加到云端插件配置,确保授权。

3. 获取内核拦截日志
真机连接后执行:
hdc shell hilog -b I -D 0x01 | grep -E "AbilityManagerService|InsightIntent|IntentAgent"
关注AbilityManagerServiceOnStartAbility相关日志,若出现abilityName缺失或signature check failed等关键字,可定位拦截原因。

回到顶部