【免费下载链接】skill
PinchBench is a benchmarking system for evaluating LLM models as OpenClaw coding agents. Made with 🦀 by the humans at https://kilo.ai
PinchBench 是一套用真实任务评测 LLM 模型作为 OpenClaw 编码 Agent 的基准测试系统。跑完一轮后,很多人只瞄一眼总分就关掉了终端——但 PinchBench 结果分析的真正价值藏在三个地方:结果 JSON、Transcript 日志和综合得分算法。这篇文章用尽量少的代码,带你逐字段读懂它们,并亲自动手算一遍综合得分。
一、跑完一次基准测试,你会得到什么
执行 scripts/run.sh 后,产物默认落在results/目录(可用--output-dir指定),主要两类文件:
| 文件 | 说明 |
|---|---|
results/{run_id}_{model_slug}.json | 本次运行的结果 JSON,例如0001_openrouter-anthropic-claude-sonnet-4.json |
results/{run_id}_transcripts/{task_id}.jsonl | 每个任务的完整会话日志,例如task_calendar.jsonl |
两个小细节值得知道:
- 增量写入:基准测试每完成一个任务就会重写一次结果 JSON,并带上
"in_progress": true、completed_tasks和total_tasks字段(见 scripts/benchmark.py),所以你可以边跑边打开文件看进度。 - run_id 与 model_slug:
run_id是 4 位递增编号(0001、0002…),model_slug是模型 ID 把/和.替换成-后的形式。
二、结果 JSON 逐字段拆解
最终 JSON 由 scripts/benchmark.py 生成,顶层字段如下:
| 字段 | 含义 |
|---|---|
model | 被测模型 ID(带 provider 前缀) |
benchmark_version | 基准版本,来自 BENCHMARK_VERSION,保证跨版本可比 |
run_id/timestamp | 运行编号与时间戳 |
suite | 本次跑的任务集(all、automated-only、分类名或任务 ID 列表) |
runs_per_task | 每个任务重复次数(--runs),用于取均值 |
tasks | 每个任务一条记录的数组,见下表 |
category_scores | 按分类汇总的得分(产品力对比的关键) |
efficiency | Token 与成本效率指标 |
tasks[]中每条任务记录包含:
| 字段 | 含义 |
|---|---|
task_id/category/frontmatter | 任务 ID、所属分类(来自 tasks/manifest.yaml)及任务元数据 |
status | success、timeout或error |
timed_out | 是否超时 |
execution_time | 该任务耗时(秒) |
transcript_length | Transcript 事件条数 |
usage | 该任务的 token 用量与成本 |
grading | 评分对象:runs(每次运行的score、breakdown、notes)、mean、std、min、max |
💡 每个任务的满分是1.0,
grading.mean就是该任务的平均得分。LLM 评委被要求"严格打分":普通合格表现约 0.6~0.7,1.0 只留给真正出色的完成(评分提示词见 scripts/lib_grading.py)。
三、Transcript 日志:还原 Agent 的每一步操作
Transcript 是 JSONL 文件——每行一个事件,绝大多数行形如:
{"type": "message", "message": {"role": "assistant", "content": [...]}}读懂它只需要掌握三种角色(role):
| role | 内容 | 看什么 |
|---|---|---|
user | 任务提示词 | Agent 收到的原始指令 |
assistant | toolCall(工具名 + 参数)或text(回复文本) | Agent 调用了哪些工具、参数对不对 |
toolResult | 工具执行结果 | 工具是否真的成功 |
Token 用量也是从这份日志里来的:_extract_usage_from_transcript() 遍历所有assistant消息,累加input_tokens、output_tokens、缓存读写 token、cost_usd和request_count——这就是结果 JSON 里usage字段的来源。
多会话任务(multi-session)更讲究一点:带new_session: true的每一步会在开始前把上一段会话归档成{task_id}_session{i}.jsonl(见 scripts/lib_agent.py),最后再按顺序合并,保证评委能看到完整历史。
下面这张"皱巴巴的收据"就是真实任务素材——task_image_identification 会把它复制进 Agent 的工作区,让模型判断图片内容:
排查"为什么这个任务得分低"时,Transcript 是最好的证据链:先找toolCall看动作,再看toolResult看结果,最后对照grading.notes看评委扣分理由。
四、综合得分是怎么算出来的
4.1 单任务:三种评分方式
任务文件的grading_type决定评分路径(见 scripts/lib_grading.py):
- automated:执行任务文件里的 Python 检查函数,检查工作区产物和 Transcript,各准则 0~1 分后取平均;
- llm_judge:把 Transcript 摘要 + 评分细则(rubric)+ 工作区文件交给评委模型,输出
{"scores": {...}, "total": 0.x, "notes": "..."}; - hybrid:两者按
grading_weights加权平均。
4.2 分类得分与总分
_compute_category_scores() 的算法非常直观:
- 每个分类:
pct = 该分类得分总和 / 任务数 × 100(因为每任务满分 1.0); - 总分:
overall_pct = 所有任务得分之和 / 任务总数 × 100; - 终端摘要还会用颜色标记:🟢 ≥ 90%、🟡 ≥ 70%、🔴 < 70%(见 scripts/benchmark.py)。
比如你跑了 53 个任务共得 38.6 分,总分就是38.6 / 53 × 100 ≈ 72.8%,与 README.md 中 Leaderboard 的口径一致。
4.3 效率指标:得分之外还要看"花了多少"
_compute_efficiency_summary() 汇总所有任务的usage,产出几个实用的对比指标:
| 指标 | 公式 | 用途 |
|---|---|---|
score_per_1k_tokens | 总分 ÷(总 token ÷ 1000) | 单位 token 的得分,越高越省 |
score_per_dollar | 总分 ÷ 总成本(美元) | 成本效率 |
tokens_per_task | 总 token ÷ 任务数 | 平均消耗 |
cost_per_task_usd | 总成本 ÷ 任务数 | 平均花费 |
举个例子:模型 A 总分 40、花费 800 万 token,则score_per_1k_tokens = 40 ÷ 8000 = 0.005;模型 B 总分 39、花费 500 万 token,得分为0.0078——虽然 B 的绝对分略低,但性价比更高。选模型时这两个维度要结合着看。
4.4 两道"防翻车"保险
- sanity 快速失败:
task_sanity得 0 分且 Transcript 存在时,整个运行直接中止(exit code 3),避免浪费一整轮 API 费用; - Judge 缓存:相同任务 + Transcript + rubric + 工作区内容会命中缓存(
results/.judge_cache/),重复运行不再重复付费。
五、上手实战:三步读懂你的第一次结果
- 打开结果 JSON:先扫
category_scores,找到最弱的分类(🔴 那几行),这决定了你下一步该看哪些任务; - 钻进 Transcript:挑一个低分任务,到
results/{run_id}_transcripts/找对应.jsonl,按toolCall→toolResult的顺序回放 Agent 的操作,判断是"没做对"还是"做了但没检查到位"; - 对照效率指标:回到
efficiency.per_task,看低分任务是否同时烧了最多的 token——分数低、消耗高,才是真正需要优先优化的场景。
想深入细节时,这几个文件是最佳入口:任务格式规范 tasks/TASK_TEMPLATE.md、任务清单 tasks/manifest.yaml、评分引擎 scripts/lib_grading.py 与执行层 scripts/lib_agent.py。读懂了结果 JSON、Transcript 和得分公式,你就完成了 PinchBench 结果分析的基本功——剩下的,就是拿它选出一个既聪明又省钱的模型了 🦀
【免费下载链接】skill
PinchBench is a benchmarking system for evaluating LLM models as OpenClaw coding agents. Made with 🦀 by the humans at https://kilo.ai
相关推荐
center-randomize输出结果解读:日志分析与结果验证
center randomize输出结果解读:日志分析与结果验证 在考试中心分配系统中,准确理解输出结果和验证分配逻辑是确保公平性的关键步骤。本文将详细解析ce
SimpleCov结果合并器:ResultsCombiner的合并算法深度分析
SimpleCov结果合并器:ResultsCombiner的合并算法深度分析 SimpleCov是一个强大的Ruby代码覆盖率工具,其核心功能之一是能够自动合
测试代码质量开发工具GLM-5.1-w4a8多节点扩展指南:构建分布式AI推理集群的终极方案
GLM 5.1 w4a8多节点扩展指南:构建分布式AI推理集群的终极方案 GLM 5.1 w4a8是一款采用混合专家(MoE)架构的先进AI模型,其编码能力远强
大模型模型量化本地部署Ascend
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考