公司动态

Hermes Agent 自定义工具集避坑笔记:3 处改动组装出你的 --toolset

📅 2026/8/28 15:16:01
Hermes Agent 自定义工具集避坑笔记:3 处改动组装出你的 --toolset
Hermes Agent 自定义工具集避坑笔记3 处改动组装出你的 --toolset【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent内置工具集只覆盖 web、terminal 这类通用能力。想给 Agent 接一个内部工单接口或加一条自己的文本清洗逻辑fork 主仓库去改核心显然太重。Hermes Agent 自定义工具集这条路正好补上缺口一个工具文件加一处字典改动就能让 Agent 用上官方没覆盖的能力。先说结论整套流程只动两个位置——tools/下新建工具文件再在工具集定义里补一条记录。剩下的校验、分发、错误包装都归注册表管不用你操心。为什么工具要装进工具集里大白话工具是 Agent 实际调用的最小单元工具集只是一张打包清单决定某次会话把哪些工具暴露给模型。这里有个容易踩的坑工具注册成功不等于 Agent 能用它。只要名字没出现在任何工具集条目里schema 就根本不会发给模型工具等于不存在。所以清单和实现一样重要。每条清单记录靠三个属性工作description一句话说清这套装是干什么的校验与展示都看它tools本集合直接包含的工具名列表includes引用的其他工具集名展开时递归合并是复用现成组合的关键。 注册一个工具只需三处改动新建tools/word_count.py写函数、定 schema、调注册三段齐活import json from tools.registry import registry def word_count(text: str) - str: return json.dumps({words: len(text.split())}) registry.register( nameword_count, toolsettext_processing, schema{name: word_count, description: 统计文本字数, parameters: {type: object, properties: {text: {type: string}}, required: [text]}}, handlerlambda args: word_count(args.get(text, )), )两点提醒。其一handler 的返回值必须是 JSON 字符串注册表会原样回传给模型直接 return 裸对象会在序列化环节出问题。其二自动发现机制会扫tools/*.py只要文件里有顶层的registry.register()调用就会被导入不需要你维护任何 import 清单。 在 toolsets.py 里定义条目用 includes 复用现成工具集打开 toolsets.py找到TOOLSETS字典追加一个键值对即可TOOLSETS[text_processing] { description: 文本处理工具集字数统计等, tools: [word_count], includes: [web], }includes在这里体现价值文本处理经常顺手要查资料与其把web_search、web_extract一个个抄进tools不如一行includes把整个 web 组合并进来。注意坑includes里写错名字比如拼出不存在的集合不会在保存时报错而是拖到启动或校验阶段才炸排查时先怀疑它。启动前先校验--toolset 与 validate_toolset改完别急着跑先在 tools/registry.py 对应工具集里核对工具名是否都真实注册了然后用toolsets.py里的validate_toolset与get_toolset_info走一遍前者确认集合名存在、工具能解析后者把展开后的完整工具列表打出来给你过目。确认无误再交给命令行hermes run --toolset text_processing进阶动态创建、可视化树与测试create_custom_toolset支持运行时动态建集合适合脚本里按环境临时拼一套工具print_toolset_tree把 includes 的展开关系画成树嵌套多了用它看结构最直观测试可参考tests/tools/test_registry.py的写法断言注册后能取到 schema、集合展开后工具齐全这类不变量而不是冻结具体数值。工具加进去之后会话里直接让 Agent 干统计这段文本字数这类活能正确调用就说明三处改动全部生效。动手前把 toolsets.py 现有条目和 tools/registry.py 的注册签名各看一遍比读教程快改完按 tests/test_toolsets.py 的思路补个用例回归就有底了。【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考