更新时间:2026-11-05 GMT+08:00
分享

Hermes Agent

本文介绍如何将Hermes Agent接入华为云AgentArts观测服务,实现调用链追踪和业务指标监控。接入后无需修改业务代码,Python探针加载后,采集Agent执行链路、LLM调用、工具调用等数据并上报。

快速入门:

前提:本地已安装Hermes Agent(版本>= 0.21.3)

  1. 在AgentArts平台创建Hermes智能体,获取接入参数。
  2. 安装Python探针,执行安装脚本传入接入参数,脚本自动完成插件安装、凭证写入和启用。
  3. 启动hermes,在AgentArts观测页面查看调用链和指标数据。

详细步骤见下方接入步骤。

前提条件

  • Python环境版本 >= 3.9
  • Hermes Agent版本 >= 0.21.3
    如果未安装Hermes Agent,请先使用Hermes Agent官方安装脚本完成安装。
    curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
  • 独立探针仅支持本地凭证模式(环境变量配置APM/AOM凭证),不支持通过云上元数据服务自动获取凭证。

探针初始化需要在应用启动时完成,建议在Hermes会话开始之前初始化。

  • 在AgentArts观测界面查看数据不收费。
  • 但数据上报会产生费用:
    • 调用链上报到APM(应用性能管理服务),费用明细请参考APM计费说明。
    • 指标上报到AOM(应用运维管理服务),费用明细请参考AOM计费说明。
  • AOM和APM都是按需计费,并有一定量的免费额度,超出后按实际使用量收费。

工作原理

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消耗、模型调用次数、模型调用耗时、工具调用耗时等。

接入步骤

步骤一:获取接入参数

  1. 登录AgentArts 智能体平台。
  2. 在左侧导航栏选择“观测与优化 > 观测”。
  3. 在“智能体列表”页面,单击“接入智能体”,按照页面指引填写名称、智能体类型,创建一个“Hermes”智能体,并获取各配置参数。

    图1 获取配置参数

步骤二:安装探针

安装过程需要两个文件:插件wheel包和安装脚本。请根据您的操作系统选择对应的安装脚本,将两者下载到同一目录后执行。脚本会自动完成:识别当前目录下的插件安装包 → 定位hermes运行环境 → 写入凭证 → 安装依赖 → 安装插件 → 启用插件,并自动适配hermes各版本架构(0.21.4+ store python / 0.21.3- venv)。

  1. 下载Hermes探针包,解压后包含插件wheel包和安装脚本。

    • 插件wheel包(所有平台通用)
    • 安装脚本(按操作系统选择其一)
      • Windows:install_otel_probe_plugin.ps1
      • Linux / macOS / WSL2:install_otel_probe_plugin.sh

  2. 执行安装脚本。

    将步骤一:获取接入参数章节获取的接入参数作为脚本参数传入。脚本会自动将凭证写入$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并验证

  1. 启动Hermes Agent,并进行对话问答。

    hermes

    如果Hermes Agent已经在运行,请先停止后重新启动。

  2. 确认插件已正常加载。

    启动后查看终端输出或日志,确认插件是否已正确加载。启动时应出现以下类似的日志:

    [hermes-plugin] provider ready
    [hermes-plugin] registered 13 hooks

    出现以上日志说明插件已成功加载,探针开始工作。

  3. 触发Hermes Agent会话,产生观测数据。
  4. 在AgentArts平台查看观测数据。

配置参数说明

插件安装后,以下参数可在运行时通过环境变量调整。环境变量统一存放在$HERMES_HOME/.env文件(每行键、值),修改后需重启Hermes Agent生效。

表2 .env文件路径

平台

.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。
表3 参数说明

环境变量

说明

是否必填

默认值

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

表4 可选环境变量

环境变量

说明

默认值

OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT

是否采集 LLM 输入/输出内容

true

OTEL_METRIC_EXPORT_INTERVAL

Metrics 上报间隔(毫秒)

60000

查看监控数据

数据上报成功后,可在AgentArts智能体平台的观测功能中查看监控数据。

  1. 登录AgentArts 智能体平台。
  2. 在左侧导航栏选择“观测与优化 > 观测”。
  3. 在“智能体列表”页面,找到已接入的智能体,单击智能体名称进入详情页面。

查看业务指标

在“指标分析”页签中,可以查看关键业务指标:

  • 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 用量、耗时、调用链结构、工具名称等非内容属性不受影响。

常见问题

无数据上报

  1. 检查环境变量是否正确配置,特别是Token和Endpoint。
  2. 确认启动日志出现[hermes-plugin] provider ready / registered 13 hooks。如果未出现,说明插件未正确加载。
  3. 检查网络连接,确保能访问APM/AOM端点。
  4. 检查凭证是否有效。
  5. 确认hermes-agent版本 >= 0.21.3(hermes --version)。

hermes升级后插件失效

  1. hermes升级可能更换运行环境,重新运行安装脚本即可。
  2. 若升级过程清理了依赖,脚本会自动补装。

指标无数据

  1. 确认AOM凭证(Access Code / Prometheus ID)与端点正确。
  2. 确认$HERMES_HOME/.env中agentarts_agentops_otel_agent_aom_enable未设为false。
  3. AOM平台侧异常时(如服务端报错),联系AOM侧确认。

部分Span缺失

  1. 确认Hermes Agent版本兼容性(>= 0.21.3)。
  2. 确认工具确实被调用(终端有preparing xxx输出)。
  3. 确认未使用-z oneshot模式启动(该模式不加载插件,hooks不触发)。

Token统计不准确

  1. 确保使用最新版本的探针。
  2. 某些模型可能不返回准确的Token数。

相关文档