Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion agentbench/00/arithmetic/add-mult.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/00/arithmetic/add-mult.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/00/arithmetic/int-div.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/00/arithmetic/int-div.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/00/string/concat.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/00/string/concat.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/01/arithmetic/sum-1-100.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/01/arithmetic/sum-1-100.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/01/string/reverse.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/01/string/reverse.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/01/tool-shell/echo.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/01/tool-shell/echo.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/02/array/max.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/02/array/max.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/02/tool-python/pow.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/02/tool-python/pow.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/02/tool-shell/kernel.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/02/tool-shell/kernel.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/03/array/sum.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/03/array/sum.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/03/string/char-count.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/03/string/char-count.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/03/tool-http/fetch-example.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/03/tool-http/fetch-example.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/04/array/second-max.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/04/array/second-max.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/04/dict/read-member.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/04/dict/read-member.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/04/string/palindrome.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/04/string/palindrome.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/05/dict/linked-list.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/05/dict/linked-list.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/05/kvspace/persist.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/05/kvspace/persist.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/05/reasoning/cats.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/05/reasoning/cats.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/06/array/binary-search.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/06/array/binary-search.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/06/kvspace/multi-write.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/06/kvspace/multi-write.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/06/planning/pipe-multitool.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/06/planning/pipe-multitool.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/07/kvspace/nested-tree.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/07/kvspace/nested-tree.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/07/planning/fetch-parse.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/07/planning/fetch-parse.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/07/reasoning/cities.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/07/reasoning/cities.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/08/meta/self-gen-llm.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/08/meta/self-gen-llm.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/08/meta/self-inspect.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/08/meta/self-inspect.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/08/planning/error-recovery.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/08/planning/error-recovery.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/09/meta/memory-cross.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/09/meta/memory-cross.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/09/planning/primes.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/09/planning/primes.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/09/reasoning/mislabeled-boxes.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/09/reasoning/mislabeled-boxes.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/10/meta/open-goal.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/10/meta/open-goal.question

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/10/planning/full-autonomy.answer

This file was deleted.

1 change: 0 additions & 1 deletion agentbench/10/planning/full-autonomy.question

This file was deleted.

143 changes: 95 additions & 48 deletions agentbench/README.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,105 @@
# agentbench —— byteseek agent 能力测试基准
# agentbench —— HumanEval / SWE-bench 基准入口

对 corebrain(代码脑)做端到端能力测试:给定自然语言任务,agent 生成 kvlang 程序执行,
结果经 `println` 落到终端。每题两个文件:`<name>.question`(任务)与 `<name>.answer`(基准答案)。

## 目录结构
agentbench 不再自带题目。它是一个**薄入口**:调用业界两套标准基准(Codex / Claude 评测用的
HumanEval 系列与 SWE-bench 系列),把 byteseek 当作被测 agent 接进去。

```
agentbench/
{难度00..10}/{类别}/{name}.question
{name}.answer
bench 入口脚本(bash 壳,exec 到 BENCH_HOME 的 venv)
bench.py 驱动:题库 → agent → predictions → 官方评测
```

难度在前、类别在后,两级子目录。难度用两位补零 `00`–`10`(共 11 级)。
## 快速开始

```bash
agentbench/bench env # 环境自检
agentbench/bench list # suite 与题量
agentbench/bench all humaneval --agent gold # 验管道(题库自带答案,不调 LLM)
agentbench/bench run humaneval --agent byteseek --limit 10
agentbench/bench eval humaneval
```

## 难度量表(0–10)
## 命令

| 难度 | 说明 |
| 命令 | 作用 |
|------|------|
| 0 | 单步、无工具:直接算术 / 字符串拼接 |
| 1 | 单步单工具(shell/python),或简单循环累加 |
| 2 | 单工具带参数 / 单次算法(数组最值、幂运算) |
| 3 | 单算法 / 字符串统计 / 网络冒烟 |
| 4 | 数组算法 / 回文判断 / dict 成员读 |
| 5 | dict 指针链表 / kvspace 读写 / 中等逻辑 |
| 6 | 多工具组合 / kvspace 多键 / 二分查找 |
| 7 | 抓取→解析→存储 / 嵌套状态树 / 多约束推理 |
| 8 | 自省自改 / 错误恢复 / 嵌套代码生成(需 LLM) |
| 9 | 跨会话记忆 / 开放分解 / 经典谜题 |
| 10 | 开放目标,无固定解(按 rubric 评分) |

## 类别

| 类别 | 内容 |
| `bench env` | 打印框架版本、题库路径与题量、docker、kvlang/kvspace/byteseek 就绪状态 |
| `bench list` | 列出 suite 与题量 |
| `bench run <suite>` | 生成 `predictions.jsonl`(agent 阶段) |
| `bench eval <suite>` | 官方评测(eval 阶段);默认取该 suite 最近一次 run 的 predictions |
| `bench all <suite>` | run + eval |

`run` 选项:`--agent gold|byteseek`、`--limit N`、`--offset N`、`--task id1,id2`、
`--out DIR`、`--timeout S`(单题 agent 超时)、`--no-boot`。
`eval` 选项:`--predictions FILE`、`--workers N`、`--k 1 10`(human-eval pass@k)、
`--eval-timeout S`、`--dataset-name`(SWE-bench 数据集名)。

退出码:`0` 通过 / `1` 未通过 / `2` 前置条件不满足(缺题库、缺 docker、byteseek 未就绪)/ `3` 参数错误。

## suite 与评测后端

| suite | 题量 | 评测 |
|-------|------|------|
| `humaneval` | 164 | 官方 `human_eval.evaluate_functional_correctness`(pass@k) |
| `humaneval+` | 164 | `evalplus.evaluate`(HumanEvalPlus,base / plus 两档) |
| `swebench-verified` | 500 | `swebench.harness.run_evaluation`(**需 Docker**) |
| `swebench-lite` | 300 | 同上 |

agent 阶段与评测阶段分离,与官方 harness 一致:`run` 只产 predictions,`eval` 才判分。
因此可以本机产 predictions、拿到有 Docker 的机器上判分。

## agent 契约

- **`gold`**:直接用题库自带答案(`canonical_solution` / `patch`),用来验证管道本身,不调 LLM。
- **`byteseek`**:每题生成一个 `.kv`,内容为 `llm·call(<题目提示>) -> e` 加 `byteseek·run(e)`,
由 `kvlang` 驱动并捕获 stdout。agent 必须把答案包在 `<<<ANSWER>>>` 与 `<<<END>>>` 之间;
未取到标记时只在日志里提示,prediction 记为空串(不伪造内容)。

HumanEval 题问「补全该 Python 函数」;SWE-bench 题问「按问题描述产出 unified diff」。
SWE-bench 默认只取 diff(不检出仓库);需要 agent 直接改仓库时,在提示里给出检出目录。

## 环境

重依赖装在 `BENCH_HOME`(默认 `/home/peng.li24/benchmarks`,跨 pod 持久),**不进 git 仓库**:

```
$BENCH_HOME/
venv/ human-eval + evalplus + swebench + datasets
data/human-eval/ HumanEval.jsonl.gz(openai/human-eval 官方题)
data/evalplus/ HumanEvalPlus.jsonl(evalplus release)
data/swe-bench/ SWE-bench_Verified.jsonl / SWE-bench_Lite.jsonl(HF princeton-nlp)
runs/<suite>-<agent>-<时间>/ tasks/ logs/ predictions.jsonl run.json
trash/ 旧 agentbench 题目(已被本入口取代)
```

重装:

```bash
python3 -m venv $BENCH_HOME/venv
$BENCH_HOME/venv/bin/pip install human-eval evalplus swebench datasets huggingface_hub
```

## 已验证(2026-09-13)

| 检查 | 结果 |
|------|------|
| arithmetic | 数值计算与算术表达式 |
| string | 字符串拼接 / 反转 / 统计 |
| array | 数组算法(最值 / 求和 / 查找 / 排序) |
| dict | 键值结构与路径指针 |
| tool-shell | shell 工具调用 |
| tool-python | python 工具调用 |
| tool-http | http 网络抓取 |
| kvspace | 状态树读写与持久化 |
| reasoning | 逻辑推理与约束满足 |
| planning | 多步规划与多工具组合 |
| meta | 记忆、自省、自改(高阶) |

## 答案约定

- 确定性题目:`.answer` 即 `println` 的期望输出(裸值,不含换行)。
- 冒烟题目(需真实 LLM / 网络 / 完整 bootstrap):`.answer` 以 `期望(冒烟):` 开头,给出可验证检查。
- 开放题目(难度 10):`.answer` 以 `评分标准:` 开头,给出 rubric,无单一标准输出。

## 环境假设

冒烟题依赖完整 byteseek runtime(已 bootstrap,`/lib/byteseek.kvlangbrief` 与
`/byteseek/prompt/system` 已播种)、可用的 `DEEPSEEK_API_KEY`(嵌套代码生成题)与出网能力
(http 题,走 `http_proxy`/`https_proxy` 环境变量)。
| `run humaneval --agent gold` + `eval humaneval` | `pass@1 = 0.9939`(164 题,1 题官方 canonical 解过不了官方测试) |
| `eval humaneval+`(同一批 gold 样本) | `base 0.9878 / plus 0.8537`(canonical 解在 extra tests 上的已知表现) |
| `run swebench-lite --agent gold` | 产出 5 题标准格式 predictions |
| `eval swebench-lite` | 无 docker → 退出码 2,并打印可在有 Docker 机器直接执行的命令 |
| `run humaneval --agent byteseek` | **阻塞**:见下 |

## 已知阻塞:byteseek lib 与 kvlang 版本漂移

`KVLANG_LIB=lib kvlang` 当前有 3 个文件 layout 失败,byteseek 的 agent 链路因此不可用
(`--agent byteseek` 会在引导后立刻报错退出,不再静默产出空答案):

| 文件 | 报错 | 原因 |
|------|------|------|
| `lib/byteseek/llm.kv` | `member write on undefined container "/tmp/esc"` | `/tmp/esc·sys` 用了 `·`(成员分隔符),新 kvlang 要求先显式声明容器;路径应写 `/tmp/esc/sys` |
| `lib/byteseek/shell.kv` | `container literal {…} on "noenv" needs a map langtype` | 未标注 langtype 的 `{}` 字面量 |
| `lib/byteseek/python.kv` | 同上(`a`) | 同上 |

byteseek `deps.json` 锁的是 kvlang `v0.2.15`,而本机是 `v0.2.18-9`——`/usr/bin/kvlang` 与
`kvlang/bin/kvlang` 两个二进制都同样失败。这与本次改造无关:修 lib 或对齐 deps 后,
`--agent byteseek` 即可跑通。
7 changes: 7 additions & 0 deletions agentbench/bench
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
# agentbench 入口:所有重依赖(human-eval / evalplus / swebench / datasets)在 BENCH_HOME 的 venv 里。
set -euo pipefail
BENCH_HOME=${BENCH_HOME:-/home/peng.li24/benchmarks}
PY=$BENCH_HOME/venv/bin/python
[ -x "$PY" ] || { echo "缺少 $PY(先按 agentbench/README.md 安装基准框架)" >&2; exit 2; }
exec "$PY" "$(dirname "$(readlink -f "$0")")/bench.py" "$@"
Loading
Loading