Skip to content

中文版 / Chinese version

BEAM Benchmark

BEAM is a benchmark for memory capability over long-context chat cases. Each case contains a very long chat history split into batches; ReMe converts each batch into a session, ingests them in chronological order, then answers probing questions via an agentic (ReAct) mode. Answers are scored with BEAM's rubric-based answer_judge job, which produces both a graded score and a binary verdict, and per-type averages are reported.

BEAM ships dataset variants by chat size — 100K / 500K / 1M / 10M — so memory systems can be stressed at different context lengths. Question types include abstention, contradiction resolution, event ordering, information extraction, instruction following, knowledge update, multi-session reasoning, preference following, summarization, and temporal reasoning.

Install ReMe and the BEAM plugin in editable mode from the repository root:

bash
python -m pip install -e ".[as]"
reme plugins install ./plugins/beam --editable
reme plugins validate beam

The runner explicitly enables the installed beam plugin and combines its defaults with ReMe's built-in benchmark preset. Editable installation keeps changes under plugins/beam visible without reinstalling the plugin. Custom application config paths still work through reme.config and can use extends: benchmark. This directory continues to own the runner, evaluation settings, dataset and outputs. Model credentials use the environment variables declared by the shared benchmark configuration.

1. Get the Dataset

BEAM is a public repository, cloned into benchmark/beam/dataset/:

bash
mkdir -p benchmark/beam/dataset
cd benchmark/beam/dataset
git clone https://github.com/mohammadtavakoli78/BEAM.git

After cloning, benchmark/beam/dataset/BEAM/ should contain chats/, src/, topics/ and other subdirectories.

2. Run

From the repository root:

bash
python benchmark/beam/run.py
python benchmark/beam/run.py --config benchmark/beam/config.yaml
python benchmark/beam/run.py -q                        # quiet
python benchmark/beam/run.py --eval_only               # reuse existing workspaces, query + judge only

3. Pipeline

  1. For each case, load chat.json and convert each batch into a ReMe session.
  2. Ingest sessions in chronological order into an isolated workspace, then digest_update.
  3. Answer each probing question via agentic (ReAct) mode.
  4. Score answers with BEAM's rubric-based answer_judge job and print per-type averages.

4. Key config — benchmark/beam/config.yaml

KeyMeaning
dataset.beam_rootBEAM dataset root (benchmark/beam/dataset/BEAM).
dataset.chat_sizeVariant to run: 100K / 500K / 1M / 10M.
dataset.case_idsSpecific cases (e.g. ["1","2"]); empty = all cases.
dataset.start_index / num_itemsCase pagination (num_items 0 = all).
dataset.workspace_rootPer-case workspace root (benchmark/beam/workspaces/beam).
evaluation.num_workers0 = auto, 1 = sequential, >1 = parallel.
reme.configReMe config used (benchmark).
output.dirResults directory (benchmark/beam/results).

5. Outputs

Results are JSON files written to output.dir as results_<chat_size>_<timestamp>.json, with a per-type score summary also printed to the console. Logging conventions are shared across benchmarks — see the top-level README.

6. Reference Results

The results below use the longmemeval-version prompt.

100K

agentscope==2.0.4.post1, conda reme env, 20 workers, eval-only (reusing prebuilt memory) (2026-08-05, 20 cases / 400 Qs, total 46.0 min)

TypeAgenticBinaryinput tok/qoutput tok/qtotal tok/qtool calls/q
abstention0.5500.55096,0311,07097,1014.58
contradiction_resolution0.4380.41232,26387233,1352.48
event_ordering0.5010.423140,1955,163145,3584.70
information_extraction0.8730.83250,24588351,1283.15
instruction_following0.7500.72537,98684838,8342.67
knowledge_update0.6880.67531,19865131,8492.27
multi_session_reasoning0.6260.58485,0384,56389,6014.28
preference_following0.9250.91234,28198935,2702.50
summarization0.6230.46189,6572,05691,7134.12
temporal_reasoning0.6370.62534,5631,04935,6122.52
OVERALL0.6610.62063,1461,81464,9603.33

Memory Construction average token consumption (default agent, full build over 20 cases):

Agentinput tok/caseoutput tok/casetotal tok/case
default2,172,316136,6972,309,013

1M

agentscope==2.0.4.post1, conda reme env, 20 workers, full memory build (2026-08-05, 35 cases / 700 Qs, total 459.2 min)

TypeAgenticBinaryinput tok/qoutput tok/qtotal tok/qtool calls/q
abstention0.4290.429118,7071,178119,8864.20
contradiction_resolution0.3910.36449,78781050,5972.50
event_ordering0.5580.456201,5143,889205,4034.79
information_extraction0.8090.77278,95089479,8443.00
instruction_following0.8520.83255,75792456,6812.81
knowledge_update0.7790.77145,98166546,6462.37
multi_session_reasoning0.6580.612138,1332,873141,0064.40
preference_following0.7980.77751,79692052,7162.53
summarization0.6930.537158,7942,905161,7004.44
temporal_reasoning0.5360.536100,1763,148103,3243.90
OVERALL0.6500.60999,9591,821101,7803.49

Memory Construction average token consumption (default agent, full build over 35 cases):

Agentinput tok/caseoutput tok/casetotal tok/case
default31,943,8171,417,06133,360,878

Released under the Apache-2.0 License.