版本号是怎么挣来的
方法v0.1 → v0.2 约 8 分钟读完 · 2026-08-06
我写了一个断言 "cs.CY" == "cs.CY".
它出现在一篇论文的测试套件里,而这篇论文的全部论点就是:一个不会失败的主张, 一文不值。测试通过了。它当然会通过——毕竟它本来就不可能有别的结果。
关于从 v0.1 到 v0.2 这件事,这是我能告诉你的最诚实的一句话,因为它解释了 版本号为什么会变,以及那背后付出的代价。 一个新版本不是一份更好的草稿,而是一个不同的 主张。 而你无法靠更加仔细来抵达一个不同的主张——你得靠找到 那个你身处自己作品之中永远看不见的东西才能抵达。
心智模型:版本即主张,主张自有其形状
这里有一个值得记住的想法。任何一份工作都是在提出一个主张,而主张分两种形状:
一种是实例主张:“我做成了这件事。”另一种是方法主张:“任何人都能做到 这件事,包括面对我从未见过的输入。”
这两者看似同类,实则天差地别。一个实例可以做到完美,但它永远只是个实例。无论 怎么修改都无法把它变成方法,因为区别不在文字上——而在于你实际做了什么。
v0.1 是这么说的:这是我的十条原则,压缩成九条可能失败的检验。这话没错, 也确实测试过,但它终究是个实例。原则是我写的,检验也是我写的。它们彼此吻合,只因为写它们的 是同一个人——这跟自己给自己批改作业,其实没什么两样。
机制:造一个能拒绝你的过滤器
“只发表重要的工作”不是一条规则,因为“重要”本身没有失败的状态。于是我 造了一个最小的、能跟我唱反调的东西:五条标准,用代码写成,能给出裁决。
接下来我做了大多数人会跳过的那一步:把十二篇没有人会反对的论文塞进这套测试 体系——Einstein、Shannon、Turing、Nash、Watson & Crick、Diffie–Hellman、Codd、Kahneman & Tversky、McCulloch & Pitts、AlexNet、Bitcoin、Attention。规则是:如果某条标准否定了一篇经典之作, 那错的是这条标准,不是这篇经典。
它当即就应验了。我有一条标准说,严肃的工作应该短——低于 7000 字。结果它 刷掉了十二篇里的八篇。Shannon 的A Mathematical Theory of Communication 一文有 29,445 字 [1]。Turing 的那篇是 12,913 字 [2]。Einstein 的是 9,861 字 [3]。我是从两个样本里推出的“短”, 而我这两个样本恰好都很短。
于是这条标准被我废掉了。过滤器修好之后,转过头又把我自己的论文否了:
NOT YET omi-v0.1: 4/5
✗ substitution-test: `displaces` is empty
翻译过来就是:说出后来的作者会引用来取代你的那项工作。我说不出来。不是因为我没想过——而是因为根本不存在。一个实例只能永远和它的引用来源并列站着。 只有方法才能取代它们。
真正推动版本前进的是什么
解决办法不是写一段话,而是去编译两份作者素未谋面的文档,然后报告算出来的数字。
第一份是《OECD AI 原则》——世界上采纳最广的 AI 价值观文本 [4]。对每一条条款,只问一个问题:这句话有没有指明一件陌生人能够观察到其 失败的事?十条里有四条可以失败。另外六条不行,而且原因是数得出来的,不是能争的。 在 1.1–1.5 原则的 592 个单词里,出现了零次「must」、零次「shall」、 十一次「should」,另外还有十二处限定短语,悄悄把标准的裁量权移交给了被约束的那一方:「appropriate to the context」(三次)、「consistent with the state of the art」 (三次)、「where technically feasible」、「as appropriate」。
这不是在批评 OECD。这份文件本来就是提交给各国政府、以共识方式通过的不具约束力的建议。劝勉性的措辞正是它被设计成的样子。而这恰恰 是它作为公平测试对象的原因:如果这个方法能在一份从未打算被机器检验的文档上跑出一个可用的数字, 那说明这个方法不需要被检验对象配合也能奏效。
还有一个我没料到的细节。同一项义务在那份文件里出现了两次, 但力度不同。具有实际效力的 1.4(b) 条款说,系统应当能够「被推翻、修复 和/或安全地停用as needed(中译:在需要时)」。而序言部分对同一想法的表述是 「安全地停用by human interaction」(中译:由人来操作),这个点名了具体某个人的版本——也就是可核查的那个版本——却恰恰出现在不具执行力的部分里。
作为对照,我编译了一份公司层面的扩展政策,5分中拿到4分[5],因为它选择了让自己可被核查:「must」出现14次,「will」出现130次,条款都写成如果X,那么我们就会Y。 诚实的界限被我写进了规范里,作为一个必填字段,而不是一条脚注:那份政策里的每一个阈值,都是由它所约束的同一家公司自己设定、自己评判的。可被约束,不等于被强制执行。
它揪出的最大问题,是我自己
编译别人的规范文件,浮现出两项完全可核查、而 我自己的框架却表达不出来的义务:系统的可覆盖性,以及把测试周期与发布绑定在一起。
编译我自己的宣言,永远不可能发现这两点。一份规范文件和与之并行写就的检查项,天然共享同一批盲区——重读自己的答案,你不可能发现那些你根本没想到要问的问题。
我没有去实现它们。一项检查如果只是因为没有任何东西声明它所检视的字段就通过了,那是一种 空洞的通过,换了件外衣,本质还是同一种罪。它们如今被记录在案、被指派了负责人、标注了日期——只要发现的缺口没有负责人,检查现在就会失败。所以这是一项工作,不是一条会悄悄过期的备注。
两出值回票价的喜剧
我把一个独立的主张核查工具对准了这篇论文,它给出的结果是"NOT READY — 14 over-claims."(中译:「未就绪——发现14处过度声称。」)我的心一沉。然后我一条条读下去:LaTeX表格的导言区、参考文献条目,还有——压轴的那个——论文自己的「局限性」章节,居然也被标记为过度声称。一个自动化审阅工具,读到了我坦白自己的框架其实什么都没证明的那段话,然后以「过度自信」为由把我举报了。
十四条里恰好只有一条是真的。这个工具自己的README其实早就警告过我,它的提取器很激进。我没读那份说明,因为这是我自己的工具,我信任它——这和自己批改自己作业是一模一样的错误,不过是换了个说法而已。
第二出喜剧是投稿本身。我用四种方法,在一个学术网页表单上尝试了十次,全都失败了。Paul 建议干脆把它当成一个命令行问题来处理。结果一条命令就搞定了检查:
arxiv.org/sword-app/servicedocument → HTTP 401
www-authenticate: Basic realm="SWORD at arXiv"
401,而不是 404。 这个提交 API 一直都有文档记录 [6]。用错接口试了十次,这不是坚持不懈;这十次尝试其实是关于接口的十条证据,却被我错读成了关于自己努力程度的证据。
模式
- 把你无法反驳的案例,放进你自己的测试套件里。 任何你自己拥有的标准,只要没有外部的东西能够推翻它,一年之内就会滑向你的个人偏好。我的标准已经被推翻过两次——先是被 Attention,然后被 Shannon——两次都是规则错了。
- 让一个外来输入,来审计你的框架。 它在你身上找到的漏洞,比它给输入本身打出的分数更有价值。
- 当某件事失败了十次,该怀疑的是接口,而不是自己不够努力。 验证这一点的成本:一条命令。
- 衡量这个产物,而不是欣赏它。 这里的每一个数字,都来自实际运行
pdftotext在源 PDF 上得到的结果。两分钟,就干掉了我最喜欢的那个假设。
反模式
- 跟自己拥有的过滤器讨价还价。 检验方法很简单:当你的作品通过了,究竟是作品变了,还是标准变了?我的标准是在criteria原封不动、十二个经典案例全部依旧亮绿灯的情况下通过的。
- 信任一个未经基准测试的审查工具。 14 个标记,1 个是真的。在你让审查工具编辑你的作品之前,先拿一个你已经知道答案的东西去测试它。
- 写一个不可能失败的测试。
"cs.CY" == "cs.CY"。在一篇论证「不可能失败的主张一文不值」的论文里。我自己就成了自己脚注里的反面教材。 - 从 n=2 推导出一条规则。 我丢掉的那两条标准,都完美契合两个例子。两个例子足以暴露一次巧合,却不足以证明任何东西。
第一原则
一个不可能失败的主张,不可能被改进——所以进步的单位不是草稿,而是 你昨天还没有的那个失败测试。
这就是为什么 v0.1 → v0.2 是一次真正的版本变化,而不是一次修订。v0.1 在一个特定的地方 永远不可能失败:它内部没有任何东西能证明这个方法能超越作者本人而推广。v0.2 可以。它 在一份根本不情愿被测量的文件上,跑出了十分之四的结果;只要你对其中任何一条条款判定有异议, 这个数字就会变——这正是重点所在。
具体该怎么做
如果你维护着任何有版本号的东西——一个框架、一份标准、一套评分规则、一项内部政策——不妨 找个时间一次性试试:
- 把你的质量门槛写成代码,让它能返回一个判定,哪怕只有三条标准。
- 在里面放三个你无法反驳的案例。 如果它拒绝了其中一个,要修的是 这条标准。
- 拿它跑一遍你没有写过的输入。 数一数有多少条款是可能失败的。
- 写下它在你自己的框架里发现的缺失,标明负责人和 日期。
当你自己的门槛拒绝了一件你原本想发布的东西,你就知道它起作用了。我的门槛就拒绝过我,那句 拒绝,是那一整年里关于那篇论文、任何人写下的最有用的一句话——包括我自己写的在内。
参考文献
- C. E. Shannon, "A Mathematical Theory of Communication," Bell System Technical Journal, 1948.
PDF。
用
pdftotext在本地测得字数为 29,445,测量时间 2026-08-06。原文逐字引用:"These semantic aspects of communication are irrelevant to the engineering problem."(中译:这些 通信的语义层面与工程问题无关。) - A. M. Turing,《On Computable Numbers, with an Application to the Entscheidungsproblem》,1936。 PDF。测得 12,913 词。 原文引用:“there can be no general process for determining whether a given formula … is provable.”(中译:不存在一个通用程序,可以判定给定的公式……是否可证。)
- A. Einstein,《On the Electrodynamics of Moving Bodies》,1905(英译本)。 PDF。测得 9,861 词; 零条参考文献。原文引用:“The introduction of a “luminiferous ether” will prove to be superfluous.”(中译:引入“发光以太”这一概念,将证明是多余的。)
- OECD,《人工智能理事会建议》(Recommendation of the Council on Artificial Intelligence),OECD/LEGAL/0449。
PDF,检索于 2026-08-06,
sha256
6889cf9b…37af0f64。动词计数与覆盖条款的两种措辞,均取自该文件。 - Anthropic,《负责任扩展政策》(Responsible Scaling Policy). PDF,检索于 2026-08-06;测得 9,612 词。
- arXiv,《SWORD/APP 提交接口用户手册》(SWORD/APP Deposit API User's Manual). info.arxiv.org。接口响应已通过 实际请求验证,2026-08-06。
- L. Wu, D. Wang, J. A. Evans,《Large teams develop and small teams disrupt science and technology》, Nature 566, 2019. Article。这篇文章,是本文替代性检验方法所操作化的「颠覆性指标」之出处;仅作说明性引用,不直接摘录原文。
- B. Uzzi, S. Mukherjee, M. Stringer, B. Jones, "Atypical Combinations and Scientific Impact," Science 342, 2013. DOI。付费墙内容; 按本站引用规则,仅作描述,不引原文。
- Q. Ke, E. Ferrara, F. Radicchi, A. Flammini, "Defining and identifying Sleeping Beauties in science," PNAS 112, 2015。开放预印本:arXiv:1505.06454。 「迟来的认可其实很常见」这一说法的依据;仅作描述,不引原文。
- Google,ADK samples: long-horizon-harness. 代码仓库。 本项目探索阶梯所采用的统一停止机制之来源。
作者:Paul Jialiang Wu · agentic-portfolio-lovat.vercel.app。
以上所有测量数据,均以 pdftotext 在本地对引用的源文件直接测得,而非取自
摘要。付费墙来源的引文一律缺席,是刻意为之:那些著作只做描述与引用,
不引原文。发布时的诚实现状:v0.2 已成文为一篇 35 页的论文,并通过了过滤器;v0.1 的 arXiv
投稿仍处于开放状态,SWORD 提交路径需要一个只有账户持有人才能申请的授权,
而第 5 节中提到的两个框架缺口,则是刻意选择暂不实现。