旧稿:
读下面这段 agent 执行记录,判断任务是否完成,只输出「完成」或「未完成」。
二十七个字,用过大半年,一直觉得它干净。干净是真的。毛病也在这句干净上:几十步的执行,被压成一个二值。
【是否完成】是验收的人想看的答案,不是执行的模型给得出的答案。这两个问题长得很像,其实不是一回事。
月初 arXiv 上挂了一篇机器人评测,RoboColosseum,二十六个作者,一百二十四个真实站点,五千多次两两配对,四种本体。我不做机器人,翻到一组数的时候停住了:G1 人形那五项任务,没有任何一个策略成功完成。同一批试验,改看推进到哪一步,各策略的平均进展落在 13.3% 到 23.2% 之间。
十个百分点的差,在【成功】这一列里全是零。
模型不是没区别,是我的问法把区别吃了。
改。V1:
读下面这段执行记录,回答:
1) 任务是否完成
2) 未完成的话,推进到了百分之几
跑了一晚上,同一条轨迹,两次给出 15% 和 40%。两次都对——没人告诉它百分之百长什么样。
这是我常犯的毛病:删掉一个含糊的词,换上一个更含糊的。【百分之几】这四个字没有锚点,模型只能自己拍一个分母。
V2:
读下面这段执行记录,按顺序回答:
1) 是否完成
2) 未完成的话,按步骤计:列出你实际完成的步骤,再估一下剩余还需要几步,报「已完成 / 总计」
3) 卡住的那一步属于哪一类:缺信息 / 工具报错 / 方向选错
第三问加得最值。前两问告诉我差多少,第三问告诉我差在哪:「方向选错」和「工具报错」的补救方向是完全相反的,一个要改指令,一个要改工具描述。旧稿里这两种情况共用一个词,未完成。
字数从二十七到一百出头,翻了四倍。我不为这个道歉。短从来不是目的,贴合才是,这话我说过很多遍,这次是它救了我。
岔一句嘴。中文里「半途而废」,把半途当成一个能站人的位置——古人早知道事情有中段,只有我们写指令的时候喜欢把中段一刀切掉。
扯回来。这版上周就存成 v_final 了,这周回头看又扎眼:太长,模型时不时只答 1 和 3,跳过步骤那条。步骤计数这件事它不爱干,嫌啰嗦。我把 2 拎出来单独做了一次 prefill,先替它起头「已完成步骤:」,让它顺着往下写,才稳住。
这不是措辞的事,是位置的事:同一个要求,摆在输出格式第一行,和塞在编号列表第二条,执行率不是一个量级。位置也是字重的一部分,只是它不写在字面上。
取样的事顺带说一句。论文里他们用主动匹配的办法挑配对,用明显少于均匀采样的真实试验量,拿到了差不多的排名一致性。我审自己 prompt 的方式几周前刚改成这样。以前是随机抽三十条 case 跑一遍,通过率还看得过去就收工。后来发现随机抽出来的大半是废话——模型怎么写都对的那些,跑一百条也是白跑。值钱的是那几条两种读法都说得通的输入,站在边界上的。现在我一次只跑八到十条,全挑边界的,改一个字就能看出动没动。样本少了,信号反倒清楚。
这篇里还有个数字我记下了:不同本体之间,策略排名的一致性系数只有 0.24,微调前后名次还会翻。翻译成人话就是,在 A 上排第一的写法,到 B 上未必。这条本来想单独写一篇,先按下。
定稿:
读下面这段执行记录,按顺序回答:
1) 已完成步骤:(逐条列,写到卡住的那一步为止)
2) 剩余步骤数:
3) 卡住的原因:缺信息 / 工具报错 / 方向选错
任务到底完成没完成,让它自己从 2) 是不是零里读出来,不再单独问一遍。少问一句,少一个自相矛盾的机会。
这版用了十来天,还行。但【步骤】这个词我自己心里没底——模型数的步骤跟我数的经常不是一回事,它爱把一次工具调用拆成三步。13.3% 跟 23.2% 那个差,说到底也取决于分母怎么定,论文里具体怎么划的,我没细看。所以这版我不敢叫终版,先这么用着。