别再往框架源码里塞逻辑了!Hermes Hooks 钩子一招搞定安全拦截与日志审计 📅 发布时间:2026/7/3 5:49:30 👁️ 浏览次数: 了一个安全过滤逻辑不知道往哪塞每次 Agent 执行工具调用都想记录日志难道要改框架源码Hermes Agent Hooks钩子就是为解决这类问题而生的生命周期回调系统允许在智能体运行的关键节点注入自定义逻辑实现日志审计、安全拦截、消息告警、上下文注入等扩展能力。本文从钩子类型、核心事件、开发流程、实战示例到最佳实践带你全面掌握 Hooks 用法灵活扩展 Agent 功能。一、钩子系统总览Hermes 提供两套独立钩子系统覆盖网关与全会话场景均为非阻塞设计—— 钩子报错不会导致 Agent 崩溃仅记录日志。1.1 网关钩子Gateway Hooks运行环境仅网关Telegram/Discord/ 飞书等消息平台生效。注册方式~/.hermes/hooks/目录下创建HOOK.yamlhandler.py。核心场景网关启动、会话管理、命令监控、消息告警。1.2 插件钩子Plugin Hooks运行环境CLI 网关全场景生效。注册方式Python 插件中通过ctx.register_hook()代码注册。核心场景工具拦截、LLM 上下文注入、会话生命周期管理。1.3 核心价值✅无侵入扩展无需修改 Agent 核心代码按需注入逻辑。✅全链路可控覆盖会话启动、工具调用、LLM 推理、会话结束全流程。✅高稳定性钩子异常自动捕获不影响主流程。✅灵活适配支持日志、告警、安全、集成等多场景扩展。图1钩子系统架构图注册方式钩子系统总览仅消息平台CLI 网关全场景设计特点非阻塞设计异常自动捕获 不影响主流程网关钩子 Gateway HooksTelegramDiscord飞书 / 钉钉插件钩子 Plugin Hookspre_tool_call 拦截post_tool_call 审计pre_llm_call 注入on_session_end 清理HOOK.yaml handler.py~/.hermes/hooks/ 目录ctx.register_hookPython 插件代码清楚了钩子的整体架构先从网关钩子入手看它如何在消息平台中发挥作用。二、网关钩子Gateway Hooks网关钩子仅在消息平台网关运行适合监控网关级事件、发送平台告警。2.1 目录结构每个网关钩子为独立目录存放于~/.hermes/hooks/~/.hermes/hooks/ └── task-alert/ # 钩子名称 ├── HOOK.yaml # 事件配置 └── handler.py # 逻辑处理2.2 配置文件HOOK.yaml声明监听的事件支持单事件 / 多事件 / 通配符name: task-alert description: 长任务执行告警 events: - agent:step # 监听工具调用迭代事件2.3 处理脚本handler.py实现钩子逻辑需固定handle函数支持同步 / 异步import os import httpx from datetime import datetime # 从环境变量读取 Telegram 配置 BOT_TOKEN os.getenv(TELEGRAM_BOT_TOKEN) CHAT_ID os.getenv(TELEGRAM_HOME_CHANNEL) THRESHOLD 10 # 超过10步触发告警 async def handle(event_type: str, context: dict): # 获取当前迭代次数 iteration context.get(iteration, 0) if iteration THRESHOLD and BOT_TOKEN and CHAT_ID: # 构造告警消息 tools , .join(context.get(tool_names, [])) msg f⚠️ 任务执行超过{iteration}步最近工具{tools} # 发送 Telegram 告警 async with httpx.AsyncClient() as client: await client.post( fhttps://api.telegram.org/bot{BOT_TOKEN}/sendMessage, json{chat_id: CHAT_ID, text: msg} )2.4 常用网关事件事件触发时机核心上下文gateway:startup网关启动激活平台列表session:start新会话创建用户 ID、会话 IDagent:startAgent 开始处理消息消息内容、用户信息agent:step工具调用迭代迭代次数、工具列表agent:endAgent 处理完成最终响应、会话信息command:*任意斜杠命令命令名称、参数2.5 实战示例启动自检钩子创建boot-check钩子网关启动时自动执行自检创建 HOOK.yamlname: boot-check description: 网关启动自检 events: - gateway:startup创建 handler.pyimport subprocess from pathlib import Path BOOT_FILE Path.home() / .hermes/BOOT.md def handle(event_type: str, context: dict): if not BOOT_FILE.exists(): return # 执行自检脚本 subprocess.run([hermes, chat, --quiet, BOOT_FILE.read_text()])创建自检文件~/.hermes/BOOT.md1. 检查定时任务状态hermes cron list 2. 发送启动通知到飞书生效重启网关hermes gateway restart网关钩子专注于消息平台场景而插件钩子则覆盖 CLI 和网关的全会话场景。三、插件钩子Plugin Hooks插件钩子基于 Python 插件开发CLI / 网关全场景生效适合工具拦截、上下文注入。3.1 注册方式在插件register()函数中通过ctx.register_hook()注册钩子def register(ctx): # 注册工具调用前钩子 ctx.register_hook(pre_tool_call, warn_dangerous_tool) # 注册LLM推理前钩子 ctx.register_hook(pre_llm_call, inject_memory) # 注册会话结束钩子 ctx.register_hook(on_session_end, cleanup_session)3.2 核心插件钩子1.pre_tool_call工具调用前触发时机每次工具执行前。核心用途安全拦截、工具审计。回调示例def warn_dangerous_tool(tool_name: str, **kwargs): # 拦截危险工具 if tool_name in [terminal, write_file]: print(f⚠️ 即将执行高危工具{tool_name})2.pre_llm_callLLM 推理前触发时机每轮对话推理前。核心用途注入记忆、安全护栏。回调示例def inject_memory(**kwargs): # 注入用户偏好 return {context: 用户偏好简洁回答使用Python开发}3.on_session_start会话开始触发时机新会话创建时。核心用途初始化会话状态。4.on_session_end会话结束触发时机会话结束时。核心用途清理资源、同步会话数据。3.3 实战示例工具审计钩子注册post_tool_call钩子记录所有工具调用import json from datetime import datetime # 工具调用后回调 def audit_tool(tool_name: str, args: dict, result: str, **kwargs): log { time: datetime.now().isoformat(), tool: tool_name, args: args, result: result[:200] # 截断结果 } # 写入日志 with open(tool-audit.log, a) as f: f.write(json.dumps(log) \n) # 插件注册 def register(ctx): ctx.register_hook(post_tool_call, audit_tool)插件钩子覆盖了核心场景但 Hermes 还提供了 Shell 钩子、优先级控制等高级能力。四、高级用法4.1 Shell 钩子无代码无需 Python 开发通过配置文件注册 Shell 脚本钩子# ~/.hermes/config.yaml hooks: post_tool_call: - matcher: terminal # 匹配终端工具 command: ~/scripts/audit-terminal.sh # 脚本路径4.2 钩子优先级插件钩子 Shell 钩子 网关钩子。同类型钩子按目录名 / 注册顺序执行。4.3 错误处理钩子异常自动捕获仅记录日志不影响主流程。pre_llm_call钩子可注入上下文其他钩子返回值忽略。回顾了全部用法后最后总结几项最佳实践帮你科学地运用钩子系统。五、最佳实践网关钩子专注网关级事件启动、会话、平台告警。插件钩子优先使用插件钩子覆盖全场景。轻量逻辑钩子逻辑保持精简避免耗时操作。安全优先pre_tool_call拦截高危工具防止误操作。日志审计关键事件工具调用、命令执行添加日志钩子。
3个步骤让OneNote变身专业Markdown编辑器:NoteWidget完全指南 3个步骤让OneNote变身专业Markdown编辑器:NoteWidget完全指南 【免费下载链接】NoteWidget Markdown add-in for Microsoft Office OneNote 项目地址: https://gitcode.com/gh_mirrors/no/NoteWidget 还在为OneNote的排版效率低下而烦恼吗?你是否… 2026/7/3 5:49:30
大数据仪表盘技术架构与性能优化实战 1. 大数据仪表盘的核心价值与行业现状在数字化转型浪潮中,数据可视化已成为企业决策的神经中枢。去年为某零售集团搭建的实时销售看板,让区域经理们第一次能通过手机随时查看各门店的动销率与库存深度,这个案例让我深刻体会到优秀仪表盘对业务… 2026/7/3 5:47:30
QQ聊天记录解密终极指南:跨平台数据库密钥提取全解析 QQ聊天记录解密终极指南:跨平台数据库密钥提取全解析 【免费下载链接】qq-win-db-key 全平台 QQ 聊天数据库解密 项目地址: https://gitcode.com/gh_mirrors/qq/qq-win-db-key 你是否曾因更换设备而无法查看珍贵的QQ聊天记录?或者想要备份多年的对… 2026/7/3 5:47:30
SMT 贴片加工避坑指南怎么选厂 2026年SMT贴片加工避坑指南:如何科学选厂与深圳市天地通电子深度解析 避坑重要性:一次错误选择,可能让您的产品“胎死腹中” 在2026年的电子制造领域,SMT贴片加工是决定产品性能、可靠性与上市速度的核心环节。一个不专业的代工厂… 2026/7/3 7:07:54
Python+Django构建微信小程序物业管理系统实战 1. 项目背景与核心功能解析这个基于Python的微信小程序物业管理系统,是我去年为本地一个中型社区交付的数字化解决方案。传统物业工作中,业主缴费要排队、报修靠打电话、置换物品得贴纸条,管理处则被各种纸质登记表淹没。我们开发的这套系统&… 2026/7/3 7:05:54
AI Agent 从 Demo 到生产:被低估的四个工程问题 问题一:上下文不是越多越好,状态要外置新手最常见的做法,是把对话历史、工具结果、中间产物一股脑塞进 prompt,指望模型自己记住一切。短任务没问题,任务一长就会撞上两堵墙:上下文窗口被占满,以… 2026/7/3 7:05:54
QQ聊天记录解密全攻略:跨平台数据库密钥提取完整教程 QQ聊天记录解密全攻略:跨平台数据库密钥提取完整教程 【免费下载链接】qq-win-db-key 全平台 QQ 聊天数据库解密 项目地址: https://gitcode.com/gh_mirrors/qq/qq-win-db-key 你是否曾因更换设备而丢失珍贵的聊天记录?或者想要备份多年的QQ对话却… 2026/7/3 7:05:54
AI多模态分析框架:数据如何影响美联储政策?解码PCE、CPI、NFP对黄金市场的决策模型 摘要:本文基于宏观决策模型、机器学习、特征工程以及多因子分析等人工智能分析框架,结合2026年全球宏观经济环境、美联储数据依赖(Data Dependent)决策模式,以及PCE、CPI、非农就业(NFP)等核心经… 2026/7/3 7:03:53
2026智能体选型指南:四大模型的工程适配逻辑 1. 这不是又一场“参数军备竞赛”,而是智能体时代的四重奏 2026年开年,我拆了手头正在跑的三个Agent工作流——一个在帮客户做芯片设计文档的逻辑校验,一个在自动整理跨国会议的多语种纪要,还有一个在实时调度本地工厂的PLC指令。… 2026/7/3 7:03:53
如何5分钟快速上手XUnity.AutoTranslator:打破语言障碍的游戏翻译神器终极指南 如何5分钟快速上手XUnity.AutoTranslator:打破语言障碍的游戏翻译神器终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过精彩的游戏剧情?面对日… 2026/7/3 0:01:58
3种策略管理Playnite便携版:从基础部署到高级维护的完整指南 3种策略管理Playnite便携版:从基础部署到高级维护的完整指南 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址… 2026/7/3 0:05:59
2026江苏三维扫描仪定制厂家:一条很现实的分水岭——“会用”和“用对” 在江苏制造业的三维扫描项目里,有一个很容易被忽略的分界线: 👉 会用设备,不等于用对设备。 尤其在江苏GOM三维扫描仪定制厂家、江苏蔡司3D扫描仪定制厂家项目中,这条分界线会直接决定系统最终是“工具”,还… 2026/7/3 0:07:59