需通过插件机制扩展hermes agent功能,步骤包括:一、理解插件架构与生命周期,确认版本≥v2.4.0并安装sdk;二、编写基础插件验证环境;三、注册自定义工具供llm调用;四、安全接入http外部服务;五、通过safereadfile加载本地资源。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望为Hermes Agent添加自定义能力,例如集成内部API、增强任务编排逻辑或接入第三方服务,则需通过插件机制扩展其功能。以下是开展Hermes Agent插件开发的具体步骤:
一、理解插件架构与生命周期
Hermes Agent插件基于标准的模块化接口设计,运行时由Agent核心加载并调用预定义的钩子函数。插件需实现init、execute、teardown三个核心方法,确保资源正确初始化、任务执行可控、退出时清理无残留。
1、确认Hermes Agent版本支持插件扩展机制,最低要求为v2.4.0及以上。
2、查阅官方提供的plugin-interface包,安装对应版本的SDK依赖。
3、创建插件主入口文件,导出符合规范的插件对象结构,包含name、version、init、execute字段。
二、编写基础功能插件
最简插件应能响应指定指令并返回结构化结果,用于验证开发环境与加载流程是否正常。该插件不依赖外部服务,仅做本地计算或固定响应,适合作为开发起点。
1、新建目录plugins/hello-world/,在其中创建index.js文件。
2、在index.js中导出对象,name设为"hello-world",init函数打印初始化日志,execute函数接收input参数并返回{ message: "Hello from plugin!" }。
3、将插件目录路径写入Hermes Agent配置文件的plugins字段,重启Agent进程。
三、注册自定义工具函数到Agent工作流
插件可通过registerTool方法向Agent注册可被LLM调用的工具函数,使大模型在规划阶段能识别并调度该能力。注册信息包括函数名、描述、参数Schema,直接影响LLM的调用准确性。
1、在插件init函数内调用globalAgent.registerTool(),传入工具配置对象。
2、工具配置中description字段必须用英文短句明确说明用途,不可含模糊表述如“处理数据”。
3、parameters字段采用JSON Schema格式定义,required数组须列出所有必填字段,缺失将导致LLM调用失败。
四、接入HTTP外部服务并处理异步响应
多数业务场景需插件与后端API交互,此时需正确处理Promise链与错误边界,避免阻塞Agent主线程或引发未捕获异常。
1、在execute函数中使用fetch或axios发起请求,URL从插件配置或input参数中安全提取。
2、对响应状态码进行显式判断,当HTTP状态码非2xx时,抛出带有code和message字段的标准Error对象。
3、设置请求超时时间为8秒,超过则reject并附带timeout标记,便于Agent统一重试策略识别。
五、加载本地资源与静态文件
插件可能需要读取模板、配置或证书等本地文件,Hermes Agent限制直接使用fs.readFileSync,须通过插件上下文提供的safeReadFile方法访问白名单路径。
1、将所需文件置于插件目录下的assets/子目录中,如assets/template.md。
2、在execute函数中调用this.context.safeReadFile("assets/template.md"),返回Promise
3、禁止访问上级目录路径,任何含"../"或绝对路径的字符串将被立即拒绝,触发SecurityError异常。











