Hermes Agent
本文介绍如何将Hermes Agent接入华为云AgentArts观测服务,实现调用链追踪和业务指标监控。接入后无需修改业务代码,Python探针加载后,采集Agent执行链路、LLM调用、工具调用等数据并上报。
快速入门:
前提:本地已安装Hermes Agent(版本>= 0.21.3)
- 在AgentArts平台创建Hermes智能体,获取接入参数。
- 安装Python探针,执行安装脚本传入接入参数,脚本自动完成插件安装、凭证写入和启用。
- 启动hermes,在AgentArts观测页面查看调用链和指标数据。
详细步骤见下方接入步骤。
前提条件
- Python环境版本 >= 3.9
- Hermes Agent版本 >= 0.21.3
- 独立探针仅支持本地凭证模式(环境变量配置APM/AOM凭证),不支持通过云上元数据服务自动获取凭证。
探针初始化需要在应用启动时完成,建议在Hermes会话开始之前初始化。
工作原理
Hermes Agent是智能体框架,提供多工具调用、技能(Skill)、会话搜索、记忆、子智能体委派(delegate_task)等能力,支持在终端中直接运行。
Hermes探针是华为云AgentArts基于OpenTelemetry标准为Hermes Agent自研的可观测采集探针。探针以Hermes官方插件形式安装,通过Hermes的生命周期hooks机制在会话启动时自动加载,无需修改业务代码。
数据流转过程:
Hermes Agent运行时
├── Hermes会话启动
│ └── 加载已启用插件
│ └── 生命周期hooks注册观测埋点
│ ├── Agent回合(invoke_agent)
│ ├── 推理步骤(react step)
│ ├── 模型调用(chat)
│ ├── 工具调用(execute_tool)
│ └── 子智能体委派(delegate_task)
│
├── Trace数据 ──OTLP gRPC──→ APM(调用链)
└── Metrics数据 ──OTLP gRPC──→ AOM(指标)
│
▼
AgentArts观测平台展示 接入后,以下能力将被自动监控:
- Agent执行链路(invoke_agent):Agent回合的完整生命周期。主agent固定命名hermes,子agent按派发任务命名。
- 推理步骤(react step):每轮"模型推理 + 工具调用"的详细过程。
- LLM调用(chat):模型名称、Token用量(全量)、缓存Token、输入/输出内容、上下文窗口、首Token时延(TTFT)。
- 工具调用(execute_tool):工具名称、输入参数、返回结果、执行耗时。
- 子智能体委派(delegate_task):子Agent的完整链路嵌套在父链路之下。
- 业务指标:Token消耗、模型调用次数、模型调用耗时、工具调用耗时等。
步骤一:获取接入参数
- 登录AgentArts 智能体平台。
- 在左侧导航栏选择“观测与优化 > 观测”。
- 在“智能体列表”页面,单击“接入智能体”,按照页面指引填写名称、智能体类型,创建一个“Hermes”智能体,并获取各配置参数。 图1 获取配置参数
步骤二:安装探针
安装过程需要两个文件:插件wheel包和安装脚本。请根据您的操作系统选择对应的安装脚本,将两者下载到同一目录后执行。脚本会自动完成:识别当前目录下的插件安装包 → 定位hermes运行环境 → 写入凭证 → 安装依赖 → 安装插件 → 启用插件,并自动适配hermes各版本架构(0.21.4+ store python / 0.21.3- venv)。
- 下载Hermes探针包,解压后包含插件wheel包和安装脚本。
- 插件wheel包(所有平台通用)
- 安装脚本(按操作系统选择其一)
- Windows:install_otel_probe_plugin.ps1
- Linux / macOS / WSL2:install_otel_probe_plugin.sh
- 执行安装脚本。
将步骤一:获取接入参数章节获取的接入参数作为脚本参数传入。脚本会自动将凭证写入$HERMES_HOME/.env文件,一条命令完成安装 + 凭证写入 + 启用插件。
Windows(PowerShell)
.\install_otel_probe_plugin.ps1 ` -AgentId <智能体ID> -DomainId <租户ID> -ProjectId <项目ID> -ResourceType <agent|multiagents|workflow> ` -Endpoint <APM上报地址> -Token <APM Token> ` -AomEndpoint <AOM上报地址> -AomAccessCode <AOM access-code> -AomPrometheusId <Prometheus ID>
Linux / macOS / WSL2(bash)
chmod +x ./install_otel_probe_plugin.sh ./install_otel_probe_plugin.sh \ --agent-id <智能体ID> --domain-id <租户ID> --project-id <项目ID> --resource-type <agent|multiagents|workflow> \ --endpoint <APM上报地址> --token <APM Token> \ --aom-endpoint <AOM上报地址> --aom-access-code <AOM access-code> --aom-prometheus-id <Prometheus ID>
表1 参数说明 参数
是否必填
说明
AgentId(--agent-id)
是
智能体ID,即步骤一获取的agent_resource_id。
DomainId(--domain-id)
是
账号Domain ID。
ProjectId(--project-id)
是
华为云项目ID。
ResourceType(--resource-type)
是
智能体类型:agent(单智能体,默认)、multiagents(多智能体)、workflow(工作流)。
Endpoint(--endpoint)
条件必填(上报调用链时必填)
APM OTLP数据上报地址。
Token(--token)
条件必填(上报调用链时必填)
APM接入凭证Token。
AomEndpoint(--aom-endpoint)
条件必填(上报指标时必填)
AOM OTLP数据上报地址。
AomAccessCode(--aom-access-code)
条件必填(上报指标时必填)
AOM接入凭证Access Code。
AomPrometheusId(--aom-prometheus-id)
条件必填(上报指标时必填)
AOM Prometheus实例ID。
- 脚本自动识别同目录下唯一的插件安装包(.whl);若目录下有多个安装包,需在命令中显式指定。
- hermes升级后重新运行对应平台的脚本即可。
步骤三:启动Hermes Agent并验证
- 启动Hermes Agent,并进行对话问答。
hermes
如果Hermes Agent已经在运行,请先停止后重新启动。
- 确认插件已正常加载。
启动后查看终端输出或日志,确认插件是否已正确加载。启动时应出现以下类似的日志:
[hermes-plugin] provider ready [hermes-plugin] registered 13 hooks
出现以上日志说明插件已成功加载,探针开始工作。
- 触发Hermes Agent会话,产生观测数据。
- 在AgentArts平台查看观测数据。
配置参数说明
插件安装后,以下参数可在运行时通过环境变量调整。环境变量统一存放在$HERMES_HOME/.env文件(每行键、值),修改后需重启Hermes Agent生效。
| 平台 | .env路径 |
|---|---|
| Windows | %LOCALAPPDATA%\hermes\.env(例如C:\Users\<用户名>\AppData\Local\hermes\.env) |
| Linux / macOS | ~/.hermes/.env |
- 安装脚本已自动写入:安装命令中的凭证参数(-Token/-Endpoint/-AgentId等)由脚本写入该文件。
- 手动新增/修改配置:直接编辑.env追加或修改对应键、值行,保存后重启hermes生效。
- 也可在shell中临时设置环境变量:Windows用$env:KEY=value,Linux用export KEY=value。
| 环境变量 | 说明 | 是否必填 | 默认值 |
|---|---|---|---|
| agentarts_agentops_otel_agent_apm_enable | 是否启用APM调用链上报 | 否 | true |
| agentarts_agentops_otel_agent_aom_enable | 是否启用AOM指标上报 | 否 | true |
| agentarts_agentops_apm_token | APM接入凭证 | APM启用时必填 | - |
| agentarts_agentops_apm_exporter_endpoint | APM数据上报地址 | APM启用时必填 | - |
| agentarts_agentops_aom_access_code | AOM接入凭证 | AOM启用时必填 | - |
| agentarts_agentops_aom_exporter_endpoint | AOM数据上报地址 | AOM启用时必填 | - |
| agentarts_agentops_aom_prometheus_id | Prometheus实例ID | AOM启用时必填 | - |
| agentarts_project_id | 华为云项目ID | 是 | - |
| agent_domain_id | 账号Domain ID | 是 | - |
| agent_resource_id | 智能体ID | 是 | - |
| resource_type | 智能体类型:agent、multiagents、workflow | 是 | agent |
| 环境变量 | 说明 | 默认值 |
|---|---|---|
| OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT | 是否采集 LLM 输入/输出内容 | true |
| OTEL_METRIC_EXPORT_INTERVAL | Metrics 上报间隔(毫秒) | 60000 |
查看监控数据
数据上报成功后,可在AgentArts智能体平台的观测功能中查看监控数据。
- 登录AgentArts 智能体平台。
- 在左侧导航栏选择“观测与优化 > 观测”。
- 在“智能体列表”页面,找到已接入的智能体,单击智能体名称进入详情页面。
查看业务指标
在“指标分析”页签中,可以查看关键业务指标:
- Tokens消耗:Input Tokens和Output Tokens的消耗总量
- 模型调用次数:应用调用大模型的累计次数
- 模型调用平均耗时:模型调用的平均响应时间
- 模型调用成功率:大模型调用成功的比例
- 会话数:应用产生的会话总数
- 工具调用次数与耗时:工具调用总量、平均耗时(含 Skill 调用的独立指标)
- 响应成功率:服务响应的成功率
查看调用链信息
在“调用链分析”页签中,可以查看完整的Trace调用链路:
- 查看各Span类型的层级关系及各节点耗时
- 单击具体Span查看详细信息:
- Agent节点(invoke_agent):可查看Agent名称、输入/输出消息
- LLM节点(chat):可查看模型名称、输入/输出消息(Input/Output Messages)、Token消耗(Total tokens)
- Tool节点:可查看工具名称、输入参数、返回结果
- 中间件节点:可查看中间件执行耗时
查看会话分析
在“会话分析”页签中,可以查看智能体与用户对话的历史数据:
- 追踪对话上下文
- 分析模型响应耗时
- 统计Token消耗
- 快速定位对话异常问题
更多参考
会话与用户维度
插件自动为span关联会话;子agent回合沿用父会话ID,保证一次问答的调用链会话一致。如需按用户维度统计,可在$HERMES_HOME/.env中添加AGENTARTS_AGENTOPS_USER_ID环境变量(默认兜底主机名)。
AGENTARTS_AGENTOPS_USER_ID=<user-id>
修改后需重启Hermes Agent生效。如果不设置,默认取当前主机名作为user.id。多用户共享主机时,需要显式设置环境变量以区分不同用户。
子智能体(delegate_task)
Hermes的delegate_task会在父链路下嵌套一个完整的子Agent回合:
execute_tool delegate_task PLUGIN — 父回合中的委派调用 └── invoke_agent {child} AGENT — 子 Agent 独立回合 └── react step ... 后台委派(background)场景下,子Agent可能成为独立Trace。
控制内容采集
默认情况下,探针会采集LLM输入/输出内容,包括根节点(Agent回合)、LLM节点与工具节点的对话/调用内容。如需关闭(隐私/合规场景),在$HERMES_HOME/.env中添加:
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=false
修改后需重启Hermes Agent生效。
关闭后:
- LLM 节点:gen_ai.input.messages、gen_ai.output.messages、input.value、output.value 不采集。
- 根节点(Agent 回合):input.value、output.value 不采集。
- 工具节点:gen_ai.tool.call.arguments、gen_ai.tool.call.result、input.value、output.value 不采集。
- 模型名、Token 用量、耗时、调用链结构、工具名称等非内容属性不受影响。
常见问题
无数据上报
- 检查环境变量是否正确配置,特别是Token和Endpoint。
- 确认启动日志出现[hermes-plugin] provider ready / registered 13 hooks。如果未出现,说明插件未正确加载。
- 检查网络连接,确保能访问APM/AOM端点。
- 检查凭证是否有效。
- 确认hermes-agent版本 >= 0.21.3(hermes --version)。
hermes升级后插件失效
- hermes升级可能更换运行环境,重新运行安装脚本即可。
- 若升级过程清理了依赖,脚本会自动补装。
指标无数据
- 确认AOM凭证(Access Code / Prometheus ID)与端点正确。
- 确认$HERMES_HOME/.env中agentarts_agentops_otel_agent_aom_enable未设为false。
- AOM平台侧异常时(如服务端报错),联系AOM侧确认。
部分Span缺失
- 确认Hermes Agent版本兼容性(>= 0.21.3)。
- 确认工具确实被调用(终端有preparing xxx输出)。
- 确认未使用-z oneshot模式启动(该模式不加载插件,hooks不触发)。
Token统计不准确
- 确保使用最新版本的探针。
- 某些模型可能不返回准确的Token数。