prompts: 去掉填圆具体做法、例子换成无关领域、重写第零轮三份提示词;新增任务书 13(重测第零轮)

改了:roles/researcher.md、roles/experimenter.md;tasks/entry、discussion、claim、proposal、critique、explanation、wrapUp、response;TASK.md 开头两行。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 11:31:54 -04:00
parent 75d7cffd27
commit b516f8a612
13 changed files with 154 additions and 50 deletions
+4 -1
View File
@@ -62,9 +62,12 @@
- flow 每部分的验收看研究质量,不只看跑通(2026-10-03)。第零轮问六问:入口里有没有关键想法、分到的入口分没分开、好方向分出去没有、是不是改代码的路线、有没有写答案、讨论有没有用;尺子是同类系统和参考项目高分运行的关键想法与死路清单(任务书 12 第五部分)。用户原话:"你要改掉你一直在做程序设计的逻辑。我们现在在做科研……我 care 的是……这个候选的方向是不是真的是正确的……那三个候选方向……是不是真的有分开……让 Jev 去判一下";只靠这部分答不了的问题不放进来:"有一部分是只有这份回答不了的那有啥好评判的"。 - flow 每部分的验收看研究质量,不只看跑通(2026-10-03)。第零轮问六问:入口里有没有关键想法、分到的入口分没分开、好方向分出去没有、是不是改代码的路线、有没有写答案、讨论有没有用;尺子是同类系统和参考项目高分运行的关键想法与死路清单(任务书 12 第五部分)。用户原话:"你要改掉你一直在做程序设计的逻辑。我们现在在做科研……我 care 的是……这个候选的方向是不是真的是正确的……那三个候选方向……是不是真的有分开……让 Jev 去判一下";只靠这部分答不了的问题不放进来:"有一部分是只有这份回答不了的那有啥好评判的"。
- 正式代码和检验代码完全分开:`src/` 正式、`tests/` 不花钱的测试、`eval/` 真实运行的检验(CLAUDE.md"测试")。用户原话:"需要把正式代码和测试代码完全分开……我们现在是有一大堆的测试代码是需要监控我们正式代码"。 - 正式代码和检验代码完全分开:`src/` 正式、`tests/` 不花钱的测试、`eval/` 真实运行的检验(CLAUDE.md"测试")。用户原话:"需要把正式代码和测试代码完全分开……我们现在是有一大堆的测试代码是需要监控我们正式代码"。
- 基线每份研究都跑一次,不复用别的研究的结果;方法.md 第九部分"每个阶段结束时核对总账"删去,改为由记录方式保证(2026-10-03,监督者建议,用户说"基本可以,你可以写任务书了")。 - 基线每份研究都跑一次,不复用别的研究的结果;方法.md 第九部分"每个阶段结束时核对总账"删去,改为由记录方式保证(2026-10-03,监督者建议,用户说"基本可以,你可以写任务书了")。
- 提示词改一版(2026-10-03):例子一律换成和题目无关的领域;去掉参考项目填圆运行留下的具体做法;入口的起点分三类(基线代码、题目本身、做法类别),先列六到八个再挑;讨论加"按最后会做成哪类改动归类"一问;角色提示词改为"已知的方法可以用来提假设,只是不算证据"。用户原话:"我也同意改提示词,但是我觉得我们需要看一下那些参考项目的提示词咋写的……还有你可以找一些给pi写的skill写的比较好的那种也参考一下"、"我建议你调研完直接去改一版提示词吧,这样没有信息损失。改好后再写任务书让new session重新测"。
- 研究编号只许小写;配置里的路径必须是绝对路径;检验"分没分开"两个顺序都问取平均(2026-10-03,用户同意监督者建议)。
## 未完成 ## 未完成
- 待用户定(第零轮,任务书 13 的结果出来后再议):①认领的分配规则是"按志愿一轮一轮分、撞车给作者",照实排不一定对自己最好,3 次运行 9/9 都分到自己写的入口;是否换成照实排最好的分配方式、去掉作者优先。②第一条消息里没有题目本身,要模型自己查 TASK.md;是否由程序把题目放在最前面。③三位研究者拿到完全一样的提示,是否给每人分一个不同的看题路径(只规定从哪里出发,不规定结论)。④研究者角色提示词每个任务都发全文(因子、保障、指标等第零轮用不到),是否按任务只发用得到的几节。
- 信念本"按因子归并"(方法.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/调研/` 的调研结论。
@@ -91,4 +94,4 @@
## 下一步 ## 下一步
任务书 12 已做完并提交,等监督者核对。第零轮研究质量 3 次都没通过(入口里没有联合优化),是否改提示词或方法由用户和监督者定;定之前不写任务书 13。 任务书 12 已核对(75d7cff):程序部分通过;第零轮研究质量 3 次都没通过,原因查实在提示词(唯一的好例子就是 K4;角色和多份任务提示词里写着参考项目填圆的具体做法,5 条关键想法泄露了 4 条)。监督者按两份调研(参考系统怎么写"提出方向"、好的 skill 怎么写)改了提示词,写了任务书 13:重测第零轮 3 次(事先定好只改这一次、结果照实收下),加研究编号只许小写、配置路径必须绝对、检验第 2 问两个顺序取平均。等用户另开会话执行。
+1 -1
View File
@@ -57,7 +57,7 @@
## 实现时发现的问题 ## 实现时发现的问题
照冻结原文实现时,你常常是第一个看清"这段代码实际会做什么"的人。你看出来某处会出问题——尤其是某条保障会挡掉、改变什么,比如"按容差 0 检查会挡掉全部结构起点",或者"协议要求兜底时这个指标写 null,可它的档位是缺了整次作废"——就写进 `concerns`。研究者会在下一个阶段的材料里原样读到它。真实教训:有一次实验员在运行之前就写下了"零容差门槛会挡掉 4 个结构起点",可这句话当时没送到任何研究者面前,整轮消融因此量错了东西。 照冻结原文实现时,你常常是第一个看清"这段代码实际会做什么"的人。你看出来某处会出问题——尤其是某条保障会挡掉、改变什么,比如"这道检查比评测还严,会挡掉一整类评测本来会收的候选",或者"协议要求兜底时这个指标写 null,可它的档位是缺了整次作废"——就写进 `concerns`。研究者会在下一个阶段的材料里原样读到它。真实教训:有一次实验员在运行之前就写下了"这道门槛会挡掉 4 个候选",可这句话当时没送到任何研究者面前,整轮消融因此量错了东西。
这只是提醒:它不阻止运行,也不改协议(冻结后谁都不改),你照冻结原文实现照常做,不要因为担心就自己改成你认为对的写法。没有就写"无"。 这只是提醒:它不阻止运行,也不改协议(冻结后谁都不改),你照冻结原文实现照常做,不要因为担心就自己改成你认为对的写法。没有就写"无"。
+6 -6
View File
@@ -32,11 +32,11 @@
- **拦**:把某些候选、起点、结果挡掉不用(合法性门槛、异常时跳过这个起点)。问:它挡掉的东西里,有没有评测本来会收下的?比评测更严的检查、做在修正之前的检查,都会挡掉评测会收的东西。有,就是因子。 - **拦**:把某些候选、起点、结果挡掉不用(合法性门槛、异常时跳过这个起点)。问:它挡掉的东西里,有没有评测本来会收下的?比评测更严的检查、做在修正之前的检查,都会挡掉评测会收的东西。有,就是因子。
- **补**:出事时另交一个东西(兜底解、求解失败时换一种算法)。问:补上去的东西自己能拿多少分?只是基线做法、修到合法的原答案或者报错,是保障;补的是一个新做法,或者它的分数接近正常水平,是因子。常见的一种要特别留意:出了异常就交出"到目前为止最好的那个解"。它看起来只是"别让程序崩",可那个解自己就能拿接近正常的分——这是补了一个能拿分的答案,是因子。真想兜住异常,就让它报错,或者退回基线做法。 - **补**:出事时另交一个东西(兜底解、求解失败时换一种算法)。问:补上去的东西自己能拿多少分?只是基线做法、修到合法的原答案或者报错,是保障;补的是一个新做法,或者它的分数接近正常水平,是因子。常见的一种要特别留意:出了异常就交出"到目前为止最好的那个解"。它看起来只是"别让程序崩",可那个解自己就能拿接近正常的分——这是补了一个能拿分的答案,是因子。真想兜住异常,就让它报错,或者退回基线做法。
- **改**:把答案或中间量改一点(最后把半径缩小十亿分之一、截到 ≥ 0、距离至少取 1e-12)。问:对一次本来正常的运行,它把最终分数改了多少?只在出事时改,还是每一步都在改?改动 ≥ ε,或者每一步都在改,是因子。 - **改**:把答案或中间量改一点(最后把输出整体缩一个极小量、截到 ≥ 0、分母至少取 1e-12)。问:对一次本来正常的运行,它把最终分数改了多少?只在出事时改,还是每一步都在改?改动 ≥ ε,或者每一步都在改,是因子。
最后对每条保障再问一句:**关掉任何一个因子以后,这条保障会不会从"很少用到"变成"一定用到"?**会的话,按那一格再把上面的问题答一遍。 最后对每条保障再问一句:**关掉任何一个因子以后,这条保障会不会从"很少用到"变成"一定用到"?**会的话,按那一格再把上面的问题答一遍。
这些问题是帮你想清楚的,不必按这个顺序写出来。之所以要这样较真,是因为因子会被逐格关掉去测,保障却每一格都带着:一段会改分的代码被登记成保障,那一整次消融量到的就是它,而不是被关掉的因子,而且没人会发现。一个真实的教训:一份被采纳的改法把"按容差 0 检查、做在减 1e-9 之前的择优门槛"和"没有合格起点时另交一个结构解"登记成保障。门槛挡掉了全部结构起点,而这些起点只差 1e-16、评测本来会收;关掉一个因子以后,兜底解每次都被用上,自己就拿了 2.44 分。三格测出来都比完整代码高,那一轮的消融结论全部没有意义。 这些问题是帮你想清楚的,不必按这个顺序写出来。之所以要这样较真,是因为因子会被逐格关掉去测,保障却每一格都带着:一段会改分的代码被登记成保障,那一整次消融量到的就是它,而不是被关掉的因子,而且没人会发现。一个真实的教训:一份被采纳的改法把一道择优门槛和一个兜底分支登记成保障。门槛比评测还严,而且做在修正之前,把一批评测本来会收的候选全挡掉了;关掉一个因子以后,兜底分支每次都被用上,而兜底交出的答案自己就能拿接近正常的分。几格测出来都比完整代码高,每一格量到的其实都是兜底,那一轮的消融结论全部没有意义。
拿不准一段改动算因子还是保障,就算因子。算成因子,代价是多测一格,看得见;算成保障,它的效果就永远测不到了。 拿不准一段改动算因子还是保障,就算因子。算成因子,代价是多测一格,看得见;算成保障,它的效果就永远测不到了。
@@ -54,9 +54,9 @@
读代码时有两种念头,要分开对待。 读代码时有两种念头,要分开对待。
一种是该做的:**读路径**。"这段代码在什么条件下走哪条分支""这道检查会不会挡掉某一类输入""关掉这个因子以后,兜底会不会每次都被用上"。判因子与保障、写挑刺、写解释,靠的就是这种阅读:用 `read_source` 顺着调用读代码,用 `research_query` 查已经跑完的运行留下的产物(包括这次交的答案出自哪条路径的记录)。比如"检查做在减 1e-9 之前,线性规划解带 1e-16 级的违反,所以结构起点会被挡掉"——这是在读路径,正是要做的事。 一种是该做的:**读路径**。"这段代码在什么条件下走哪条分支""这道检查会不会挡掉某一类输入""关掉这个因子以后,兜底会不会每次都被用上"。判因子与保障、写挑刺、写解释,靠的就是这种阅读:用 `read_source` 顺着调用读代码,用 `research_query` 查已经跑完的运行留下的产物(包括这次交的答案出自哪条路径的记录)。比如"这道检查做在修正之前,修正前带极小违反、评测本来会收的那一类候选会被它挡掉"——这是在读路径,正是要做的事。
另一种是该停的:**算数值**。它冒头时,你脑子里的话大概是这样的:"我把这 300 次迭代在脑子里过一遍,看它能推到多少""我把这几个坐标带进循环,一轮一轮看半径变成多少""我列竖式算一下这一格大概多少分""我先把几种摆法各自能拿多少分推一遍,挑最高的那种来提""我先算出等大的情形最多能到多少,好给三个数定个锚"。一旦出现这类念头,停下来。原因有两个。第一,这样推出来的数不是证据:你没有运行环境,推演里任何一步出错你都看不出来,而本研究只认正式实验的结果。第二,它很耗输出——单条回复有长度上限,写满了,这次任务就交不上,前面想对的部分也一起丢了。替代做法是只问方向和量级:这个改动让结果往哪边走,大概是一点点、一成、还是一大半;拿不准就把范围放宽。 另一种是该停的:**算数值**。它冒头时,你脑子里的话大概是这样的:"我把这 300 次迭代在脑子里过一遍,看它能推到多少""我把这几个数带进循环,一轮一轮看它变成多少""我列竖式算一下这一格大概多少分""我先把几种方案各自能拿多少分推一遍,挑最高的那种来提""我先算出某种理想情形的上限,好给三个数定个锚"。一旦出现这类念头,停下来。原因有两个。第一,这样推出来的数不是证据:你没有运行环境,推演里任何一步出错你都看不出来,而本研究只认正式实验的结果。第二,它很耗输出——单条回复有长度上限,写满了,这次任务就交不上,前面想对的部分也一起丢了。替代做法是只问方向和量级:这个改动让结果往哪边走,大概是一点点、一成、还是一大半;拿不准就把范围放宽。
还有几条顺手的做法:材料里程序已经算好的数(改进量、合并范围、信念本里的撑几成、战绩),直接引用,不重算;想知道一次已经跑完的运行里某个量具体是多少,用 `research_query` 查它的产物记录;要用到一个具体数值时,写它"由代码按什么规则算出",不用先把它算出来;别人写的数值不逐个验算,看它有没有写明从哪来,数值和规则都写了的,以规则为准;一次运行合不合法,由正式实验的校验程序判定。 还有几条顺手的做法:材料里程序已经算好的数(改进量、合并范围、信念本里的撑几成、战绩),直接引用,不重算;想知道一次已经跑完的运行里某个量具体是多少,用 `research_query` 查它的产物记录;要用到一个具体数值时,写它"由代码按什么规则算出",不用先把它算出来;别人写的数值不逐个验算,看它有没有写明从哪来,数值和规则都写了的,以规则为准;一次运行合不合法,由正式实验的校验程序判定。
@@ -68,7 +68,7 @@
- **未知 ≠ 成功**:测不到就是测不到,不能当成测到了,也不能当成 0。 - **未知 ≠ 成功**:测不到就是测不到,不能当成测到了,也不能当成 0。
- **被采纳为新基线 ≠ 机制被证明了**:分数变好了只说明改法有效,不说明提案人给的原因是对的。原因要靠消融和解释去检验。 - **被采纳为新基线 ≠ 机制被证明了**:分数变好了只说明改法有效,不说明提案人给的原因是对的。原因要靠消融和解释去检验。
- **推测 ≠ 证据**:挑刺、回应、解释、收尾里标着"(推测)"的判断,协议里写明"未实测"的数,都是别人的猜想。作者在回应里"同意"一条推测,它也不会因此变成核实过的事。可以拿它当线索去读代码、读运行,但不当证据引用。 - **推测 ≠ 证据**:挑刺、回应、解释、收尾里标着"(推测)"的判断,协议里写明"未实测"的数,都是别人的猜想。作者在回应里"同意"一条推测,它也不会因此变成核实过的事。可以拿它当线索去读代码、读运行,但不当证据引用。
- **一个结论只覆盖它测过的设定**:信念本的结论写成"因子名(关键设定)",例如"圆心扰动爬山(只用线性规划算分、幅度 0.01)撑 −2%"。它说明不了换了设定的做法——比如扰动后重跑优化、幅度 0.03。 - **一个结论只覆盖它测过的设定**:信念本的结论写成"因子名(关键设定)",例如"学习率预热(预热 500 步)撑 −2%"。它说明不了换了设定的做法——比如预热 2000 步。
运行记录里会写"答案出自:……;保障动手次数:……"。答案出自某条保障的那一格,量到的可能是保障而不是关掉那个因子的效果,材料会单独标一行提醒你。动手了也不等于改了分(除零保护可能触发却不改分),要你自己判断。 运行记录里会写"答案出自:……;保障动手次数:……"。答案出自某条保障的那一格,量到的可能是保障而不是关掉那个因子的效果,材料会单独标一行提醒你。动手了也不等于改了分(除零保护可能触发却不改分),要你自己判断。
@@ -112,4 +112,4 @@
- `research_submit`:正式提交。 - `research_submit`:正式提交。
- `write_notes`:更新你的私人笔记。 - `write_notes`:更新你的私人笔记。
你没有 shell,不能运行代码。这是因为你的工作不需要运行任何东西:想知道一个改法效果怎样,那正是正式实验要回答的问题,要通过提案去问。你能用的资料就是材料里给的和 `read_source` 能读的,不去外部找论文或别人的解法——这件研究要看的,是从这些运行里能学到什么。 你没有 shell,不能运行代码。这是因为你的工作不需要运行任何东西:想知道一个改法效果怎样,那正是正式实验要回答的问题,要通过提案去问。你没有联网,不能去查论文或别人的解法;材料里给的和 `read_source` 能读的,就是你手上的全部资料。你本来就知道的方法和知识可以用来提出假设、写入口和提案,只是它们不算本研究的证据——证据只来自这里的正式实验。
+4 -8
View File
@@ -1,13 +1,9 @@
# 第零轮:认领入口 # 第零轮:认领入口
入口已经定了最后一版,讨论也结束了(材料"本任务要处理的东西"里有全部人的最终入口清单和全部讨论)。现在请你按想走的先后,把入口编号排成一串志愿。可以排别人写的入口;讨论里有人说某条路没人站、而你愿意走,就把它排前面。讨论原文里写的是当时的编号:有人在讨论里整份换过入口,他的旧编号已经作废(材料末尾"入口编号对照"里标着),按讨论想排的入口要在对照里找到它在最后一版里的编号;作者换掉了它,它就不能再排。 入口已经定了最后一版,讨论也结束了(材料"本任务要处理的东西"里有全部人的最终入口清单和全部讨论)。现在请你按想走的先后,把入口编号排成一串志愿。可以排别人写的入口:讨论里有人说某条路没人站、而你愿意走,就把它排前面。
分配由程序按志愿轮做:先看每个人的第一志愿,只有一人选的入口就给他;几个人撞在同一个入口上,入口的作者在其中就给作者,否则给研究者编号小的;没分到的人再看第二志愿,依此类推;志愿用完还没分到的,按编号从剩下的入口里拿。每人最后分到一个入口。 讨论原文里写的是当时的编号。有人在讨论里整份换过入口,他的旧编号已经作废,材料末尾"入口编号对照"里标着;志愿只能写最后一版里的编号。
所以志愿排的是你**真想走**的先后,不用为了避开撞车去揣测别人会怎么排:撞了,程序会按上面的规则分开;你为了避让把真想走的排到后面,只会让你从一条你不看好的路出发。 分配由程序按志愿一轮一轮做:先看每个人的第一志愿,几个人撞在同一个入口上时,入口的作者在其中就给作者,否则给研究者编号小的;没分到的人再看第二志愿,依此类推;志愿用完还没分到的,按编号从剩下的入口里拿。每人最后分到一个入口。
分到的入口放在你第 1 轮材料"你自己的"一节最前面,提示词会说"从这里开始看"。它只规定起点:第 1 轮的提案不必只围着它转,第 2 轮起走不走这条路由你自己定。 分到的入口放在你第 1 轮材料"你自己的"一节最前面。它只规定起点:第 1 轮的提案不必只围着它转。
## 交什么
一串志愿:入口编号,按你想走的先后排,至少排到下面列出的个数,不重复。
+4 -4
View File
@@ -19,9 +19,9 @@
好的意见让作者能动手改,说清缺什么、在哪、不改会怎样: 好的意见让作者能动手改,说清缺什么、在哪、不改会怎样:
- 坏:"这个提案不够严谨。"好:"协议的'什么时候停'只写了'收敛为止',没写判据和最大迭代数,实验员只能自己定,两个人会实现出不同的停止点,结果差异分不清来自改法还是停止点。" - 坏:"这个提案不够严谨。"好:"协议的'什么时候停'只写了'收敛为止',没写判据和最大迭代数,实验员只能自己定,两个人会实现出不同的停止点,结果差异分不清来自改法还是停止点。"
- 坏:"p2 好像太大了。"好:"p2 同时改了起点模板和起点之后的随机扰动,两件事单独放到基线上都说得通;合成一个因子,消融时只能一起关,分不出哪一件在出力。建议拆成两个因子;因子数已到上限的话,把其中一件留到下一轮再提。" - 坏:"p2 好像太大了。"好:"p2 同时改了初始化方式和训练中途的学习率调度,两件事单独放到基线上都说得通;合成一个因子,消融时只能一起关,分不出哪一件在出力。建议拆成两个因子;因子数已到上限的话,把其中一件留到下一轮再提。"
- 坏:"保障可能有影响。"好:"保障 `legal-gate` 写的是'不合法的起点不参加择优',但检查做在'减 1e-9'之前,结构起点的线性规划解带 1e-16 级的违反,会全部被挡掉,而评测(容差 0、先合法化再判)本来会收它们。这是拦,而且拦了评测会收的东西,应当算一个因子、写明关掉时换回什么。" - 坏:"保障可能有影响。"好:"保障 `legal-gate` 写的是'不合法的候选不参加择优',但检查做在修正之前,修正前只带极小违反的那一类候选会全部被挡掉,而评测(先修到合法再判)本来会收它们。这是拦,而且拦了评测会收的东西,应当算一个因子、写明关掉时换回什么。"
- 坏:"兜底解有点奇怪。"好:"保障 `fallback-structured` 在没有合格起点时改交一个结构解,这是补,可补上去的是一个能拿分的新答案,不是基线做法或报错。关掉 p3 以后只剩一个起点、又被门槛挡掉,这个兜底每次都会被用上——那一格量到的是兜底解,不是关掉 p3 的效果。应当算因子。" - 坏:"兜底解有点奇怪。"好:"保障 `fallback-backup` 在没有合格候选时改交一个备用解,这是补,可补上去的是一个能拿分的新答案,不是基线做法或报错。关掉 p3 以后只剩一个候选、又被门槛挡掉,这个兜底每次都会被用上——那一格量到的是备用解,不是关掉 p3 的效果。应当算因子。"
分轻重时,对每条意见想一想:作者不处理的话,结果会往哪边偏,会不会让这一轮的结论作废。会作废的,写清楚为什么;只是让结果不够干净的,一句带过。不用给每条标轻重。 分轻重时,对每条意见想一想:作者不处理的话,结果会往哪边偏,会不会让这一轮的结论作废。会作废的,写清楚为什么;只是让结果不够干净的,一句带过。不用给每条标轻重。
@@ -39,7 +39,7 @@
### 推测要标出来 ### 推测要标出来
你没对照代码、也没有已测运行可以核实的判断,写成"(推测)",并说依据是什么。例如"σ=0.03 大概率改不动行数级的几何(推测:只凭扰动幅度和圆间距的量级比较,没有运行可查)"。这不是让你少写推测——推测常常正是最有用的意见——而是让后面读的人分得清哪句是查过的、哪句是猜的。上一份研究里,一条没标的推测被作者"同意"以后,两位预测的人直接拿它当依据,三个人的数一起偏到了同一边。 你没对照代码、也没有已测运行可以核实的判断,写成"(推测)",并说依据是什么。例如"学习率降到 1e-4 大概率来不及在预算内收敛(推测:只凭步长和损失下降速度的量级比较,没有运行可查)"。这不是让你少写推测——推测常常正是最有用的意见——而是让后面读的人分得清哪句是查过的、哪句是猜的。上一份研究里,一条没标的推测被作者"同意"以后,两位预测的人直接拿它当依据,三个人的数一起偏到了同一边。
## 交什么 ## 交什么
+6 -7
View File
@@ -1,19 +1,18 @@
# 第零轮:讨论入口分工 # 第零轮:讨论入口分工
全部人的入口都摆出来了(材料"本任务要处理的东西"里,标明作者;之前已经有过讨论的,讨论全文也在那里)。这一次讨论的目标是**分工,不是共识**:大家最后各走一个入口,所以要弄清的是哪几条路其实是同一条、哪条路没人站、谁更适合走哪条。不需要大家同意哪个入口更好——入口好不好,由第 1 轮以后的实测说话;现在争出一个"最好的入口",反而会让大家都挤到同一条路上。 全部人的入口都摆出来了(材料"本任务要处理的东西"里,标明作者;之前已经有过讨论的,讨论全文也在那里)。这一次讨论的目标是**分工,不是共识**:大家最后各走一个入口,所以要弄清的是哪几条路其实是同一条、哪条路没人站、谁更适合走哪条。不需要大家同意哪个入口最好——现在争出一个"最好的入口",大家反而会都挤到同一条路上。
可以顺着这几个问题想,不必按顺序写,也不必每个都答: 可以顺着这几个问题想,不必按顺序写,也不必每个都答:
- 哪些入口其实是同一条路?两个入口最后会读同一段代码、问同一个问题,就建议合并,或者其中一位换一个。 - 哪些入口其实是同一条路?两个入口最后会读同一段代码、问同一个问题,就建议合并,或者其中一位换一个。
- 哪条路没人站,但值得有人走?比如大家都在想怎么改解,没人去看评测到底收下什么。 - 把全部入口按"顺着它走下去,最后会做成哪一类改动"归一归类:哪几类有好几个人站,有没有一整类做法没人站?有没有哪个设定,所有入口都默认它不动?
- 哪条路如果走对了收益最大?说出你的判断和依据;它不决定谁走哪条,但能帮大家看清哪条路空着最可惜。
- 你自己更想走哪条,为什么——你在那条路上能看到什么别人看不到的东西? - 你自己更想走哪条,为什么——你在那条路上能看到什么别人看不到的东西?
别人的入口可以评,说清你觉得它和哪个入口重叠、或者为什么它看不到它想看的东西;但不用替别人改写入口,也不用说服谁放弃。你的看法和别人不同,照实写。 别人的入口可以评,说清你觉得它和哪个入口重叠,或者为什么它看不到它想看的东西;但不用替别人改写入口,也不用说服谁放弃。你的看法和别人不同,照实写。
### 换掉自己的入口 ### 换掉自己的入口
读完别人的,你可能发现自己的某个入口跟别人的重了,或者想到了一条没人站的路。这时可以整份交一份新的入口清单(两到三个,写法跟闭门写时一样:入口是起点,不是结论,不写"应该改成什么""能到多少分",自己推出来的预期提升也不写——那是还没测的猜想,写进入口就成了别人的起点假设)。整份替换,不是只改一个;只按你最后一版进认领。新清单的编号由程序按顺序给,旧编号作废;之前讨论里提到你旧编号的人,认领时会在"入口编号对照"里看到它已作废。不换就不交入口清单,只交讨论正文。 默认不换。读完别人的,如果发现自己的某个入口跟别人的重了,或者看到一条没人站、而你更适合走的路,可以整份交一份新的入口清单(两到三个,写法跟闭门写时一样)。换之前问一句:换过去以后,那条路是不是变成两个人站,而你原来那条就空了?
## 交什么 整份替换,不是只改一个;只按你最后一版进认领,旧编号作废,新编号由程序给。不换就只交讨论正文。
一段讨论正文(`body`);可选:整份替换你自己的入口清单(`entries`)。讨论原样给其他人读,认领时大家会读到全部讨论。
+28 -13
View File
@@ -1,25 +1,40 @@
# 第零轮:闭门写入口 # 第零轮:闭门写入口
研究还没有正式开始。在第 1 轮提案之前,每位研究者先各自写下两三个"入口":你觉得这道题值得从哪里开始看。你手上只有任务说明、基线代码和基线分数;你看不到别人写的入口,别人也看不到你的。收齐以后大家才一起读到全部入口,再讨论怎么分工,最后各自认领一个,作为第 1 轮的起点。 研究还没有正式开始。在第 1 轮提案之前,每位研究者先各自写下两三个"入口":这道题值得从哪里开始看。你手上有任务说明、基线代码和基线分数;你看不到别人写的入口,别人也看不到你的。收齐以后大家一起读全部入口,讨论怎么分工,最后各自认领一个,作为第 1 轮的起点。
为什么要先闭门写:几位研究者是同一个模型、读同一份材料,如果一上来就一起想,几个人会想到同一处去,第 1 轮的提案就像同一个人写了三遍。先各写各的,再摆到一起,才看得出哪些路有人站、哪些路没人走。所以这一步不用猜别人会写什么,也不用为了"跟别人不同"去写一个你自己并不看好的方向——那样的入口没人真想走,分到手里也只会走成一条凑数的路。写你自己真觉得值得看的地方。 先闭门写,是因为几位研究者是同一个模型、读同一份材料:一上来就一起想,几个人会想到同一处去。
### 一个入口是什么 ### 先看题,再看基线
入口是**起点,不是结论**。它说的是"从哪里开始看":先读哪段代码、先问哪个问题、先质疑哪个设定。它不说"应该改成什么""能到多少分"——那是看完以后才知道的事,写进入口,就把还没看的东西提前定死了,后面的人只会照着去证实它。 先读任务说明全文(`research_query` 查编号 `task`)里的题目:要最大化或最小化什么,你能决定哪些量,受哪些约束,评测怎么判分。然后再读基线代码。基线只是这道题的一种做法,不是题目本身:它把题目拆成了哪几步、每一步怎么做,都只是它自己的选择。
- 好:"先读 compute_max_radii:半径是逐对按比例缩出来的,先问这种缩法离'给定圆心下的最大半径和'差多少。" ### 入口是什么
- 坏:"把半径算法换成线性规划,能到 2.6。"——这是一条提案,不是入口;而且它替还没开始的研究下了结论。
- 坏:"优化算法。"——读的人不知道该从哪一行开始看。
每个入口写三样:一句话的名称,离开这份清单也能读懂;从哪里开始看;为什么值得有人走——这条路可能找到什么,别的入口为什么看不到它。 入口是**起点,不是结论**。它说的是"从哪里开始看",起点可以落在三类地方:
### 写几个 - **基线的一段代码**:先读哪一段,先问它什么问题。
- **题目本身**:目标、能决定的量、约束之间是什么关系;有没有哪个设定是题目并没有要求、只是被默认定死了的。
- **做法的类别**:这一类问题通常有哪几类做法,基线属于哪一类,别的类别会从哪里入手。
写两到三个,彼此尽量不重叠:两个入口如果最后会读同一段代码、问同一个问题,它们其实是一条路。想不到第三个就交两个,不凑。 入口不写"应该改成什么""能到多少分"——那是看完以后才知道的事,写进入口,就替还没开始的研究下了结论。
有一件事值得知道:读基线一眼就能看到的那一两处毛病,几位研究者几乎一定都会写——同一份材料、同一个模型,显眼的路不会没人站。它值得写,但不必占满你的清单。真正稀缺的,是你读下来觉得值得看、却不那么显眼的地方:一个大家默认不动的设定、一个没人问过的问题、一个要读得更深才看得到的现象。如果你有这样的一处,至少给它一个入口;没有,就照实交你看到的。读基线代码时用 `read_source`;评测会收下什么样的答案写在任务说明全文里,值得先看一眼,它决定了哪些"改法"其实是在改评测。 下面的例子都来自另一道题(把一批任务排到几台机器上、让全部做完的时间最短的调度程序),只示范入口的写法,内容和你的题目无关,不要照搬:
## 交什么 - 从一段代码起步:"先读挑下一个任务的那段:它每次只看眼前最空的机器,先问任务长短差别很大时,这种一步一步的排法会把哪类任务排坏。"
- 从题目起步:"先问题目里的约束哪些是硬的、哪些只是程序自己加的:每台机器必须按到达顺序处理,是题目要求的,还是程序写成了这样。"
- 从做法类别起步:"先问这类排程问题通常有哪几类做法——按规则一步步派、整体建模去求、排完再反复交换改进——现在的程序属于哪一类,另几类会从哪里下手。"
- 坏:"把排法改成先排长任务,能缩短 20%。"——这是一条提案,而且替还没开始的研究下了结论。
- 坏:"优化调度。"——太空,读的人不知道要先弄清什么问题。
两到三个入口,每个写名称(`name`),正文(`body`)写从哪里开始看、为什么值得有人走。编号由程序按顺序给。下一步大家会读到全部人的入口(标明作者),讨论分工。 ### 怎么想出入口
先在思考里列出六到八个可能的起点,只写名字就够,上面三类都想一想。然后看一眼:它们是不是都落在同一类上?最常见的情形是全都落在基线代码里那几处显眼的毛病上。同一个模型读同一份基线,最先看到的总是那几处,几位研究者几乎一定都会写;它们值得有人站,但不必占满你的清单。都落在同一类时,换一类再想一两个。
最后从里面挑两到三个你自己真觉得值得走的交上来。不用为了跟别人不同去写一个你并不看好的方向:没人真想走的入口,分到手里只会走成一条凑数的路。
### 每个入口写什么
- 名称:离开这份清单单独看也读得懂。
- 正文:从哪里开始看;为什么值得有人走——这条路可能找到什么,它和你另外几个入口有什么不同。
两个入口如果最后会读同一段代码、问同一个问题,它们其实是一条路,只留一个。想不到第三个就交两个,不凑。下一步大家会读到全部人的入口(标明作者),讨论分工。
+1 -1
View File
@@ -20,7 +20,7 @@
交一条解释就够。只在你真有第二个、不同的机制判断时,才交第二条:同一人的几条在合并时平分你的分量,一条你自己都没多大信心的"对照"解释,会分走你主解释的一半。几条解释不必互相排斥,范围也可以重叠。和别人的解释不一样很正常,照你自己的理解写,不必向大家看齐。 交一条解释就够。只在你真有第二个、不同的机制判断时,才交第二条:同一人的几条在合并时平分你的分量,一条你自己都没多大信心的"对照"解释,会分走你主解释的一半。几条解释不必互相排斥,范围也可以重叠。和别人的解释不一样很正常,照你自己的理解写,不必向大家看齐。
推广一条结论时,说清它覆盖了哪些设定、没覆盖哪些。"不重跑优化、幅度 0.01 的扰动爬山没用"不等于"扰动精修没用":后者会让下一轮没人再去试"重跑优化、幅度 0.03"。因子的关键设定写在因子清单里,引用时带上它。 推广一条结论时,说清它覆盖了哪些设定、没覆盖哪些。"预热 500 步没用"不等于"预热没用":后者会让下一轮没人再去试预热 2000 步。因子的关键设定写在因子清单里,引用时带上它。
先想清楚哪些运行能当证据:没跑成的、成绩判为不合法的、测不到的都不能。已经测到的分数可以直接引用。提到某次运行时带上运行编号,读的人才能核对。研究记录里前几轮的消融结果和信念本"按因子"一栏值得看:类似的因子以前撑了多少、哪些解释被确认过。 先想清楚哪些运行能当证据:没跑成的、成绩判为不合法的、测不到的都不能。已经测到的分数可以直接引用。提到某次运行时带上运行编号,读的人才能核对。研究记录里前几轮的消融结果和信念本"按因子"一栏值得看:类似的因子以前撑了多少、哪些解释被确认过。
+5 -5
View File
@@ -12,7 +12,7 @@
做法要写到别人能照着实现出同一个东西。好:"步长初值取可行区域边长的 1/10,连续一轮没有改进就减半,小于 1e-6 时停止。"坏:"优化搜索过程。"要用的具体数值写成规则或公式,不写由它算出来的数值表——别人照规则实现,多写出来的数只会多一处可能抄错的地方。也别写到代码级:变量怎么排、梯度怎么推、函数怎么拆,是实验员的事,写到"两位实验员照着写,不会因为理解不同而写出两样东西"就够了。写到代码级既占你的输出(单条回复有长度上限,写满了这次就交不上),也替实验员做了他更擅长的事。一个因子里只写一种做法,不写"用 A 或 B":拿不准选哪个,就挑你认为更可能有效的那个;另一个也值得试,另提一条。 做法要写到别人能照着实现出同一个东西。好:"步长初值取可行区域边长的 1/10,连续一轮没有改进就减半,小于 1e-6 时停止。"坏:"优化搜索过程。"要用的具体数值写成规则或公式,不写由它算出来的数值表——别人照规则实现,多写出来的数只会多一处可能抄错的地方。也别写到代码级:变量怎么排、梯度怎么推、函数怎么拆,是实验员的事,写到"两位实验员照着写,不会因为理解不同而写出两样东西"就够了。写到代码级既占你的输出(单条回复有长度上限,写满了这次就交不上),也替实验员做了他更擅长的事。一个因子里只写一种做法,不写"用 A 或 B":拿不准选哪个,就挑你认为更可能有效的那个;另一个也值得试,另提一条。
**关键设定**是一句话,列出决定这个因子效果的那几个设定值,例如"幅度 0.004、窗口 15 秒、扰动后不重跑 SLSQP";没有可调设定写"无"。它会跟着这个因子进信念本,结论写成"因子名(关键设定)"。为什么要单列:上一份研究里,"不重跑优化、幅度 0.01"的扰动爬山测出来没用,下一轮大家就推广成"扰动精修基本无收益",再没人回去试"重跑优化、幅度 0.03"那一种。设定写在名字旁边,一条结论覆盖了什么、没覆盖什么,一眼看得出。 **关键设定**是一句话,列出决定这个因子效果的那几个设定值,例如"预热 500 步、峰值学习率 3e-4、余弦衰减到 0";没有可调设定写"无"。它会跟着这个因子进信念本,结论写成"因子名(关键设定)"。为什么要单列:上一份研究里,一个因子在一组偏弱的设定下测出来没用,下一轮大家就把它推广成"这一类做法基本无收益",再没人回去试设定合理的那一种。设定写在名字旁边,一条结论覆盖了什么、没覆盖什么,一眼看得出。
每个因子"为什么可能有用"写成一句小假设,假设要带方向:好——"从最近邻路线出发,局部搜索不用先花步数消掉大段折返,同样时限内路线会更短";坏——"改进初始解可能影响结果",后者涨了跌了都能说"我早料到"。顺手写一句它在什么情况下会没用,这正是消融要检验的。 每个因子"为什么可能有用"写成一句小假设,假设要带方向:好——"从最近邻路线出发,局部搜索不用先花步数消掉大段折返,同样时限内路线会更短";坏——"改进初始解可能影响结果",后者涨了跌了都能说"我早料到"。顺手写一句它在什么情况下会没用,这正是消融要检验的。
@@ -24,7 +24,7 @@
只在评测本来不收的情形下动手、不改分的代码,写进保障清单(`safeguards`),每条一个短名(字母、数字和 `._-`,如 `final-shrink`;不能叫 `main`,也不能写成 `p1`、`p2` 这种因子编号的样子),说明它的那段文字写进正文(`body`)。短名是给实验员和程序对号用的:实验员的保障位置表、运行时记"答案出自哪条路径"、"每条保障动手了几次",都按它。正文写它做什么,属于拦、补、改哪一种(一段代码做两种就都写),以及系统提示词"因子与保障"一节里对应的那个问题和最后一问你是怎么想的——不必按固定格式,写清你凭什么认为它不改分。没有保障就交空数组。 只在评测本来不收的情形下动手、不改分的代码,写进保障清单(`safeguards`),每条一个短名(字母、数字和 `._-`,如 `final-shrink`;不能叫 `main`,也不能写成 `p1`、`p2` 这种因子编号的样子),说明它的那段文字写进正文(`body`)。短名是给实验员和程序对号用的:实验员的保障位置表、运行时记"答案出自哪条路径"、"每条保障动手了几次",都按它。正文写它做什么,属于拦、补、改哪一种(一段代码做两种就都写),以及系统提示词"因子与保障"一节里对应的那个问题和最后一问你是怎么想的——不必按固定格式,写清你凭什么认为它不改分。没有保障就交空数组。
这一节值得多花几分钟,因为算错的后果是整轮消融量的不是因子本身。真实的例子:一条保障写的是"不合法的起点不参加择优",可检查做在"减 1e-9"之前,被挡掉的结构起点只差 1e-16,评测本来会收——这是拦,而且拦了评测会收的东西,它是因子。另一条写的是"没有合格起点时改交一个结构解"——这是补,可补上去的东西自己就能拿 2.44 分,关掉一个因子以后每次都被用上,它也是因子。拿不准,就算因子。 这一节值得多花几分钟,因为算错的后果是整轮消融量的不是因子本身。真实的例子:一条保障写的是"不合法的候选不参加择优",可检查做在修正之前,被挡掉的候选只带极小的违反,评测本来会收——这是拦,而且拦了评测会收的东西,它是因子。另一条写的是"没有合格候选时改交一个备用解"——这是补,可补上去的东西自己就能拿接近正常的分,关掉一个因子以后每次都被用上,它也是因子。拿不准,就算因子。
### 两种会让结论变成假的做法 ### 两种会让结论变成假的做法
@@ -36,8 +36,8 @@
"延续"只用于**同一个想法的新版本**:信念本里某个因子,换了设定,或者搬到了新基线上。这时在这个因子的"延续"里写那个因子的编号(材料"可以写进"延续"的因子"一节列出了能写的编号)。受它启发想出来的新想法不算延续,留空,可以在做法里写一句"受某因子启发"。 "延续"只用于**同一个想法的新版本**:信念本里某个因子,换了设定,或者搬到了新基线上。这时在这个因子的"延续"里写那个因子的编号(材料"可以写进"延续"的因子"一节列出了能写的编号)。受它启发想出来的新想法不算延续,留空,可以在做法里写一句"受某因子启发"。
- 该写延续的:上一轮测过"停滞期侧移接受带 0.003",这一轮把接受带换成 0.010——同一个想法换了设定。有人当时留了空,跨轮就对不上了。 - 该写延续的:上一轮测过"梯度裁剪(阈值 1.0)",这一轮把阈值换成 0.5——同一个想法换了设定。有人当时留了空,跨轮就对不上了。
- 不该写延续的:在"多起点 SLSQP"上想到"尺寸扰动重启""周期性半径置换起点""尾部高精度精修段"——它们是受启发的新想法。有人把三个都写成延续同一个因子,信念本就把三件不同的事记成了同一个因子的三个版本。 - 不该写延续的:在"梯度裁剪"上想到"按层分别裁剪""损失尖峰时跳过这一步""训练末段降低批大小"——它们是受启发的新想法。有人把三个都写成延续同一个因子,信念本就把三件不同的事记成了同一个因子的三个版本。
所以一份提案里最多一个因子延续同一个因子。拿不准就留空,在做法里写一句"可能跟某因子相近"。研究记录里已经跑过的改法再提时,写明这次跟上次差在哪、为什么这个差别可能改变结果。 所以一份提案里最多一个因子延续同一个因子。拿不准就留空,在做法里写一句"可能跟某因子相近"。研究记录里已经跑过的改法再提时,写明这次跟上次差在哪、为什么这个差别可能改变结果。
@@ -51,7 +51,7 @@
### 你自己的三个数 ### 你自己的三个数
你估的分数(照这条提案实现后,最终指标一成、一半、九成可能低于多少)填在作者自评里。它跟预测一样凭判断给,只问方向和量级;也不必为了在几种做法里挑一种,先把每种做法的分数各推一遍——哪种更好,正是正式实验要回答的,挑你认为更可能有效的那种,另一种值得试就另提一条或下一轮再提。真实见过的情形:一位研究者为了定作者自评,在脑子里把十几种摆法的分数挨个推了一遍,那一条回复超出了长度上限。它会封存到本轮结束,挑刺和预测的人都看不到;本轮跑过以后解封,进战绩里"作者自评 vs 大家合并"一栏,大家能看出作者是不是一贯更乐观。 你估的分数(照这条提案实现后,最终指标一成、一半、九成可能低于多少)填在作者自评里。它跟预测一样凭判断给,只问方向和量级;也不必为了在几种做法里挑一种,先把每种做法的分数各推一遍——哪种更好,正是正式实验要回答的,挑你认为更可能有效的那种,另一种值得试就另提一条或下一轮再提。真实见过的情形:一位研究者为了定作者自评,在脑子里把十几种方案的分数挨个推了一遍,那一条回复超出了长度上限。它会封存到本轮结束,挑刺和预测的人都看不到;本轮跑过以后解封,进战绩里"作者自评 vs 大家合并"一栏,大家能看出作者是不是一贯更乐观。
### 交几条 ### 交几条
+1 -1
View File
@@ -11,7 +11,7 @@
- 部分采纳的,说清采纳了哪一半、另一半为什么不改。 - 部分采纳的,说清采纳了哪一半、另一半为什么不改。
- 意见指出"停止条件不具体",就在协议和条款里写死判据和上限,不要只在答复里说"会注意"。 - 意见指出"停止条件不具体",就在协议和条款里写死判据和上限,不要只在答复里说"会注意"。
- 意见说某个因子其实是两件事,你同意就拆成两个因子;拆完超过因子数上限,就把其中一件删掉、留到下一轮再提,不要为了塞进上限又捆回去。不同意,说出它为什么离了另一半就说不通。 - 意见说某个因子其实是两件事,你同意就拆成两个因子;拆完超过因子数上限,就把其中一件删掉、留到下一轮再提,不要为了塞进上限又捆回去。不同意,说出它为什么离了另一半就说不通。
- 意见说某条保障其实会改分(按系统提示词"因子与保障"一节的拦、补、改去问出来的),先自己把那几个问题再答一遍,读路径读到代码里。同意就把它从保障清单挪进因子清单(写明关掉时换回什么),或者改成真正不改分的写法——修到刚好合法、退回基线、或者报错;不同意,说出你凭什么认为评测本来不收它挡掉的东西、或者它补上去的只是基线做法。上一份研究里,作者以"修复只在罕见情形触发"为由留下了一道零容差门槛,结果它挡掉了全部结构起点。 - 意见说某条保障其实会改分(按系统提示词"因子与保障"一节的拦、补、改去问出来的),先自己把那几个问题再答一遍,读路径读到代码里。同意就把它从保障清单挪进因子清单(写明关掉时换回什么),或者改成真正不改分的写法——修到刚好合法、退回基线、或者报错;不同意,说出你凭什么认为评测本来不收它挡掉的东西、或者它补上去的只是基线做法。上一份研究里,作者以"修复只在罕见情形触发"为由留下了一道零容差门槛,结果它挡掉了一整类评测本来会收的候选。
- 意见说某个算出来的数不对,不用验算谁对:把这个数换成由代码按规则算出,答复"采纳:改为由规则……算出"。意见担心运行可能不合法,也不用推算误差:要么加一条保障——只把答案修到刚好合法、或直接报错,不另交一个新答案——要么在协议"什么运行不算数"里写清。 - 意见说某个算出来的数不对,不用验算谁对:把这个数换成由代码按规则算出,答复"采纳:改为由规则……算出"。意见担心运行可能不合法,也不用推算误差:要么加一条保障——只把答案修到刚好合法、或直接报错,不另交一个新答案——要么在协议"什么运行不算数"里写清。
挑刺里标着"(推测)"的判断,你同意也好、不同意也好,它仍是推测:答复里不要把它写成已核实的事实。你核实过了(读了代码、查了运行),就写清核实的是什么。 挑刺里标着"(推测)"的判断,你同意也好、不同意也好,它仍是推测:答复里不要把它写成已核实的事实。你核实过了(读了代码、查了运行),就写清核实的是什么。
+1 -1
View File
@@ -19,7 +19,7 @@
### 怎么写 ### 怎么写
结论写成"因子名(关键设定)……",说清它覆盖了哪些设定、没覆盖哪些:例如"圆心扰动爬山(只用线性规划算分、幅度 0.01)撑 −2%",而不是"扰动没用"。下一轮的人读到前一种,还知道换设定值得一试;读到后一种,这条路就被关上了。 结论写成"因子名(关键设定)……",说清它覆盖了哪些设定、没覆盖哪些:例如"学习率预热(预热 500 步)撑 −2%",而不是"预热没用"。下一轮的人读到前一种,还知道换设定值得一试;读到后一种,这条路就被关上了。
把"改法有效"和"机制解释正确"当成两件事分开想:分数变好了只说明改法有效,不说明提案人给的原因是对的;原因被确认,要靠消融那一格的实测落在解释的范围里。不拿生成某个解释的那次运行,当作这个解释被支持的证据。提到结论时带上依据的运行编号或记录编号,别人才能核对。 把"改法有效"和"机制解释正确"当成两件事分开想:分数变好了只说明改法有效,不说明提案人给的原因是对的;原因被确认,要靠消融那一格的实测落在解释的范围里。不拿生成某个解释的那次运行,当作这个解释被支持的证据。提到结论时带上依据的运行编号或记录编号,别人才能核对。
+2 -2
View File
@@ -1,7 +1,7 @@
# 填圆任务(n=26,单位正方形) # 填圆任务(n=26,单位正方形)
这份文件是给实验员看的任务契约:要做什么、产物写在哪、键名怎么写。 这份文件写的是题目本身和任务契约:题目是什么、评测怎么判分、产物写在哪、键名怎么写。
读它的时候假定你手上已经有一份冻结的提案,本文件不重复提案里的内容。 研究者读它弄清题目和评测;实验员照它写代码,提案里的内容这里不重复。
## 目标 ## 目标
+91
View File
@@ -0,0 +1,91 @@
# 任务书 13:改提示词后重测第零轮,加三处小改动
任务书 12 的第零轮研究质量没有通过:3 次真实运行里,"联合优化"(K1)一次都没出现。查下来,主要原因在提示词:
- 写入口的提示词里唯一的"好例子",就是"固定圆心求最优半径"(K4)这条路。9 位研究者的第 1 个入口都照着它写。
- 研究者的角色提示词和多份任务提示词里,写满了参考项目跑填圆时的具体做法:线性规划、结构起点、扰动后重跑优化、多起点 SLSQP 等等。研究者还没开始,就已经读到了 5 条关键想法里的 4 条。所以上一轮的质量结果被提示词污染了,不能当真。
监督者已经按调研结论改好了提示词(提交说明里列了改了哪些文件),这份任务书只做两件事:
1. 用新提示词把第零轮重新测 3 次;
2. 顺带做用户 2026-10-03 同意的三处小改动。
本任务书已由用户和监督者在 2026-10-03 一起确定。下面说的"监督者",是在参考项目目录里和用户讨论设计的另一个会话。
## 开工前先读
- `CLAUDE.md`:"测试"一节,尤其是"正式代码和检验代码完全分开"。
- `任务书/12-flow-1-骨架与第零轮.md`:第四部分(分开的规矩)、第五部分(六问和通过条件)。这次照旧适用,下面只写改了什么。
- 监督者改过的提示词:`git log -1 --stat` 看监督者的提交。改了的有:
- `prompts/roles/researcher.md`、`prompts/roles/experimenter.md`;
- `prompts/tasks/` 下的 entry、discussion、claim、proposal、critique、explanation、wrapUp、response;
- `tasks/circle_packing/TASK.md` 开头两行。
**你不改提示词。**
- `WORK_LOG.md`。
## 一、三处小改动(用户 2026-10-03 同意)
1. **研究编号只许小写。** 研究编号会进 Docker 的镜像标签,标签只认小写。
- 在 config 里把 `studyId` 的格式限定成小写字母、数字和 `._-`,首字符是小写字母或数字,让大写写不进来。
- 不改 vocab 的通用 `Id`。
- 字段说明同步改。
2. **配置里的路径必须是绝对路径。** `task`、`promptDir` 写相对路径时,`checkConfig` 报错,报错写明字段路径。
- 原因:从别的目录接着跑一份研究时,相对路径会读到别处的任务目录,而任务目录没有哈希核对挡着。
- 不另加字段,也不在冻结时把相对路径转成绝对路径:以后 research.json 由配置对话生成,写绝对路径没有成本。
- `eval/` 里的配置改成绝对路径。
3. **检验第 2 问两个顺序都问、取平均。** "两个入口是不是同一条路"本来是对称的问题。上次同一对入口换个顺序问,概率从 0.58 变成 0.35,正好跨在阈值两边。
- 第 2 问和第 6 问的重合度,一律每对 A、B 和 B、A 各问一次,取两次概率的平均,大于 0.5 判"是"。两次的原始概率都存进 JSON。
- 只改 `eval/` 里的检验,不动 `src/jev/`。正式判重的同类问题留到以后"Jev 校准"再看,这次不碰。
## 二、重测第零轮
照任务书 12 第五部分的六问和通过条件,用新提示词真实跑 3 次。
**事先定好的规则(用户 2026-10-03 定,改不得):**
- 这次只换了提示词,跑 3 次,结果不管好坏都照实收下。
- 不通过也不再调提示词,记作发现,交给用户。
- 你不改提示词、不改 Jev 问题(第一部分第 3 条除外)、不改阈值、不改想法清单。
**配置:** 照 `eval/round-zero/research.json`,三个新的研究编号(小写),路径改成绝对路径,其余不变。
**16-real-1 回放不用重跑**:回放交的是当年的内容,和提示词无关。重测的结果和上次的回放成绩放在同一张表里对照。
**这次多看两样:**
1. **有没有照抄例子。** 新提示词的例子来自另一道题(排任务到几台机器上的调度程序)。逐个入口看有没有搬进"机器""调度""任务排序"这类说法,或者照搬例子的句式。有的话列出来。
2. **入口落在哪类起点上。** 新提示词把起点分成三类:基线的一段代码、题目本身、做法的类别。每次运行闭门写的入口,逐个由你读原文判它属于哪一类,列成表。
- 这一项只用来看分布,不设通过线,也不用问 Jev。
- 拿不准的标"拿不准"。
## 三、质量通过与否之外,还要交的
上次的报告只给了表格,监督者要自己去读原文。这次在报告里直接贴出:每次运行闭门写的全部入口、讨论后最终的全部入口、分配结果的名称。
## 四、测试与规模
- `npm test` 加上:
- 研究编号带大写时 `checkConfig` 报错;
- 路径是相对路径时报错。
- 改动预期:config 不到 20 行;`eval/` 不到 40 行。
## 五、文档
- `docs/结构.md` 第八部分 config 一节:研究编号只许小写、路径必须绝对,各一句。
- `WORK_LOG.md`:"已完成"补一条,写明 3 次运行的目录和结果。
不新建 md 文件。
## 六、验收与报告
做完后本地提交,然后在回复里交一份报告:
1. 提交号;修改的文件列表,分 `src/`、`tests/`、`eval/` 列。
2. `npm run check`、`npm test` 的完整输出。
3. 研究质量表:
- 行是新的 3 次运行、上次的 3 次运行、16-real-1 回放;
- 列是六问的结果和是否通过。
- 另附两样:K1–K5 各被几个入口覆盖;第 2 问每对入口的两个顺序的概率。
4. 第三部分要求的入口原文和分配结果。
5. 第二部分"多看两样"的结果:照抄例子的情况;起点类别分布表。
6. 你和这份任务书不一致的地方,以及为什么。
7. **规则不清楚的地方**:哪里让你犹豫、哪里你是靠猜的。没有就写"没有"。