news 2026/10/2 14:20:47

Hermes v0.10.0工具网关:统一智能体工具接入与调用管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hermes v0.10.0工具网关:统一智能体工具接入与调用管理

1. 工具网关到底解决了什么:从“乱接工具”到“统一收编”

1.1 智能体工具接入的“巴别塔困境”

用过一段时间 Hermes 的人应该都会有类似感觉:Agent 的能力边界,其实取决于它能调用多少工具,而不是模型本身有多聪明。真正拖后腿的往往是工具接入这一层。场景很典型——一个 project 里同时混着三种工具来源:一类是 Hermes 自己定义的 skill,走的是函数式调用;一类是外部 HTTP API,需要先封装成 OpenAPI 描述才能让模型“看懂”;还有一类是 MCP server,虽然协议统一了,但不同 server 的鉴权方式、返回格式、失败语义又各搞各的。

我见过不少项目,代码里最混乱的部分不是 Agent 的逻辑,而是工具适配器。有人为了让模型能调数据库,自己手写了一个 SQL 转 JSON 的中间层;有人为了让 Agent 能用内部系统,在 prompt 里塞了一整页 API 文档。每个工具都要单独处理超时、重试、参数校验、错误归因,本质上就是给每一个工具重复造一遍轮子。这种做法的维护成本会随着工具数量线性上涨,而且一旦工具数量过二十个,基本就失控了。

这里有个很直观的对比,大家可以对照自己的情况:

接入方式典型场景协议复杂度维护成本
本地函数 / Skill文件读写、文本处理低低,但无法跨项目复用
HTTP API天气、搜索、数据库接口中高,要维护 OpenAPI 文档和鉴权
MCP Server第三方生态工具中中,协议统一但配置分散
混合接入实际项目常见高极高,排查问题时最痛苦

Tool Gateway 的思路不是再增加一种接入方式,而是把上面这些来源全部“收编”成一个标准入口。它的做法是:所有工具对外只暴露统一 schema,网关内部再根据工具的元数据决定走 HTTP、走 MCP 还是走本地调用。对于上层的模型来说,看到的只是一排“工具卡片”;对于下层的服务提供方来说,只需要把自己的能力描述清楚,剩下的事情交给网关。

1.2 “统一收编”而不是“重复造轮子”

可能有人会问:那我把工具全部改成 MCP 不行吗,为什么还要多一层网关?这个问题问到点子上了。MCP 解决的是“工具长什么样”的问题,Tool Gateway 解决的是“工具之间怎么协作”的问题。实际跑 Agent 的时候,模型可能一次会话里要调五个不同来源的工具,每个工具又有独立的鉴权、独立的超时时间、独立的限流配额。如果没有网关统一调度,这些策略只能散落在各个 adapter 里,改一个参数要翻遍整个代码库。

Tool Gateway 的做法是把这个调度逻辑抽成独立层。我把它理解成一个“工具路由中枢”:它先把所有来源的工具统一描述成一份 schema,然后由网关统一处理意图匹配、参数校验、调用分发、结果归一化和错误重试。这样上层模型不需要关心一个工具是跑在远程服务器还是本地脚本,只需要按照标准格式传参即可;下层服务也不需要关心 Agent 怎么理解它,只需要提供一份清晰的能力描述。

这个设计还有一个隐藏好处:可观测性。工具调用是 Agent 出问题时最难定位的环节,以前要翻不同服务的日志去拼凑一次调用链路。网关内置了全链路的调用日志和指标埋点,哪个工具被选中、参数是什么、耗时多少、返回了什么、有没有重试,全部串成一条可追踪的记录。在实际排查问题时,这比什么都管用。

1.3 三类用户能从这次更新里得到什么

社区里讨论 Hermes v0.10.0 时,大家关注的焦点不太一样,但拆开看其实分三层:

第一类是 Agent 应用开发者,也就是直接用 Hermes 写业务逻辑的人。对他们来说,工具网关减少了大量样板代码。以前每接一个新服务,都要写一遍调用封装、鉴权注入和错误兜底;现在只需要维护一份 yaml 配置,剩下的校验和重试逻辑交出去。

第二类是工具提供方,比如团队里负责维护内部 API 或者 MCP server 的人。他们原来要为一个 Agent 项目单独出一套对接文档,还要响应各种“怎么又连不上了”的反馈。接入工具网关之后,只要把服务的 OpenAPI 或 MCP 定义给出来,网关会自动完成大部分转换工作,联调成本明显下降。

第三类是偏运维和基础架构的人。统一入口意味着统一监控、统一限流、统一密钥管理。网关层可以做全局限流,避免模型突然发起几十个并发调用把后端打挂;密钥也可以集中存放,不用散落在各个工具配置里。这一点保证了 Agent 体系从“能用”走向“可控”。

2. 五个核心能力拆解:注册、路由、超时、并发与安全

2.1 工具注册与动态发现:让模型“知道”你能干什么

工具网关的第一个使用场景就是把工具注册进去。Hermes v0.10.0 里,注册一个工具比之前要规范得多。核心是四个要素:工具的元信息、入参描述、返回结构、以及调用端点。一个典型的 HTTP 工具注册配置大概长这样:

tools: - name: weather/current display_name: 当前天气查询 description: 根据城市名查询实时天气状况,包含温度、湿度、风速和天气现象。 transport: http endpoint: https://api.example.com/v1/weather method: GET params_mapping: city: query.city returns: schema: | { "type": "object", "properties": { "temp": {"type": "number"}, "humidity": {"type": "number"}, "wind_speed": {"type": "number"}, "condition": {"type": "string"} } } timeout: 8s retry: 2

这里面最容易被低估的是description字段。很多人习惯随手写一句“天气查询”,但模型判断是否调用这个工具、什么时候调用,主要就是靠这段描述。我的建议是把它写成一段“给模型看的产品说明”,包含能力边界、适用条件、典型输入示例。比如同样一个天气工具,写成“根据城市名查询实时天气状况,包含温度、湿度、风速和天气现象”就比“天气查询”好用得多,因为模型能明确判断在“北京今天冷不冷”这种问题上应该调它。

工具来源方面,除了手动注册,v0.10.0 也支持从 OpenAPI spec 自动导入。网关会把 API 路径、方法、参数定义转换成工具 schema,省去手工转换的过程。对已有 HTTP 服务的团队来说,这一步基本是零成本接入。

对于 MCP server,网关则内置了动态发现机制。配置好 server 地址后,网关会在启动时自动拉取工具列表并缓存,不需要人工逐个登记。这是最大的体验提升:原来每加一个 MCP 工具都要改两份配置,现在只改一处就行。

2.2 请求路由与参数注入:不只是转发请求

网关的“转发”不是简单的透传,中间还有两层关键逻辑:意图匹配和参数注入。

意图匹配解决的是“这个任务应该调哪个工具”。表面上看这应该由模型决定,但实际落地时,如果完全靠模型的 function calling,很容易出现在两个相似工具之间选错的情况。工具网关的做法是保留一层“候选集过滤”:根据对话上下文、用户输入的语义向量、以及工具描述的关键词重叠度,先筛出一个候选工具列表,再把列表交给模型做精确选择。这相当于给模型画了条车道,不让它在几十个工具里瞎猜。

参数注入则是把上下文里已有的信息自动填进工具请求。比如工具需要user_id,但模型不一定每次都会把 user_id 作为参数传出来,网关可以在会话上下文里提取并填充。v0.10.0 里内置了一批变量插槽,常用的有:

变量含义典型用途
{{session_id}}当前会话唯一标识日志追踪、会话续接
{{user_id}}当前用户标识鉴权参数、个性化查询
{{timestamp}}当前时间戳时间敏感查询、过期校验
{{env.XXX}}环境变量引用注入密钥、动态地址

参数注入可以把“会话状态”和“工具调用”解耦,工具本身不需要感知对话细节,网关在调用前统一处理。这也是工具网关和普通 API 网关最不一样的地方——它服务的对象是模型,所以它必须理解上下文。

2.3 超时、重试与并发控制:让工具调用稳定可控

工具调用失败是家常便饭,尤其 HTTP 工具。网络抖动、服务端偶发 5xx、响应超时……如果这些情况不在网关层兜底,模型拿到的就是一堆异常堆栈,它根本无从判断是工具坏了还是自己参数传错了。

v0.10.0 给每个工具都暴露了三个控制参数:timeout、retry、backoff。我的经验是,HTTP 外部 API 的超时建议给 8 到 10 秒,本地脚本给 3 到 5 秒,MCP server 给 15 到 30 秒——因为 MCP server 内部可能还会调用多个子工具,耗时会显著高于单次请求。重试次数不要盲目调高,HTTP 工具 2 次足够,本地命令可以尝试 3 次,再往上意义不大,反而会造成后端资源浪费。

真正容易被忽视的是并发控制。模型可能会在一次计划中同时触发五六个工具调用,如果某个工具是你自己的内网服务,这一下子就可能打满它的连接池。网关的信号量机制解决了这个问题:可以给每个工具设置max_concurrency,超出部分的请求会进入队列排队,而不是直接打到后端。这相当于给工具调用装了个“软限流器”。

tools: - name: internal/search transport: http endpoint: http://internal-svc/search max_concurrency: 10 queue_size: 50 timeout: 5s

如果queue_size也打满了,网关会直接返回一个“工具繁忙”标准错误,而不是无限堆积。Agent 收到这个错误后,可以重新规划任务或延后调用,这比一直卡住要健康得多。

2.4 安全鉴权与密钥管理:不能把密码写进配置

很多 Agent 项目挂在安全上的原因很简单:密钥管理太随意。此前常见做法是每个工具配置里直接写 API Key,甚至有人把数据库连接串直接放进 yaml 提交到 git 仓库。v0.10.0 的密钥管理做了几个收紧措施:

  • 支持${env.XXX}占位符,所有敏感信息都从环境变量注入,配置文件中不出现明文密钥。
  • 支持“密钥存储区”概念,网关启动时从密钥服务里统一拉取,工具调用时按需注入,审计日志里自动打码。
  • 新增了工具白名单机制,可以禁止某些高危工具被模型主动调用,比如“删除文件”“执行 shell 脚本”这类,必须经过显式的用户确认才放行。

关于安全,我给一个实战建议:在你的 Agent 环境里,把工具分成三类来配置权限。只读工具(查天气、查文档、读数据库)直接开放;有状态变更的工具(写文件、发消息)加入确认依赖;高危工具(删数据、执行系统命令)默认禁用,除非显式开启且限定可见范围。你不要指望模型自己判断什么工具危险,它只会看 description 判断“能不能做”,而不会意识到“做完了会有什么后果”——这个判断必须由网关层强制约束。

3. 实操:把一个 HTTP 工具完整接进 Tool Gateway

3.1 升级与环境准备

先从环境说起。如果你本地已经有 Hermes 环境,第一步是确认版本。直接在终端跑:

hermes --version

如果版本低于 v0.10.0,先升级。这里我特别提示一下:升级前把配置目录做一次完整备份,尤其是~/.hermes下的工具配置和 skill 目录。工具网关的配置格式和旧版不完全兼容,虽然 v0.10.0 保留了旧配置的自动迁移能力,但备份永远比祈祷靠谱。

升级完成后,可以打开网关的管理入口确认组件状态。正常情况下能看到gateway组件处于 running 状态。如果你是从旧版本升上来的,这一步可能会遇到 skill 迁移告警,不要急着忽略,先进管理面板看一下哪些工具被标记为 deprecated。

3.2 注册一个 HTTP API:天气查询实例

我拿一个最常见的场景举例:接入第三方天气 API。假设这个 API 的端点是你自己的后端网关,返回 JSON 结构如下:

{ "city": "北京", "temp": -3, "humidity": 30, "wind_speed": 12, "condition": "晴" }

那么在 Hermes 的配置文件里,注册这个工具就三步:

第一步,定义工具元数据。因为我们是查实时天气,所以 description 里要明确写出适用场景和参数单位,尤其是“温度单位是摄氏度”。

tools: - name: weather/current display_name: 当前天气查询 description: 根据城市名查询实时天气状况,返回温度(摄氏度)、相对湿度(百分比)、风速(km/h)和天气现象。适合回答“今天冷吗”“北京现在什么天气”这类问题。 transport: http endpoint: https://api.internal.local/v1/weather method: GET params_mapping: city: query.city

第二步,定义入参。告诉网关这个工具需要什么参数、参数类型是什么,以及缺失时怎么处理。

input_schema: type: object properties: city: type: string description: 城市名,支持中文,如“北京”“上海” required: - city

第三步,设置兜底策略。这里我通常会给外部 API 加一个时间较宽的超时和一次重试。

timeout: 8s retry: 2 backoff: exponential

配置完成后,重启 Hermes 让网关重新加载。验证方式很简单,直接用命令手动触发:

hermes tools call weather/current --params '{"city":"北京"}' --debug

如果能在输出里看到status: success以及完整返回 JSON,说明工具注册成功,后面就可以让模型自由调用了。

3.3 引入 MCP Server 作为外部工具源

MCP 接入是这次更新里另一个高频使用场景。以本地 MCP server 为例,配置方式是这样:

mcp_servers: - name: notes transport: stdio command: /usr/local/bin/notes-mcp args: - --config - /etc/notes-mcp/config.json env: LOG_LEVEL: info

这里有几个坑要提醒:第一,command一定要用绝对路径,因为网关进程的工作目录不一定是你的 shell 当前目录,用相对路径经常出现“命令找不到”。第二,stdio 方式的 MCP server 会继承网关进程的 stdin、stdout 环境,如果你的终端开启了代理类变量,记得在配置里清理,否则 MCP server 可能会尝试走代理导致连接异常。第三,多个 MCP server 之间可能出现工具重名,建议给每个 server 加上命名空间前缀。

配置好之后,网关启动时会自动拉取 MCP 工具列表,不需要手动注册。如果发现某个 MCP server 里的工具没有出现,先看网关日志里 MCP 握手阶段有没有报错,这是最常见的失败点。

3.4 验证完整调用链路:日志里看什么

整个链路跑通之后,怎么确认它是真的“工作正常”?我的建议是开 debug 模式,抓一条完整调用日志:

hermes agent run --debug --session-id test-001 "北京现在多少度,需要穿羽绒服吗"

日志里你会看到这样的几个关键节点:

  • tool_matched:网关把用户请求匹配到了weather/current,说明意图匹配生效。
  • params_injected:网关把会话上下文里的参数注入成功,这里能看到 city 参数被正确赋值。
  • gateway_call_start:开始实际调用 HTTP 后端,记录了耗时和请求地址。
  • gateway_call_success:后端返回成功,网关把 JSON 归一化后返回给模型。

如果日志停在params_injected之后的某一步,问题就出在工具后端本身,跟模型无关。这个定位思路能帮你省掉大量排查时间——先确认“模型选对了工具”,再确认“网关转发没问题”,最后才是“后端服务挂了”。三个环节分开看,不要混在一起查。

4. 踩坑实录:这 4 类问题最容易被网关“埋掉”

4.1 工具明明注册成功,模型却死活找不到

这是一个非常高频的问题:工具列表里能看到weather/current,手动调用也能通,但只要让模型自己去选,它就是不用这个工具。查下来的原因通常有三种。

第一种是工具被放进了错误的命名空间。如果你的配置文件里工具 name 是weather/current,但当前会话使用的 Agent skill 只加载了default命名空间,那模型永远看不到这个工具。命名空间相当于工具的路由前缀,必须精确匹配。

第二种是 description 写得太模糊。模型做工具选择时,本质上是阅读所有工具的描述、根据自己的当前任务做相似度匹配。一个描述写成“天气”的工具,和一个描述写成“根据城市名查询实时天气状况,返回温度、相对湿度、风速和天气现象,适合回答今天冷不冷之类问题”的工具,被选中的概率完全不在一个量级。这个问题的修复成本最低,但效果立竿见影。

第三种是工具 schema 里把参数设成了必填但模型缺少上下文。比如你要求city必填,但用户问题是“附近哪里适合跑步”,模型拿不到具体城市名,就会倾向于不调用这个工具。这时候宁可把参数改成可选,再在网关参数注入层补充默认值,也不要让一个可省略的参数堵住整条调用链。

4.2 超时配置明明改了,请求还是卡到天荒地老

经常有人来问:我在工具配置里写了timeout: 3s,为什么实际调用还是十几秒才返回?这里主要踩两个坑。

第一个坑是超时单位。Hermes 的 yaml 配置里,超时时间默认单位是秒,但某些 MCP server 内部的超时设置却是毫秒。如果你在某个 MCP 工具里引入了它自己的超时配置,而这个配置的单位你没统一,就容易出现“预期 3 秒,实际 300 秒”的情况。建议所有外部依赖的超时单位都在接入文档里标注清楚。

第二个坑是连接池复用。网关对同一后端的多个工具调用会复用 HTTP 连接,如果连接已经建立,TCP 层面不会因为应用层超时设置而立即断开。表现就是请求明明超时了,但连接还挂着,后续请求排队等这个连接释放。遇到这种情况,除了调工具本身的 timeout,还要检查网关的连接池空闲超时配置idle_timeout,把它设得比单个工具超时低一点,让异常连接能快速回收。

4.3 并发设置不当,后端被一次计划打爆

我见过最夸张的一次事故:模型在一次任务里计划了 20 个数据查询工具,网关默认放行,后端数据库连接池瞬间被打满,整个服务卡死半小时。工具网关确实提供了并发控制能力,但问题在于它默认并不限制。

所以接入真正会被高频调用的后端时,一定要给工具设置max_concurrency。这个值怎么定?我的做法是先看后端服务的正常承载上限,按“极限 QPS 的 20% 到 30%”来设。举例来说,一个接口实测能扛 50 QPS,我会把max_concurrency设在 10 到 15,queue_size设在 30 到 60。宁可让 Agent 排队等,也不要让它一口气把后端打崩。

同时,我建议在网关层把“工具调用发起方式”从并行改成小批量并行。Hermes 支持把一次计划中的并发工具调用分批执行,比如每批最多 5 个。这个设置在任务复杂、工具依赖外部服务时非常重要。

4.4 参数类型校验失败,模型明明传了“对的”参数

模型返回参数时,偶尔会出现类型偏差,最典型的是把数字当字符串传,比如"temperature": "high",而 schema 里定义的是数字类型 0 到 50。网关的参数校验会拦截这种请求,但与此同时,模型并不知道自己传错了,它会反复重试同样错误的参数,形成死循环。

处理这个问题有两个办法:一个是在 schema 的description里写清楚枚举值或取值范围,给模型足够的信息去生成正确参数;另一个是利用网关的自动类型转换,在配置里开启coerce_types: true,网关会在校验前做一次宽松转换,比如字符串"25"自动转成数字25。

tools: - name: weather/current transport: http coerce_types: true input_schema: type: object properties: city: type: string days: type: integer description: 查询未来 N 天天气预报,取值范围 1 到 7。

如果你希望模型在传错时能自我纠错,可以给工具描述加一句“注意:days 必须是整数”,但实测下来效果有限。最稳妥的还是靠网关侧的类型转换兜底,同时在返回错误时附带一句可读的修正提示,比如“days 参数应为 1-7 的整数,当前收到 high”。

5. 往外看一步:Desktop、NAS 与旧版迁移的联动经验

5.1 Desktop 与 Studio 共用同一套工具配置的价值

如果你用的是 Hermes 桌面版,这门工具网关的好处会更加明显。以前桌面版和命令行版是两个入口,工具配置各自维护,桌面版加了一个工具,命令行版根本不知道;v0.10.0 之后,两者可以共用同一个网关配置目录。

我自己现在的习惯是:所有工具配置都放在一个独立目录里,桌面版、Studio、命令行版统一指向这份配置。好处是测试工具时不用管前端环境,直接在命令行里调hermes tools call验证,桌面版那边自然就能用。对团队来说,这意味着工具资产可以沉淀成一个共享包,新成员接入时不需要问“工具配在哪”,只需要拉取配置目录并设置好环境变量。

Studio 这边,工具网关新增了一个工具调用 trace 面板,可以按会话查看每一条工具调用日志。如果你遇到过“用户说数据不对,但不知道 Agent 到底查了啥”的问题,这个面板就是你的救命稻草。选中一条会话,看到全部调用记录和参数详情,定位效率提升不止一个档次。

5.2 本地知识库与私有场景的接入方式

很多人在本地部署 Hermes 用于个人知识管理。我见过两个典型场景:一是通过 Obsidian 插件把 Hermes 接入笔记库,让 Agent 能搜索和写入笔记;二是在家庭 NAS 设备上跑 Hermes,把智能体接到家里的内网服务上。

这两种场景有一个共同点:工具端点都是本地服务,不需要走公网。工具网关在这种情况下特别有用,因为本地区域网络的 IP、端口可能会变动,你不需要在每个工具配置里写死地址,而是可以在网关层维护一份“服务注册表”,用服务名代替具体地址。比如:

tools: - name: notes/search transport: http endpoint: http://notes-service:8080/search service_registry: internal

我实际测试下来,本地服务的超时要设置得比公网服务更保守一些,因为很多本地服务是单线程的,处理大查询时会明显变慢。把timeout拉高到 10 秒以上,能避免很多无谓的重试。

另外要提醒一点:在 NAS 这类设备上跑 Hermes,不要把所有存储路径都暴露给 Agent。网关的安全白名单在这里要发挥价值,只开放 Agent 真正需要访问的目录和接口。再聪明的模型也不该有权限扫描你的整个文件系统。

5.3 从旧版升级到 v0.10.0 的迁移清单

如果你手头已经有一套旧版 Hermes 项目,升级时需要列一个迁移清单。我整理一份可以直接用的:

检查项操作注意事项
配置目录备份备份~/.hermes完整目录包括 skills、tools、mcp 配置
旧 skill 格式检查对照新版 schema 改写工具 name 建议加命名空间前缀
密钥迁移把明文 Key 改成${env.XXX}引用迁移后立刻重置原密钥
并发参数补齐为每个工具添加 max_concurrency外部 API 建议 10 以内
安全白名单确认检查高危工具是否默认关闭写文件、删数据工具要加确认
日志接入验证跑一次标准会话查看调用链路确认 trace 面板有数据

迁移过程中,我特别建议不要一把梭。先在测试环境里把高频使用的 3 到 5 个工具接进新网关,跑通一条核心业务链路,确认效果稳定后再大规模迁移。这种“小步快跑”的方式,能在问题出现时快速定位到是网关配置问题还是工具本身问题,不至于整个项目一起翻车。


最后说一点个人的体会。工具网关这一类设计,真正价值不是“把工具调用统一成一种格式”——那只是第一步。它更大的意义在于,让工具调用从“代码里散落的逻辑”变成了“可配置、可观测、可管控的资产”。我自己的项目里,接入网关之后最大的变化不是调用成功率提升了多少,而是出了问题之后,团队能坐在一起,对着一条调用链日志讨论“模型选错了工具”还是“参数没注入”,而不是各自翻代码猜原因。

所以如果你正准备在新项目里引入 Hermes v0.10.0,我的建议是:别急着把所有工具一次性接完,先挑三五个高频且边界清晰的工具,把超时、重试、并发、命名空间这套配置打磨顺手,再逐步扩大范围。工具接入这件事,慢就是快。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 14:18:35

PHP intval()函数进制解析与安全绕过原理详解

1. 这道题不是考PHP语法,是考你有没有真正“读过”PHP手册 BUUCTF里标着“朴实无华”的题目,往往最不朴实。这道[WUSTCTF2020]朴实无华,表面看就是一段几行的PHP代码,连花括号都懒得多打一个,但恰恰是这种极简写法&…

作者头像 李华
网站建设 2026/10/2 14:16:46

操作系统实验:用strace与gdb追踪系统调用,理解用户态与内核态

最近刚把操作系统课程的“追踪系统调用”实验完整做了一遍。这个实验看起来只是敲几条 strace 命令然后截几张图,但真正做完你会发现,系统调用是理解整个操作系统的钥匙:进程管理、文件系统、内存映射、信号处理,这些模块最终都会…

作者头像 李华
网站建设 2026/10/2 14:13:52

Claude Code桌面版技术解析:独立GUI、沙箱隔离与插件策略化

1. 这不是“又一个IDE插件”:Claude Code v2.1.285 的桌面级定位跃迁你可能已经习惯了在 VS Code 里点开一个侧边栏,输入几行提示词,让 Claude 帮你补全函数、解释报错、甚至重写整个模块——这确实是当前绝大多数开发者接触 Claude Code 的方…

作者头像 李华
网站建设 2026/10/2 14:13:23

DeepAgents+MCP+A2A+Skills:四件套搭建多智能体集群实操指南

如果你只是把一个能写文案的 Agent、一个能查资料的 Agent、一个能操作浏览器的 Agent 丢进同一个系统,让它们共享一个聊天窗口,那你还只是在摆地摊,不是在搭集群。最近我把《DeepAgentsMCPA2ASkills 超级多智能体》这门慕课完整过了一遍&…

作者头像 李华
网站建设 2026/10/2 14:11:55

办公桌面文具检测实战:用YOLOv8训练1441张图像数据集

简介:面向YOLO系列目标检测的办公桌面文具数据集,包含书、瓶子、耳机、玻璃杯、头戴式耳机、键盘、笔记本电脑、手机、鼠标、笔、笔筒共11个类,共1441张人工精标图像。压缩包共2000个文件,含558张JPEG图片、1441个标准YOLO格式txt…

作者头像 李华