docs: 任务书 14 收尾,结构.md flow、materials 两节与 WORK_LOG
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+5
-4
@@ -24,6 +24,7 @@
|
|||||||
- 任务书 11(收尾,提交 13a7e60):假设专用指标冻结时加候选前缀,全名"候选编号.短名",只在 materials 的 `freezeProtocol` 加;短名恢复不能含 `.`(最长 64),已占用清单只剩任务的指标和两个保留键。消融格核验不通过重做时,材料写"工作目录是上一次交的这一格代码的副本",能读的版本加上它,完整代码照旧列出;消融实现提示词同步改。jev 判重的材料说明补 `keySettings` 一句。materials 1868 行(上限 1850,多出主要是 `freezeProtocol`),submissions 391 行,vocab 1118 行。`npm test` 405 条通过;`npm run test:jev -- jev-latest` 判重一问照常拿回概率。结构.md 第八部分 vocab、materials、jev 已更新。
|
- 任务书 11(收尾,提交 13a7e60):假设专用指标冻结时加候选前缀,全名"候选编号.短名",只在 materials 的 `freezeProtocol` 加;短名恢复不能含 `.`(最长 64),已占用清单只剩任务的指标和两个保留键。消融格核验不通过重做时,材料写"工作目录是上一次交的这一格代码的副本",能读的版本加上它,完整代码照旧列出;消融实现提示词同步改。jev 判重的材料说明补 `keySettings` 一句。materials 1868 行(上限 1850,多出主要是 `freezeProtocol`),submissions 391 行,vocab 1118 行。`npm test` 405 条通过;`npm run test:jev -- jev-latest` 判重一问照常拿回概率。结构.md 第八部分 vocab、materials、jev 已更新。
|
||||||
- 任务书 12(flow 第 1 部分:骨架、研究开始、第零轮):src/flow 11 个文件、775 行(预期 900–1200;实验员、核验员会话接法和多份提交的编号要用到第 2、3 部分才写),materials 1897 行(+29:`finalEntries`、`researcherId`、`StudyRecord`),eval/ 1006 行。`npm test` 418 条通过(新增 flow 下一步 11 条、真 Docker 2 条:研究编号重复报错、docker run 没启动后停下不在本进程重跑)。全新上下文审阅 2.5、2.7 一轮,采纳两条(同上两条测试对应的修复)。真实检验:16-real-1 回放分配与当年完全相同、0 退回;三处杀进程、两份同时跑全部通过。**研究质量未通过**:3 次真实运行(`/home/iomgaa/inforsi-eval/2026-10-03-r0-real-1`、`-2`、`-3`,2、3 被内存回收杀过一次、按正式恢复路径续跑完)第 1、3 问都不通过,入口全体没有 K1(联合优化);材料核对符合方法.md 4.2,交用户判断。
|
- 任务书 12(flow 第 1 部分:骨架、研究开始、第零轮):src/flow 11 个文件、775 行(预期 900–1200;实验员、核验员会话接法和多份提交的编号要用到第 2、3 部分才写),materials 1897 行(+29:`finalEntries`、`researcherId`、`StudyRecord`),eval/ 1006 行。`npm test` 418 条通过(新增 flow 下一步 11 条、真 Docker 2 条:研究编号重复报错、docker run 没启动后停下不在本进程重跑)。全新上下文审阅 2.5、2.7 一轮,采纳两条(同上两条测试对应的修复)。真实检验:16-real-1 回放分配与当年完全相同、0 退回;三处杀进程、两份同时跑全部通过。**研究质量未通过**:3 次真实运行(`/home/iomgaa/inforsi-eval/2026-10-03-r0-real-1`、`-2`、`-3`,2、3 被内存回收杀过一次、按正式恢复路径续跑完)第 1、3 问都不通过,入口全体没有 K1(联合优化);材料核对符合方法.md 4.2,交用户判断。
|
||||||
- 任务书 13(第零轮重测,提交 a423497 及收尾提交):三处小改动——研究编号只许小写、`task`/`promptDir` 必须绝对路径(config +22/−7,`npm test` 420 条通过);检验第 2、6 问每对两个顺序各问一次取平均(eval +35/−17)。用监督者改过的提示词真实跑第零轮 3 次(`/home/iomgaa/inforsi-eval/2026-10-03-r0-v2-1`、`-2`、`-3`,都一次跑完没中断):**研究质量仍未通过**,3 次第 3 问都不通过(v2-1、v2-3 的 K1 入口没被分出去;v2-2 分出去了,但另一个分到的入口判为只停在 D2;v2-1 分到的一个判为停在 D1、D2,v2-3 一个停在 D1),v2-1 另有第 4、5 问不通过;第 1 问 3 次都通过(入口全体里各有 1 个指向 K1,上次 0/3)。按事先定的规则照实收下,不再调提示词。上次 3 次运行和 16-real-1 回放用新的第 2 问复评在 `2026-10-03-rescore-*`(只有 r0-real-3 第 2 问由不通过变通过)。
|
- 任务书 13(第零轮重测,提交 a423497 及收尾提交):三处小改动——研究编号只许小写、`task`/`promptDir` 必须绝对路径(config +22/−7,`npm test` 420 条通过);检验第 2、6 问每对两个顺序各问一次取平均(eval +35/−17)。用监督者改过的提示词真实跑第零轮 3 次(`/home/iomgaa/inforsi-eval/2026-10-03-r0-v2-1`、`-2`、`-3`,都一次跑完没中断):**研究质量仍未通过**,3 次第 3 问都不通过(v2-1、v2-3 的 K1 入口没被分出去;v2-2 分出去了,但另一个分到的入口判为只停在 D2;v2-1 分到的一个判为停在 D1、D2,v2-3 一个停在 D1),v2-1 另有第 4、5 问不通过;第 1 问 3 次都通过(入口全体里各有 1 个指向 K1,上次 0/3)。按事先定的规则照实收下,不再调提示词。上次 3 次运行和 16-real-1 回放用新的第 2 问复评在 `2026-10-03-rescore-*`(只有 r0-real-3 第 2 问由不通过变通过)。
|
||||||
|
- 任务书 14(flow 第 2 部分:第 r 轮开轮到选批,提交 2c6fdce 提示词、f98d664 代码、a2a1392 eval,以及之后的收尾提交):提示词按参考项目高分运行第 1 轮的真实记录诊断后改了研究者角色提示词和这一段的六份任务消息(角色提示词 6836→4386 字)。src/flow 1105 行(上限 1700),materials 1910 行(上限 1950,导出 `Board`、讨论原文里作废的入口编号标"(已作废)"),vocab 1132 行;`npm test` 437 条通过。全新上下文审阅一轮(三个程序步骤与恢复),没有会污染账本的问题。3 次真实运行 `/home/iomgaa/inforsi-eval/2026-10-03-r1-v1-kill`、`-r1-v1-a`、`-r1-v1-b` 都停在第 1 轮选批后(原因"实现还没写"),杀进程四条通过;盲评和 Jev 结果在 `/home/iomgaa/inforsi-eval/2026-10-03-r1-compare/`,研究质量(两位盲评,我们 3 次对参考 5 次):方向一项低 1.1、1.8 分(我们 9 条提案只有 1 条做联合优化、3 条判为停在构造或只改半径的死路,9 条都含固定圆心求半径;参考项目当时的提示词带填圆做法),挑刺、回应、预测、选批持平或略高,多样性、提案质量持平;材料核对符合方法.md 第三部分与 4.3,按事先定的规则不再调提示词。
|
||||||
|
|
||||||
## 关键决定(用户原话见各提交说明)
|
## 关键决定(用户原话见各提交说明)
|
||||||
|
|
||||||
@@ -69,15 +70,15 @@
|
|||||||
- flow 第 2 部分(2026-10-03):选批并进第 2 部分;不回放 16-real-1;验收看整体研究质量(方向、多样性与判重、提案、挑刺、回应、预测、选批,加过程数字),不只看某一个想法;这一段的提示词先按调研结论诊断再改,改完提交后才跑,看到结果不再调;三块合成一份任务书。用户原话:"直接看也没有联合优化是狭隘的,我们其实是要从更广阔的领域去分析整一个系统,它有没有正常高质量的运行"、"选批并进部分 2;不回放"、"这个部分现有的 prompt 一定是有问题的"、"同意,合成一份,写任务书 14 吧"。
|
- flow 第 2 部分(2026-10-03):选批并进第 2 部分;不回放 16-real-1;验收看整体研究质量(方向、多样性与判重、提案、挑刺、回应、预测、选批,加过程数字),不只看某一个想法;这一段的提示词先按调研结论诊断再改,改完提交后才跑,看到结果不再调;三块合成一份任务书。用户原话:"直接看也没有联合优化是狭隘的,我们其实是要从更广阔的领域去分析整一个系统,它有没有正常高质量的运行"、"选批并进部分 2;不回放"、"这个部分现有的 prompt 一定是有问题的"、"同意,合成一份,写任务书 14 吧"。
|
||||||
## 未完成
|
## 未完成
|
||||||
|
|
||||||
- 第零轮之后再看(2026-10-03 定,等部分 2 的数据):②第一条消息里没有题目本身,要模型自己查 TASK.md,是否由程序放在最前面;③三位研究者拿到完全一样的提示,是否给每人分一个不同的看题路径;④研究者角色提示词每个任务都发全文,是否按任务只发用得到的几节。
|
- 第零轮之后再看(2026-10-03 定,等部分 2 的数据):②第一条消息里没有题目本身,要模型自己查 TASK.md,是否由程序放在最前面;③三位研究者拿到完全一样的提示,是否给每人分一个不同的看题路径;④研究者角色提示词每个任务都发全文,是否按任务只发用得到的几节。现状(任务书 14):角色提示词已瘦身到 4386 字,但仍每个任务整份发。
|
||||||
- 信念本"按因子归并"(方法.md 6.10 第 1 条"出现在哪些候选里"):现在是每个候选的每个因子一行,用"(延续 X)"连起来,没合成一行。等真实运行后再看要不要合。
|
- 信念本"按因子归并"(方法.md 6.10 第 1 条"出现在哪些候选里"):现在是每个候选的每个因子一行,用"(延续 X)"连起来,没合成一行。等真实运行后再看要不要合。
|
||||||
- Jev 校准:新项目跑出真实研究后,从账本取真实的 Jev 判断和材料,由 Claude 或 GPT 打标签作为校准集和留出集,重新校准九问的问法和阈值。不用参考项目 8 个验收数据库(材料格式还会变)。
|
- Jev 校准:新项目跑出真实研究后,从账本取真实的 Jev 判断和材料,由 Claude 或 GPT 打标签作为校准集和留出集,重新校准九问的问法和阈值。不用参考项目 8 个验收数据库(材料格式还会变)。
|
||||||
- `inbox/调研.md`:要迁进 `docs/调研/` 的调研结论。
|
- `inbox/调研.md`:要迁进 `docs/调研/` 的调研结论。
|
||||||
- `docs/方法.md` 里还有 7 条标〔自定〕的规则,待用户过目。
|
- `docs/方法.md` 里还有 7 条标〔自定〕的规则,待用户过目。
|
||||||
- 给 flow:同一轮里选批和选格都用随机规则时,传不同的"版本"算种子,否则两次抽取用同一串随机数。
|
- 给 flow:选格用随机规则时,种子用版本 2 算(选批已用版本 1,任务书 14),否则两次抽取用同一串随机数。
|
||||||
- 给 flow:步骤清单没有单列"轮末动作"(解封作者自评、入选未跑的候选出池),flow 要做这些。
|
- 给 flow:步骤清单没有单列"轮末动作"(解封作者自评、入选未跑的候选出池),flow 要做这些。
|
||||||
- 写 plugin 时实测:源码导入路径带 `.ts` 扩展名,Pi 加载插件能否接受。
|
- 写 plugin 时实测:源码导入路径带 `.ts` 扩展名,Pi 加载插件能否接受。
|
||||||
- 给 flow(materials 审阅):冻结协议只在回应阶段关闭后写进账本,阶段内给 Jev 查的协议只放内存;解封只在本轮收尾阶段关闭后写。materials 把这几条记录的出现当作"已公开",提前写会泄露(审阅者在临时账本里实测过)。
|
- 给 flow(materials 审阅):解封只在本轮收尾阶段关闭后写。materials 把这条记录的出现当作"已公开",提前写会泄露(审阅者在临时账本里实测过)。
|
||||||
- 给 flow:没采纳时也写一条采纳决定(adopted 为 null),本轮正向运行靠它公开;修复任务要在核验阶段关闭后再发。
|
- 给 flow:没采纳时也写一条采纳决定(adopted 为 null),本轮正向运行靠它公开;修复任务要在核验阶段关闭后再发。
|
||||||
- 给 flow:消融格核验不通过、修复次数用完时写 `cellNotRunEvent(格, 原因)` 事件,结算记 insufficient。flow 重做时,把上一次这一格的提交取出来当工作目录(materials 的消融实现材料就是这样写的)。
|
- 给 flow:消融格核验不通过、修复次数用完时写 `cellNotRunEvent(格, 原因)` 事件,结算记 insufficient。flow 重做时,把上一次这一格的提交取出来当工作目录(materials 的消融实现材料就是这样写的)。
|
||||||
- 给 flow:修复的差异块按本批基线算(任务书 10 第二部分第 2 步),切好交给 submissions。
|
- 给 flow:修复的差异块按本批基线算(任务书 10 第二部分第 2 步),切好交给 submissions。
|
||||||
@@ -96,4 +97,4 @@
|
|||||||
|
|
||||||
## 下一步
|
## 下一步
|
||||||
|
|
||||||
任务书 13 已核对。第零轮到此为止。flow 第 2 部分已写成任务书 14(`任务书/14-flow-2-开轮到选批.md`):先改这一段的提示词,再写 ①–⑧ 的代码,最后真实跑 3 次,和参考项目 5 次高分运行的第 1 轮盲评比较。等用户另开会话执行。
|
任务书 14 已完成,等监督者核对。
|
||||||
|
|||||||
+54
-6
@@ -523,10 +523,12 @@ Jev 是一个判别器,和程序检查地位相同,不单独成一种记录
|
|||||||
下面是 `src/materials/index.ts` 导出的全部内容。谁能看什么每种任务一个函数,对着方法.md 第三部分、4.2、4.3 写,不写通用判定(用户 2026-10-02)。materials 只读账本,不写;任务材料由 flow 整份存进"模型调用开始"记录。依赖只有 ledger、rules、vocab;代码比较结果、运行产物、提示词由 flow 传进来。
|
下面是 `src/materials/index.ts` 导出的全部内容。谁能看什么每种任务一个函数,对着方法.md 第三部分、4.2、4.3 写,不写通用判定(用户 2026-10-02)。materials 只读账本,不写;任务材料由 flow 整份存进"模型调用开始"记录。依赖只有 ledger、rules、vocab;代码比较结果、运行产物、提示词由 flow 传进来。
|
||||||
|
|
||||||
- `buildMaterial(req)`:生成一份任务材料:给模型看的各节、可查询的记录、拼好的第一条消息、对号清单、能读的代码版本。研究者的材料按"任务说明 → 你自己的 → 公共材料 → 现在交什么"排;实验员、核验员的按"任务说明 → 分给你的材料 → 现在交什么"排,不给信念本和成绩。同一人重新发起同一任务时,最前面放上一次被退回的原因:按阶段、作者、提交种类、对象找本人最后一条退回记录。"现在交什么"由 vocab `SUBMISSION_SCHEMAS` 的字段说明生成。几种任务的取法:
|
- `buildMaterial(req)`:生成一份任务材料:给模型看的各节、可查询的记录、拼好的第一条消息、对号清单、能读的代码版本。研究者的材料按"任务说明 → 你自己的 → 公共材料 → 现在交什么"排;实验员、核验员的按"任务说明 → 分给你的材料 → 现在交什么"排,不给信念本和成绩。同一人重新发起同一任务时,最前面放上一次被退回的原因:按阶段、作者、提交种类、对象找本人最后一条退回记录。"现在交什么"由 vocab `SUBMISSION_SCHEMAS` 的字段说明生成。几种任务的取法:
|
||||||
|
- 讨论、认领:展示讨论原文时,原文引用的入口编号已经作废的(讨论时整份替换过清单),在它后面就地标"(已作废)",读的人才分得清哪些编号还有效(用户 2026-10-03 同意,任务书 14 第 2.5 节)。前后紧挨字母、数字或"-"的不算,`e-x-1` 不会匹配到 `e-x-12` 里。
|
||||||
- 第二次预测:冻结协议不带答复,"挑刺与答复"从这个候选已公开的最后一份回应或统一里读(回应另给答复正文);留池候选读它冻结那一轮的(用户 2026-10-03 定)。
|
- 第二次预测:冻结协议不带答复,"挑刺与答复"从这个候选已公开的最后一份回应或统一里读(回应另给答复正文);留池候选读它冻结那一轮的(用户 2026-10-03 定)。
|
||||||
- 核验:不放 Jev 对这份实现的判断。能走到核验说明 Jev 已判过,Jev 是判别条件,不是给核验员的提示。
|
- 核验:不放 Jev 对这份实现的判断。能走到核验说明 Jev 已判过,Jev 是判别条件,不是给核验员的提示。
|
||||||
- 消融实现:这一格已有公开的消融核验(核验不通过、重做)时,和修复一样从上一次交的这一格代码接着改(用户 2026-10-03 定):工作目录写"上一次交的这一格代码的副本",能读的版本里加上它,完整代码照旧列出作对照;另放"退回意见":最近一次核验里关错了的因子和核验员写的依据,写法同修复的退回意见。
|
- 消融实现:这一格已有公开的消融核验(核验不通过、重做)时,和修复一样从上一次交的这一格代码接着改(用户 2026-10-03 定):工作目录写"上一次交的这一格代码的副本",能读的版本里加上它,完整代码照旧列出作对照;另放"退回意见":最近一次核验里关错了的因子和核验员写的依据,写法同修复的退回意见。
|
||||||
- 指标:冻结之后一律用全名"候选编号.短名":已登记指标清单、对号清单的 `reusableMetrics`、实验员材料的"要实现的指标定义"(候选代码在结果文件里也用全名当键)。提案、回应、统一的对号清单里,已占用的指标编号只有任务的指标、`answer-path` 和 `safeguard-triggers` 两个保留键(用户 2026-10-03 定);已登记的全名带 `.`,新登记的短名不带,不用列进来。
|
- 指标:冻结之后一律用全名"候选编号.短名":已登记指标清单、对号清单的 `reusableMetrics`、实验员材料的"要实现的指标定义"(候选代码在结果文件里也用全名当键)。提案、回应、统一的对号清单里,已占用的指标编号只有任务的指标、`answer-path` 和 `safeguard-triggers` 两个保留键(用户 2026-10-03 定);已登记的全名带 `.`,新登记的短名不带,不用列进来。
|
||||||
|
- `Board`(类):materials 读账本的那一份,构造参数是账本记录数组。flow 的"下一步做什么"是只拿得到记录数组的纯函数,它和 flow 的三个程序步骤都经这一份读账本,不另写一份(任务书 14 第 2.4 节)。flow 用到的:`stages`、`stage`(阶段的轮次、名单、关没关)、`published`(已公开的某种提交,最后一版为准)、`decision`(某轮某种决定)、`proposal`、`proposalsOf`、`authorsOf`(候选合并了哪些原提案、作者按编号排)、`answerOf`(冻结出候选的最后一份回应或统一)、`protocol`、`protocols`、`carried`(留池候选)、`baselineOf`(第 r 轮的本批基线)、`baselineScore`、`runStates`。任务书 14 写的是导出 `baselineOf`、`baselineScore` 两个函数,实际导出了整个类,原因是纯函数只拿得到记录数组,要用的远不止这两样(这一处偏离待用户确认)。
|
||||||
- `finalEntries(ledger)`:按账本取的最终有效的入口(各人最后一版入口清单里的每个入口,带作者和正文);flow 分配入口时用,和认领的对号清单是同一份(任务书 12 第三部分)。
|
- `finalEntries(ledger)`:按账本取的最终有效的入口(各人最后一版入口清单里的每个入口,带作者和正文);flow 分配入口时用,和认领的对号清单是同一份(任务书 12 第三部分)。
|
||||||
- `queryMaterial(material, id)`:只在这份材料的记录里按编号找,交回全文;找不到交回 null(agents 的查询回调据此答"看不到")。
|
- `queryMaterial(material, id)`:只在这份材料的记录里按编号找,交回全文;找不到交回 null(agents 的查询回调据此答"看不到")。
|
||||||
- `readPrompts(dir)`:读 `roles/<角色>.md` 和 `tasks/<提交种类>.md`,交回文字和每个文件原始字节的 sha256;研究开始时 flow 把哈希冻结进研究配置记录(方法.md 4.1)。
|
- `readPrompts(dir)`:读 `roles/<角色>.md` 和 `tasks/<提交种类>.md`,交回文字和每个文件原始字节的 sha256;研究开始时 flow 把哈希冻结进研究配置记录(方法.md 4.1)。
|
||||||
@@ -579,7 +581,7 @@ Jev 是一个判别器,和程序检查地位相同,不单独成一种记录
|
|||||||
|
|
||||||
### flow
|
### flow
|
||||||
|
|
||||||
下面是 `src/flow/index.ts` 导出的全部内容,以后 plugin 也只用它。flow 只经各模块的 `index.ts` 用它们;正式代码里没有为检验写的参数、环境变量、回放模式或假实现(CLAUDE.md"测试")。这一节对应 flow 第 1 部分(任务书 12):骨架、研究开始、第零轮,走到"开第 1 轮"停下。
|
下面是 `src/flow/index.ts` 导出的全部内容,以后 plugin 也只用它。flow 只经各模块的 `index.ts` 用它们;正式代码里没有为检验写的参数、环境变量、回放模式或假实现(CLAUDE.md"测试")。这一节对应 flow 第 1、2 部分(任务书 12、14):骨架、研究开始、第零轮,以及第 r 轮从开轮到选批;走到第 r 轮的 `implementation` 停下,原因"实现还没写(任务书 15)"。轮次按"第 r 轮"写,不写死 1;现在走得到的只有第 1 轮。
|
||||||
|
|
||||||
- `runStudy(input)`:推进一份研究,直到停下。输入三样,都必填:研究目录;配置(新研究交 `checkConfig` 检查过的配置,接着跑一份已有的研究写 null,以账本里冻结的那份为准;两者对不上就报错);"停下"信号。每次启动走同一条路:打开账本;新研究先冻结配置,本机已有 `inforsi-<研究编号>` 的镜像就说明研究编号用过了,报错停下,要换一个编号(编号重复的新研究会把旧研究遗留的同名容器当成自己的运行);已有研究的,核对冻结的配置、镜像还在、提示词哈希没变(开发入口开着时提示词可以变);给开始了没结束的模型调用补写结束(出错、"进程中断"、墙钟时间测不到);按容器名问 Docker 核对登记了没结果的正式运行(没启动的写"没启动"退还名额,启动了的补写确认启动、等它、判分、写结果,问不到的写"状态未知"事件并停下);然后进主循环:读账本 → 问"下一步做什么" → 做这一步 → 回到开头。主循环里 `docker run` 没启动的,写完"没启动"结果(退还名额、记下 Docker 报错原文)就停下,停下原因带上报错原文,本进程不重跑;下次启动时照旧起新编号重跑。恢复时补写的"没启动"不停下。
|
- `runStudy(input)`:推进一份研究,直到停下。输入三样,都必填:研究目录;配置(新研究交 `checkConfig` 检查过的配置,接着跑一份已有的研究写 null,以账本里冻结的那份为准;两者对不上就报错);"停下"信号。每次启动走同一条路:打开账本;新研究先冻结配置,本机已有 `inforsi-<研究编号>` 的镜像就说明研究编号用过了,报错停下,要换一个编号(编号重复的新研究会把旧研究遗留的同名容器当成自己的运行);已有研究的,核对冻结的配置、镜像还在、提示词哈希没变(开发入口开着时提示词可以变);给开始了没结束的模型调用补写结束(出错、"进程中断"、墙钟时间测不到);按容器名问 Docker 核对登记了没结果的正式运行(没启动的写"没启动"退还名额,启动了的补写确认启动、等它、判分、写结果,问不到的写"状态未知"事件并停下);然后进主循环:读账本 → 问"下一步做什么" → 做这一步 → 回到开头。主循环里 `docker run` 没启动的,写完"没启动"结果(退还名额、记下 Docker 报错原文)就停下,停下原因带上报错原文,本进程不重跑;下次启动时照旧起新编号重跑。恢复时补写的"没启动"不停下。
|
||||||
- `StudyInput`(类型):上面三样输入。
|
- `StudyInput`(类型):上面三样输入。
|
||||||
@@ -587,17 +589,57 @@ Jev 是一个判别器,和程序检查地位相同,不单独成一种记录
|
|||||||
|
|
||||||
研究目录里放:`ledger.sqlite` 账本;`repo.git` 代码版本的裸仓库;`runs/<运行编号>/` 一次正式运行(取出的代码、运行目录、日志、判分目录、校验器日志);`calls/<调用编号>/` 一次模型调用(工作目录、会话文件、能读的代码版本)。取出代码、建运行目录和判分目录时目标都是新建的空目录。容器名 `inforsi-<研究编号>-<运行编号>`,判分容器另加 `-judge`。同一份研究的全部运行用同一个种子:研究编号经 vocab 的 `hash` 取前 8 位十六进制转成整数,冻结进研究配置记录。
|
研究目录里放:`ledger.sqlite` 账本;`repo.git` 代码版本的裸仓库;`runs/<运行编号>/` 一次正式运行(取出的代码、运行目录、日志、判分目录、校验器日志);`calls/<调用编号>/` 一次模型调用(工作目录、会话文件、能读的代码版本)。取出代码、建运行目录和判分目录时目标都是新建的空目录。容器名 `inforsi-<研究编号>-<运行编号>`,判分容器另加 `-judge`。同一份研究的全部运行用同一个种子:研究编号经 vocab 的 `hash` 取前 8 位十六进制转成整数,冻结进研究配置记录。
|
||||||
|
|
||||||
**每一步以哪条记录为准算做完**(任务书 12 第 2.2 节)。步骤的先后只写在 flow 的"下一步做什么"一个纯函数里;后面三部分每加一步,这张表加一行。
|
**每一步以哪条记录为准算做完**(任务书 12 第 2.2 节、任务书 14 第 2.2 节)。步骤的先后只写在 flow 的"下一步做什么"一个纯函数里;后面两部分每加一步,这张表加一行。做完的轮次整轮跳过,第一个没做完的轮次里第一个没做完的步骤就是下一步。
|
||||||
|
|
||||||
| 步骤(config 的 `STUDY_STEPS`) | 看到哪条记录算做完 |
|
| 步骤(config 的 `STUDY_STEPS`、`ROUND_STEPS`) | 看到哪条记录算做完 |
|
||||||
|---|---|
|
|---|---|
|
||||||
| `freezeConfig` 冻结配置 | 研究配置记录(`config`) |
|
| `freezeConfig` 冻结配置 | 研究配置记录(`config`) |
|
||||||
| `baselineRun` 基线 | 基线代码记录(`code`,对象是 materials 的 `ORIGINAL_BASELINE`),而且最近一次基线运行的结果不是"没启动";"没启动"的下次启动时起新编号(`base-2`……)重跑,判为不算数的停下 |
|
| `baselineRun` 基线 | 基线代码记录(`code`,对象是 materials 的 `ORIGINAL_BASELINE`),而且最近一次基线运行的结果不是"没启动";"没启动"的下次启动时起新编号(`base-2`……)重跑,判为不算数的停下 |
|
||||||
| `entryDraft`、`discussion1`、`discussion2`、`claim` | 这个阶段的关闭记录(`stageClose`);阶段编号 `r0-<步骤>`,只在名单上的人都有被收下的提交之后才关 |
|
| `entryDraft`、`discussion1`、`discussion2`、`claim` | 这个阶段的关闭记录(`stageClose`);阶段编号 `r0-<步骤>` |
|
||||||
| `assignEntries` 分配 | 第 0 轮的入口分配决定(`decision`,种类 `entries`) |
|
| `assignEntries` 分配 | 第 0 轮的入口分配决定(`decision`,种类 `entries`) |
|
||||||
| 按配置跳过的步骤 | 一条"按配置跳过"事件(`skippedByConfig`),写明步骤和 config 给的原因 |
|
| `openRound`、`carryOverPool` | 不写记录:本轮名单和提案上限就是冻结的配置(方法.md 4.3 ①),留池候选由 materials 从记录算出(`Board.carried`) |
|
||||||
|
| `proposal`、`firstPrediction`、`critique`、`response`、`secondPrediction` | 这一轮这个阶段的关闭记录(`stageClose`);阶段编号 `r<轮>-<阶段>` |
|
||||||
|
| `dedupe` 判重合并 | 本轮的判重合并决定(`decision`,种类 `dedup`) |
|
||||||
|
| `freezeProtocol` 冻结协议 | 本轮每个新候选都有冻结协议记录(`protocol`);全部候选在同一个事务里写 |
|
||||||
|
| `selectBatch` 选批 | 本轮的选批决定(`decision`,种类 `batch`) |
|
||||||
|
| 按配置跳过的步骤 | 一条"按配置跳过"事件(`skippedByConfig`),写明步骤(第 r 轮的步骤写 `r<轮>-<步骤>`)和 config 给的原因 |
|
||||||
|
|
||||||
研究者阶段里没交上的人,按他在这个阶段最近一次调用怎么结束的来定:没有调用、被用户停下、出错(含"进程中断")都派;没交的,开发入口关着就停下(交不出合格提交按内部错误,方法.md 4.3 ②),开着就再派。一次派发里有人没交上,等这次派发的会话全部结束后停下。
|
研究者阶段没开就开,名单是全部研究者(本轮名单就是冻结的配置);每个任务都有被收下的提交之后才关。
|
||||||
|
|
||||||
|
**每个阶段谁做、对哪个对象**(任务书 14 第 2.3 节)。一个任务就是"一个人对一个对象",交一种提交。同一阶段里,一个人的几个任务按下表列出的先后在一个接一个的会话里跑,不同的人同时跑(任务书 12 第 2.6 节)。一个任务做完,以"这个人在这个阶段对这个对象有一份被收下的提交"为准。
|
||||||
|
|
||||||
|
| 阶段 | 任务 | 对象 |
|
||||||
|
|---|---|---|
|
||||||
|
| 第零轮的写入口、两次讨论、认领 | 每位研究者一个任务 | 无 |
|
||||||
|
| 提案 | 每位研究者一个任务,一个会话里交 1 到 M 条 | 无 |
|
||||||
|
| 第一次预测 | 每位研究者 × 本轮每个新候选(含自己的;留池候选不做,方法.md 4.3 ④) | 候选 |
|
||||||
|
| 挑刺 | 每位研究者 × 本轮每条不是自己写的原提案(监督者定,照参考项目:方法没写谁挑谁) | 原提案 |
|
||||||
|
| 回应与统一 | 每个新候选一个任务:只有一条原提案的,由作者交"回应";几条合成的,由其中研究者编号最小的作者交"统一"(方法.md 4.3 ③⑥) | 候选 |
|
||||||
|
| 第二次预测 | 每位研究者 × 候选池里每个候选(新候选加留池候选,方法.md 4.3 ①⑦) | 候选 |
|
||||||
|
|
||||||
|
没做完的任务派不派,按这个任务最近一次调用怎么结束的来定(任务书 12 第 2.3 节;第 2 部分从"一个人"细到"一个人对一个对象",任务书 14 第 2.3 节)。认是哪个任务,看"模型调用开始"里存的材料带的对象。没有调用、被用户停下、出错(含"进程中断")都派;没交的,开发入口关着就停下(交不出合格提交按内部错误,方法.md 4.3 ②),开着就再派。能派的先全派。一次派发里有任务没交上(没交或出错),不再开新的会话,已经在跑的不打断,等这次派发的会话全部结束后停下。
|
||||||
|
|
||||||
|
一个任务交上来之后才知道的东西(submissions 的 `known`,任务书 14 第 2.3 节):提案是本人在本阶段已经收下几条(替换时不算被替换的那份);回应是作者那条原提案;其余种类没有。
|
||||||
|
|
||||||
|
提案和挑刺一个任务可以交几份,每份一个编号:提案用 materials 的 `proposalId`(轮次、作者、第几份),挑刺用 `critiqueId`(目标原提案、作者、第几份),收下时由 flow 按这个任务已收下几份往后分配,回给模型的提交编号就是它(任务书 14 第 2.3 节)。只交一份的种类,提交编号是"阶段.本人.种类.对象"。不写 `replaces` 是交新的一份,只交一份的种类已经交过就退回;写了 `replaces`,必须是这个任务已收下的某一份,整份替换它。
|
||||||
|
|
||||||
|
**第 r 轮里程序自己做的三步**(任务书 14 第 2.4 节,方法.md 4.3 ③⑥⑧)。每步写一条记录(冻结协议一个事务);写下之前被打断,下次启动从账本重新算一遍;写下之后恢复时照原样用,不重算。
|
||||||
|
|
||||||
|
- 判重合并(③):
|
||||||
|
- 本轮已公开的新提案两两问一次 Jev(jev 的 `judgeSameChange`,看两边的因子),每条新提案再和每个留池候选问一次(留池候选看它冻结协议里的因子)。按顺序发,全部问完才写决定;中途被打断就整轮重问(判重不扣运行次数)。
|
||||||
|
- 判为相同的连通成组:A 和 B 相同、B 和 C 相同,A、B、C 就是一个候选(监督者定,方法没写这种情况)。
|
||||||
|
- 一组里有留池候选,整组并进那个留池候选(方法.md 4.3 ③)。一组同时连到两个留池候选,按内部错误停下:真实运行里没出现过。
|
||||||
|
- 其余每组是一个新候选,按组里编号最小的原提案排序,编号用 materials 的 `candidateId`。
|
||||||
|
- 写一条决定:种类 `dedup`;输入是每一对的 Jev 判断,原样存;输出是 materials 的 `DedupOutput`(每个新候选合并了哪几条原提案,每个留池候选并进了哪几条,没有就是空数组);规则名 `jevSameChange`、版本 1,参数写 Jev 模型名,种子 `null`。
|
||||||
|
- 冻结协议(⑥ 之后):
|
||||||
|
- 只在回应阶段关闭之后写:materials 把冻结协议记录的出现当作"已公开",提前写会泄露(任务书 09 审阅时记下的"给 flow"条目)。
|
||||||
|
- 对每个新候选:取它已公开的最后一份回应或统一,用 submissions 的 `protocolBody` 拼出协议主体(回应另带作者那条原提案),用 materials 的 `freezeProtocol` 补上候选编号、轮次、本批基线(`Board.baselineOf`)、合并了哪些原提案。本轮全部新候选在同一个事务里写全。
|
||||||
|
- 留池候选沿用原来的冻结协议(方法.md 4.3 ①),不重写。
|
||||||
|
- 配置关掉回应一步时怎么冻结还没写(`protocolBody` 只收回应和统一),走到这一步就停下。
|
||||||
|
- 选批(⑧,方法.md 6.4):
|
||||||
|
- 输入照 rules 的 `BatchInput` 拼:候选池里每个候选、本轮名单上各人最后一份第二次预测的三个数;本批基线分数(`Board.baselineScore`);方向、ε 取自任务事实,λ(`flow.openReserve`)、每批上限取自冻结的配置;余额用 rules 的 `runBalance` 从运行记录算。
|
||||||
|
- 种子用 rules 的 `decisionSeed`,由研究编号、轮次、版本算。同一轮里要随机的决定各用一个版本,选批用 1,选格预留 2,两次抽取不会用同一串随机数(方法.md 第九部分;选格由第 4 部分接上)。
|
||||||
|
- 规则取步骤清单里 `selectBatch` 那一步的,调 `runBatchRule`。写一条决定:种类 `batch`,规则名、版本和参数取 `runBatchRule` 交回的。
|
||||||
|
|
||||||
检验命令(`eval/`,真实运行,要 Docker;带 `*` 的会花模型或 Jev 的钱。输出都在仓库外 `/home/iomgaa/inforsi-eval/<日期-名字>/`,名字也当研究编号用,只能小写、不能重复):
|
检验命令(`eval/`,真实运行,要 Docker;带 `*` 的会花模型或 Jev 的钱。输出都在仓库外 `/home/iomgaa/inforsi-eval/<日期-名字>/`,名字也当研究编号用,只能小写、不能重复):
|
||||||
|
|
||||||
@@ -610,4 +652,10 @@ Jev 是一个判别器,和程序检查地位相同,不单独成一种记录
|
|||||||
| `npm run eval:r0:replay -- <名字>` | 回放 16-real-1 的第零轮,比对分配结果 |
|
| `npm run eval:r0:replay -- <名字>` | 回放 16-real-1 的第零轮,比对分配结果 |
|
||||||
| `npm run eval:r0:kill -- baseline\|drafting\|stageFull` | 在三处之一杀控制进程、重启跑完,逐条检查(用回放,不花钱) |
|
| `npm run eval:r0:kill -- baseline\|drafting\|stageFull` | 在三处之一杀控制进程、重启跑完,逐条检查(用回放,不花钱) |
|
||||||
| `npm run eval:r0:concurrent` | 两份研究同时跑到基线结束,检查各扣各的、容器不撞名 |
|
| `npm run eval:r0:concurrent` | 两份研究同时跑到基线结束,检查各扣各的、容器不撞名 |
|
||||||
|
| `npm run eval:r1:run -- <名字>` * | 用 `eval/round-zero/research.json` 从头真实跑一份研究,到第 1 轮选批后停下(任务书 14 第 3.1 节);另写 `timeline.jsonl`(每条记录第一次被看到的时刻)和 `outcome.json` |
|
||||||
|
| `npm run eval:r1:kill -- <名字>` * | 同上,在第 1 轮第一次预测阶段中途(已有人交、还有人在写)杀控制进程,用恢复入口跑完,查四条:被杀那次调用补了结束记录;交过的任务没被重派、没交的被重派;没有重复收下的提交;阶段照常关闭、走到选批后停下。结果写进 `kill-report.json` |
|
||||||
|
| `npm run eval:r1:export -- <检验名字> <来源>...` | 把几次运行的第 1 轮导出成同一种去掉来历的纯文本(任务书 14 第 3.2 节第 1 步);来源是我们的研究目录或参考项目的 `board.sqlite`(先复制出来再读) |
|
||||||
|
| `npm run eval:r1:blind -- <检验目录>` | 把导出的文本随机编成"运行 A、B……"放进 `blind/`,对照表另存在外面的 `blind-key.json` |
|
||||||
|
| `npm run eval:r1:jevcheck -- <检验目录>` * | 对每次导出的运行问 Jev 三类问题(任务书 14 第 3.2 节第 3 步):判重对不对、挑刺有没有被回应、提案对应研究路径的哪一步;原始概率写进 `jevcheck.json` |
|
||||||
|
| `npm run eval:r1:stats -- <检验目录>...` | 第 1 轮的数字和过程(任务书 14 第 3.2 节第 4 步),另查阶段开关成对、冻结协议写在回应阶段关闭之后、停下原因是"实现还没写";每个目录写一份 `stats.json` |
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user