HarmonyOS鸿蒙Next小艺开放平台中创建的端插件工具命名规则与使用端插件时端侧文件配置中的intentName命名规则不一样

HarmonyOS鸿蒙Next小艺开放平台中创建的端插件工具命名规则与使用端插件时端侧文件配置中的intentName命名规则不一样 问题现象:平台侧创建端插件工具时的命名规则和端侧文件配置的命名规则不一致,导致平台侧创建端插件后,端侧报错使用不了

小艺开放平台新建工具截图,提示仅支持输入字母,数字,下划线

cke_123995.png

cke_133753.png

该工具在端侧文件配置中却使用不了,提示字符串违反模式: ‘^[A-Z][a-zA-Z0-9]+$’

cke_135146.png

造成影响:小艺开放平台端插件工具创建成功但端侧无法使用;用户按提示命名仍失败;提示规则不可信,增加联调成本

解决方法:1. 平台校验+提示 全面对齐端侧正则(推荐)2. 端侧放宽正则规则


更多关于HarmonyOS鸿蒙Next小艺开放平台中创建的端插件工具命名规则与使用端插件时端侧文件配置中的intentName命名规则不一样的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

您好,问题已修复,请您登录小艺开放平台进行验证

更多关于HarmonyOS鸿蒙Next小艺开放平台中创建的端插件工具命名规则与使用端插件时端侧文件配置中的intentName命名规则不一样的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


尊敬的开发者,您好!感谢您的反馈,问题正在加速处理中,还请关注后续版本,感谢您的理解与支持。

这个可以按“双命名”理解:开放平台里的“工具名称”更像展示/管理名,校验偏宽;端侧 intentName 是运行时路由用的协议名,最终以它为准。建议不要让两个名字各玩各的,统一按端侧最严规则命名:大驼峰、字母数字,不带中文、空格、下划线,例如 QueryWeatherOpenOrderPage

配置里重点对齐三处:1)平台工具绑定的意图名;2)src/main/resources/base/profile/insight_intent.json;3)执行器分发代码。示例:

{
  "intentName": "QueryWeather",
  "domain": "WeatherDomain",
  "intentVersion": "1.0.0",
  "srcEntry": "./ets/entryability/InsightIntentExecutorImpl.ets"
}

ArkTS 中也建议用同一个常量:

const QUERY_WEATHER = 'QueryWeather';

如果平台已建了 query_weather 这类名字,端侧联调时建议重建/改成 QueryWeather,否则就像“门牌写 A、快递单写 B” 曾经我因为大写问题改了整整两个小时啊,小艺调度时容易找不到对应入口。可参考 IntentsKit 接入流程和配置文件接入方式:

IntentsKit接入流程 配置文件接入方式

这个现象基本可以按“平台校验宽、端侧校验严”来理解。实际联调时建议直接按端侧更严格的规则走,也就是 intentName^[A-Z][a-zA-Z0-9]+$,例如 QueryWeatherOpenOrderPage 这种写法,不要用下划线。平台上展示名称和端侧 intentName 最好分开理解:前者可以偏产品化,后者按协议字段来定。否则平台能建成功,但端侧解析 insight_intent.json 时还是会失败。这个帖子里提到的“平台提示与端侧规则不一致”本身就是合理的优化点。

平台侧创建工具时的命名校验较宽松,但端侧 intentName 的校验规则更严格,这个的确可以规范一下。

端插件工具的名称和版本号一定要和insight_intent.json文件中的intentName、intentVersion匹配。

插件至终端配置文档

当绑定的端插件被大模型调用时,设置为前端、后端执行的插件工具会触发InsightIntentExecutorImpl类方法的调用,可以在对应的类方法里面匹配对应的工具名称后,进行自定义逻辑业务的处理。

前台执行的插件工具的端侧代码实现

设置为前台执行的插件工具,会触发InsightIntentExecutorImpl类方法的onExecuteInUIAbilityForegroundMode方法执行,在方法内匹配对应的意图名称(插件工具名称)后,实现自定义的业务逻辑代码。

onExecuteInUIAbilityForegroundMode方法中的参数name对应意图名称(插件工具名称),param对应插件输入参数,可以调用pageLoader.loadContent方法加载页面文件。

确实需要优化下

端插件工具命名规则需符合平台定义的组件标识规范(如字母、数字、下划线组合),用于插件注册与发布。而端侧配置中的intentName遵循意图匹配规则,通常为点分隔的字符串,用于小艺识别具体意图。两者命名空间不同:工具名对应插件元数据,intentName对应意图触发标识,无直接关联。,

这是命名规则校验不一致的问题。平台提示规则(字母、数字、下划线)与端侧实际生效的正则 ^[A-Z][a-zA-Z0-9]+$ 冲突,该正则要求首字母必须大写不允许下划线

这是造成工具创建成功但联调失败的根因。在问题修复前,必须以端侧的正则规则为准进行命名,即保证 intentName 是首字母大写、仅包含大小写字母和数字的字符串。

回到顶部