恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Hermes Agent 自定义工具与工具集接线实操
首页
资讯中心
/
Hermes Agent 自定义工具与工具集接线实操
Hermes Agent 自定义工具与工具集接线实操
发布时间:2026/8/28 10:06:49
Hermes Agent 自定义工具与工具集接线实操【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent想让 Agent 多一个能力却不知道从哪个文件下手这篇 Hermes Agent 自定义工具实操带你从一个工具函数写到注册、工具集配置直到 Agent 真正把它调起来。先搞懂这几件事registry.register() 是唯一的注册入口工具实现都放在tools/目录下每个文件顶层调用一次registry.register()就算注册完成。自动发现机制会扫描并导入这些文件你不需要维护任何手动 import 列表。registry.register( nametext_transform, toolsettext_processing, schemaTEXT_TRANSFORM_SCHEMA, handlertext_transform, )你需要知道的是register()只是把工具登记进系统账本Agent 能不能用上它还要看下一步的工具集。工具集是工具对模型可见的开关所有工具集在toolsets.py里用一个TOOLSETS字典集中定义每条有三个字段description、tools、includes。各平台Telegram、Discord、桌面端等各自选一个基础工具集而_HERMES_CORE_TOOLS是所有平台默认继承的公共底座。TOOLSETS { text_processing: { description: 文本处理工具集, tools: [text_transform, word_count], includes: [] } }工具名出现在某个工具集的tools列表里它的 schema 才会进入模型可见范围——这是它生效的硬条件。handler 必须返回 JSON 字符串registry 统一负责分发和错误包装约定很简单def text_transform(args, **kw): ... return json.dumps({success: True, data: result})返回普通字符串或 dict 都会走异常路径统一用json.dumps输出是最省心的做法。动手做从零跑通机制清楚了下面把这条链路完整走一遍。拉下仓库并激活环境预期结果终端里python -c import model_tools不报错。git clone https://gitcode.com/GitHub_Trending/he/hermes-agent cd hermes-agent source .venv/bin/activate仓库自带虚拟环境激活.venv即可不要新建一个。写出工具函数本体预期结果在 Python 交互环境里直接调用text_transform({text: hi})能拿到 JSON 字符串。# tools/text_transform_tool.py import json from tools.registry import registry def text_transform(args, **kw): text args.get(text, ) mode args.get(transform_type, uppercase) result text.upper() if mode uppercase else text.lower() return json.dumps({success: True, data: result}, ensure_asciiFalse)注意 handler 的签名是(args, **kw)args就是模型传来的参数字典不要漏掉它。定义参数 schema 并注册预期结果导入该文件后注册表里能查到text_transform这个工具及其 schema。SCHEMA { name: text_transform, description: 文本大小写转换, parameters: { type: object, properties: { text: {type: string, description: 要转换的文本}, transform_type: { type: string, enum: [uppercase, lowercase]} }, required: [text] } } registry.register(nametext_transform, toolsettext_processing, schemaSCHEMA, handlertext_transform)文件顶层有registry.register()调用就会被自动发现导入这一步不需要额外接线。把工具集写进 toolsets.py预期结果TOOLSETS里出现text_processing键且tools列表包含text_transform。text_processing: { description: 文本处理工具集大小写转换、字数统计, tools: [text_transform, word_count], includes: [] },这是唯一必须手工做的配置步骤自动发现只负责注册 schema把工具暴露给 Agent 的接线是刻意留给你手动做的。跑通一次调用确认 Agent 认得了它预期结果控制台打印出{success: true, data: hermes}。from model_tools import handle_function_call print(handle_function_call( text_transform, {text: HERMES, transform_type: lowercase} ))能打印出 JSON 说明注册、schema、工具集三条线全部接通Agent 在会话中调用时走的就是同一条分发路径。组合与复用单个工具集跑通后组合现成的部分比复制工具省事得多。比如想让文本处理能力和 Web 工具一起出现在内容创作场景里content_creation: { description: 内容创作综合工具集, tools: [text_rewrite], includes: [text_processing, web] }includes按名字引用已有工具集并递归展开新增的工具只需在它归属的工具集里出现一次其余地方全部靠引用复用。跑起来之后验证与排错日常验证用一条命令就够了hermes tools在 curses 界面里确认text_transform是否出现在text_processing工具集下顺便检查它在当前平台的启用状态。现象→ 模型完全感知不到这个工具schema 里找不到它 →原因→ 工具注册了但名字没写进任何工具集的tools列表 →处理→ 把工具名补进 toolsets.py 对应工具集重启会话。现象→ 工具被调用但返回解析异常 →原因→ handler 返回的不是 JSON 字符串 →处理→ 统一改成json.dumps(...)返回注册规范见 AGENTS.md 的 Adding New Tools 一节。现象→hermes tools里工具集是灰色的会话中无法调用 →原因→ 当前平台的工具集被禁用 →处理→ 用hermes tools开启或在config.yaml的tools.platform.enabled列表里加名字。接下来可以探索工具集完整定义与_HERMES_CORE_TOOLStoolsets.py注册、分发与可用性检查的底层实现tools/registry.py插件路线不动核心代码扩展工具AGENTS.md把text_transform换成你真正的功能链路一模一样。【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考