Everything behind Section 6 of the CharacterBench reproduction report: the scripts as run, their results and logs, and the frozen inputs from which the scoring can be recomputed without access to the platform. Nothing here contains test-set text, dialogue or a model's reply: the test set stays with its authors (github.com/thu-coai/CharacterBench), and replies are referred to only by sample.
shasum -a 256 -c SHA256SUMS # in a copy of this directory
Every file's SHA-256 is listed below and in SHA256SUMS.
Each line of frozen/judge_outputs_<run>.jsonl holds a sample's ten judge outputs as returned. Read each with
check() from the authors' all_eval.py, average the ten, and per language and test file take
mean / max(human scores of the kept samples) × 5; AVG is the mean of the 13 columns. The result must equal the run's
result.perLang in frozen/runs.json at two decimals. code/tools/experiments/characterbench_recompute.py
does exactly this with only this bundle and the authors' repository (log: logs/11-recompute.log):
python3 -I code/tools/experiments/characterbench_recompute.py repo frozen
git clone https://github.com/thu-coai/CharacterBench repo && git -C repo checkout 66c113c
curl -L -o eprint.tar.gz https://arxiv.org/e-print/2412.11912v1 && mkdir eprint && tar xzf eprint.tar.gz -C eprint
python3 -I code/tools/experiments/characterbench_spec_check.py eprint repo frozen/val_zh.jsonl frozen/val_en.jsonl
python3 -I code/tools/experiments/characterbench_judge_audit.py out.json frozen/val_zh.jsonl frozen/val_en.jsonl --repeat frozen/judge_rep0_zh.jsonl frozen/judge_rep0_en.jsonl --seeds frozen/judge_rep{1,2,3}_{zh,en}.jsonl
The prompt and pipeline checks (characterbench_prompt_check.py, characterbench_audit_platform.ts,
characterbench_audit.py) also need the platform's samples and the runs' replies; their outputs and logs are in
results/ and logs/, and the logs give each command as run. The judge requests themselves can be repeated against
any server running the checkpoint with characterbench_judge_validation.py (sampled outputs repeat only on the same deployment).
31a478305c1641a6: characterbench-2.0 · 2026-10-27, 6,460 judged samples (paper anchor, not on the leaderboard)47920340ab8e49fe: characterbench-2.0 · 2026-10-27, 6,488 judged samples7ec615d6637844cd: characterbench-2.0 · 2026-10-27, 6,474 judged samplesa9c1f7d7a75f4fb3: characterbench-2.0 · 2026-10-27, 6,494 judged samplese279fdfe13874179: characterbench-2.0 · 2026-10-27, 6,476 judged samplese78e8134973f4bd5: characterbench-2.0 · 2026-10-27, 6,494 judged sampleseebe847ae59b4d41: characterbench-2.0 · 2026-10-27, 6,462 judged samples (paper anchor, not on the leaderboard)fb8c23842faa41d1: characterbench-2.0 · 2026-10-27, 6,494 judged samples| File | Bytes | SHA-256 | Content |
|---|---|---|---|
| code/server/src/benchmarks/characterbench/build.ts | 21,238 | 705c2c9d6e7bcd4f… | The audit scripts and the platform source they execute, exactly as run. |
| code/server/src/benchmarks/characterbench/data.ts | 2,386 | dc6fe1137d0411c5… | The audit scripts and the platform source they execute, exactly as run. |
| code/server/src/benchmarks/characterbench/index.ts | 16,642 | 1f74f44ce9495512… | The audit scripts and the platform source they execute, exactly as run. |
| code/server/src/benchmarks/characterbench/meta.ts | 5,602 | e19408fd71e689df… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_anchor.py | 4,008 | 797136272f04d0ba… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_audit.py | 19,921 | cfc6f8a9ceb202cc… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_audit_bundle.py | 20,076 | 85764665e03c8dc8… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_audit_module.py | 6,501 | 3d178c8802a77656… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_audit_platform.ts | 5,333 | 6a1f7d620038c7bf… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_judge_audit.py | 7,506 | 0353f6874e13297a… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_judge_validation.py | 13,131 | 48f6febb00f29e13… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_prompt_check.py | 6,088 | 5014aa156a5b328b… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_prompt_hashes.ts | 1,142 | 1ce6c15b72bd06d7… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_recompute.py | 3,526 | c342d1d7c87893d9… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterbench_spec_check.py | 15,016 | 9ffa1deff1d3b52c… | The audit scripts and the platform source they execute, exactly as run. |
| code/tools/experiments/characterjudge_server_check.py | 8,050 | 5aa5d75d75364a0b… | The audit scripts and the platform source they execute, exactly as run. |
| code/worker/src/benchmarks/characterbench/build.ts | 21,238 | 705c2c9d6e7bcd4f… | The audit scripts and the platform source they execute, exactly as run. |
| code/worker/src/benchmarks/characterbench/index.ts | 17,212 | 4508a6e9c651550a… | The audit scripts and the platform source they execute, exactly as run. |
| code/worker/src/engine/results.ts | 28,235 | b0a90135beac7839… | The audit scripts and the platform source they execute, exactly as run. |
| code/worker/src/engine/runner.ts | 47,075 | 4857386b410a9f19… | The audit scripts and the platform source they execute, exactly as run. |
| code/worker/src/scoring.ts | 3,320 | cd5a1df8bcb974c5… | The audit scripts and the platform source they execute, exactly as run. |
| frozen/judge_outputs_31a478305c1641a6.jsonl | 1,489,960 | c1e79ed2ef6c83f0… | Every stored judge output of one run (10 per sample) with the platform's reading; excluded samples marked. |
| frozen/judge_outputs_47920340ab8e49fe.jsonl | 1,490,470 | af7582956f3969b7… | Every stored judge output of one run (10 per sample) with the platform's reading; excluded samples marked. |
| frozen/judge_outputs_7ec615d6637844cd.jsonl | 1,489,932 | 4949ee238286a16d… | Every stored judge output of one run (10 per sample) with the platform's reading; excluded samples marked. |
| frozen/judge_outputs_a9c1f7d7a75f4fb3.jsonl | 1,490,052 | 78a88037286641cc… | Every stored judge output of one run (10 per sample) with the platform's reading; excluded samples marked. |
| frozen/judge_outputs_e279fdfe13874179.jsonl | 1,490,572 | 425ede6757da3ff5… | Every stored judge output of one run (10 per sample) with the platform's reading; excluded samples marked. |
| frozen/judge_outputs_e78e8134973f4bd5.jsonl | 1,490,880 | 6da83e4473630b55… | Every stored judge output of one run (10 per sample) with the platform's reading; excluded samples marked. |
| frozen/judge_outputs_eebe847ae59b4d41.jsonl | 1,489,990 | 50cdf5d8deba2999… | Every stored judge output of one run (10 per sample) with the platform's reading; excluded samples marked. |
| frozen/judge_outputs_fb8c23842faa41d1.jsonl | 1,490,052 | fc525920ddfee9d7… | Every stored judge output of one run (10 per sample) with the platform's reading; excluded samples marked. |
| frozen/judge_rep0_en.jsonl | 787,058 | 4f5eeebbf584b915… | The same requests a day later with the same seeds. |
| frozen/judge_rep0_zh.jsonl | 786,861 | 4b04714d01f371d5… | The same requests a day later with the same seeds. |
| frozen/judge_rep1_en.jsonl | 787,058 | 74d2e0775147b0b3… | The same requests with other seeds (offset 1, 2, 3). |
| frozen/judge_rep1_zh.jsonl | 786,861 | 5f7454c7cc114da7… | The same requests with other seeds (offset 1, 2, 3). |
| frozen/judge_rep2_en.jsonl | 787,058 | ebf7d80931712c65… | The same requests with other seeds (offset 1, 2, 3). |
| frozen/judge_rep2_zh.jsonl | 786,861 | b28dbf9e73fc62ef… | The same requests with other seeds (offset 1, 2, 3). |
| frozen/judge_rep3_en.jsonl | 787,058 | fb475c5d0753db45… | The same requests with other seeds (offset 1, 2, 3). |
| frozen/judge_rep3_zh.jsonl | 786,861 | bf234d3b2e3c2fde… | The same requests with other seeds (offset 1, 2, 3). |
| frozen/leaderboard.json | 5,505 | 7eb46d42cdb596c9… | Every CharacterBench run's protocol and eligibility at the time of the audit. |
| frozen/runs.json | 34,736 | 8507f0955b2452d8… | Each audited run's protocol snapshot (judges, engine), configuration and result. |
| frozen/val_en.jsonl | 720,504 | aa18d8937799b4b7… | The deployed judge on the 3,250 annotated test responses per language (greedy and 10 seeded samples). |
| frozen/val_zh.jsonl | 720,259 | da7eeb1fe6e48c6c… | The deployed judge on the 3,250 annotated test responses per language (greedy and 10 seeded samples). |
| logs/00-environment.log | 471 | 325957ed09fdf0fd… | One log per step: command, start and end time, exit status and full output. |
| logs/01-spec_check.log | 12,632 | 68867643cb6763c9… | One log per step: command, start and end time, exit status and full output. |
| logs/02-table11.log | 3,035 | c7322a96e4aa5d69… | One log per step: command, start and end time, exit status and full output. |
| logs/03-prompt_check_authors.log | 286 | a9e552befdb52a8b… | One log per step: command, start and end time, exit status and full output. |
| logs/04-prompt_check_platform.log | 606 | 86420e0630250877… | One log per step: command, start and end time, exit status and full output. |
| logs/05-prompt_check_compare.log | 363 | 7375b5e02d469f52… | One log per step: command, start and end time, exit status and full output. |
| logs/06-audit_platform.log | 516 | 13c54d1151b1ed31… | One log per step: command, start and end time, exit status and full output. |
| logs/07-audit.log | 2,551 | ad3cdf330f31b512… | One log per step: command, start and end time, exit status and full output. |
| logs/08-judge_audit.log | 1,345 | 6b6c2a9b2926c62d… | One log per step: command, start and end time, exit status and full output. |
| logs/09-anchor.log | 605 | f505fa0059c44e3e… | One log per step: command, start and end time, exit status and full output. |
| logs/10-audit_module.log | 409 | bce2913d732a0403… | One log per step: command, start and end time, exit status and full output. |
| logs/11-recompute.log | 1,917 | cb2c2fa33f1d79bb… | One log per step: command, start and end time, exit status and full output. |
| results/anchor.json | 6,259 | 61601f6355b988d1… | The paper anchor (GPT-4o) against the paper's appendix row. |
| results/audit.json | 28,382 | fe1b3812d0d1242e… | Data, prompts, judge input and scoring: the authors' functions against the platform, per run. |
| results/judge_audit.json | 5,479 | 74a0325f77d36848… | Judge against human scores, the authors' predictions, a same-seed repeat and three other seeds. |
| results/prompt_hashes_authors.json | 861,836 | ef5572a7ae12e76a… | SHA-1 of every role-play and judge prompt built by the authors' functions. |
| results/prompt_hashes_platform.json | 829,367 | c66d03aaeaebd0f7… | The same, built by the platform's functions. |
| results/spec_check.txt | 12,632 | 68867643cb6763c9… | Every protocol setting against the paper and the authors' code. |