必须解析会话json日志、查询sqlite状态库、监控audit.log、使用session_search_tool.py及启用opentracing,才能结构化追踪hermes agent的操作、工具调用与状态变更。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您需要理解Hermes Agent在运行过程中执行了哪些操作、调用了哪些工具、产生了哪些状态变更,则必须对其行为轨迹进行结构化追踪。以下是实现该目标的多种技术路径:
一、解析会话级JSON日志文件
会话JSON文件完整记录单次交互的全部事件流,包含时间戳、事件类型、工具调用参数与返回结果,是还原Agent行为最细粒度的数据源。
1、进入用户主目录,执行ls -la ~/.hermes/sessions/列出全部会话JSON日志文件。
2、选取最新会话文件,使用jq提取关键字段:jq -r '.timestamp, .event_type, .tool_name, .status' ~/.hermes/sessions/session_*.json。
3、按时间顺序排序并高亮失败事件:jq -r 'select(.status == "failed") | "\(.timestamp) \(.event_type) \(.tool_name)"' ~/.hermes/sessions/*.json | sort。
4、定位某次具体工具调用的完整输入输出:jq -r 'select(.tool_name == "web_search" and .status == "success") | .input, .output' ~/.hermes/sessions/*.json。
二、查询SQLite状态数据库
SQLite数据库存储结构化元数据,如会话生命周期、工具调用链路、状态变更序列,适合执行跨会话关联分析与状态回溯。
1、启动数据库交互终端:sqlite3 ~/.hermes/state.db。
2、查看sessions表中最近5个会话的创建时间与结束状态:SELECT id, created_at, ended_at, status FROM sessions ORDER BY created_at DESC LIMIT 5;。
3、检索某一会话ID下所有工具调用记录及其执行顺序:SELECT tool_name, status, started_at, finished_at, duration_ms FROM tool_calls WHERE session_id = "sess_abc123" ORDER BY started_at;。
4、识别异常中断的会话(ended_at为空且status为running):SELECT id FROM sessions WHERE status = "running" AND ended_at IS NULL;。
三、实时监控审计日志中的安全动作
audit.log专用于记录权限变更、技能安装、系统扫描等高风险操作,是追踪Agent越权或非预期行为的关键入口。
1、确认审计日志存在且可读:ls -l ~/.hermes/audit.log。
2、实时跟踪新增审计条目:tail -f ~/.hermes/audit.log。
3、筛选出所有拒绝类操作:grep "deny\|DENY" ~/.hermes/audit.log。
4、提取过去两小时内涉及技能管理的操作:awk -v d="$(date -d '2 hours ago' '+%Y-%m-%d %H:%M:%S')" '$0 > d {print}' ~/.hermes/audit.log | grep -E "(install|uninstall|enable|disable)"。
四、使用session_search_tool.py执行条件化行为检索
该工具支持基于时间窗口、事件类型、工具名称等多维条件组合查询,避免手动遍历原始日志,提升行为定位效率。
1、确保工具具备执行权限:chmod +x tools/session_search_tool.py。
2、检索某天内所有vision_tools调用记录:python tools/session_search_tool.py --tool-name vision_tools --since "2026-04-17" --until "2026-04-18"。
3、查找某次会话中耗时超过5秒的工具调用:python tools/session_search_tool.py --session-id sess_xyz789 --min-duration 5000。
4、导出所有ERROR级别事件为CSV格式便于外部分析:python tools/session_search_tool.py --level ERROR --output csv > error_events.csv。
五、启用OpenTracing并注入Span上下文
当Hermes Agent参与分布式调用链时,仅靠本地日志无法还原跨服务行为路径,需通过OpenTracing协议注入trace-id与span-id,实现端到端行为追踪。
1、编辑hermes-agent.yaml,在tracing节点下设置enabled: true与tracer-type: opentracing。
2、重启Agent后,验证HTTP响应头是否携带traceparent字段:curl -I http://localhost:8000/health。
3、在消息发送逻辑中调用tracer.start_span()并显式注入父Span上下文:span.set_tag("hermes.session_id", current_session_id)。
4、检查/actuator/traces端点是否返回带hermes.*标签的Span列表:若返回空列表,说明OpenTracing未正确激活。











