Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
15 KiB
任务书 15:改提示词后重测第零轮到第 1 轮选批,按路线分析对照
这份任务书不写新的正式代码。监督者已经改好了提示词(提交 ff5c8dd),你的事是:
- 用新提示词真实跑 3 次,从研究开始跑到第 1 轮选批后停下;
- 和已有的 6 次运行对照,看研究者选方向的倾向变了没有;
- 顺手改一处字样。
本任务书已由用户和监督者在 2026-10-03 一起确定。下面说的"监督者",是在参考项目目录里和用户讨论设计的另一个会话。
一、为什么改提示词
监督者把 6 次真实运行逐份读过:3 次只到第零轮,/home/iomgaa/inforsi-eval/2026-10-03-r0-v2-{1,2,3};3 次到第 1 轮选批,/home/iomgaa/inforsi-eval/2026-10-03-r1-v1-{a,b,kill}。读的时候不看某一个想法有没有出现,而看整条路线排在什么位置。
这里说的"能走到最好的路线"指一条完整的解法:
- 从像样的起点出发(结构化的布局或很多个起点);
- 把全部圆心连同半径连续地挪到局部最优;
- 再做多起点或扰动重来;
- 最后保证严格合法。
挪圆心的手段不限一种:交给约束优化器一起解是一种,"固定圆心解线性规划、再按对偶方向挪圆心"反复交替也是一种。
看到的现象:
- 这类解法 6 次运行里都有人想到,但往往排在后面、写成"备选",或者只是"做法类别"里的一个选项。
- 6 次里有 5 次,有人分到了带这类解法的入口;但有的入口从基线那份被压坏的圆心起步,有的只被写成"方法类别与预算怎么花"。
- 第 1 轮 3 次里,有 2 次交出了完整的高上限路线,而且都被选中了(b 的 r1-c3、kill 的 r1-c2)。
- **18 位研究者闭门写的第一个入口,全都是从读基线的半径函数出发。**三个入口的先后几乎总是"半径 → 圆心布局 → 做法类别",正好对着基线代码的几个函数。讨论时也按这几道工序分工,一人管一道。
- 压低这类解法的理由几乎都不是技术理由,而是"求确定"。
- 原文:"第 1 轮宜小而确定""先把确定的钱落袋""好归因""消融分得开""白烧 1/12 次运行"。
- 线性规划的耗时被反复估算,约束优化器的耗时从没人估过。
- 研究者三人都说"分数大头在圆心布局",第一志愿却常常是量尺、评测口径或布局族。
用户据此定了两处改法(2026-10-03,用户原话见 WORK_LOG.md"关键决定"),由监督者直接改提示词:
- 正向只管冲分,消融负责解释。
- 研究者角色提示词开头写明:正向实验选最可能拿到最高分的路,哪怕要换掉整道工序、结果难以预料。冲失败了基线不倒退(采纳规则保底),"为什么"由消融和解释去拆。
- 估分照实,不因为方案激进就往高报。
- 写入口、讨论、认领、提案的任务提示词跟着改。去掉了"一条就很好""别占掉一次正式运行"这类往保守推的句子。
- 先不看代码自己解题,再拆基线工序,最后两边对照。
- 写入口时三步:
- 用
read_source读基线之前,在思考里列出从零写会怎么解、哪种最可能拿最高分(不用交); - 读基线,拆成工序;
- 逐道对照。
- 用
- 提案提示词在第 1 轮让研究者在认领的入口上再做一遍。
- 写入口时三步:
另外,消融解释提示词里有一个例子带着填圆的做法,已经换成缓存领域的例子。
事先定好的规则(用户定,改不得):
- 这次只换了提示词,跑 3 次,结果不管好坏都照实收下。
- 你不改提示词,不改配置,不改下面附录里的问卷和 Jev 问题。
- 研究质量不设通过线:这次要的是一份可信的对照,交给用户判断。
- 用 Jev 代替研究者押注这件事,这次不做(用户定),只留在 WORK_LOG 待办里。
开工前先读
CLAUDE.md:"测试"一节,尤其是"正式代码和检验代码完全分开"。任务书/14-flow-2-开轮到选批.md第三部分:怎么跑、怎么导出。这次照样用npm run r1:run跑。- 监督者的提示词改动:
git show ff5c8dd。 - 监督者留下的对照材料,在
/home/iomgaa/inforsi-eval/2026-10-03-route-control/:texts/:6 次运行的第零轮全文(入口、讨论、认领,按书写先后)和第 1 轮提案、两次预测的三个数、选批、第二次预测正文;extract.py:生成这些文本的脚本;items.json、items.py:每次运行的最终入口和提案,共 57 条;jevroutes.ts、jev1.json:对这 57 条问 Jev 四个问题的脚本和结果;mylabels.json:监督者自己的判断,供监督者核对时用,你不用。
WORK_LOG.md。
二、一处字样
flow 停下的原因现在写"实现还没写(任务书 15)",在 src/flow/next-step.ts 和 tests/flow-next-step.test.ts。flow 第 3 部分顺延为任务书 16,这两处改成"实现还没写(任务书 16)"。docs/结构.md 里的同一句由监督者改。
三、重跑
- 配置照
eval/round-zero/research.json,只换研究编号,其余一律不动。三个编号:r1-v2-a、r1-v2-b、r1-v2-c。 - 每次跑到第 1 轮选批后,按"实现还没写"停下。
- 中途出错先查原因:
- 是程序的毛病,按 CLAUDE.md 修了重跑,修了什么写进报告;
- 是服务一时调不通,接着跑(
node eval/lib/cli.ts --resume --dir <研究目录>)。
- 不杀进程,不跑回放。
四、对照分析
对照组是已有的 6 次运行,实验组是这次的 3 次。分析都写在 eval/ 下的新目录 eval/route/,产出放 /home/iomgaa/inforsi-eval/ 下。
4.1 导出文本
- 把
extract.py移植进eval/route/,可以用 TypeScript 重写,也可以照原样。 - 对新的 3 次运行导出同样格式的文本。
- 对 6 次对照运行也用你移植后的版本重新导出一遍,和
texts/里的逐字比对。不一致说明移植有误,先修好再往下做。
4.2 逐份阅读
- 9 次运行,每次派一个全新上下文的子 Agent,用附录一的问卷读全文、带原文引用回答。对照组也重新读一遍,保证两组用的是同一种读法。
- 子 Agent 不写文件,直接回复;你把 9 份回复原样存进产出目录。
- 子 Agent 只给文本路径,不告诉它是哪一组、提示词改过什么。
4.3 Jev
用 jevroutes.ts 的四个问题,问的方式和阈值都不改,对 9 次运行的全部最终入口和提案各问一次。对照组也重问,不用 jev1.json 的旧结果:同一组问题隔一段时间再问,概率会有浮动,重问以后两组的结果才能比。要花钱。
4.4 思考核查
新提示词要求研究者先在思考里自己解题,再读基线代码。研究目录 calls/<调用>/sessions/ 下的会话文件存着模型的思考和工具调用。新的 3 次运行里:
- 每个"闭门写入口"调用;
- 每个第 1 轮提案调用。
每个调用查三件事:
- 第一次调用
read_source读基线代码之前,思考里有没有列出几种从零写的解法; - 列了几种,各是什么,一句话一个;
- 它判为最可能拿最高分的是哪一种。
列成表,每格附原文短引用。对照组也查第一件事,看改之前本来就有多少人先想再读。
4.5 要交的对照表(事先登记,改不得)
每次运行一行,9 行,标明组别:
| 列 | 说明 |
|---|---|
| A | 闭门写的第一个入口从基线某段代码出发的人数(共 3 人) |
| B | 能走到最好的路线有没有出现在最终入口里 |
| C | 这类入口在每人志愿里最早排第几 |
| D | 有没有人分到这类入口 |
| E | 第 1 轮有没有这类完整路线的提案;有的话入选没有 |
| F | 各候选第二次预测合并后的一半那个数和九成那个数 |
| G | 最终入口和提案里,Jev"做好了能不能到最好的 1% 以内"判"是"的条数 / 总条数 |
| H | 同上,Jev"相对基线算不算激进"判"是"的条数 / 总条数 |
| I | 讨论里出现"求确定""好归因""先做稳的一步"这类理由的次数,附出处 |
| J | 思考核查第一件事:先想后读的调用数 / 调用数 |
- A 到 F 和 I 由你按 9 份阅读回复填,回复之间有出入的,回原文核实。
- 第零轮只到认领的对照运行,E、F 填"无第 1 轮"。
另附一张表:新的 3 次运行,每条最终入口和每条提案的名称、路线代号、Jev 四个概率。
五、测试与规模
npm run check、npm test通过。- 正式代码只改第二部分那一处字样。
eval/route/预期 300–500 行。
六、文档
WORK_LOG.md:"已完成"补一条,写明 3 次运行的目录、对照表所在位置和主要结果。- 不新建 md 文件。
七、验收与报告
做完后本地提交,然后在回复里交一份报告:
- 提交号;修改的文件,分
src/、tests/、eval/列。 npm run check、npm test的完整输出。- 3 次运行的研究目录、停下原因、出过什么错和怎么处理的。
- 4.1 移植后重新导出与
texts/逐字比对的结果。 - 4.5 的对照表和附表。
- 4.4 思考核查的表。
- 新的 3 次运行,每次的最终入口名称、分配结果、第 1 轮提案名称、判重、入选,各一行。全文给路径。
- 你读下来觉得新旧两组最大的不同在哪里,最可能被误读的地方在哪里。只写有原文支撑的,推断标"(推断)"。
- 你和这份任务书不一致的地方,以及为什么。
- 规则不清楚的地方:哪里让你犹豫、哪里你是靠猜的。没有就写"没有"。
- 正式代码和检验代码分开的自查,逐条写"做到了"或"没做到、为什么"。
附录一:阅读问卷(原样发给子 Agent,只替换"文件"一行)
你在帮一位科研监督者分析一次自动化科研系统的真实运行记录。不要写任何文件,结论直接用中文回复给我。
背景
三位 AI 研究者(同一个模型)在研究一道题:单位正方形里放 26 个互不重叠的圆,最大化半径之和。基线程序得分 0.9598(圆心用同心环构造、被 clip 压到边上、半径用逐对缩放分),已知最好 2.635983。
研究先有"第零轮":每人闭门写 2–3 个"入口"(从哪里开始看)→ 两次讨论分工(可整份换入口)→ 每人排志愿、程序分配入口。部分运行还继续了第 1 轮:每人交提案 → 第一次预测 → 挑刺 → 回应 → 第二次预测(三个数 q1/q5/q9 = 一成/一半/九成可能低于的分数)→ 程序选批(最多选 2 个跑)。
文件:〈文本路径〉(没有第 1 轮的,第 5 题写"无第 1 轮") (全文用 Read 读,分段读完,别只看开头。)
路线分类(用这些代号归类)
- R-NLP:把全部圆心和半径(78 个数)一起交给连续约束优化器(SLSQP、罚函数梯度等)。
- R-SLP:固定圆心解 LP 得半径,再用 LP 对偶/敏感度指引挪圆心,交替或序列线性化。
- R-PHYS:生长式/物理式模拟,圆互相推开、慢慢长大。
- R-FAM:结构化布局族(网格、六角、行式、环)做参数扫描,半径用 LP 或构造给,圆心不做连续移动。
- R-LP:只在给定圆心上把半径分配做到最优(作为整条路线,不是作为某路线的部件)。
- R-GREEDY:往空隙里贪心塞圆。
- R-SEARCH:多起点、扰动、重启这类外层搜索(可与上面组合)。
- R-OTHER:评测口径、预算框架、几何分析、量尺诊断等不直接产出更好答案的。
一条入口或提案可以涉及多个代号,写主代号加部件代号。
要回答的问题(每条尽量附原文短引用,≤60 字,注明作者和大致行号)
- 闭门写入口:每位研究者按书写先后列出入口,标路线代号;有没有自贴的"主/备选/兜底"标签;每人的第一个入口是不是从基线的某段代码出发。
- 讨论:
- a. 每份讨论里,作者认为"哪条路走对了收益最大",原文怎么说。
- b. 谈到 R-NLP、R-SLP 时,支持或压低它们的理由(预算 120 秒单核、非凸局部最优、容差为 0 的合法性、实现复杂、不好归因/测量等),原文引用。
- c. 分工最终是按什么分的:按"层"(半径层/圆心层/搜索层)还是按完整路线?有没有人指出"层"不是独立路线、单做某一层到不了好答案?
- d. 换入口时,换的方向是更保守还是更激进。
- 有没有人写出一条"完整解法"(起点从哪来 + 怎样把全部圆连续改进到局部最优 + 多起点或扰动 + 最后保证合法),它被放在什么位置(主/备选/没人认领)?
- 最终入口与志愿:每条最终入口的路线代号和标签;每位研究者的志愿里,R-NLP / R-SLP / R-FAM / R-LP 各自第一次出现在第几位;最后分到了什么。
- 第 1 轮(若有):
- 每条提案的路线;
- 各候选的第二次预测合并范围;
- 研究者是否预期 R-NLP/R-SLP 高于或低于 R-FAM;
- 第二次预测正文里关于"上限""平台""局部最优""风险"的判断原文;
- 哪些被选中;
- 提案相对认领的入口,是更保守还是更激进了。
- 风险倾向:研究者是偏保守(先做确定能涨、可测、好归因的一步)还是偏激进(直接换掉核心做法、押大收益)?给出证据原文。有没有人明确说出自己在押注或在求稳?
- 你觉得还有什么更深层的模式值得监督者注意(比如对某路线代价的误判、对上限的认识、把"量尺/诊断"当成提案、被基线代码牵着走等),给证据。
回复控制在 1800 字以内,按上面 7 个问题分节。只陈述文件里有的东西,推断要标"(推断)"。
附录二:Jev 四问
问题原文和判"是""否"的说明,以 /home/iomgaa/inforsi-eval/2026-10-03-route-control/jevroutes.ts 为准,原样搬进 eval/route/。四问:
- bold:相对基线程序,是不是激进的方向:换掉产出答案的核心做法,结果很不确定。
- standard:在数值优化行家眼里,这是不是这类填装问题常规、通常可靠的做法。
- reach:在 120 秒单核内认真做下去,能不能到已知最好 2.635983 的 1% 以内。
- complete:是不是一条本身就能产出最终答案的完整路线,而不是一个部件、一次测量或一个框架问题。
对 jevroutes.ts 只改文件路径:
- 读
items.json的位置; importJev 客户端的路径,改成仓库里eval/lib/jev.ts的相对路径。
阈值一律 0.5,原始概率全部存下。