a2a-benchmark 是一个多语言 A2A(Agent-to-Agent)性能测试套件,包含四个代理:Python 和 Go 通过 ADK 调用 Gemini 工具,Node.js 和 Rust 作为直接处理器,用 Lucas–Lehmer 测试计算梅森素数,N 从 1 扫到 24。提交的结果一直停留在 N=22,Python 列整整一年都是 N/A。
根本原因是 CPython 3.11+ 默认限制 int→str 转换为 4300 位(DoS 缓解)。Python 代理将每个素数 str() 化,第 24 个梅森素数 p=19937,2^19937−1 有 6002 位,触发 ValueError,工具返回栈追踪文本而非结果。修复是删除无用的 str(),从 time.time() 改为 time.perf_counter,并增加 N=24 回归测试。
修复同时暴露了另外 8 个 bug:harness 优先从 LLM prose 正则提取时间,但 Gemini 用语不固定,数据全靠 fallback 存活;Node 和 Rust 用 toFixed(2) 报告时间,微秒级返回 0.00ms 在 log 尺度图上消失;直接代理报告“Found first 100 Mersenne primes”但实际只计算了 26 个;RTT 图表混用直接和 LLM 管道,400 倍差距实为架构差异;去掉格式后 Go 的计时低于微秒,输出 836ns 导致解析失败;重复使用 contextId 让 Gemini 拒绝重新调用。
最终 96/96 数据点全部正常,4 个 PR 共修复 9 个 bug。作者披露使用 Claude Code 作为调试与自动化修复代理。
#开发者 #工具 #CPython #A2A #MersennePrime #Python #Go #Nodejs #Rust #ADK #Gemini #LLM
@DevToolboxHub
