eval: usage/turns 统计数据严重不准确 #91

Closed
opened 2026-06-05 03:32:12 +00:00 by xiaoju · 0 comments
Owner

问题

eval 运行后,CAS StepNode 记录的 usage 数据与 hermes session DB 中的实际数据严重不一致。

复现

运行 uwf-eval run fix-add-bug,查看 CAS detail 中的 StepNode:

字段 StepNode(错误) Hermes DB(正确)
turns 1 5 assistant turns / 8 total
inputTokens 238 26,087
outputTokens 222 904
duration 5 23,816ms

分析

uwf-hermes 通过 ACP protocol(session/prompt)驱动 hermes agent,完成后调用 loadHermesSessionFromDb()~/.hermes/state.db 读取 after snapshot,再与 before snapshot 做 delta 计算。

疑似原因:

  1. 竞态条件 — hermes ACP 返回 response 后,DB 的 token 累加(input_tokens = input_tokens + ?)可能还未全部 commit,导致读到中间状态
  2. 数据源错误 — 238/222 这个量级像是单次 completion 的 token count(可能来自 copilot proxy 的 usage),而非 hermes 累积的多轮总量

影响

  • token-stats judge 拿到的数据不可靠
  • eval 报告中的成本/效率指标失真
  • 无法准确评估 agent 的资源消耗

涉及文件

  • packages/agent-hermes/src/hermes.tsrunPrompt() + computeUsageDelta()
  • packages/agent-hermes/src/session.tsloadHermesSessionFromDb()
  • packages/eval/src/runner/execute.ts — agent spawn + usage collection

下一步

hermes.tsrunPrompt() 加 debug log,打印 before/after snapshot 实际值,跑一次 eval 定位是竞态还是数据源问题。


小橘 🍊(NEKO Team)

## 问题 eval 运行后,CAS StepNode 记录的 usage 数据与 hermes session DB 中的实际数据严重不一致。 ### 复现 运行 `uwf-eval run fix-add-bug`,查看 CAS detail 中的 StepNode: | 字段 | StepNode(错误) | Hermes DB(正确) | |------|------------------|-------------------| | turns | 1 | 5 assistant turns / 8 total | | inputTokens | 238 | 26,087 | | outputTokens | 222 | 904 | | duration | 5 | 23,816ms | ### 分析 `uwf-hermes` 通过 ACP protocol(`session/prompt`)驱动 hermes agent,完成后调用 `loadHermesSessionFromDb()` 从 `~/.hermes/state.db` 读取 after snapshot,再与 before snapshot 做 delta 计算。 疑似原因: 1. **竞态条件** — hermes ACP 返回 response 后,DB 的 token 累加(`input_tokens = input_tokens + ?`)可能还未全部 commit,导致读到中间状态 2. **数据源错误** — 238/222 这个量级像是单次 completion 的 token count(可能来自 copilot proxy 的 usage),而非 hermes 累积的多轮总量 ### 影响 - `token-stats` judge 拿到的数据不可靠 - eval 报告中的成本/效率指标失真 - 无法准确评估 agent 的资源消耗 ### 涉及文件 - `packages/agent-hermes/src/hermes.ts` — `runPrompt()` + `computeUsageDelta()` - `packages/agent-hermes/src/session.ts` — `loadHermesSessionFromDb()` - `packages/eval/src/runner/execute.ts` — agent spawn + usage collection ### 下一步 在 `hermes.ts` 的 `runPrompt()` 加 debug log,打印 before/after snapshot 实际值,跑一次 eval 定位是竞态还是数据源问题。 --- 小橘 🍊(NEKO Team)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: shazhou/united-workforce#91