Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Read-Tool 评估工具

这是一种 A/B 对比测试工具,用于衡量 read_file 相关设计决策对实际智能体运行性能的影响。该工具的灵感来源于 Command Code 在 2026 年 8 月发布的关于 read-tool 的分析文章——该文章对比了十种处理恶意文件的测试工具,但其中关于 Hermes 的描述存在多处错误(实际上我们早已实现了行级长度限制、意图猜测功能、笔记本/Docx/Xlsx 文件提取、PDF 转换以及设备路径黑名单等功能)。本次评估通过真实的 AIAgent 对实际运行场景进行测试,而非依赖任何第三方提供的能力列表。

评估内容

每个任务都会让完整的 Hermes 智能体(包含文件处理、终端操作及搜索工具集)在一个固定的恶意工作环境中执行任务:

测试用例文件特征测试任务
package-lock.json共 80,000 行,大小 2.7MB——存在令牌陷阱lockfile_version
src/app.min.js包含一条 600KB 长度的正则匹配内容minified_backoff
logs/server.log共 150,000 行,文件末尾附近有一处 ERROR 日志log_error_hunt
data/report.txt共 412 行——用于测试 EOF 后的行为past_eof
config/overrides.yaml空文件empty_config
notes/Meeting…PM.txt文件名包含 NFD 编码、U+202F 及 U+2019 特殊字符unicode_filename
AGENTS.md 与 AGENT.md文件名仅存在细微差异near_miss_filename
logs/live.pipeFIFO 队列结构——会阻塞简单的读取操作fifo_hang
data/data.txt文件名为 .txt,但实际上内容为 PNG 图片字节lying_extension
每项任务的指标包括:准确率(基于预设真实值,通过子串/正则表达式评估器计算得出)、API调用次数、工具调用次数、文件读取调用次数、总token数以及wall_s。效率汇总值均为各项任务的平均值,而非总和。

运行方式

# Baseline (3 reps, both models)
python3 evals/readtool/runner.py --model anthropic/claude-opus-4.8 \
    --provider openrouter --reps 3 --label baseline
python3 evals/readtool/runner.py --model qwen/qwen3.8-max \
    --provider openrouter --reps 3 --label baseline

# After a feature change, re-run with a new label:
python3 evals/readtool/runner.py --model qwen/qwen3.8-max \
    --provider openrouter --reps 3 --label feat-stat-guard

# Compare
python3 evals/readtool/report.py --labels baseline feat-stat-guard

评估规则(源自 hermesbench 的规范):

  • 至少需进行 3 次重复测试;单次测试的误差在 ±3% 范围内属于正常波动,不能视为有效结果。
  • 在测试运行过程中严禁修改 tools/ 目录——测试工具会自动加载最新的模型结构。
  • 有意使用两种模型:一种是为应对粗糙输入而设计的边界模型(opus),另一种则是能充分体现模型质量的优秀开源模型(qwen-max)。即便某项特性仅对 qwen 有效,也会被计入统计——因为强化训练正是针对这类模型群体而言的。
  • 出现错误的测试任务将得分为 0,虽仍会计入准确率的分母,但不会被纳入效率指标的计算中。

结果展示格式

results/<label>/<model_slug>/rep<N>.json

除用于记录每个被评估功能的测试结果及对应数值的 SUMMARY.md 文件外,results/ 目录均会被 Git 忽略。