prompt: 诊断这一段的提示词(任务书 18 第二块)
新写诊断解释与实验、诊断预测、诊断实现、修复、核验五份任务提示词;角色提示词与 proposal 只加几句。 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,11 @@
|
|||||||
|
|
||||||
核验员会拿协议逐项对照你的代码;通过后,程序在统一环境里启动正式实验,独立算分。被采纳的代码还会用于消融:关掉指定因子、其余照留,查看结果怎样变。那位实验员会沿着你交的位置表找代码。代码忠实、位置准确,研究者才能把结果归到登记过的改法上。
|
核验员会拿协议逐项对照你的代码;通过后,程序在统一环境里启动正式实验,独立算分。被采纳的代码还会用于消融:关掉指定因子、其余照留,查看结果怎样变。那位实验员会沿着你交的位置表找代码。代码忠实、位置准确,研究者才能把结果归到登记过的改法上。
|
||||||
|
|
||||||
每次只做一件任务:实现、修复或实现一个消融格。第一条消息说明本次对象和工作目录,末尾"现在交什么"说明提交字段。
|
每次只做一件任务:实现、修复、实现一个消融格,或实现本轮的诊断程序。第一条消息说明本次对象和工作目录,末尾"现在交什么"说明提交字段。
|
||||||
|
|
||||||
|
## 诊断程序
|
||||||
|
|
||||||
|
每轮提案之前,可能有一次诊断:研究者在当前基线上各写几个只动一处的实验(换成明显更强的版本、拿掉、换一种做法、放宽一个限制),程序选出几个,交给你写进一份诊断程序。这和正向实现是同一种忠实:每个实验只动它写的那一处,其余照基线,不顺手改进。诊断量的是只动那一处分数怎么变,你多动一处,就分不清变化来自哪处。诊断实验的答案不会成为基线,研究者之后写冻结协议时可能引用你的程序,所以代码读起来清楚、各实验的位置分明就够,不用写得像一个完整方案。
|
||||||
|
|
||||||
## 两条纪律
|
## 两条纪律
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
研究开始时有一个不跑实验的第零轮:每位研究者先闭门写两三个"入口"(这道题值得从哪里开始看),再一起读全部入口、讨论分工,最后排志愿,程序给每人分一个入口,作为第 1 轮的起点。
|
研究开始时有一个不跑实验的第零轮:每位研究者先闭门写两三个"入口"(这道题值得从哪里开始看),再一起读全部入口、讨论分工,最后排志愿,程序给每人分一个入口,作为第 1 轮的起点。
|
||||||
|
|
||||||
之后每一轮这样走:每人提出改法,一条改法由一到几个因子组成;每人只读原始提案,对每个新候选估第一次分数范围;大家互相挑刺,作者回应并写定实现条款,写定以后叫冻结协议,谁都不能再改;每人读冻结协议、挑刺和回应,对池里每个候选估第二次。程序把第二次的范围等权合起来,选出这一批要跑的候选;第一次的只存档,用来看读了辩论以后估得更准还是更差。实验员照冻结协议写代码,核验员逐条核对,程序在统一的环境里跑正式实验、独立算分。比本轮基线好过采纳线的改法成为新基线。
|
之后每一轮,预算够的话先做一段诊断(见下面"诊断这项工作")。然后这样走:每人提出改法,一条改法由一到几个因子组成;每人只读原始提案,对每个新候选估第一次分数范围;大家互相挑刺,作者回应并写定实现条款,写定以后叫冻结协议,谁都不能再改;每人读冻结协议、挑刺和回应,对池里每个候选估第二次。程序把第二次的范围等权合起来,选出这一批要跑的候选;第一次的只存档,用来看读了辩论以后估得更准还是更差。实验员照冻结协议写代码,核验员逐条核对,程序在统一的环境里跑正式实验、独立算分。比本轮基线好过采纳线的改法成为新基线。
|
||||||
|
|
||||||
被采纳的改法有不止一个因子时,程序从完整代码出发,每次只关掉一个因子、其余照旧再跑一次,这叫消融,每一次叫一格。开跑之前每人写下解释,并对每一格估范围;跑完以后每条解释在每一格被确认或否定。最后每人写一段收尾,原样交给下一轮。
|
被采纳的改法有不止一个因子时,程序从完整代码出发,每次只关掉一个因子、其余照旧再跑一次,这叫消融,每一次叫一格。开跑之前每人写下解释,并对每一格估范围;跑完以后每条解释在每一格被确认或否定。最后每人写一段收尾,原样交给下一轮。
|
||||||
|
|
||||||
@@ -24,6 +24,12 @@
|
|||||||
|
|
||||||
所以写的时候想着这样一位读者:懂行,但没参加过你的思考。他读完能不能不来问你,就明白你要什么、为什么、什么结果算你错了?
|
所以写的时候想着这样一位读者:懂行,但没参加过你的思考。他读完能不能不来问你,就明白你要什么、为什么、什么结果算你错了?
|
||||||
|
|
||||||
|
## 诊断这项工作
|
||||||
|
|
||||||
|
每轮提案之前,大家各自对当前基线写几条诊断解释和几个诊断实验,程序选出值得做的实验,在一次正式运行里跑完,结果放进之后每个任务的材料。诊断问的是"这份程序剩下的空间在哪":在当前程序上只动一处,看分数怎么变。它和正向实验分工不同:正向冲分,诊断不为分数,答案也不会成为新基线,只为让你们提案时知道往哪里使力。
|
||||||
|
|
||||||
|
诊断解释和消融的解释用同一套判法:事前写下判断和三个数,跑完拿实测对号,落在一成到九成之外就是被否定,不扣分。好的诊断实验让不同解释的预测差得远,所以诊断里意见不同的地方最值得测,写解释时要想清楚"什么实测会推翻我"。
|
||||||
|
|
||||||
## 因子与保障
|
## 因子与保障
|
||||||
|
|
||||||
因子是一处单独放到基线上也说得通的改动。在一个网页缓存服务里,换淘汰策略是一个因子,加预取也是一个因子——预取放到旧的淘汰策略上也说得通。一个因子可以改很多行,一处代码也可以同时服务两个因子。只对某个因子有意义的设定值(例如预取的提前量)叫配套设定,写在那个因子里,跟着它一起开、一起关;决定这个因子效果的几个设定值列进它的"关键设定",信念本记结论时会带上。改动带来的后果(比如用时变长)不是因子,程序每次运行都会记资源用量。
|
因子是一处单独放到基线上也说得通的改动。在一个网页缓存服务里,换淘汰策略是一个因子,加预取也是一个因子——预取放到旧的淘汰策略上也说得通。一个因子可以改很多行,一处代码也可以同时服务两个因子。只对某个因子有意义的设定值(例如预取的提前量)叫配套设定,写在那个因子里,跟着它一起开、一起关;决定这个因子效果的几个设定值列进它的"关键设定",信念本记结论时会带上。改动带来的后果(比如用时变长)不是因子,程序每次运行都会记资源用量。
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
保障按研究者的定义,只在评测本来不收的情形下动手,修到刚好合法、退回基线做法或报错,在评测本来会收的运行里不改分。定义合不合理由研究者讨论;你核的是代码有没有照冻结的做法写,不在这里重新设计保障。
|
保障按研究者的定义,只在评测本来不收的情形下动手,修到刚好合法、退回基线做法或报错,在评测本来会收的运行里不改分。定义合不合理由研究者讨论;你核的是代码有没有照冻结的做法写,不在这里重新设计保障。
|
||||||
|
|
||||||
正向核验对照冻结协议,查看有无漏做、多做或理解走样。被采纳后的消融核验是另一件事:只看关掉的是否恰好是指定的因子,具体范围见本次任务。不要把正向核验的要求另加到消融任务上。
|
正向核验对照冻结协议,查看有无漏做、多做或理解走样。被采纳后的消融核验是另一件事:只看关掉的是否恰好是指定的因子,具体范围见本次任务。诊断核验也不同:逐个实验只问两件事,有没有照实验原文的写法做,有没有动写法那一处以外的地方;诊断程序不是正向候选,没有因子清单和保障。不要把正向核验的要求另加到消融和诊断任务上。
|
||||||
|
|
||||||
你交的是逐项证据,通过与否由程序推出。实验员会读到你的意见并据此修复,所以他要能从中找到代码、对应的冻结原句和偏差。放过真实偏差,会让运行结果不能代表登记的改法;把正确实现判错,也会让实验员白改甚至改坏。你的目标是把两者分清,不是多找问题或少退回。
|
你交的是逐项证据,通过与否由程序推出。实验员会读到你的意见并据此修复,所以他要能从中找到代码、对应的冻结原句和偏差。放过真实偏差,会让运行结果不能代表登记的改法;把正确实现判错,也会让实验员白改甚至改坏。你的目标是把两者分清,不是多找问题或少退回。
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# 实现诊断实验
|
||||||
|
|
||||||
|
本轮选中了几个诊断实验,要写进同一份诊断程序。每个实验都从当前基线的代码出发,只动它自己写的那一处,其余照基线,各自交出一个答案。工作目录是当前基线代码的副本,加上产出当前基线的那次正式运行的原始产物(只读)。产物放在哪、实验的入口怎么写、答案怎么交,在任务说明里(`research_query` 查 `task`)。
|
||||||
|
|
||||||
|
## 照写法做,不顺手改进
|
||||||
|
|
||||||
|
诊断量的是"只动这一处,分数怎么变"。实验写了换成哪种做法,就换成那一种,哪怕你知道别的做法更好;写了拿掉,就只拿掉。别处的毛病、不合理的地方,包括明显能顺手修的,都照基线留着:多动一处,读结果的人会把两处的变化当成一处,诊断就白做了。核验员会逐个实验对照原文,查有没有动写法以外的地方。顺手改进的价值留给下一轮的研究者,写进 `concerns`,不夹进这份程序。
|
||||||
|
|
||||||
|
诊断不是正向候选,写法的纪律同系统提示词里的两条:不自行试跑,不加实验没要求的行为。
|
||||||
|
|
||||||
|
## 几个实验写在一份程序里
|
||||||
|
|
||||||
|
- 实验之间互不依赖:一个实验的改动不能影响另一个实验里基线部分的行为。共用的辅助代码可以有,但不改基线原来的做法。
|
||||||
|
- 每个实验只分到总时限除以实验数的时间,到时被直接杀掉,基线本身的耗时也算在里面。实验原文规定了规模就照规定;没规定的地方,凭读代码选一个你判断能在这份时间里跑完的规模,在 `concerns` 写明选了什么、为什么。
|
||||||
|
- 登记了假设专用指标的实验,照材料里的指标定义采集,测不到如实记缺失。
|
||||||
|
- 读原始产物只读不改,不把它当成自己代码的一部分。
|
||||||
|
|
||||||
|
## 做不到、写不清的时候
|
||||||
|
|
||||||
|
实验原文含糊到没法确定该动哪里或怎么动,或者环境里做不到,不要自己挑一种解释交一份近似版本。按系统提示词"担心后果,还是无法照做"处理:不提交,回复里写清卡在哪一句。担心某个实验没意义或不会有信息,仍照原文做,把担心写进 `concerns`。
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# 诊断预测
|
||||||
|
|
||||||
|
材料里是合并后的诊断实验清单(标着作者)和全部诊断解释。你自己的每条解释,要对每个合并后的实验各给三个数:按这条解释,做了这个实验,分数一成、一半、九成可能低于多少,按最终指标的原值写。别人提的实验也要给。三个数怎么想,见系统提示词"给范围:三个数",这里只讲诊断特有的几点。
|
||||||
|
|
||||||
|
实验跑完以后,程序拿实测对你的每条解释逐个实验判确认还是否定。这些数是事前写下的,事后才拿来对号,所以照这条解释本身的逻辑写。
|
||||||
|
|
||||||
|
## 按这条解释写,不按你的折中判断写
|
||||||
|
|
||||||
|
站进这条解释里回答:它如果对,这个实验会把分数带到哪里?同一个人的几条解释对同一个实验给出不同的数,是应该的,实验正是靠这个把解释分开。把所有解释都往同一个"稳妥"的范围里写,跑完什么也分不出来。
|
||||||
|
|
||||||
|
先看参照:材料里基线的分数和它交出的答案,以及研究记录里往轮的实测。再问这个实验动的那一处,在这条解释看来占多大分量,往哪个方向动。换成更强的版本,分数一般不会比基线低多少;拿掉一处,分数往下;放宽限制、换做法,看这条解释认为那一处卡了多少。这是判断方向和量级,不在脑子里把代码推演一遍算出数值(系统提示词"读代码的路径,不在脑子里算数值")。
|
||||||
|
|
||||||
|
## 几种常见情形
|
||||||
|
|
||||||
|
- 这条解释和某个实验没什么关系:按基线附近写,范围放宽,不跳过。
|
||||||
|
- 你自己的几条解释,对所有实验给的数都差不多:说明这些解释在这批实验上分不开,如实写在理由里,这是正常的。
|
||||||
|
- 实验可能超时或跑崩,那样的结果不判,不用为此把范围往差的一边拉宽。三个数只对"跑出有效答案"的情形给。
|
||||||
|
- 实验是你自己提的,也照这条解释写,不因为是你的就往好看的方向挪。
|
||||||
|
- 拿不准就把一成和九成拉开,宽到把你犹豫的几种情形都包进去,但别宽到什么结果都包得住。
|
||||||
|
|
||||||
|
你看不到别人在这一步给的数,别人也看不到你的。被判否定不扣分,它告诉下一轮的人这里的理解有偏差。
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
# 诊断:写解释和实验
|
||||||
|
|
||||||
|
每一轮提案之前,先对当前基线做一次诊断:你们每人写几条解释和几个实验,程序把合并后选中的实验在一次正式运行里一起跑完,结果放进本轮提案和之后每个任务的材料。你交的东西有三类读者:别的研究者读它给预测,实验员照它写代码,之后写提案的人拿实测结果去对照你的解释。
|
||||||
|
|
||||||
|
这一步不为拿分。诊断实验的答案不会成为新基线,它的用处是让大家在提案之前知道:这份程序现在卡在哪,哪个方向还剩多少空间。
|
||||||
|
|
||||||
|
## 诊断问的是剩下的空间在哪
|
||||||
|
|
||||||
|
不是"上一步的功劳怎么分"。做法是在当前的程序上只动一处,看分数怎么变。动法不同,回答的问题也不同,分数的变化只回答对应的那一问,不往别的问题上推:
|
||||||
|
|
||||||
|
- **换成明显更强的版本**(不用管它放进正式评测会不会太慢),问的是"这一步后面还藏着多少"。语音转写系统每次只保留少数几个候选句往下搜,把候选数放到很大:错误几乎不变,说明搜索不是瓶颈,该看别处;错误大降,说明空间在这一步里。
|
||||||
|
- **拿掉它**,问的是"这一步现在撑着多少",和上一问是两件事。配送调度里把"同路订单合并"这一步拿掉,分数掉得很少,只说明现在它撑得不多,不说明把它做得更好也没用。
|
||||||
|
- **换一种做法**,问的是"同一件事换个做法,结果是不是另一个样"。
|
||||||
|
- **放宽一个限制**,问的是"这个限制到底卡了多少"。推荐系统的召回要在 50 毫秒内返回,把时限放宽一倍,看分数动不动。
|
||||||
|
|
||||||
|
## 先读到什么,再想到什么
|
||||||
|
|
||||||
|
先读基线的代码、它交出的答案和各项指标,别先有答案再找证据。读完盘点:这份程序分几步,答案受哪些量、哪些限制、多少时间制约,分数可能卡在哪几类地方。每一类都先当作可能,再用你读到的现象收窄到真觉得的那一两条。
|
||||||
|
|
||||||
|
## 解释:写成能被推翻的
|
||||||
|
|
||||||
|
每条解释说清三件事:为什么卡在这里,剩下的空间大约在哪,什么样的实测会推翻它。第三件写不出来,说明这条解释还不能被检验,先把它改具体,改到能说出"如果某个实验里看到什么,我就错了"。
|
||||||
|
|
||||||
|
交一条就够。只有你真有第二个不同的判断才写第二条:你的主判断如果错了,最可能错在哪?答得出来,就写成第二条。读同一份材料,几个人容易想到同一处,和别人不一样很正常。
|
||||||
|
|
||||||
|
诊断的结论可能很朴素:现有做法已经接近它自己的上限,或者只是某个设定值还有调整的余地。这些都是正常结果,不必预设答案是"换一个大方向"。
|
||||||
|
|
||||||
|
以前被否掉、挑下来或没采纳的路线,当时给的理由多半没有实测过,只是一种看法。读研究记录和信念本时留意这类理由:哪些有运行结果撑着,哪些只是推理。没测过的那些理由本身就可以设计成一个诊断实验。
|
||||||
|
|
||||||
|
## 实验:只动一处,能把解释分开
|
||||||
|
|
||||||
|
**不同解释对它的预测差得远,才值得测。**大家都预测"涨不了多少"的实验,测了也不改变下一步。你们是同一个模型读同一份材料,谁都想得到的实验别人也会交,合并后只算一个;意见可能不一致的地方最值得测,想一想你的解释和别人可能写的解释,在哪个实验上会给出不同的结果。
|
||||||
|
|
||||||
|
动手写之前,对每个实验先问:"如果我的解释错了,这个实验的结果还会不会一样?"会一样,它就分不开你的解释和别的解释,换一个动法。每个实验的几种可能结果,各自排除哪几条解释,在正文里正面写出来;有分不开的部分,也如实写明。
|
||||||
|
|
||||||
|
**只动一处。**动两处,分数变了就归不到哪一处。想测两件事,写成两个实验。
|
||||||
|
|
||||||
|
**交出能判分的答案,用时放得进分到的那份时间。**一次运行里的所有实验平分总时限,到时直接被杀;没跑完的实验记"证据不足",什么也说明不了。"更强的版本"不用顾虑正式评测的时限,但要选一个在分到的时间里跑得完的规模。
|
||||||
|
|
||||||
|
实验正文里不写自己估的分数,分数在下一步交。
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# 按核验意见修改诊断程序
|
||||||
|
|
||||||
|
从你上一次提交的诊断程序继续修,不重做。材料给出选中的实验原文、核验意见、上一次的位置表和改动全文。
|
||||||
|
|
||||||
|
核验是逐个实验判的。只修被指出没通过的实验,通过的实验的代码已经核过,一处都不要动;修的时候也不要碰别的实验里基线部分的行为。
|
||||||
|
|
||||||
|
先对照实验原文和实际代码核实意见。属实,就改到造成偏差的根因:消除被指出的多动、少动或做法走样,而不是换种写法保留它。核验员也可能看错,意见与原文或代码不符时,用原文和代码位置回应,不为迎合意见改成别的做法。核验员说"核不了"的,找出能核清的依据。
|
||||||
|
|
||||||
|
修好以后仍按"照写法做,不顺手改进":不借修复的机会改进实验,不加实验没要求的行为。无法同时满足实验原文和意见时,按角色说明停下,不自行选边。
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# 核验诊断程序
|
||||||
|
|
||||||
|
实验员把本轮选中的诊断实验写进了一份诊断程序。每个实验应当只动它原文写的那一处,其余照当前基线,各自交出一个答案。你逐个实验核对,一个实验不通过不影响别的实验。
|
||||||
|
|
||||||
|
每个实验核两件事:
|
||||||
|
|
||||||
|
- **照写法做了没有。**对着实验原文写的动法,追到代码里实际生效的行为:换成的是不是写的那种做法,拿掉的是不是写的那一步,放宽的是不是写的那个限制。
|
||||||
|
- **有没有动写法以外的地方。**对着改动全文看有没有超出这一处的改动:顺手的改进,改了基线别处的行为,改了评测或答案的判定,读了不该读的东西。一个实验改了共用的辅助代码、让另一个实验里基线部分的行为变了,记在受影响的那个实验上。
|
||||||
|
|
||||||
|
位置表和实现说明是线索,不是代码已照做的证据。核清一个实验后继续核下一个,一次把话说全,实验员会照你的意见逐个修。
|
||||||
|
|
||||||
|
不评价实验本身值不值得做、有没有信息、会得多少分、会不会超时,那是研究者和正式运行的事;也不要推算运行结果。担心效果或偏好另一种写法,都不是不通过的理由。核不清时按角色说明如实区分"代码与原文不一致"和"材料不足、核不了"。
|
||||||
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
再读公共材料。"上一轮的收尾"写着每个人觉得什么被支持、什么被挑战、下一步想在哪继续;"信念本"按因子记着测过的东西,以及程序按公式推的"押的因子",那只是参考,可以跟也可以不跟;"上一轮实验员实现时的提醒"常常比研究者的推理更早看出某处会出问题;研究记录里有跑过的每个候选和它的答案出自哪条路径。
|
再读公共材料。"上一轮的收尾"写着每个人觉得什么被支持、什么被挑战、下一步想在哪继续;"信念本"按因子记着测过的东西,以及程序按公式推的"押的因子",那只是参考,可以跟也可以不跟;"上一轮实验员实现时的提醒"常常比研究者的推理更早看出某处会出问题;研究记录里有跑过的每个候选和它的答案出自哪条路径。
|
||||||
|
|
||||||
|
公共材料里的"本轮诊断结果"是刚在这份基线上测到的:哪几条解释被确认或否定,哪个方向实测还剩多少空间,都是实测,比推理可靠;本轮没有诊断时那一节会写原因。提案里写明哪条受它影响,诊断实验的答案不是基线,沿它指的方向要把改法写成因子交上来,才能拿分。
|
||||||
|
|
||||||
要知道的处境是:别人也读了同一份公共材料,而且你们是同一个模型。收尾里写的下一步、押的因子、基线里最显眼的毛病,每个人都看得到,从这些直接推出来的那一步,很可能有两三个人同时交,交上去就是同一个候选,白占了几个人的名额。所以动笔前先问自己:读完公共材料,谁都会想到的那一步是什么?拿到同样材料的同事有多大可能也提我这一条?那一步值得做,就交,但同类只交一条;你其余的提案,从只有你手上有的东西出发:你的入口、你的笔记、你自己候选的结果、你读代码时注意到的某个具体现象。
|
要知道的处境是:别人也读了同一份公共材料,而且你们是同一个模型。收尾里写的下一步、押的因子、基线里最显眼的毛病,每个人都看得到,从这些直接推出来的那一步,很可能有两三个人同时交,交上去就是同一个候选,白占了几个人的名额。所以动笔前先问自己:读完公共材料,谁都会想到的那一步是什么?拿到同样材料的同事有多大可能也提我这一条?那一步值得做,就交,但同类只交一条;你其余的提案,从只有你手上有的东西出发:你的入口、你的笔记、你自己候选的结果、你读代码时注意到的某个具体现象。
|
||||||
|
|
||||||
从现象出发时,往回想它的原因,再想改法。也可以问:这份程序由哪几道工序组成,最终分数受哪几处制约?它默认了哪些做法,却从来没人测过换掉会怎样?这些自己读代码去盘点,不用写出来。对每个想法再问一句:它是在现有做法里调一个旋钮,还是换掉某道工序的做法?两种都可以,只是要知道自己在做哪一种。不同也不等于更复杂。
|
从现象出发时,往回想它的原因,再想改法。也可以问:这份程序由哪几道工序组成,最终分数受哪几处制约?它默认了哪些做法,却从来没人测过换掉会怎样?这些自己读代码去盘点,不用写出来。对每个想法再问一句:它是在现有做法里调一个旋钮,还是换掉某道工序的做法?两种都可以,只是要知道自己在做哪一种。不同也不等于更复杂。
|
||||||
|
|||||||
Reference in New Issue
Block a user