需查看Hermes Agent运行日志排查问题,日志分五类:一、控制台实时输出;二、~/.hermes/sessions/下结构化JSON会话日志;三、~/.hermes/state.db中SQLite元数据;四、~/.hermes/audit.log审计日志;五、配置的RotatingFileHandler轮转日志。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您启动了Hermes Agent但未看到预期的运行反馈,或需排查任务执行异常,则需直接查看其生成的运行日志。Hermes Agent的日志分散在多个路径与格式中,需按类型定位并采用适配方式读取。以下是具体操作步骤:
一、查看控制台实时输出日志
启动时未重定向标准输出的情况下,所有INFO及以上级别日志会直接打印至终端,包含任务调度、工具调用与HTTP请求等关键行为,适用于快速验证服务是否正常启动及响应。
1、确认Hermes Agent正在前台运行:检查终端窗口中是否有持续滚动的INFO或DEBUG日志行。
2、若已后台运行,使用ps aux | grep run_agent.py查找进程PID,并结合lsof -p [PID] -a -d 1 -o确认其stdout是否仍连接到终端。
3、如启动命令含> /dev/null 2>&1等重定向,请跳转至文件日志路径进行查阅。
二、读取结构化会话JSON日志
每次用户交互被序列化为独立JSON文件存于~/.hermes/sessions/目录,每条记录含时间戳、事件类型、输入输出及错误详情,适合回溯具体会话上下文。
1、进入日志目录:cd ~/.hermes/sessions/
2、列出最新5个会话文件:ls -t *.json | head -5
3、查看某一会话内容(自动格式化):jq '.' $(ls -t *.json | head -1) | less
4、提取该会话中的全部错误信息:jq -r 'select(.error != null) | "\(.timestamp) \(.event_type): \(.error)"' $(ls -t *.json | head -1)
三、查询SQLite会话元数据库
会话基础元数据(如ID、起止时间、状态)持久化于~/.hermes/state.db,通过SQL可高效检索会话生命周期信息,避免遍历大量JSON文件。
1、打开数据库:sqlite3 ~/.hermes/state.db
2、查看可用表:.tables
3、查询最近10次完成的会话:SELECT id, created_at, updated_at, status FROM sessions WHERE status = 'completed' ORDER BY updated_at DESC LIMIT 10;
4、关联查询某会话调用的全部工具:SELECT t.tool_name, t.status, t.duration_ms FROM tool_calls t JOIN sessions s ON t.session_id = s.id WHERE s.id = 'SESSION_ID_HERE' ORDER BY t.created_at;
四、检查审计日志audit.log
所有安全敏感操作(如技能安装、权限变更、拒绝访问)均写入~/.hermes/audit.log,该文件为纯文本格式,按时间顺序追加,用于合规性核查与风险识别。
1、确认文件存在且非空:test -s ~/.hermes/audit.log && echo "audit.log is present and not empty" || echo "audit.log missing or empty"
2、查看末尾20行(最新操作):tail -20 ~/.hermes/audit.log
3、筛选失败类审计事件:grep -E "(deny|fail|reject|unauthorized)" ~/.hermes/audit.log | tail -15
4、按小时统计拒绝操作次数:awk '{print substr($1, 1, 13)}' ~/.hermes/audit.log | grep -v "^$" | sort | uniq -c | sort -nr | head -5
五、读取配置指定的RotatingFileHandler日志
若已在run_agent.py或gateway/run.py中配置RotatingFileHandler,则运行时日志将按大小或时间轮转写入指定路径,适合长期运行场景下的归档分析。
1、定位日志路径:执行grep -r "RotatingFileHandler" ~/.hermes/ --include="*.py" -A 3,查找filename=参数值。
2、若路径为logs/hermes-agent.log,先确认目录存在:mkdir -p ~/.hermes/logs
3、查看当前主日志文件:tail -n 50 ~/.hermes/logs/hermes-agent.log
4、列出所有轮转日志:ls -lt ~/.hermes/logs/hermes-agent.log.*
5、查看最近一个归档日志的ERROR条目:zcat ~/.hermes/logs/hermes-agent.log.1.gz 2>/dev/null | grep -i "error\|exception" | tail -10 || grep -i "error\|exception" ~/.hermes/logs/hermes-agent.log.1 2>/dev/null | tail -10











