把工具变成可发现能力:鸿蒙端动态能力注册表实践
Agent 页面接进真实应用以后有个容易被忽略的问题端侧到底怎么知道自己能调用哪些能力。这些能力如果只埋在服务端代码里端侧看不到参数要求也看不到风险高低就只能把按钮写死在页面上服务端每加一个能力端侧跟着改一次。这次把本机 Agent Gateway 里的工具整理成一份能力注册表。每个能力都带上名称、描述、输入结构、风险等级、要不要确认、返回示例。鸿蒙端不写死按钮改成从/tools动态读取这份注册表再按注册表里的信息决定哪些能直接执行。能力先得有一份能被读懂的说明这些能力最终都会落到某个执行入口查时间、看机器状态、检查 URL、写待办、检索材料、巡检设备。入口写在哪儿是次要的关键是入口前面有没有一份端侧和模型都能读懂的说明。本机 Gateway 先跑起来所有能力从这里统一暴露。模型 Key 只留在 Gateway 环境变量里鸿蒙端只跟 Gateway 通信也不去猜服务端有什么接口而是先读/tools返回的能力清单。清单里每个工具都有一组固定字段。拿http_check举例它带着风险等级和参数要求不是给个 URL 就完事{name:http_check,description:检查一个 HTTP 地址是否能访问用于发布前接口巡检。,riskLevel:medium,needConfirm:true,inputSchema:{required:[url]}}这几个字段直接决定端侧怎么处理这个能力。riskLevel决定页面上怎么标风险needConfirm决定能不能直接点执行inputSchema交给 Gateway 做参数校验。模型能选哪个工具但选不出清单以外的东西。普通接口列表告诉开发者有这么个 URL就够了。这份注册表要多担一层把能力做什么、要什么参数、调用前要不要确认、返回大概什么样都写进去让端侧和模型直接读。低风险能力可以直接执行time_now和local_status是低风险工具只读本机 Gateway 状态不改数据也不碰外部系统端侧可以放开让它们直接执行。先在终端里调time_now和local_status返回里有当前时间、时区、系统版本、机器架构、磁盘使用率还有一个 requestId。这个 requestId 有用处。就算是低风险工具也得保留一次调用的身份。终端、端侧页面、Gateway 日志里出现同一个 requestId一次调用才追得回来排查的时候不用光靠时间点去猜是哪一次。风险低不代表能跳过校验。Gateway 该先查工具在不在、参数合不合 schema一步都不少。端侧按钮只是个入口真正卡边界的地方在服务端。调一个没注册的工具直接被拒为了看边界在哪故意调一个根本没注册的工具{tool:delete_everything,arguments:{}}Gateway 回了TOOL_NOT_FOUND没有去做任何模糊匹配也没把这事丢给模型自由发挥。这一关挺要紧。智能体系统最怕的就是看起来什么都懂模型把用户一句话解释成一个不存在的能力再指望服务端临时兜底。有了注册表工具名必须来自白名单白名单以外的一律不执行。参数校验必须压在服务端note_search要一个query参数。故意不传Gateway 返回ARGUMENT_MISSING: query把参数补上工具才正常跑。这道校验放在服务端不能只放在 ArkUI 页面里。端侧可以做更友好的提示但它不能当唯一的防线。只要请求能到 Gateway就得按同一份 schema 校验参数不然换个入口绕过页面就能钻空子。注册表里的inputSchema顺带也让端侧知道每个工具要什么参数。当前页面先展示了基础字段已经能说明能力边界是从服务端来的不是写死在某个按钮上。鸿蒙端从注册表把能力列表生成出来端侧页面没把工具写死在数组里。核心就一个loadTools()请求/tools把返回的tools塞进State tools交给List渲染。页面做成了一个轻量的能力控制台顶上是工具总数、可直接执行数、需要确认数中间能按全部、低风险、需确认筛每一条列出名称、描述、风险等级和确认策略。加载完鸿蒙端显示 8 个工具7 个可直接执行1 个需要确认。这几个数字不是页面里写死的是从 Gateway 返回的注册表算出来的。这个页面比单纯列一排按钮更像个能力控制台。用户不光知道有这个能力还能看到它的风险和执行条件。像http_check这种中风险工具端侧只给个锁定状态不让直接点低风险和中风险在同一个页面里被明确分开。执行结果回到同一个面板点time_now的执行按钮页面拼一个tool-registry-加时间戳的 requestIdPOST 到/tools/call底部最近执行区域直接回一段完整 JSON。页面不跳转、不弹窗结果就留在当前这块。time_now结果短适合先验证一遍端侧的执行闭环local_status会带回系统、机器架构、磁盘使用率和检查时间能证明这次调用真的读到了机器状态。结果留在同一个面板里用户能把点了哪个工具和工具回了什么对上号。端侧又压了一层比风险等级更保守的白名单注册表里 8 个工具7 个标的是低风险。但页面并没有把这 7 个全放开让点。判断一个工具能不能执行的canRun除了看needConfirm还额外卡了一个工具名白名单canRun(tool:ToolItem):boolean{return!tool.needConfirm(tool.nametime_now||tool.namelocal_status)}意思是哪怕注册表说某个工具低风险端侧这一版也只放开自己实际验证过的time_now和local_status其余低风险工具在页面上显示成只读需要确认的工具显示成锁定。同样是不能点端侧用两种文案分开一个是这一版还没放开一个是风险更高、要走确认流程。风险等级是服务端给的建议端侧在这个建议上又收了一道宁可少放不抢跑。可执行、只读、锁定这三种状态落到代码里就是一个if (this.canRun(tool))分支加一个三元判断页面不用为每个工具单独写逻辑全靠注册表字段加这一层端侧策略推出来。筛选也是同一个思路visibleTools()按filterMode过滤lowRiskCount()、confirmCount()直接在State tools上算顶部那三个统计数、中间那份列表都跟着注册表返回的数据走没有一个是写死的常量。能力边界这样就定住了走到这一步本机 Gateway 这边的能力边界已经清楚模型只能从注册表里挑工具挑不出清单以外的东西参数不合 schema 会在 Gateway 被挡下中风险工具在注册表里就标好了要确认。端侧这边也不再靠写死的按钮加一个能力、改一个能力的描述或风险等级页面重新拉一次/tools就跟着变不用动 ArkTS 代码。这份注册表是本机自建的不是什么正式的能力发布流程。但它把加能力时最容易漏的几件事凑齐了能力怎么描述、什么时候该触发、要哪些参数、风险多高、返回什么。少任何一样端侧要么得靠写死的按钮硬对接要么退回到模型随口说个接口名、服务端临时补救。把这些信息集中进注册表、让端侧去读加能力和改能力这件事才从改两处代码变成改一处配置。

相关新闻

总是签名不一致,安装不了apk文件

总是签名不一致,安装不了apk文件

确保三处版本齐其,签名就一样了。

2026/7/22 12:48:02阅读更多 →
TI OMAP/Sitara底层调试实战:硬件调试与PRCM寄存器深度解析

TI OMAP/Sitara底层调试实战:硬件调试与PRCM寄存器深度解析

1. 项目概述与核心价值 在嵌入式系统开发,尤其是基于TI OMAP/Sitara系列处理器的项目中,我们常常需要深入到芯片的“内脏”去解决问题。当系统出现异常死机、性能不达标或者功耗异常时,仅仅依靠软件层面的日志和调试信息往往是不够的。这时&a…

2026/7/22 12:48:02阅读更多 →
抓取时让 Python 的 Beautiful Soup 更快的 10 个技巧

抓取时让 Python 的 Beautiful Soup 更快的 10 个技巧

抓取时让 Python 的 Beautiful Soup 更快的 10 个技巧 在本指南中,我将分享 10 个简单技巧,帮助加速你的 Beautiful Soup 抓取项目。这些技巧能让你在不损失准确性、不遗漏重要数据的情况下,更快速、更高效地抓取。让我们开始吧!…

2026/7/22 12:46:02阅读更多 →
Cursor通过.cursorrules精确约束跨文件符号引用范围解决逻辑断裂

Cursor通过.cursorrules精确约束跨文件符号引用范围解决逻辑断裂

引言 在大型工程化项目中,LLM辅助编码常出现“逻辑断裂”:AI在跨文件引用符号(类、接口、函数)时凭训练记忆幻觉化路径与签名,导致Import错误、参数不匹配、分层架构反向依赖等问题。Cursor提供的.cursorrules&#xf…

2026/7/22 13:46:17阅读更多 →
Unity登录系统架构设计与资源包管理实战指南

Unity登录系统架构设计与资源包管理实战指南

1. 项目概述:为什么需要一个健壮的登录系统?在Unity项目开发的早期,尤其是对于独立开发者或小型团队来说,登录系统常常被当作一个“可以后期再加”的功能。大家更愿意把时间花在打磨核心玩法、优化美术资源上。然而,当…

2026/7/22 13:46:17阅读更多 →
AI工程提示词设计:从问答到系统架构的转变

AI工程提示词设计:从问答到系统架构的转变

1. 从"提问者"到"系统设计师"的角色转变 在传统研发流程中,工程师与AI工具的交互往往停留在简单的问答层面——输入一个问题,获取一段代码。这种模式在早期探索阶段或许有效,但当AI开始深度参与工程闭环时,提…

2026/7/22 13:46:17阅读更多 →
团购运营别只降价

团购运营别只降价

本地商家做团购时,很容易把重点放在低价上。 套餐一降再降,短期可能带来一些订单,但利润被压低,用户体验跟不上, 后面评价也容易受影响。 团购不是单纯拼价格,而是拼用户决策效率和履约体验。用户买团购之前…

2026/7/22 13:46:17阅读更多 →
macOS 26 Tahoe:苹果桌面生态的里程碑式重构与Liquid Glass设计

macOS 26 Tahoe:苹果桌面生态的里程碑式重构与Liquid Glass设计

1. macOS 26 Tahoe:苹果桌面生态的里程碑式重构 2025年9月15日,苹果正式发布了macOS 26 Tahoe操作系统。作为自2013年以来最大规模的设计重构,Tahoe版本标志着苹果桌面生态进入全新阶段。这个版本最引人注目的特点在于它是最后一个支持Intel架…

2026/7/22 13:46:17阅读更多 →
第01章 初识C语言

第01章 初识C语言

第1章 初识C语言 章节摘要 本章将带你走进C语言的世界,了解C语言的历史、特点和应用领域,搭建开发环境,编写第一个C程序,理解编译过程,为后续深入学习打下坚实基础。 1.1 C语言的诞生与发展历史 C语言的诞生 C语言由**…

2026/7/22 13:44:17阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →