@mr_r0b0t: hermesbench v0.1 — 一个专为 Hermes Agent 工具调用设计的基准测试,在隔离环境中运行真实的 Hermes Agent 子进程…

X AI KOLs Timeline 工具

摘要

hermesbench v0.1 是一个新的基准测试,用于评估本地模型在 Hermes Agent 工具调用上的表现。它具有真实的 Agent 框架、确定性验证器和硬件遥测功能。包含 11 个类别的 43 个任务,旨在衡量模型使用 Hermes Agent 的能力。

hermesbench v0.1 — 一个专为 Hermes Agent 工具调用设计的基准测试 在隔离的 tmux 会话中运行真实的 Hermes Agent 子进程,具有完整的工具访问权限。覆盖 11 个类别的 48 个任务:终端、文件读取、补丁编辑、搜索、写入、进程管理、待办计划、代码执行、网络查询、记忆事实、错误恢复。 它与 BFCL、τ-bench、Terminal-Bench 以及其他 Agent 评估的区别: • 真实框架 — 不是合成 API 或简化沙箱。模型在真实的 Hermes Agent 内部运行,拥有完整的 35 个工具接口、相同的提示格式、相同的约束条件。 • 仅确定性验证器 — 每个任务通过标准库 Python 检查对话轨迹和文件系统状态来评估通过/失败。没有 LLM 作为评判者。没有不稳定的启发式方法。 • 带有 token ID 的完整轨迹 — 捕获每个系统/用户/助手/工具消息,并可导出为掩码损失后的 SFT 训练数据。 • 硬件遥测 — 以 5 Hz 频率记录每个任务的 GPU 功率、温度、每 token 焦耳数和热节流秒数。 • 可重放的终端录制 — 每个任务生成一个 .cast 文件,可以重放或渲染为 GIF/MP4。 初步结果:nex-agi/nex-n2-pro:free → 32/48 (66.7%)。终端冒烟测试 (5/5) 和文件读取 (6/6) 完美通过。在补丁编辑 (1/5)、写入 (2/5) 和记忆 (1/3) 上表现不佳——模型经常回退到错误的工具或跳过必要的调用。 http://github.com/am423/hermesbenchv0_1…
查看原文
查看缓存全文

缓存时间: 2026/06/16 23:43

hermesbench v0.1 — 专为 Hermes Agent 工具调用设计的基准测试

在隔离的 tmux 会话中运行真实的 Hermes Agent 子进程,并拥有完整的工具访问权限。包含 48 项任务,涵盖 11 个类别:终端操作、文件读取、补丁编辑、搜索、写入、进程管理、待办规划、代码执行、网页查询、内存事实、错误恢复。

与 BFCL、τ-bench、Terminal-Bench 及其他 Agent 评估方案的不同之处:

  • 真实测试环境 — 不是合成 API 或简化沙箱。模型在真实的 Hermes Agent 中运行,拥有完整的 35 种工具接口,相同的提示格式和相同的约束条件。
  • 仅确定性验证 — 每项任务通过标准库 Python 检查对话轨迹和文件系统状态来判断通过/失败。不使用 LLM 作为评判者。没有不稳定的启发式方法。
  • 包含 Token ID 的完整轨迹 — 捕获每一条系统/用户/助手/工具消息,并可作为损失掩码 SFT 训练数据导出。
  • 硬件遥测 — 以 5 Hz 频率记录 GPU 功率、温度、每 Token 焦耳数以及每任务的热节流秒数。
  • 可回放的终端录像 — 每项任务生成一个 .cast 文件,可用于回放或渲染为 GIF/MP4。

首批结果:nex-agi/nex-n2-pro:free → 32/48 (66.7%)。终端烟雾测试完美通过 (5/5) 和文件读取完美通过 (6/6)。在补丁编辑 (1/5)、写入 (2/5) 和内存 (1/3) 任务上表现不佳 —— 模型经常回退到错误的工具或跳过必要的调用。

http://github.com/am423/hermesbenchv0_1…


am423/hermesbenchv0_1

来源:https://github.com/am423/hermesbenchv0_1

hermesbench v0.1

一个针对在 Hermes Agent 框架内运行的本地模型的基准测试。捕获完整的对话轨迹(每次工具调用 + 结果 + 推理 + Token ID)、asciinema 录像以及 5 Hz 的硬件遥测数据。

旨在提供“该模型在使用 hermes-agent 方面有多好?”的基准真相 —— 而不仅仅是文本生成能力。

仓库: github.com/am423/hermesbenchv0_1 (在 v0.1 发布前为私有) 计划: 见 project.md (1813 行,11 个章节,75 个已回答的设计问题) 评分标准: 见 rubric.md (自评)

功能

  • 43 项任务,11 个类别 — 终端烟雾测试、文件读取、补丁、搜索、写入、进程、待办事项、代码执行、网页查询、内存、错误恢复
  • 运行真实的 AIAgent 来自 ~/.hermes/hermes-agent/,在子进程中使用自定义的 tmux_isolated 环境后端
  • 每项任务运行捕获三个产物:
    • trace.jsonl — 每条系统/用户/助手/工具消息,包含 Token ID 和推理内容(损失掩码 SFT 就绪)
    • trace.cast — asciinema v2 格式的模型终端会话录制(可分享、可回放)
    • stats.jsonl — 5 Hz 硬件遥测(CPU、GPU、RAM、NVMe、主机电源、模型进程树),包含热警告
  • 每项任务的确定性验证器(仅依赖标准库,不使用 LLM 作为评判者,无网络调用导致的波动)
  • 每模型总结中包含 6 个指标组 + 9 个硬件指标:通过率、工具效率、Token 效率、挂钟时间、恢复率、格式合规性、GPU 功率/温度、每 Token 焦耳数、热 AUC、节流秒数

快速开始(5 分钟)

# 1. 安装(可编辑模式,包含所有依赖)
make install

# 2. 验证环境
make doctor

# 3. 针对本地模型服务器运行单个任务
python3 -m hermesbench run \
    --task t01_terminal_smoke/t01_echo \
    --model qwen2.5-coder-7b-instruct-q4_k_m \
    --base-url http://127.0.0.1:8080/v1

# 4. 运行所有 43 项任务
python3 -m hermesbench run --all \
    --model qwen2.5-coder-7b-instruct-q4_k_m \
    --base-url http://127.0.0.1:8080/v1

# 5. 将任务的 cast 文件渲染为 X 就绪的 GIF
python3 -m hermesbench render \
    traces/<model>/t01_terminal_smoke/t01_echo/trace.cast \
    --format gif --out t01.gif

CLI

命令功能
hermesbench list列出所有 43 项任务
hermesbench list --difficulty 2按难度筛选
hermesbench validate检查所有 task.yaml + 验证器文件的格式
hermesbench run --task <task>运行单个任务
hermesbench run --all运行所有 43 项任务
hermesbench run --all --dry-run验证而不启动 hermes(问题 72)
hermesbench run --resume <dir>恢复崩溃的运行(问题 24)
hermesbench run --n-runs 3每项任务运行 3 次以评估方差(问题 34)
hermesbench doctor预检查(问题 70)
hermesbench score results/<model>/从已有结果重新评分
hermesbench render <cast>.cast → .gif/.mp4 并叠加统计信息(问题 3.1a)
hermesbench render --examples显示 5 种常用渲染调用(问题 71)
hermesbench export-sft <dir>轨迹 → 带损失掩码的 SFT jsonl(问题 45-47)

架构(30 秒版本)

task.yaml + fixtures/
        │
        ▼
runner.py ────► statsd(子进程,降低优先级,绑定核心)
        │               │
        │               ▼
        │        .stats.jsonl(5 Hz 遥测)
        │
        ├──► hermes-agent(子进程,--print-mode jsonl,--line-buffered)
        │               │
        │               TERMINAL_ENV=tmux_isolated
        │               ▼
        │        tmux 会话 ──► .cast(asciinema v2,通过 pipe-pane)
        │       (工作树,隔离的 $HOME,unshare --net,ulimit)
        │               │
        │               └─► read_file, patch, search_files, terminal, ...
        │
        ├──► .trace.jsonl(system/user/assistant/tool + Token ID + 推理)
        │
        ▼
scoring.py ──► results/<model>/<task>/
        │
        ├──► pass_rate, J/tok, 热警告, 硬件表格
        ├──► export-sft ──► sft_dataset.jsonl(带损失掩码)
        └──► render ──► .gif / .mp4(带 --overlay-stats HUD)

详细设计原理见 project.md 第 3 节。

目录结构

hermesbenchv0_1/
├── README.md                # 本文件
├── project.md               # 设计计划(1813 行)
├── rubric.md                # 自评(95/100)
├── Makefile                 # demo / doctor / test / lint / install
├── pyproject.toml           # Python 3.11+, ruff, mypy strict
├── requirements.lock        # 问题 75:固定版本
├── .pre-commit-config.yaml
├── .github/workflows/ci.yml
├── hermesbench/             # 包
│   ├── types.py             # TaskSpec, VerifierResult, HardwareMetrics
│   ├── backend/             # base, registry, tmux_isolated, recorder, worktree
│   ├── statsd/              # 5 Hz 遥测收集器
│   ├── trace.py             # 问题 52 轨迹读取器/规范化
│   ├── scoring.py           # 指标, 热对比, J/tok
│   ├── hermes_invocation.py # 问题 22 路径, 问题 50 SHA, 问题 57 烟雾测试
│   ├── runner.py            # 完整任务生命周期
│   └── cli.py               # click + rich CLI
├── tasks/                   # 43 项任务,11 个类别
│   ├── _template/           # 规范任务模板
│   ├── t01_terminal_smoke/  # 5 项任务
│   ├── t02_file_read/       # 6 项任务(含问题 61 并行)
│   ├── t03_patch_edit/      # 5 项任务
│   ├── t04_search_grep/     # 5 项任务
│   ├── t05_write_new/       # 5 项任务
│   ├── t06_process_mgmt/    # 5 项任务
│   ├── t07_todo_plan/       # 3 项任务
│   ├── t08_execute_code/    # 5 项任务
│   ├── t09_web_lookup/      # 3 项任务(模拟)
│   ├── t10_memory_facts/    # 3 项任务
│   └── t11_error_recovery/  # 3 项任务(问题 58)
├── fixtures/                # 任务输入数据(small_repo/, broken_code/, ...)
├── scripts/
│   ├── generate_tasks.py    # 幂等任务生成器(问题 28)
│   └── fake_model_server.py # 用于端到端测试
├── tests/                   # 47/47 通过
└── docs/
    ├── trace_format_reconciliation.md  # 问题 52
    ├── adding_backends.md             # 问题 9.3
    └── glossary.md                    # 问题 9.4

测试

make test   # 47 passed, 1 deselected
  • test_smoke.py — 包导入,pytest 收集
  • test_recorder.py — asciinema v2 往返(单元 + 集成)
  • test_statsd.py — 5 Hz 采样 2 秒,模式验证
  • test_statsd_pinning.py — 优先级降低 + 核心检测
  • test_statsd_sources.py — 每个源的形状验证
  • test_scoring.py — 硬件指标,J/tok,热对比
  • test_cli.py — 每个子命令 + 退出码
  • test_verifier_contract.py — 每个验证器返回 VerifierResult 格式
  • test_trace.py — 问题 52 协调
  • test_lint_verifiers.py — AST 遍历,标准库白名单
  • test_lint_fixtures.py — 注入模式扫描器
  • test_lint_fixture_sizes.py — 100 KB 上限

添加新任务

cp -r tasks/_template tasks/t12_my_category/t01_my_task/
$EDITOR tasks/t12_my_category/t01_my_task/task.yaml
# ... 编写 verifier.py ...
python3 -m hermesbench validate tasks/t12_my_category/t01_my_task/

完整模式见 tasks/_template/,术语见 docs/glossary.md。

添加新的环境后端

详见 docs/adding_backends.md。简而言之:继承 BaseHermesBenchEnvironment,使用 @register_backend("name") 注册,在 hermesbench/backend/__init__.py 中导入。

许可证

MIT。

相似文章

NousResearch/hermes-agent

GitHub Trending (daily)

Hermes Agent 是由 Nous Research 推出的开源、自我进化 AI 智能体框架,具备闭环学习循环、跨平台部署能力,并兼容数百种大语言模型。它提供终端界面、持久化记忆、自动化调度以及用于扩展 AI 工作流的科研级工具。