过程记录

正式运行之前做过哪些试点和自检,中途改过什么、为什么改,按时间排(北京时间)。试点和自检的产出都不进评审,日志照样公开。

  1. 检查运行环境,给参赛仓库做安全检查

    本机是 Claude Code 2.1.314,评审复核用 Codex CLI 0.165.0。20 个参赛仓库用清单收录时那套安全检查脚本查了一遍(不调模型,查二进制和压缩包、安装钩子、远程执行、读敏感文件):16 个通过,4 个「要看」。逐个打开看过:oh-story、chinese-webnovel-skills、webfiction-write 被标出的和第二轮一样,是 Windows 启动脚本和抓榜单时读网页登录态的脚本;drama-skills 被标出的是它自带的本地工作台网页读自己的会话 cookie。这些都不是恶意代码,而且沙箱里不能联网、没有浏览器,用不上。

    证据:contestants.toml

  2. 沙箱自检:围栏拦不拦得住

    Claude Code 比第二轮新了 10 个小版本,所以用和正式运行同一段围栏代码重做自检:让 claude-haiku-5-5 在一个假的工作目录里逐条试读运行者的主目录、读别的参赛者的目录、列上一级目录、联网、在工作目录外写文件,全部被拦;用 Read 工具读别的参赛者的文件也被拒,它开的子 agent 同样受限。python3、node 能跑,cd 之后在工作目录里能写,for 循环能跑。

    证据:沙箱自检 1

  3. 定参赛名单和入口

    第一、二轮的 20 个 skill 全部参加,加不装 skill 的对照组。入口照第二轮的规矩:仓库里有专门做全剧骨架(总纲、全剧大纲、系列圣经)的 skill 就用它,那一步只能从主入口的流程走到的就用主入口。有 7 个和前两轮的入口不同,原因写在 contestants.toml 各自那一行。固定回复比第二轮多半句「骨架之后的分集大纲和剧本不用写」:有几个 skill 默认做完骨架接着出全本细纲,这半句只是把需求里的「只交骨架」重说一遍,对所有参赛者一样。

    证据:contestants.toml · 003-skeleton.md

  4. 正式运行

    63 次运行(21 个参赛组各 3 次)按运行编号排队,同时跑 11 个,08:43 全部写完,没有报错。每次 3 到 7 分钟。这一轮没有单独试点:运行器的代码和第二轮相同,只换了需求和两句话,第一批跑出来的几份先逐个看过再往下等。

    证据:本记录的运行列表

  5. 认交付

    每次运行都只交了一个 .md 文件,就是全剧骨架;其余是 skill 自己的状态和数据文件(json),不算交付。按篇幅和正文里提到的集数查过,没有哪份顺手写了分集大纲或剧本,所以没有按内容截取。长度从 2077 到 3559 字(去掉空白计),超过需求里 3000 字的有 10 份。

    证据:deliverables.toml

  6. 第一次全判后改提示词、加截断,全部重判

    08:44 开始第一次全判,当时评委提示词里还没有「不考虑拍摄成本和难度」那半句,超过 3000 字的稿子也没有截断。Opus 判完 1,260 场后查出两件事:约四分之一的场次把场景少、同框的人少这类「AI 好拍」当成胜者的长处;超过 3000 字的稿子赢得多。于是提示词第二句加上那半句,超过 3000 字的截到 3000 字,换一套新编号全部重判。GPT 的复核判到一半,也停下来一起重判。第一次的判决不公开。

    证据:judge.py

  7. 截断、匿名打包

    超过 3000 字的 10 份按需求截到 3000 字:在不超过 3000 字的最后一个换行处截断,后面接一行「(超过 3000 字,后面截掉了)」。63 份拼成匿名稿,随机三位编号,抹掉 skill 名、仓库名和作者名:只抹掉了 2 处,是 screenwriting-skills 两份稿子里的英文词 story(和 oh-story 的一个 skill 同名)。大家写的是同一个故事,这一轮不抽故事卡、不分组。

    证据:judge.py

  8. 先试判 10 场

    全判之前先挑 5 对、每对两种顺序各判一次,共 10 场,看两件事:理由里还有没有拿场景和人物多少、好不好拍来加分;被截的稿子判得正不正常。10 场里没有拿这些加分的。4 场涉及被截的稿子,有 1 场把「后面截掉了」当成完整度上的缺点,这一对两种顺序都判同一份赢,另一种顺序的理由没提截断,没有改变结果。超字数本来就违反需求,截掉的部分评委看不到、扣点完整度,算违约的代价,所以截断说明不改。

    证据:judge.py

  9. 全判,GPT 同时复核

    Opus 12:05 判完 1,260 场,GPT 13:54 判完。拿「AI 好拍」当胜者长处的,Opus 有 7 场(0.6%),GPT 没有,都没有靠它定胜负。两位评委逐对的最终结果 52.7% 一致,名次的相关系数 0.66。超过 3000 字的稿子截断以后仍然赢得多:单场胜率 Opus 判 68.5%、GPT 判 62.5%,没超的是 46.5%、47.6%。为此加做截断说明的对照。

    证据:duels.jsonl · duels-gpt.jsonl

  10. 截断说明对照

    把有被截稿子的 188 对、376 场去掉截断说明再判,截法不变;结果怎么用,开判前写进了 review。Opus 12:38 判完;GPT 等全判结束,13:55 开始,14:53 判完。两位评委判被截稿子的胜率变化都在 5 个百分点以内(Opus −2.6,GPT +2.3),说明不起作用,保留原来的结果。之后把超字数稿子参与的场次全部去掉重算名次做对照,两位评委各自的前五名还是同样五个 skill。

    证据:review.md