# CoSER 复现独立复核（第一轮：从论文原文出发）

- 核查对象：SociaBench 平台对 CoSER（arXiv:2502.09082，ICML 2025）given-circumstance acting 评测的复现，协议版本 `coser-gca-1.0 · 2026-10-28`（`worker/src/benchmarks/coser/index.ts:53`，`gca/setup.ts:10`）。
- 平台代码版本：仓库 HEAD `01bd87913697b5f83bc13e16d141f7098712853a`。`worker/src/engine/*` 一律用 `git show HEAD:<path>` 读，行号是 HEAD 版本的行号；工作区里其他会话未提交的改动没有读。
- 报告日期：2026-11-01（UTC）。复核者没有运行任何付费模型，没有访问生产环境，没有改动仓库。

## 0. 材料与方法

| 材料 | 标识 |
|---|---|
| e-print v1 | `v1.tgz` SHA-256 `60a939e7bf3c5baf766a531b0fd04e604b0aebb205c371cb369f228b415b5e13` |
| e-print v2 | `v2.tgz` SHA-256 `ab8926b17127a6d0c2f9d3d0af1509849fe67b78f8c32b7a05021588d1315d5b` |
| e-print v3（主依据） | `v3.tgz` SHA-256 `c6b39dff7e512e174d68ce20a147db5fd641e967bfac12d1e0e301e6b4b4c0f6` |
| 官方仓库，论文同期 | `93c147462592e372dba03afbdf37f5d0d667f8cc`（2025-02-14，"first update"） |
| 官方仓库，当前 HEAD | `624efc50db7be3a4e37cec6a1c58ed434dc9f2ce`（2026-04-02） |
| 测试集 | `624efc5:data/test/test_set.json`，SHA-256 `eb175779d1d5adf99c893ff1f82de9b18ada912d3f385b3f5419195afdfb374a` |

方法：先精读 v3 的 `Sections/` 和 `Tables/`，再读平台代码，官方代码只用来判定论文未说明或论文自相矛盾的条目。官方代码全程只用 `git show` 读取、Python `ast` 解析文本，没有 import 或运行。比对和复算都用脚本完成，脚本和原始输出在目录 `<reviews>/pass1-scripts/`：

| 脚本 | 输出 | 内容 |
|---|---|---|
| `version_diff.py` | `version_diff.txt` | v1/v2/v3 去空白后的逐行 diff |
| `keyword_scan.py` | `keyword_scan.txt` | v3 关键词逐条命中（case 表只计数不摘录） |
| `prompt_compare.py` | `prompt_compare.txt` | 论文提示词表 vs `strings.gen.ts`，按 token 比对 |
| `strings_vs_official.py` | `strings_vs_official.txt` | `strings.gen.ts` vs 官方两个 commit |
| `table_check.py` | `table_check.txt` | 主表 vs `published.ts`；Average；ID/OOD；其他表交叉 |
| `published_eval.py` | `published_eval.txt` | 由 flaws 复算官方发布的评测文件 |
| `platform_on_example.ts` | `platform_on_example.txt` | 平台纯函数跑官方发布的样例 |
| `testset_check.py` | `testset_check.txt` | 测试集结构（只输出计数） |

局限：平台从未在本轮被实际运行；所有“影响分数”的判断里，方向可由代码推出，幅度除另有说明外都没有测量。第 10 节是读完矩阵和现有报告后才写的，第 1–9 节写成时没有读过 `docs/复现规范/CoSER-核查矩阵.md`、`web/src/pages/CoserReport.tsx`、`web/src/components/CoserSections.tsx`、`web/public/audit/`、`tools/experiments/coser_*`。读完之后，第 1–9 节只改了 10.2 列出的事实错误（复查后确认）和几处行号、措辞的精度，没有改结论。

## 1. 谁产出了论文的数字

唯一说明主表配置的句子是 `Sections/5_Experiments.tex:8-9`：GPT-4o 作裁判和环境模型，CoSER 70B 作 NSP；裁判看不到内心想法，k=0。`Sections/5_Experiments.tex:34` 说主表是三次运行的平均。裁判版本只有两处线索：`Sections/4_Methodology.tex:74` 脚注说默认裁判是 GPT-4o，没写版本；`Sections/5_Experiments.tex:20` 的 `Version:240806` 脚注挂在被测模型 GPT-4o 和 GPT-4o Mini 上。裁判是 2024-08-06 版是官方 README 明说的（`624efc5:README.md:183`）。主表标题和脚注（`Tables/main_exp.tex:40-42`）没有任何配置说明。

论文同期代码与这句话完全吻合：`93c1474:gca_evaluation/eval_reproduce.py:185,187,564`，实验名就是 `env_model=gpt-4o-nsp=llama3-1210-8epc`。代码没有写 `llama3-1210-8epc` 等于 CoSER 70B，这是从第 8 行的论文文字和模型列表（同文件 `:623-624,646`）推出的。

所以：**主表数字来自 CoSER 70B 作 NSP、论文表格中的 NSP 提示词、`eval_reproduce.py` 的评分式。** 分数上限是 2025-02-18（`0e11992`）加的，官方 HEAD 上的 `main.py` 是 2025-02-24 重构（`297ffff`）后的代码，NSP 改动更是 2025-12-25 才有（`958f962`、`d8489fa`、`4d6ed0f`），都晚于论文 v1。

## 2. 论文规定逐条与平台对照

判定词：一致 / 偏离 / 论文未说明。“按代码”指论文未说明时平台取官方实现。

### 2.1 测试集、语言

| # | 论文规定 | 论文出处 | 平台 | 判定 |
|---|---|---|---|---|
| 1 | 200 段对话，100 段来自训练用书、100 段不是 | `Sections/5_Experiments.tex:6-7`；`Sections/Appendix.tex:181-182` | `data.ts:24-25` 校验 SHA-256；脚本确认 200 条、键唯一、`tag` id/ood 各 100，书目 69/32 不重叠（`testset_check.txt`） | 一致 |
| 2 | 留出每本书最后 10% | `Sections/5_Experiments.tex:6`；`Sections/3_Dataset.tex:91`；`Sections/Appendix.tex:47` | 直接用官方文件 | **基本查不到**：本地 `held_out_plots.json` 只有 15 本书，与测试集重合 1 本（《A Game of Thrones》）。这本书的 4 条测试样本 i_p 为 277–295，`data/final` 共 302 个情节，确在最后 10% 内；其余 196 条无法核验。另外该书在 `held_out_plots.json` 里归 `id`，而测试集的 `tag` 是 `ood`，只影响分项，原因查不到 |
| 3 | 加权抽样：角色权重为所涉情节数的平方根，对话权重取均值，在上半区加权抽样 | `Sections/Appendix.tex:183-185` | 同上 | **查不到**：文件有 `weight` 字段（3.76–19.34），但没有全量对话，无法复算排名和抽样 |
| 4 | 英文（论文无“语言”字样；translation 0 命中） | — | `index.ts:176` 只有 en；对话无 CJK 字符 | 论文未说明，一致 |
| 5 | 测试集与论文同期切分文件是否同一份 | 代码：`eval_reproduce.py:545-548`（id/ood 两个文件） | `test_set.json` 顺序等于 `test_circumstance_id` + `_ood`，字段差异只有新增的 `tag`、`i_p`（脚本） | 一致 |

### 2.2 被测模型如何扮演

| # | 论文规定 | 论文出处 | 平台 | 判定 |
|---|---|---|---|---|
| 6 | 同一被测模型依次扮演 C 中每个角色，每个角色一个 RPLA | `Sections/4_Methodology.tex:14,54` | `gca/setup.ts:131-170` | 一致 |
| 7 | 角色提示词为固定模板 | `Tables/prompts_agent.tex:9-58` | `strings.gen.ts:48-125`；token 比对见第 5 节 | 一致 |
| 8 | CoSER 模型无输出示例，其他模型带示例 | `Tables/prompts_agent.tex:49-58` | `gca/family.ts:46`，`setup.ts:126` | 一致 |
| 9 | 提供场景、角色资料、其他角色资料、动机 | `Sections/4_Methodology.tex:55-56` | `setup.ts:146-170`；动机取 `thought` 字段（`setup.ts:148`） | 一致。官方 HEAD `main.py:227` 读 `motivation`，而 `test_set.json` 456 条都只有 `thought`，HEAD 代码跑自家测试集会丢掉全部动机；平台取 `eval_reproduce.py:163` 的读法，是能复现数字的读法 |
| 10 | 被测模型输出 speech-action-thought | `Sections/4_Methodology.tex:58` | `strings.gen.ts:51-52` | 一致 |
| 11 | 动机和内心想法对其他 RPLA 不可见 | `Sections/4_Methodology.tex:59` | `gca/loop.ts:122` | 一致 |
| 12 | “限 60 词”的句子 | **论文没有**（`60 words` 0 命中，提示词表也没有） | `strings.gen.ts:260`，`setup.ts:105`；两个官方 commit 都有（`93c1474:agent.py:229`，`624efc5:agent.py:336`） | 论文未说明，按代码。论文的提示词表因此不是被测模型实际收到的全部文字 |
| 13 | `Start your response with` 和只留本人发言 | 论文未说明 | `family.ts:44`，取论文同期范围（LLaMA-3.1 Instruct 8B/70B 和 step，`93c1474:agent.py:231,303`） | 论文未说明，按代码 |
| 14 | `fix_repeation` 后处理（GPT、Claude 不做） | 论文未说明 | `family.ts:45`，`loop.ts:87-90` | 论文未说明，按代码。这是对不同厂商不对称的后处理，见 8.3 |
| 15 | Claude、o1 的系统提示词走 user 角色 | 论文未说明 | `family.ts:43,47` | 论文未说明，按代码 |
| 16 | 输出上限 512 | 论文未说明（`max_tokens`、`512` 均 0 命中） | `loop.ts:38`；`runner.ts:596`（HEAD） | 论文未说明，按代码（两个 commit 都是 `max_tokens=512`） |
| 17 | temperature 首次 0，重试 1 | 论文未说明（0 命中） | `loop.ts:41`；`runner.ts:546,654`（HEAD） | 论文未说明，按代码（`93c1474:utils.py:149`，`624efc5:utils.py:135,155`） |

### 2.3 环境模型、下一说话人模型、结束条件

| # | 论文规定 | 论文出处 | 平台 | 判定 |
|---|---|---|---|---|
| 18 | 环境模型 GPT-4o | `Sections/5_Experiments.tex:8` | `index.ts:40`，版本钉 2024-08-06 | 一致 |
| 19 | 环境提示词 | `Tables/prompts_agent_2.tex:9-36` | `strings.gen.ts:128-154`；token 比对完全相同（把随机角色代入 `an environment simulator`） | 一致。论文表只印一个角色，代码随机四选一（`93c1474:utils.py:362` 起），平台随代码，用自己的种子流（`rng.ts`，理由写在 `rng.ts:1-5`） |
| 20 | **NSP 模型 CoSER 70B** | `Sections/5_Experiments.tex:8` | **`index.ts:41` `openai/gpt-4o-mini-2024-07-18`** | **偏离，影响分数** |
| 21 | **NSP 提示词** | `Tables/prompts_agent_2.tex:40-46` | **`strings.gen.ts:157-182` 多出整段 `===Output Format===`，要求先写 Reasoning 再写 Next Speaker。论文原文被记录在 `strings.gen.ts:185-205`，注释写明 not used** | **偏离，影响分数** |
| 22 | NSP 回复解析、NSP 自身历史 | 论文未说明；论文同期代码是冒号切分、历史只存名字（`eval_reproduce.py:232-235,250`） | `text.ts:171-191`，`loop.ts:123-128` 用 2025-12 的逻辑：正则取 Next Speaker、历史存原始回复、无效时把系统提示词再发一遍 | 论文未说明；**与产出数字的代码不同**，这三处全部晚于论文 10 个月 |
| 23 | NSP 可选范围 C∪{e} | `Sections/4_Methodology.tex:60` | `setup.ts:119-120`，`loop.ts:71` | 一致 |
| 24 | 无效预测的回退 | 论文未说明 | `loop.ts:61-74`，候选顺序和抽取是平台选择，理由写在 `rng.ts:1-5` | 论文未说明，按代码 + 平台选择（两个 commit 的回退规则相同，`eval_reproduce.py:242-245`，`main.py:300-304`） |
| 25 | 结束：NSP 发出结束信号或满 20 轮 | `Sections/4_Methodology.tex:61` | `loop.ts:55-56` | 一致；20 轮含环境发言，与代码同 |
| 26 | 第 6 条发言之前不能结束 | 论文未说明 | `loop.ts:70`（`endMinRound: 5`） | 论文未说明，按代码（两个 commit 都是 `i_round >= 5`） |
| 27 | 首位说话人 | 论文未说明 | `setup.ts:178`，取 `speaking_characters_w_env[0]` | 论文未说明，按代码；该角色与原对话首位相同的有 154/200 |
| 28 | k=0 | `Sections/5_Experiments.tex:9` | `judge.ts:27` 只实现 k=0 | 一致 |

### 2.4 裁判、维度、严重度

| # | 论文规定 | 论文出处 | 平台 | 判定 |
|---|---|---|---|---|
| 29 | 裁判 GPT-4o | `Sections/4_Methodology.tex:74`；`Sections/5_Experiments.tex:8` | `index.ts:42,59`，2024-08-06（`README.md:183`） | 一致 |
| 30 | 四个维度，各自独立请求 | `Sections/4_Methodology.tex:92,94-99` | `gca/judge.ts:47-68`，`runner.ts:623-627`（HEAD） | 一致 |
| 31 | 裁判材料含原对话和情节摘要 | `Sections/4_Methodology.tex:72,91` | `judge.ts:50-61` | 一致 |
| 32 | 裁判提示词与细则 | `Tables/prompts_eval.tex`，`Tables/prompts_eval_2.tex` | `strings.gen.ts:289-306`；第 5 节 | 一致 |
| 33 | 裁判看不到内心想法 | `Sections/5_Experiments.tex:9` | `judge.ts:31-32`，模拟和参考都去掉 | 一致。模板仍写着消息含内心想法（`Tables/prompts_eval.tex:21`），论文和代码本来如此 |
| 34 | 严重度 1 到 5 | `Sections/4_Methodology.tex:75`；`Tables/prompts_eval.tex:61` | 不夹紧（`judge.ts:140-150`） | 与代码一致。Storyline Quality 细则写“up to 10”（`Tables/prompts_eval_2.tex:111`），论文自身不一致，平台照搬并不夹紧，与两个 commit 相同 |
| 35 | Character Fidelity 细则的 `{major_characters}` 是占位符 | `Tables/prompts_eval_2.tex:63` | `judge.ts:44-46` 按官方 `replace` 顺序保留字面的 `{major_characters}` | 官方实现的缺陷，两个 commit 都有（`eval_reproduce.py:401`，`main.py:462`）。论文的表读起来应被替换；但产出数字的代码没替换，平台取能复现数字的读法。**应对外披露** |

### 2.5 评分、总分、运行次数

| # | 论文规定 | 论文出处 | 平台 | 判定 |
|---|---|---|---|---|
| 36 | `s = 100 − 5·Σv + λ|M̄|` | `Sections/4_Methodology.tex:76,103` | `judge.ts:174-183` | ×5 和 λ 一致，由数字证实（第 7 节） |
| 37 | |M̄| 的含义 | 论文写的是模拟对话 M̄，文字上含环境发言 | `judge.ts:40`，只数非环境发言 | 文字与数字冲突，平台取能复现数字的读法。官方发布物 12/12 证实（第 7 节） |
| 38 | **公式不夹紧** | `Sections/4_Methodology.tex:103` 没有上下限；论文同期代码只夹下限 `max(0, ...)`（`eval_reproduce.py:409`） | **`judge.ts:174-181` 夹到 [0,100]**，取论文同期之后才引入的 `min(...,100)`（`0e11992`，2025-02-18，提交信息为 typo fixes；现位于 `main.py:471`。初稿误写成 `297ffff`，读矩阵后更正） | **偏离，影响分数（方向确定：单场景分只会变低）** |
| 39 | 总分为四维平均 | `Sections/5_Experiments.tex:13` | `meta.ts:26-31` 权重各 0.25，`scoring.ts:11-26` | 一致 |
| 40 | 三次运行平均 | `Sections/5_Experiments.tex:34` | `index.ts:187` `samplesPerSeed: 3`，600 个会话直接平均（`scoring.ts:44-55`） | 点估计一致（同一场景各 3 次时，600 个的均值等于三次均值的均值） |
| 41 | ± 的含义 | **论文未定义**（`Tables/main_exp.tex` 只印 ±；`published.ts:2-3` 也如此说明） | 平台算的是对 600 个会话做百分位 bootstrap 的 95% 区间（`scoring.ts:57-75`） | **不可比**，见 8.1 |
| 42 | BLEU、ROUGE-L 与原对话比较 | `Sections/5_Experiments.tex:14` | BLEU：`index.ts:327-331`，`gca/bleu.ts`，官方样例 3/3 逐位相同；**ROUGE-L：没有实现**（`meta.ts:37` 定义了这一列，但 `index.ts:330` 只返回 `bleu`） | BLEU 一致；**ROUGE-L 未做** |
| 43 | 消融：Test w/o I.T.、w/o Mot.、trained w/o I.T. | `Tables/main_exp_cot.tex`，`Tables/exp_main_cot_full.tex` | 未实现（`strings.gen.ts:50` 的 `speechAction` 没有调用方） | 未做，不影响主分 |
| 44 | k=3 | `Tables/main_exp_cf3.tex` | 未实现 | 未做 |
| 45 | 胜率 vs GPT-3.5/GPT-4o | `Sections/5_Experiments.tex:15`，`Tables/exp_wr.tex` | 未实现（`worker/src/benchmarks/coser` 与结果代码中无 win rate） | 未做 |
| 46 | 按 ID/OOD 分开报告 | `Tables/exp_idood.tex` | `data.ts:46` 有 `split`，但只用于快速抽样（`index.ts:247`） | 未做 |
| 47 | 检索增强 | `Tables/exp_rag.tex` | 未实现 | 未做 |
| 48 | 人工评测：60 样本、7 模型、3 名标注者、1–10 分 | `Sections/5_Experiments.tex:71-74`，`Tables/human_eval.tex` | 平台没有 | 未做，不可复现（人工标注未发布；查不到） |
| 49 | 一致率：模型对比较，排除差距 ≤1（人）或 ≤5%（自动）的情况 | `Sections/Appendix.tex:227`，`Tables/judge_alignment.tex` | 平台没有 | 未做 |
| 50 | 不同裁判的表 | `Tables/exp_diff_judges.tex`，`Sections/Appendix.tex:233-242` | 只有 GPT-4o | 未做；论文明说默认裁判是 GPT-4o |

### 2.6 各处平台选择（论文未说明，也不来自同一个官方 commit）

平台协议是两个官方 commit 按条款拼起来的，没有任何单一 commit 等于平台协议：

| 条款 | 平台取 | 出处 |
|---|---|---|
| 动机字段 | 论文同期 `thought` | `setup.ts:148`；`eval_reproduce.py:163` |
| 发言加名字前缀进入记录 | 论文同期 | `loop.ts:97`；`eval_reproduce.py:254` |
| 其他 agent 收到的文本顺序 | 论文同期 | `loop.ts:120-122`；`eval_reproduce.py:266` |
| 名字前缀的模型范围 | 论文同期 | `family.ts:10` |
| NSP 提示词、解析、历史 | HEAD（2025-12） | `strings.gen.ts:157`；`text.ts:186`；`loop.ts:123` |
| 上限夹紧 | HEAD（2025-02-18 起，`0e11992`） | `judge.ts:174` |
| `remove_inner_thoughts` 的 think 标签规则 | HEAD（2025-12） | `text.ts:25-37` |
| 重试次数 | HEAD（5 次，论文同期为 10，`utils.py:550`） | `strings.gen.ts:255` |
| 裁判默认输出上限 | HEAD（8196，论文同期 8192，`utils.py:137`） | `strings.gen.ts:252` |
| 内容拦截时走重试 | 平台 | `runner.ts:553,656`（HEAD）。官方遇 API 异常时 `continue` 不前进，理论上死循环（`624efc5:utils.py:569`），平台必须另定 |
| 回复开头的 `<think>` 剥离 | 平台 | `worker/src/llm/client.ts:141-145`。官方正则不匹配裸 `<think>`（脚本：`removeInnerThoughts("<think>abc</think> hi")` 原样返回），由这一层补上；但只处理开头 |

## 3. v3 关键词检索

范围：`main.tex`、`Sections/*`、`Tables/*`，不含 `.bbl`；不区分大小写。`子串` 是字符串包含，`整词` 是前后不接字母。逐条命中见 `keyword_scan.txt`。

| 关键词 | 子串 | 整词 | 含义 |
|---|---|---|---|
| prompt | 52 | 4 | 多为 `\input{Tables/prompts_*}` 和数据构建提示词；`Sections/Appendix.tex:352-359` 列出提示词表 |
| length | 30 | 18 | 长度校正：`Sections/4_Methodology.tex:101-104`，`Sections/Appendix.tex:197-221`；其余是 `\setlength` 和训练序列长度 |
| words | 23 | 13 | 无协议含义；`keywords`、`Swords` 属噪声；`Tables/prompts_eval_2.tex:111` 是细则。**60 词限制在论文里 0 命中** |
| characters | 96 | 96 | 全是“角色”，无“字符长度”含义 |
| format | 47 | 13 | `Sections/4_Methodology.tex:30`（训练模板多样）、`:58`（输出格式）；`Sections/Appendix.tex:59` 数据构建的 JSON；其余 `information` 属噪声 |
| JSON | 14 | 14 | 裁判输出 `Tables/prompts_eval.tex:65`；其余是数据构建（`Sections/Appendix.tex:59-66`） |
| system | 16 | 6 | 多 `multi-agent system`；`Sections/Appendix.tex:146,148` 训练系统提示词。论文没说裁判模板放在 system 还是 user |
| temperature | 0 | 0 | 论文未说明 |
| top_p | 0 | 0 | 论文未说明 |
| top_k | 0 | 0 | 论文未说明 |
| max_tokens | 0 | 0 | 论文未说明 |
| sampling | 5 | 5 | 测试集抽样（`Sections/Appendix.tex:179-185`）和训练模板抽样（`:149`） |
| self-consistency | 0 | 0 | 无 |
| majority | 0 | 0 | 无 |
| mean | 10 | 4 | 无统计含义（`Sections/Appendix.tex:208` 是 “which means”；`Tables/main_exp_cot.tex:21` 解释缩写） |
| vote | 0 | 0 | 无 |
| normalize | 0 | 0 | 无归一化说明 |
| scale | 5 | 5 | `Sections/5_Experiments.tex:72` 人工 1 到 10 分；其余无协议含义 |
| average | 16 | 15 | `Sections/5_Experiments.tex:13` 总分是四维平均；`:34` 三次运行平均 |
| AVG | 0 | 0 | 无 |
| filter | 0 | 0 | 无 |
| exclude | 5 | 3 | `Sections/5_Experiments.tex:9` 裁判排除内心想法；`Sections/Appendix.tex:151` 训练样本 |
| retry | 2 | 2 | 只在数据构建（`Sections/Appendix.tex:62,64`）。**评测的重试论文未说明** |
| fail | 6 | 2 | 数据构建和细则文字；评测失败怎么处理论文未说明 |
| translation | 0 | 0 | 无 |
| version | 4 | 4 | 全在 `Sections/5_Experiments.tex:20` 的脚注（被测模型版本） |
| date | 2 | 0 | 只有 `validate` 子串 |
| seed | 0 | 0 | 论文未说明；代码是 `random.seed(42)` |

## 4. v1、v2、v3 差异（实际 diff，`version_diff.txt`）

- **v2 → v3**：除 `main.tex` 的注释和标题外完全相同，所有 `Sections` 和 `Tables` 去空白后相同。标题改为 v3 的长标题（`main.tex:83`）。
- **v1 → v2 与评测有关的只有下面几处**：
  1. 公式：`s = 100−Σv` 改成 `s = 100−5*Σv`（`v2 Sections/4_Methodology.tex:76,103`）。**只改了正文，附录没改**：`Sections/Appendix.tex:204,212` 在 v2、v3 仍是没有 5 的式子。
  2. 新增四维坐标图（`Sections/4_Methodology.tex:78-87`）。
  3. 新增人工评测和一致率（`Sections/5_Experiments.tex:64-97`，`Tables/human_eval.tex`，`Tables/judge_alignment.tex`，`Sections/Appendix.tex:224-227`）。
  4. 新增不同裁判的表（`Tables/exp_diff_judges.tex`），新增裁判输出示例（`Tables/case_critics.tex`），新增“真实对话与合成对话”一节（`Sections/Appendix.tex:306-323`），新增与 HollmWood 的比较（`:296-303`）。
  5. 话语数 392,900 改成 392,298（`Sections/Appendix.tex:12,20`）；新增 Safety 小节：截断 110 段敏感对话、删 602 条消息（`:88-89`）。
- **三版逐字节相同**：`Tables/main_exp.tex`、`main_exp_cf3.tex`、`prompts_agent.tex`、`prompts_agent_2.tex`、`prompts_eval.tex`。`prompts_eval_2.tex` v1 与 v2 字节不同，去空白后相同。结果表（`exp_idood`、`exp_wr`、`exp_main_cot_full`、`exp_rag`、`exp_otherbmks`、`main_exp_cot`）三版去空白后相同。`meta.ts:17` 的“the results table is identical in v1, v2 and v3”属实。

要点：**v1 的公式没有 ×5，但 v1 的主表已经是现在的数字**。所以 v1 的公式从一开始就和自己的数字不符，v2 只是更正了文字。

## 5. 提示词机械比对（`prompt_compare.txt`）

把 LaTeX 转义还原后按空白切 token 用 `difflib` 比较。LaTeX 的换行不携带空白信息，所以这项比对证明 token 序列相同，不证明空白相同。论文里没转义的 `{x}` 是 LaTeX 分组，印出来没有花括号，脚本用 `«x»` 标出。

| 片段 | 结果 |
|---|---|
| 角色模板（不含输出格式） | 相同；差异只有表格注记 `(if available)` 和 RAG 段 `===Relevant Background Information===`（平台不做检索） |
| 输出格式：CoSER 模型 | 完全相同 |
| 输出格式：其他模型 | 完全相同 |
| 环境模型 | 完全相同（随机角色代入后） |
| **NSP** | **平台多 27 个 token：`===Output Format=== You must structure your response as follows: 1. Reasoning: Explain your thought process. 2. Next Speaker: Select exactly one character name from the list: {all_characters}.`** |
| NSP（`PAPER_ERA_NSP_PROMPT`，未使用） | 完全相同 |
| 裁判模板 | 只差占位符名：`{dimension_intro}`→`{dimension_brief}`、`{dimension_rubrics}`→`{dimension_criteria}`、k>0 说明→`{additional_instructions}`（k=0 时为空）、结尾 `},},`→`}, },`；论文漏转义的 `«major_characters»`、`«book»` 对应 `{...}` |
| 四个维度的 intro 和 rubrics | 完全相同（Character Fidelity 只差上述漏转义） |

论文表格里没有、而平台（和两个官方 commit）都发给模型的文字：60 词一句（`strings.gen.ts:260`）、`Start your response with`（`:262-266`）、其他角色资料前的分隔符（`:54-60`）、`===Conversation Start===`（`:273`）。

`strings.gen.ts` 与官方源文件（`strings_vs_official.txt`）：`SOURCES` 七个 SHA-256 全部相符；裁判模板和四维 details 与 `prompts.py` 在两个 commit 上都相同；环境提示词在两个 commit 上相同且与生成文件相同；`NSP_PROMPT` 等于 `624efc5` 的 `get_nsp_prompt`，`PAPER_ERA_NSP_PROMPT` 等于 `93c1474` 的。

## 6. 主表逐格核对（`table_check.txt`）

- `Tables/main_exp.tex` SHA-256 `99c3cfda...598` 与 `published.ts:6` 相同。21 行 × 7 列的均值和 ±，共 294 格，**0 处不一致**；行名和分组也一致。
- **Average 与四维平均**：21 行全部在两位小数舍入范围内（最大差 0.005），`avgMismatch` 全为空。`Tables/exp_idood.tex`、`Tables/exp_main_cot_full.tex`、`Tables/main_exp_cf3.tex` 的 Average 也都没有超过 0.01 的差。
- 粗体和下划线（主表）与各列最大值全部相符。
- 文中数字：58%（`10.10/6.38`）、11.5% 和 8.8%（`Sections/5_Experiments.tex:37,51`）都能由表算出。

**异常（都是论文自身的，不是平台抄错）**：

1. **主表的 GPT-4o、GPT-3.5 两行不等于 ID/OOD 两半的平均**。其他 19 行全部相符（105 格中 10 格超差，全在这两行）。GPT-4o：Average 主表 59.95，(58.54+60.46)/2 = 59.50，差 0.45；Storyline Quality 差 0.71，Storyline Consistency 差 0.505，Character Fidelity 差 0.45。GPT-3.5：Average 差 0.10，Storyline Consistency 差 0.415。（`Tables/main_exp.tex:17-18`，`Tables/exp_idood.tex:21-22`）论文同期代码就是两半平均（`eval_reproduce.py:685-693`）。这两个是 `Sections/5_Experiments.tex:15` 拿来算胜率的基准模型，查不到原因。GPT-4o 与 CoSER-70B 主表差 0.89，这 0.45 占了一半。
2. **`Tables/exp_idood.tex` 的粗体错了三列**：OOD 的 Character Fidelity 粗体在 Step-2（46.77），最大值是 CoSER-70B（51.67）；OOD 的 Storyline Quality 粗体在 GPT-4o（80.18），最大值是 Doubao-pro（80.69）；OOD 的 Average 粗体在 Step-2（59.24），最大值是 CoSER-70B（60.75）。
3. **`Tables/exp_diff_judges.tex` 的 GPT-4o 列比主表低 0.35 到 1.66**（`:9-15`），同裁判同模型，表题没有说明。初稿写“查不到原因”；读矩阵后复算：这一列 7 行四舍五入后全部等于 `Tables/exp_idood.tex` 的 in-domain Average（如 CoSER-70B 57.37→57.4，GPT-4o 58.54→58.5），即只算了 100 条 ID 子集。矩阵是对的。
4. `Tables/exp_main_cot_full.tex` 的 “w/ I.T.” 行与主表一致。
5. `Sections/5_Experiments.tex:38` 列举 Average 超 57 的模型时漏了 GPT-4o Mini（57.93）。
6. 主表有 `Mistral-7B`（`:26`），`Sections/5_Experiments.tex:21` 的模型列表没有它。
7. `Sections/5_Experiments.tex:20`：GPT-4o Mini 与 GPT-4o 共用脚注 `Version:240806`。本地材料查不到 gpt-4o-mini 有这个日期的快照。

## 7. 复算官方发布物

`624efc5:exp/evaluation/test_set_gpt-4o.json` 只有 **3 个样例**，来自 `example_test_set.json`，**不是测试集的 200 条**（脚本：0/3 在 `test_set.json` 中）。所以它能验证公式，不能验证论文的任何一个表格数字。

| 候选公式 | 12 个维度分中相符 |
|---|---|
| `100 − 5S + 1.5R`，R = 非环境发言数 | **12/12** |
| 附录式 `100 − S + 1.5R` | 0/12 |
| 无长度校正 `100 − 5S` | 0/12 |
| R 含环境发言 | 0/12 |
| λ=1.0 / λ=2.0 | 0/12 / 0/12 |
| 系数 4 / 系数 6 | 0/12 / 0/12 |
| 是否夹紧 | **不可区分**：三种夹紧方式都 12/12，因为这 12 个分数没有一个越界 |

维度均值、四维平均、样例分都与文件相符；严重度全是 int，取值 2–5。

**平台函数跑同一份数据**（`platform_on_example.txt`）：`dimensionScore` 12/12；`judgeInput` 的 `simulationStr` 3/3 逐字相同；BLEU 3/3 与发布值逐位相同（如 `0.021624838733610124`）。官方样例模拟的 38 条发言全部带本人名字前缀，说明发布物由带前缀的代码产出，HEAD `main.py:319` 把这一行注释掉之后的代码产不出这份文件，支持平台在前缀上取论文同期读法。

**论文自身的第二份证据**：`Tables/case_critics.tex` 印了一个裁判输出。Storyline Consistency 四条严重度 3+3+4+4=14，分数 60.0；Character Fidelity 三条 4+3+3=10，分数 80.0。两维都解出 R=20（`100−70+30`，`100−50+30`）。另两维的列表以 `...` 结束（`:58`，`:83`），是节选，不能用。没有 ×5 的读法在这里不可能（`100−14+1.5R=60` 要 R 为负）。

**回归**：`Sections/Appendix.tex:208` 的 `score = −1.5909 × rounds + 59.0617` 只与 ×5 相容：3 个样例上 `100−5S` 的平均是 47.92，与回归在 R≈9.67 处的 43.7 同量级；`100−S` 的平均是 89.58，差得很远。样本只有 3 个，这只算旁证。回归斜率约 1.6，论文取 λ=1.5（`:208,212`），是作者的取值，不是严格舍入。回归的 1,200 例（3 模型 × 有无检索 × 200）无法复算，个例分数未发布。

**结论**：×5 和 λ=1.5 被官方发布物和论文自身的例子证实。**上限夹紧不能由任何发布数字证实或证伪**，只能靠读代码。

## 8. 三张清单，按对分数的影响排序

### 8.1 论文要求但平台没做到

1. **NSP 模型**（#20）。论文 CoSER 70B，平台 GPT-4o-mini。NSP 决定谁说话、何时结束，也就决定 R：每多一条非环境发言，四个维度各加 1.5。这影响全部四维，方向和幅度都没有测量。官方 HEAD 的默认值是 gpt-4o-mini（`main.py:57`），但 README 第 194 行和参数帮助文字都说这是出于“cost-efficiency”的默认，并推荐 CoSER-70B。README 这一句讲的是成本，不是说两者等价。CoSER-70B 权重已公开（`624efc5:README.md:9-14`），不属于“无法获得”。
2. **NSP 提示词**（#21）。论文的表里写得清清楚楚，平台持有原文（`strings.gen.ts:185`）却不用，改用论文发表 10 个月后的版本。项目规定的优先级是论文 > 官方实现，这条不符合优先级，除非有证明。
3. **上限夹紧**（#38）。论文公式没有上限，产出数字的代码也没有（`eval_reproduce.py:409`）。平台把超过 100 的单维分截到 100。有 R=20 时加 30 分，`S=2, R=12` 就是 108。方向确定：平台的单维分 ≤ 论文同期读法，受影响最大的是平均分最高的 Storyline Quality。平台代码注释 `judge.ts:170` 自己写明了论文同期只夹下限。
4. **ROUGE-L**（#42）。论文两个 n-gram 指标之一，官方结果也输出（`main.py:474-476`），平台没有实现。不进总分，但平台榜单的这一列对新跑的模型是空的。
5. **± 的含义**（#41）。平台 bootstrap 把同一场景的 3 次运行当独立样本（600 个会话，不按场景聚类），区间偏窄；而论文 ± 是三次运行之间的某个离散度（未定义）。发布行 `n` 记 200（`index.ts:83`），平台跑的行 `n` 记 600（`scoring.ts:82`）。两列不能相比。平台没有保留“第 i 次运行的均值”这个中间量。
6. **次要结果未复现**：k=3、胜率、ID/OOD、消融、检索、不同裁判、人工评测、一致率（#43–50）。不影响主分。若报告未说明这些没做，读者会以为复现了全文。

### 8.2 平台做了但论文没有依据

依据等级都写在第 2 节。其中**来自论文同期代码、且有数字支持**的（60 词、512、temperature、END 最早轮次、`{major_characters}` 字面保留、`thought` 字段、前缀）我认为站得住。**没有论文同期依据**的：

1. NSP 的解析和历史处理（#22）：2025-12 的代码。其中“无效时把系统提示词再发一遍”是官方 `4d6ed0f` 的 "fix nsp model"，针对思考型 NSP，在论文同期不存在。
2. 上限夹紧（#38）。
3. `remove_inner_thoughts` 的 think 标签规则（`text.ts:25-37`）。对论文当时的模型无影响，对今天的模型有影响。
4. 自己的种子流（`rng.ts`），有明确理由，影响极小，但使逐字节重放官方运行不可能（官方也不可能重放：全局流依赖前面样本）。
5. `client.ts:141-145` 的 think 剥离和内容拦截走重试（2.6 表）：官方行为不可用时的平台选择。

### 8.3 学术同行可能质疑之处

1. **“平台分数”和“论文分数”排在同一张榜上是否可比**。第 1、2、3 条同时存在时，平台跑 GPT-4o 得到的分数与主表的 59.95 不是同一实验条件。若同榜展示，需要逐条标明。
2. **协议是两代代码的拼接**（2.6）。逐条有理由不等于整体有效：HEAD 的提示词配论文同期的前缀，这个组合官方从未运行过，也没有任何发布数字。若用平台 GPT-4o 的结果声称“复现了 59.95”，同行可以指出差异来源无法归因。
3. **“独立”两字**。`index.ts:185` 写“每个独立演绎 3 次”。实际上种子不随运行次数变（`rng.ts:11` 明言），首次请求 temperature 全为 0，三次之间只剩服务端不确定性。官方也一样（`eval_reproduce.py:65` 每次重置 42），主表 Qwen-2-72B 的 BLEU ±0.00 也说明这点。机制没有偏离，但“独立”这个说法不准确。
4. **空回复拿长度分**。R 数空发言（`judge.ts:23`）。模型被内容拦截或被 512 截断成空，发言仍计入 R，四维各 +1.5，官方也如此。对高拒答率的模型，这可能抬高分数，裁判是否足够惩罚没有测过。
5. **512 上限对思考型模型不公平**。平台在别的评测里明确写了“reasoning tokens count toward the limit, and a lower one cuts replies off”（`worker/src/routes/api.ts:718`，非 GCA 分支）并设了下限；GCA 分支固定 512（`api.ts:713-714`，`runner.ts:596`）。论文时代的模型没有这个问题，所以这是把 2024 年的协议用到 2026 年的模型时产生的系统性差异。官方代码同样 512，算不上偏离。
6. **不对称后处理**。`fix_repeation` 只对非 GPT、非 Claude 执行，源自官方，论文没写。Storyline Quality 细则专门惩罚重复（“up to 10”），后处理会替部分厂商去掉这类缺陷。
7. **家族表随模型名决定提示词**（`family.ts:31-38`）。平台新增模型时规则是否适用要靠正则判断；`meta-llama/llama-3.3-70b-instruct` 归 `other`，不加名字前缀。这是“论文同期范围”的直接后果，不是错误，但应写明。
8. **主表 GPT-4o、GPT-3.5 行与 ID/OOD 表不一致**（第 6 节）。任何拿这两行做校准的结论都要说明这一点。
9. **测试集来源不能验证**：最后 10%、加权抽样、安全截断都查不到（#2、#3）。平台只能声明“用官方文件”。
10. `server/src/benchmarks/coser/index.ts:1-3` 的注释仍写“needs ... the authors' CoSER-70B as next-speaker predictor”，与 Worker 版协议不符。本地版不可运行（`:92`），但这是同一仓库里的两种说法。

## 9. 未能核实的事项

- 第 2、3 条的测试集构造：除 1 本书的 4 条样本外无法核验（缺全量数据）。矩阵第 15 行所说与 HF 首次上传 `5eeb1ca` 逐字节相同，本地没有 HF 数据，查不到。
- `±` 的定义（论文没有）。
- `PAPER.date`（`meta.ts:18`，2025-02-13）：e-print 没有发布日期，本地查不到。
- `llama3-1210-8epc` 等于 CoSER-70B：从论文文字和代码上下文推断，代码没明写。
- 上限夹紧对主表数字的实际影响：200 条的个例分数未发布。
- 平台端到端请求与官方请求是否逐字节相同：本轮没有执行官方代码（约束不允许），只核对了字符串和逻辑。

## 10. 与矩阵和现有报告的分歧

本节在第 1–9 节写完后才写。矩阵指 `docs/复现规范/CoSER-核查矩阵.md`（下称“矩阵”，协议 1.0 草案，核查日期 2026-10-28）；报告指 `web/src/pages/CoserReport.tsx`；站内文字指 `web/src/components/CoserSections.tsx`。`web/public/audit/` 下没有 CoSER 目录（只有 characterbench、charactereval、minimax-rp），没有可读内容。

### 10.1 我认为矩阵或报告不对、或说得过头的地方

| # | 谁说了什么 | 我的判断 | 依据 |
|---|---|---|---|
| A | 矩阵 C24：平台“同 624efc5，截到 [0, 100]”，结论写“正文与代码一致” | **矩阵不对。** 正文公式没有上限，论文同期代码也没有。v1 的主表早于这个上限，且 v2、v3 的主表与 v1 逐字节相同，所以这些数字不可能在这个上限下产生（除非作者用了未发布的版本）。矩阵自己的第 2 条规则（“论文文字……支持论文时期行为的，取论文时期行为”）和第 1 条（“取能复现这些数字的读法”）都指向只夹下限。矩阵保存 Σ 和 R 以便复算（`index.ts:324`），是好的补救，但默认读法应该反过来，或至少两种都报 | `Sections/4_Methodology.tex:103`；`93c1474:eval_reproduce.py:409`；`0e11992`（2025-02-18）；`Tables/main_exp.tex` 三版 SHA-256 相同 |
| B | 矩阵 C12：Output Format 版“是作者为通用模型作 NSP 设计的组合；论文版提示词配的是 CoSER-70B”，“C12–C14 成组使用，不得与论文时期版本混用” | **依据不足。** 官方代码在 2025-02-24 到 2025-12-25 的十个月里，就是 `gpt-4o-mini` 默认值配论文原提示词（`297ffff`、`d7cee90`、`40c21a2` 上 `--nsp_model` 默认都是 gpt-4o-mini，`utils.py` 里 `Output Format` 0 次；`958f962` 才出现）。引入它的提交信息是 "add support for thinking models (especially for nsp)"，说的是思考型模型，不是通用模型。所以存在一个官方代码跑过、且只偏离模型一项的方案：gpt-4o-mini + 论文提示词。矩阵没有考虑它。这不等于它一定更好（冒号切分在 gpt-4o-mini 上的回退率没有测过），但“不得混用”查不到来源 | 官方 git 历史；`Tables/prompts_agent_2.tex:42-46` |
| C | 矩阵 C27：平台的 ± 是“3 次运行均值的样本标准差（ddof=1）” | **矩阵描述的东西在 HEAD 代码里不存在。** `worker/src`、`web/src` 里搜不到 ddof、stdev 或按运行分组（`results.ts` 没有按 `sample_idx` 聚合）。平台实际算的是 600 个会话的 bootstrap 区间（`scoring.ts:57-75`），它把同场景的 3 次当独立样本。报告第 2 节又说榜单只显示均值。三处说法不一致 | `git grep` 结果；`worker/src/scoring.ts:44-84` |
| D | 矩阵 C01：平台“按 `tag` 出 id / ood 分项” | **HEAD 没有实现。** `split` 只在 `index.ts:247` 用于快速抽样；结果代码和前端搜不到分项 | `data.ts:46`；`index.ts:247`；`git grep` |
| E | 矩阵 C17：“评测报告公开截断数” | **查不到。** 截断日志在 `runner.ts:518` 的普通回合路径上，`gcaStep` 不走那里。`finish_reason` 存了（`runner.ts:576`），但我没有找到公开它的 CoSER 页面 | `runner.ts:533-582`（HEAD）；`CoserReport.tsx`；`CoserSections.tsx` |
| F | 矩阵 C29、报告第 124 行：ROUGE-L “不可复现”，“cannot be reproduced from any version of the library” | **我无法裁决。** 我的环境没有 `rouge` 包，这次也没有下载。仓库核查脚本里 `coser_reference.py:365-369` 是返回 0.0 的占位类，`tools/`、`docs/` 里查不到真正比较各版本的脚本或结果。这句话写进公开报告，应当附上可复核的证据，否则“any version”说得过头。另外，与发布样例对不上，不等于不能按同一个库算一列并注明差异；不显示是平台选择 | `tools/experiments/coser_reference.py:365-369`；`git grep` |
| G | 矩阵第 12 行、报告第 117 行：`eval_reproduce.py`“产出了论文数字” | **说得过头，最多是“最可能的来源”。** 算术上 19 行与其 `(id+ood)/2` 相符，但 GPT-4o、GPT-3.5 两行不符（第 6 节）。脚本是工作副本，模型列表含论文没有的 `doubao-1.5-pro-32k`（`:625`）。脚本也不输出论文表格 | `93c1474:eval_reproduce.py:623-640,685-693`；`table_check.txt` |
| H | 矩阵 C25“主表 21 行全部吻合”、报告“each printed average agrees”，都只讲 Average 对四维 | **没错，但漏了更要紧的异常。** GPT-4o、GPT-3.5 行不等于 ID/OOD 平均（GPT-4o Average 差 0.45，Storyline Quality 差 0.71）。工作区里有一份未提交的 `tools/experiments/coser_table_checks.py`（本轮开始后才出现，不在 HEAD，可能是其他会话正在写的），它的第 157 行也在算这项，但矩阵和报告的 HEAD 版本里都没有这个结论。**这直接影响 V09**：锚定实验要比的“主表 GPT-4o 行”，其同一模型在论文里有 59.95 和 59.50 两个数，判定标准必须事先写明比哪一个。两行差值的符号有正有负（GPT-3.5 的 Storyline Consistency −0.415，Anthropomorphism +0.085），单向的上限夹紧解释不了 | `Tables/main_exp.tex:17-18`；`Tables/exp_idood.tex:21-22` |
| I | `index.ts:212-214`“按论文复现，论文未写明之处按作者的代码”；报告第 117 行同义；`CoserSections.tsx:12,41,94`“按作者流程”“按作者发布的流程” | **不准确。** 论文明确写了 NSP 模型和 NSP 提示词，平台偏离。英文报告只把 NSP 模型标为 deviation；NSP 提示词、解析、历史，上限夹紧相对论文的差异，字面 `{major_characters}`，60 词一句都没有向读者说明。中文页面完全没提偏离。矩阵记录得比公开文字完整得多 | `CoserReport.tsx:117-126`；`CoserSections.tsx:12,41,94` |
| J | 报告第 75 行：“from the final 10% of books” | **措辞错。** 论文是每本书的最后 10%，这样写读起来是“最后 10% 的书” | `Sections/5_Experiments.tex:6`；`Sections/Appendix.tex:47` |
| K | `index.ts:185`“每个独立演绎 3 次（同论文）” | **“独立”不准确。** 矩阵 C26 自己写了“提示词中的随机选择三次相同”。首次请求都是 temperature 0，三次之间主要只剩服务端的不确定性 | `rng.ts:11`；`loop.ts:41` |
| L | 报告 `UPDATED = '2026-10-26'`，矩阵和协议日期是 2026-10-28，文件最后提交也是 2026-10-28；目录写 “Reproduction plan”，正文标题是 “Reproduction on this platform”；页眉写 “Stage 1: published results” | 小问题，但这是公开学术文本，应该改 | `CoserReport.tsx:6,19,39,115`；`git log` |
| M | 矩阵第 12 行“与 v1 同日”，报告“committed on the day of v1” | **查不到，可能差一天。** 提交时间是 2025-02-14 14:50 +0800，即 06:50 UTC；报告参考文献写 v1 是 2 月 13 日。本地 e-print 没有发布日期。项目约定时间用 UTC，不宜写“同日” | `git log -1 93c1474`；`CoserReport.tsx:9` |
| N | 矩阵第 4 行“锚定实验 V09 完成前不开放正式评测” | 代码里**查不到这个闸门**：`index.ts:219` `runnable: true`，`api.ts:1264` 只检查 `runnable`。这个门靠人为流程把守。生产环境是否已部署，本轮没有查 | `index.ts:219`；`api.ts:257,1264` |

### 10.2 矩阵对、我的初稿错了或漏了（已在正文标注更正）

- 上限是 `0e11992`（2025-02-18，“typo fixes”）加的，不是我初稿写的 `297ffff`。复查 `git show 0e11992` 属实。这让第 10.1 A 的论证更强。
- `exp_diff_judges` 的 GPT-4o 列是 ID 子集分数。我初稿写“查不到原因”；复算 7/7 相符。
- `624efc5` 第 2、3 次运行会复用第 1 次的结果，我初稿没有发现。复查属实：`simulation_path`、`evaluation_path` 不含 `nth_exp`（`main.py:147,152,379-380,385`），文件存在就直接返回。
- 451 个发言角色有动机（C07）：复算相符。我初稿只给了 456 条 `key_characters`。
- 我初稿说测试集的书都不在 `held_out_plots.json` 里，这是脚本按 `tag` 分组造成的错误；实际重合 1 本，已更正。
- C16 提到案例表显示 `Environment: …`：`Tables/case_cerci.tex` 有 1 处，属实。这是前缀读法的又一旁证，我初稿没用。
- v1→v3 结果表逐字节相同：`exp_idood`、`exp_wr`、`exp_main_cot_full`、`exp_rag`、`exp_otherbmks`、`main_exp_cot`、`main_exp`、`main_exp_cf3` 的 SHA-256 三版或 v1/v3 相同，属实。

### 10.3 独立得到相同结论的条目

C01（SHA 和 100+100）、C05（NSP 模型偏离）、C07（`thought` 读法）、C09（60 词）、C11（种子流）、C15（发言规则）、C16（前缀取论文同期）、C19（家族表语义）、C20（`{major_characters}` 字面保留）、C23（严重度）、C24 的 ×5 与 λ（12/12）、C25（Average）、C28（BLEU 3/3）。矩阵“不复现的部分”所列的人工评测、一致率、不同裁判表、k=3，与我的 #44、#48–50 相同。矩阵没有明确提到胜率、消融、检索三项不做。

### 10.4 本轮未复核的矩阵声明

- 第 6 行“29/29 通过”和第 7 行本地端到端逐字节一致：我没有运行这些脚本。
- 第 15 行 HF 首次上传、HF main 改名：本地没有 HF 数据，查不到。
- C21 “3,905 条测试输入中只有 3 条不同”：没有复算。
- C04、C17 关于快照下线和推理模型的处理：是计划或平台选择，无法从本地证实。

## 11. 按严重程度排序的结论

正面结论先写明：论文提示词表除 NSP 外与平台字符串 token 序列相同；主表 294 格 0 差异；Average 21 行都在舍入范围内；×5 和 λ=1.5 由官方样例 12/12 和论文案例表证实；平台 BLEU 在官方样例上 3/3 逐位相同；`thought` 字段和说话人前缀的取舍有证据支持。

问题按影响分数的严重程度排序：

1. **NSP 模型不是论文规定的 CoSER-70B**，而是 GPT-4o-mini。已登记为偏离，理由是用户决定（矩阵 C05），影响四个维度和长度分，幅度未测。
2. **NSP 提示词、解析、历史用的是 2025-12 的版本**，不是论文表格。矩阵“作者为通用模型设计、不得混用”的理由查不到依据：官方代码十个月里就是 gpt-4o-mini 配论文提示词。
3. **单维分被夹到 100**。论文公式和论文同期代码都没有上限，上限在 v1 之后才加，主表又从未更新，这与矩阵自己的优先级规则相反。方向确定（只会变低），幅度未测。
4. **协议是两代代码的拼接，官方从未跑过这个组合，V09 也还没做。** 目前没有任何实测数字能说明平台结果与主表的差距。
5. **锚定目标本身不唯一**：论文里 GPT-4o 有 59.95（主表）和 59.50（ID/OOD 平均）两个数，维度差到 0.71，矩阵和报告都没有记录。
6. **公开文字比矩阵弱**：写“按论文”“按作者流程”，英文报告只披露了 NSP 模型一项，中文页面一项都没披露。
7. **矩阵写了但 HEAD 没实现**：± 的 ddof=1 标准差（实际是把 3 次运行当独立样本的 bootstrap）、ID/OOD 分项、截断数公开。
8. **ROUGE-L 未实现**，“任何版本都不可复现”的说法在仓库里查不到可复核的脚本或结果，本轮也未能独立验证。不进总分。
9. **把 2024 年的协议用到今天的模型时的系统性差异**：空发言也拿长度分（每条四维各 +1.5）、512 上限对思考型模型的影响、只对非 GPT 和非 Claude 做的 `fix_repeation`。这些都源自官方，不算偏离，但会左右跨厂商排名，未测量。
10. **测试集构造基本无法核验**（只有 4/200 条能验证“最后 10%”，加权抽样查不到）；“独立演绎 3 次”不准确；报告把“每本书最后 10%”写成“最后 10% 的书”。
