From 869766107afe2eb373bbae0aba6ecdd76adc3374 Mon Sep 17 00:00:00 2001 From: iomgaa Date: Fri, 2 Oct 2026 10:32:49 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=AF=B9=E7=85=A7=E7=BB=84=EF=BC=88?= =?UTF-8?q?=E6=AD=A5=E9=AA=A4=E5=BC=80=E5=85=B3=E3=80=81=E6=9C=B4=E7=B4=A0?= =?UTF-8?q?=E5=BE=AA=E7=8E=AF=EF=BC=89=E5=85=88=E4=B8=8D=E5=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户 2026-10-02:"先不做对照组,按你说的改"。参考项目真实运行里从未跑过朴素循环或关掉挑刺与回应。方法.md 第十一部分只留两个决策点的可换规则,对照组注明暂不实现;4.1、4.2 去掉开关;结构.md 第三、五部分去掉开关和预设。config 删开关、vocab 解释每格三个数改回必交,记进 WORK_LOG 由下一份任务书带上。 Co-Authored-By: Claude Opus 5.5 --- WORK_LOG.md | 10 +++++----- docs/方法.md | 25 +++++-------------------- docs/结构.md | 22 ++++++++++------------ 3 files changed, 20 insertions(+), 37 deletions(-) diff --git a/WORK_LOG.md b/WORK_LOG.md index 16411e6..b5850cc 100644 --- a/WORK_LOG.md +++ b/WORK_LOG.md @@ -30,6 +30,7 @@ - 谁能看什么归 materials(按任务定材料,第一条消息和查询工具是同一份材料的两种给法),ledger 只存;只在"只能一次"处加唯一约束;Jev 不单独成记录,记在它判断的那件事里(0b0cbb0)。用户原话:"给到派的材料有哪些"和"一开始灌进去还是主动等派去查"是分开的事情;Jev"本质只是一种可以代替程序的判别器"。 - 有自己编号、按定义只发生一次的记录加唯一约束,重复就报错;记录之间的前后顺序检查一律不加,flow 调 ledger 是模块之间的调用,不算边界(493ea6d)。这是监督者提的处理,用户回复"同意";CLAUDE.md"罕见情况怎么办"第 2 条随之写明边界。 - 整个系统不设默认值:配置每个字段必填,函数参数不写默认值,可以没有的值写 null(CLAUDE.md"不设默认值")。用户原话:"全部都不要默认值更好,甚至整个系统都不要默认值,因为默认值可能会掩盖错误"。 +- 对照组(步骤开关、朴素循环)先不做,完整流程跑稳之后再按当时的方法补(方法.md 第十一部分)。用户原话:"先不做对照组,按你说的改"。 - 计算时间不再是预算,只记录;预算只有运行次数(42347e4)。用户原话:"CPU 秒不当预算但是要记录"。 - 解释的每格三个数改为可选,关掉消融时不交。用户原话:"同意 A:解释的 cells 去掉 minItems,改为可选"。 - rules 的约定(方法.md 没写死的地方):入池 P < 0.5 严格;采纳和消融中发现都要严格大于采纳线;成本用 max(0, ĝ₀);没测的格附"含它的最好组合"的净值;战绩在分数原值上判;编号一律按自然序比较。用户原话:"1–8 都同意"。消融成分权重跟随 λ、分歧量不掺开放预留,由用户改进方法.md(a050771)。 @@ -62,10 +63,9 @@ - 给 materials:别人的"退回"记录不放进任何研究者的材料(退回的提案原样带着作者自评,不另拆封存)。 - 给 agents:模型的思考档位必须写明,不用参考项目"写 null 表示用 Pi 自己的默认"那种写法。 - 给 agents、runner:"整个环境的用量"(实验员会话的 CPU、内存等)写这两个模块时再定记录种类。 -- 任务书 04 留下的:(1) 关掉消融时解释照做,结构.md 第三部分已按方法.md 改(cdf0dde);(2) 挑刺与回应关掉、或朴素循环里,合并后的候选由谁写统一的协议,待用户定;(3) config 待顺手改:u、衰减挪进"消融开"那一支(只在选格时用到)。 -- 给 rules / flow:`selectUniformRandom` 的输入 `BatchInput` 要 λ 和每个候选的第二次预测范围,朴素循环两样都没有,配置里也写不进 λ。 -- 给 submissions / vocab:朴素循环"不预测",提案的作者自评(必填的三个数)要不要交,待定。 -- 给 flow:步骤清单没有单列"轮末动作"(解封作者自评、入选未跑的候选出池),朴素循环里收尾跳过时 flow 也要做这些。 +- 给 flow:步骤清单没有单列"轮末动作"(解封作者自评、入选未跑的候选出池),flow 要做这些。 +- config 待顺手改(下一份任务书带上):删掉朴素循环和四个步骤开关(第零轮开关、第一次预测、挑刺与回应、消融),第零轮讨论次数和两条规则名保留;u、衰减挪到选格相关的位置;结构.md 第八部分 config 一节同步。 +- vocab 待顺手改:消融总是做,解释的每格三个数(`cells`)改回必交、至少一格。 - 写 plugin 时实测:源码导入路径带 `.ts` 扩展名,Pi 加载插件能否接受。 ## 工作方式(用户 2026-10-01 定) @@ -79,4 +79,4 @@ ## 下一步 -任务书 04(config)已核对通过(d2bfb97)。待用户定:合并候选在没有回应阶段时的统一协议;朴素循环的提案交不交作者自评。 +任务书 04(config)已核对通过(d2bfb97)。下一个:tasks 与 runner,监督者先讲给用户。 diff --git a/docs/方法.md b/docs/方法.md index c2228c4..37c59c0 100644 --- a/docs/方法.md +++ b/docs/方法.md @@ -144,12 +144,12 @@ ### 4.1 研究开始 -1. 程序把这份研究的配置冻结进账本,包括 N、M、因子数上限、每批上限、运行次数、各开关、各决策点用哪条规则、方法参数、提示词哈希。之后的流程只读这份冻结的配置。 +1. 程序把这份研究的配置冻结进账本,包括 N、M、因子数上限、每批上限、运行次数、各决策点用哪条规则、方法参数、提示词哈希。之后的流程只读这份冻结的配置。 2. 已有的结果只有在实验条件完全相符时才能当基线;没有符合条件的结果,就安排一次基线运行,计入运行次数。 ### 4.2 第零轮:各自找不同的入口 -第零轮放在基线之后、第 1 轮之前。它不跑正式实验,不扣运行次数,信念本也不变。整轮可以关掉;讨论次数可配置为 1 或 2 次,现行值是 2。 +第零轮放在基线之后、第 1 轮之前。它不跑正式实验,不扣运行次数,信念本也不变。讨论次数可配置为 1 或 2 次,现行值是 2。 | 步 | 谁做 | 能看到什么 | 交什么 | @@ -726,16 +726,9 @@ VOI(S) = E_{S 的结果}[ max_p E(收益_p | S 的结果) ] − max_p E(收益_p --- -## 十一、方法的开关与对照流程 +## 十一、可换的规则与对照组 -做方法实验时,下面这些可以换。研究开始时,程序把配置翻译成"这份研究的步骤清单"和"每个决策点用哪条规则",存进账本。被关掉的步骤,在账本里记一条"按配置跳过"。互相冲突的组合在配置校验时就报错,例如关掉了预测,选批却不是随机。 - -**步骤开关** - -- 消融:关掉时不列消融格;解释照样写文字,但不给每格的三个数。 -- 挑刺与回应。 -- 第零轮。 -- 第一次预测。 +做方法实验时,下面两个决策点可以换规则。研究开始时,程序把配置翻译成"这份研究的步骤清单"和"每个决策点用哪条规则",存进账本。 **选批规则** @@ -749,15 +742,7 @@ VOI(S) = E_{S 的结果}[ max_p E(收益_p | S 的结果) ] − max_p E(收益_p - 随机抽同样多的格:格数取"信息价值减成本"对同一输入会选的格数;〔自定〕 - 都不测。 -**朴素循环**:一组开关的命名预设,不另写流程。 - -- N 位研究者每轮各交提案,不挑刺、不回应、不预测,提案直接冻结; -- 判重和输入检查照常做; -- 从提案里均匀随机选批; -- 实现、核验、运行照常;采纳规则和完整流程相同; -- 不做消融,没有信念本、第零轮、私人笔记、收尾,候选也不留池; -- 下一轮的材料只有任务说明、当前基线代码,以及之前全部运行的提案正文与分数; -- 一直跑到运行次数用完。 +**对照组(暂不实现)**:步骤开关(关掉消融、挑刺与回应、第零轮或第一次预测)和"朴素循环"(几位研究者各交提案、不预测不挑刺、随机挑几个去跑、留下最好的)是给论文准备的对照实验。用户 2026-10-02 定:完整流程在本项目里跑稳之前先不做,要做时再按当时的方法补进这一节。原始设计见参考项目设计-16 第 7.3 节。 --- diff --git a/docs/结构.md b/docs/结构.md index 033e62f..5783e6e 100644 --- a/docs/结构.md +++ b/docs/结构.md @@ -74,14 +74,14 @@ ## 三、步骤清单 -研究开始时,config 根据配置里的开关生成这份研究的步骤清单,连同每个决策点用哪条规则,一起冻结进账本。flow、导出、恢复都只读这份清单,不再读开关。被关掉的步骤不执行,账本里记一条"按配置跳过"。 +研究开始时,config 根据配置生成这份研究的步骤清单,连同每个决策点用哪条规则,一起冻结进账本。flow、导出、恢复都只读这份清单,不再读配置。按配置不做的步骤(第零轮只讨论 1 次时的第 2 次讨论、只有一位研究者时的讨论)不执行,账本里记一条"按配置跳过"。 **整份研究** ``` 1. 冻结配置 2. 基线运行 -3. 第零轮:写入口 → 讨论(1 或 2 次)→ 认领 → 分配 〔开关:第零轮〕 +3. 第零轮:写入口 → 讨论(1 或 2 次)→ 认领 → 分配 4. 一轮接一轮,直到余额用完 5. 导出 ``` @@ -92,18 +92,17 @@ 1. 开轮:放信念本,处理留池候选 2. 提案 3. 判重合并 - 4. 第一次预测(看原始提案) 〔开关:第一次预测〕 - 5. 挑刺 〔开关:挑刺与回应〕 - 6. 回应与统一 → 协议冻结 〔开关:挑刺与回应〕 + 4. 第一次预测(看原始提案) + 5. 挑刺 + 6. 回应与统一 → 协议冻结 7. 第二次预测(看冻结协议) 8. 选批 〔规则:选批规则〕 9. 对每个入选候选:实现 → 核验 →(不通过:修复 → 再核验)→ 正式运行 10. 整批公开,记分数账和信息账 11. 采纳 12. 若采纳的改法有 2 个以上因子: - 列格 〔开关:消融〕 - 解释(消融关掉时照样写文字,只是不给每格的三个数) - 选格 → 对每个选中的格:消融实现 → 核验 → 运行 → 结算 〔开关:消融〕〔规则:选格规则〕 + 列格 → 解释 → 选格 → 对每个选中的格:消融实现 → 核验 → 运行 → 结算 + 〔规则:选格规则〕 13. 收尾,更新信念本 ``` @@ -146,18 +145,17 @@ Jev 是一个判别器,和程序检查地位相同,不单独成一种记录 | 外部服务 | Pi 会话、Docker 运行器、任务、Jev | 接口。Jev 另配一个"永远判不同"的空实现,用来关掉判重 | | 决策规则 | 选批:批内最好期望、均匀随机。选格:信息价值减成本、全测、随机同格数、都不测。以后可能加合并方式 | 纯函数,登记在 rules 里的"名字 → 函数"表里,配置写名字 | | 方法参数 | N、M、批量、运行次数、因子数上限、u、衰减、开放预留 | 配置值,不写成常数,也不用环境变量,每个都必须写在配置文件里。分两层:用户配置(配置对话逐项问);方法参数(做实验时才改,配置对话按方法.md 6.11 的现行值写进文件、给用户看过) | -| 步骤开关 | 消融、挑刺与回应、第零轮、第一次预测 | 配置值,由 config 翻译进步骤清单 | | 模型与提示词 | 每个角色、每位研究者用哪个模型;提示词目录 | 配置值;账本记下每份提示词文件的哈希 | -对照组"朴素循环"不另写流程,它就是一组开关的命名预设。 +步骤开关和对照组"朴素循环"暂不实现(方法.md 第十一部分)。 为了让换规则的实验做得对,结构上守住下面几条: -1. **开关只在一处被读取**:就是第三部分的步骤清单。互相冲突的组合在配置校验时报错,比如关掉了预测,选批却不是随机。 +1. **配置只在一处被翻译**:就是第三部分的步骤清单,flow 不直接读配置里的规则名。 2. **决策函数是纯函数,输入全部从账本读。** 每条决策记录存下规则名、规则版本、方法参数、随机种子、全部输入和输出。种子由研究编号、轮次、版本算出,不用全局随机数。平票按固定规则处理。决策函数要导出,重放脚本和核对脚本直接调用它,不另抄一份公式。这样同一批记录换一条规则,就能离线重算。 3. **衡量好坏的尺子只有一把。** 比特、惊讶、覆盖率永远用同一个固定算法,从每个人的原始范围算出来,不跟着决策规则一起变。 4. **一份研究的配置在开始时冻结进账本**,恢复时以冻结的那份为准。 -5. **只提供跑通过的组合。** 每个命名预设至少有一条小规模的跑通测试。 +5. **只提供跑通过的组合。** 每条可换的规则至少有一条小规模的跑通测试。 ---