鸿蒙Agent动态能力注册表:告别硬编码按钮,前后端零同步迭代

P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。

前言

做鸿蒙端AI智能体开发的兄弟,大概率都踩过同一个大坑,今天掰开揉碎跟大家唠唠我实操落地的一套方案。

一、先吐槽传统写死工具模式有多反人类

咱先代入一下日常开发场景,后端加个新工具,前端开发直接原地emo。

后端:我新增了个接口巡检工具http_check,上线了。

鸿蒙前端:收到,我去ArkUI页面硬编码加个按钮,写死参数、写死风险提示。

过两天后端改描述、升级风险等级,前端又要拉分支改代码,一套流程走下来,改个小功能比写业务逻辑还费时间。

说真的,这种耦合写法,跟每次上新菜都要重新焊一遍菜单牌子有啥区别?饭店老板都知道打印一张新菜单就行,咱们写代码反而倒退了。

更头疼的隐性问题:端侧完全不了解工具规则。工具要传什么参数、调用会不会删数据、需不需要用户确认,全靠前后端口头同步,传话必出错,线上事故全是这么攒出来的。

我的解决思路很直白:在本机Agent Gateway统一维护一份动态能力注册表,鸿蒙端页面全部动态读取,不写死任何工具按钮。

二、注册表核心:一套两端都能读懂的标准化说明

2.1 注册表到底存了哪些关键信息?

普通接口文档只告诉你地址,注册表直接把工具完整约束写全,每个工具固定携带这几个字段:名称、功能描述、入参规则、风险等级、是否需要用户确认。

拿接口巡检工具举个直观例子:

{
  "name": "http_check",
  "description": "检查HTTP地址连通性,发布前做接口巡检",
  "riskLevel": "medium",
  "needConfirm": true,
  "inputSchema": {
    "required": ["url"]
  }
}

这几个字段相当于给每个工具办了身份证。riskLevel是危险分级,needConfirm是访问门槛,inputSchema是入场安检。

模型调用工具也被锁死范围,只能从注册表清单里挑选,想凭空捏造不存在的工具?门都没有,相当于网吧上网必须出示身份证,无证人员直接拦在门外。

2.2 Gateway统一收口,密钥隔离更安全

所有AI模型密钥只存在Gateway环境变量,鸿蒙端不会接触任何敏感凭证,只单纯请求网关的/tools接口拉取工具清单。

不用前端猜后端新增了什么能力,一切规则由注册表统一下发,天然消除信息差。

三、五层安全拦截,把工具调用风险焊死

3.1 第一层:低风险工具放行,但全程留痕

time_now查询当前时间、local_status读取设备状态,属于纯只读操作,不会修改任何数据,定义为低风险工具,允许直接执行。

每次调用自动生成唯一requestId,终端、页面、网关日志三端统一标识。

别觉得只读工具就不用记日志,上次排查线上报错,两个操作时间只差3秒,没唯一ID根本分不清是谁触发的,蹲机房查了俩小时日志,加班到深夜,谁遭谁知道。

requestId就是每一次调用的快递单号,出问题直接溯源,不用对着时间盲猜。

划重点:低风险≠跳过校验,网关依旧会校验工具合法性、参数合规性,页面按钮只是交互入口,真正的安全防线永远在服务端。

3.2 第二层:不存在的工具,直接一刀切拒绝

故意调用完全没注册的删除工具delete_everything,网关直接返回TOOL_NOT_FOUND,不做模糊匹配,不丢给模型自由发挥。

很多智能体系统翻车,就是模型脑补出不存在的工具,后端兜底执行,轻则删数据,重则泄露整机信息。

注册表相当于游乐园准入白名单,名单里没有的项目,不管游客怎么嚷嚷,都不让进,杜绝模型“自作主张”闯祸。

3.3 第三层:服务端强制参数校验,杜绝前端绕过漏洞

检索工具note_search强制要求传入query查询参数,不传直接返回ARGUMENT_MISSING报错,补齐参数才能正常运行。

千万别把参数校验只写在ArkUI页面里,前端限制全是纸老虎。懂点调试的用户抓包改请求,轻轻松松绕过页面校验直打网关,数据安全直接裸奔。

服务端统一校验相当于小区大门闸机,单元楼门禁再好,大门没安检等于形同虚设。

3.4 第四层:鸿蒙端动态渲染控制台,自动区分工具状态

页面抛弃硬编码工具数组,核心方法loadTools()请求/tools接口,将返回工具列表存入状态变量,循环渲染列表。

控制台自带统计面板:工具总数、可直接执行数量、需确认工具数量,全部通过注册表数据实时计算,没有一个写死常量。

页面自动划分三类工具展示:

  • 低风险无需确认:可直接点击执行
  • 普通低风险:只读锁定,暂不开放
  • 中高风险:锁定状态,强制确认流程

以前新增工具,前端要改数组、加统计数字、写单独UI逻辑,现在后端注册表更新,页面刷新自动适配,改代码的工作量直接砍到零。

好比外卖商家上新菜品,只需要更新后台菜单库,用户小程序自动刷新,不用程序员每次上新改前端代码。

3.5 第五层:端侧额外白名单,保守兜底不抢跑

哪怕注册表标记7个低风险工具,页面依旧只开放经过完整验证的time_now、local_status,其余低风险工具统一展示为只读。

canRun(tool: ToolItem): boolean {
  return !tool.needConfirm && (tool.name === 'time_now' || tool.name === 'local_status')
}

风险等级只是后端给出的参考建议,端侧再加一层管控,宁可少开放工具,绝不提前放行未验证功能。

跟奶茶店新品试饮一个道理,后厨觉得配方没问题,前厅还是只给内测顾客试喝,不直接全店上架,稳字当头。

四、执行闭环:结果统一面板展示,交互丝滑不跳转

点击工具执行按钮,页面拼接带时间戳的requestId,调用/tools/call接口发起请求,底部固定区域展示完整返回JSON,页面不弹窗、不跳转。

time_now返回简短时间信息,适合快速验证流程;local_status返回磁盘占用、系统架构等整机数据,用来校验设备读取能力。

之前做的版本每次执行工具新开弹窗,切换页面之后找不到历史结果,用户反馈找执行记录比查聊天记录还麻烦。

统一面板相当于收银台小票打印区,每一笔操作结果都留在原地,随时对照查看。

五、最终落地价值:彻底固化能力边界,降低迭代成本

整套注册表方案落地后,整套系统的能力边界彻底清晰:

  1. 模型调用范围被白名单锁死,无法调用未注册工具
  2. 参数统一由服务端schema校验,不存在绕过漏洞
  3. 风险分级、确认规则标准化,前后端认知统一
  4. 新增、修改工具仅更新注册表,鸿蒙端无需改动ArkTS代码

没做注册表之前,后端加一个工具,前后端各改一次代码,迭代效率对半砍;现在只改一份注册表配置,一处修改全端生效。

从“前后端双向同步改代码”变成“单配置文件统一管控”,相当于以前出门办事跑两个部门,现在一站式窗口搞定,开发幸福感直接拉满。

这套自研注册表不需要复杂发布流程,轻量化部署在本机Gateway,补齐了AI工具开发最容易忽略的标准化、安全、迭代问题,做鸿蒙端Agent开发的朋友可以直接落地复用。

P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值