下面每条定义都是为了单独引用时依然成立而写的,因为定义正是这样流传的。限定条件写在句子之内,而不是放在后面的段落里。凡我们所指比市场所指更窄之处,写下的就是那个更窄的含义。方法类术语链接到详细阐述它的文章。标有“(英文)”的链接指向目前只有英文版的页面。
索引
按汉语拼音排序;以拉丁字母开头的术语按其首字母归类。
A:AI 代码保障 · AI 代码尽职调查 · AI 代码审查 · AI 辅助带来的技术债务 · 安全代码审查
C:裁定 · 测试 · 撤回记录 · 传承 · CPR 报告 · CRA 测试报告
J:基准测试分数 · 见证者与证词 · 校勘 · 仅看似成立 · 拒绝事项
L:类型化决策模型
Y:严重程度与证据强度 · 阳性对照与阴性对照 · 以共识为判定器 · 已记录的阴性结果 · 源码追踪
Z:证据梯级
对抗性代码审查(Adversarial code review)
带着攻击者的问题(怎样才能让这段代码做它不该做的事)去审查源代码,有别于为正确性或可维护性而进行的审查。一些工具现在用这个词指这样一种安排:由一个模型审查另一个模型的输出;我们取的是它更早、更宽的含义,我们在此之上补充的内容见下文“判定器”“裁定”和“独立性”各条。详细阐述见《对抗性代码审查:这个术语遗漏了什么》。
AI 代码保障(AI code assurance)
一个描述性的总称,涵盖旨在确立 AI 辅助编写的代码实际做了什么的各种实践;它不是标准、认证,也不是产品名称。这是一个总称,本页用它来涵盖这一类别,而不是指称某项标准。
AI 代码审查(AI code review)
由语言模型对一个差异(diff)或代码库进行的自动化审查,产出候选发现项,通常附有严重程度。这类工具是有用的检测手段,我们也在使用;它们产出的是一次审查的输入,而不是一份经过裁定的审查记录。见《发现项不是裁决》(英文)。《对抗性代码审查:这个术语遗漏了什么》阐述了这类工具能提供什么、不能提供什么。
AI 代码尽职调查(AI code due diligence)
由构建团队之外的一方对 AI 辅助编写的代码库进行的评估,在收购、投资或重大集成之前委托开展。与常规的技术审查相比,它增加的问题是:构建团队之外,是否有人在一个指明的版本上确立了代码做了什么,并把证据写了下来。
安全代码审查(Secure code review)
在指明的版本上阅读源代码以查找安全缺陷,有别于测试一个正在运行的系统。渗透测试针对的是已部署的实例;两者回答的是不同的问题,一个严肃的安全计划会两者并用。
发现项(Finding)
一位审查者关于某个缺陷存在的报告:一项有待对照代码加以确立的主张,而不是一个可以拿来计数的结论。除了你的代码库中确实存在的情况,它还带着审查者的习惯和所用的提示词。见《发现项不是裁决》(英文)。
候选发现项与已确认发现项(Candidate finding vs confirmed finding)
候选发现项是审查者提出的内容;已确认发现项是对照你的源代码、以确切的文件和行号、一条复现路径和一项影响分级加以确立的发现项;其余一律定级为“仅看似成立”。每个候选发现项都会得到一个处置结果:已确认、定级为“仅看似成立”或被舍弃;无论结果如何,处置都会被记录下来。见《发现项不是裁决》(英文)。
证据梯级(Evidence rung)
记录一项已确认发现项实际取得了何种证据的标签;它从不暗示更高的梯级,描述的是该发现项的主张,而不是整个代码库。共有四个梯级,从弱到强依次为:源码追踪、编译证明、测试、实际复现,各自的定义见下文;对于任何概率性的主张,还有第五个梯级:一个附有区间的比率,来自足够多次的试验,并保留每次试验的日志,因为一个测得的数字如果没有留存的原始记录,就是一个可撤回的数字。一个发现项如果一个梯级也没有达到,就不会被授予梯级,而是定级为仅看似成立,这是另一种处置结果。见《什么能判定一项发现》(英文)。
仅看似成立(Plausible-only)
未达到任何证据梯级的发现项所得的定级:这并非声称该问题无法回答,只是表明在本次委托中没有任何检查判定了它;这一定级会公开标出,而不是被埋没。有些“仅看似成立”的发现项可以通过本次委托中未开展的工作来判定;另一些则取决于判断。报告会说明属于哪一种。见《什么能判定一项发现》(英文)。
源码追踪(Source trace)
记录发现项所描述的代码路径已在锁定版本上被阅读、并引用了文件和行号的梯级;它确立的是源代码写了什么,而不是该行为在你的构建中可达。
编译证明(Compile-proof)
记录已按发现项的预测使构建先失败、再通过的梯级;它确立的是它所检验的编译期主张,对运行时行为则什么也没有确立。
测试(Test)
记录这样一项测试的梯级:该测试能把缺陷存在与不存在区分开来,在植入缺陷后运行并观察到失败,在移除缺陷后运行并观察到通过。一项只通过过、从未失败过的测试,尚未被证明具有区分能力,达不到这一梯级。
实际复现(Live reproduction)
记录缺陷已在明确说明的条件下、针对锁定版本被复现的梯级。它确立的是这些条件下的行为;换一种配置,就是另一项主张。
判定器(Oracle)
一种能在明确说明的条件下判定某项具体主张的检查:一项已被证明能够给出相反答案的测试、编译或复现,或者为弄清一份规范性文本说了什么而对该文本的阅读。只要存在这样的检查并且已经运行,它在该主张上的分量就高于任何审查者的意见,包括我们自己的。仅仅执行是不够的:一项不可能失败的测试什么也判定不了。见《什么能判定一项发现》(英文)。
可判定问题与判断问题(Decidable question vs judgement question)
可判定问题存在一种能在明确说明的条件下判定它的检查;判断问题则没有。“在给定这些输入时,这条路径是否会执行”是可判定的。“这有多严重,攻击者会不会费这个劲,这个信任假设能否接受”属于判断,再多的模型输出也无法把判断变成事实。见《什么能判定一项发现》(英文)。
独立性(Independence)
三种不同的属性,我们只主张其中一种:独立于代码的作者。我们不主张审查者的错误之间存在经过测量的统计独立性,也不主张在商业上独立于你所在的市场:我们的集团在支付和数字资产托管领域进行开发,这一点会在任何委托开始之前以书面形式披露。我们主张第一种:我们不评估由我们或我们集团内任何公司编写的代码。另外两种之中,审查者之间的错误相关性通过程序性措施加以约束,尚未针对代码审查进行测量;我们的商业立场即定义中所披露的那样。第二个模型在这里能提供什么、不能提供什么,是《对抗性代码审查:这个术语遗漏了什么》的主题。
拒绝事项(Refusal)
我们不会代表客户作出的一项主张,事先公布,以便人们据此对我们进行追究。我们公布的五项见《我们不会主张的内容》。
谱系(Lineage)
一个模型家族:同一开发者的一系列模型,被视为单一的见证者。它会被反复抽样,每个回答都是从中抽取的一次样本。来自不同谱系的审查者并不因此就相互独立;见相关性错误。
席位(Seat)
审查小组中的一个审查位置:一个 AI 模型,来自一个谱系,以其自己的任务说明和工具运行。没有返回任何可用内容的席位记为缺席,绝不记为同意;被发现与另一个席位共享上下文的席位不予计数。
范围(Scope)
委托约定审查的内容,在报告中与未审查的内容一并列明。一项评估中没有某个发现项,只有在范围表明该区域已被审查时,才具有信息价值。
阳性对照与阴性对照(Positive and negative control)
阳性对照检查一种检测手段能否检测出它要寻找的东西;阴性对照检查当该东西不存在时它不会报警。一种从未被证明能报告命中的检测手段,它报告的“未命中”也不能作为依据。见《什么能判定一项发现》(英文),我们自己的一种检测手段在那里没有通过这项检验。
已记录的阴性结果(Recorded negative)
在说明的范围内运行、未检测到其所寻找的缺陷的一项检查,连同其条件写入报告;它弱于“代码是健全的”这一陈述。它告诉读者找的是什么、是怎么找的,让不在场的人也能判断覆盖面。见《攻击者可以运行任何模型》(英文)。
严重程度与证据强度(Severity vs evidence strength)
严重程度是对影响的判断;证据强度是对检查了什么的记录;一个发现项所带的严重程度,绝不超出其证据所能支持的范围。这里的报告把两者分开陈述,因为单一的混合评级会掩盖究竟是哪一半在起作用。严重程度是没有源码依据的那个字段,也是会被夸大的那个:见《发现项不是裁决》(英文)。
修复验证(Fix verification)
在关闭某个发现项的版本上,针对该发现项重新检查所打的补丁,并单独记录为一项结果;除非委托另有约定,由提出该发现项的同一审查团队进行。一个已关闭的发现项会写明关闭它的版本,以便后来的读者能分辨哪些经过了验证、哪些只是被断言。
裁定(Adjudication)
为每个候选发现项决定处置结果(已确认、仅看似成立或舍弃):有检查可用时交由检查,没有检查可用时交由一位具名的人员,而不是交由票数。它同样适用于全体一致的发现项和仅由一位审查者提出的发现项,因为彼此具有相关性的审查者之间的一致并不构成确认。
撤回记录(Withdrawal log)
我们在同一委托编号下撤回的发现项的书面记录,附有理由,并主动发给每一位收到原件的人。见《我们撤回了自己的数字》(英文)。
锁定版本(Pinned revision)
一次审查所针对的确切提交,在报告中写明。一个不写明其版本的发现项,无法对照它所描述的代码加以核查,无论它有何其他长处。
CPR 报告(CPR report)
以持久标识符 CPR-YYYY-NNN 发布的 CounterProof 评估,载有发现项、证据梯级、已记录的阴性结果以及任何撤回,并按委托所设定的保存条款保存。你的维护者、你的收购方或你的修复提交所引用的,正是这个标识符。
相关性错误(Correlated errors)
不同模型倾向于犯同样的错误,而不是相互独立的错误;这一现象在某些领域已有测量,在漏洞审查领域尚未得到确立。一项涵盖 350 多个模型的研究发现,当两个模型都答错时,它们给出同一个错误答案的频率远高于随机水平(Kim 等,ICML 2025,arXiv:2506.07962),研究对象是多项选择基准测试和一项简历筛选任务。认为这应当改变你看待两位审查者在你的代码上达成一致的方式,是我们的推论,而不是该研究的发现。见《攻击者可以运行任何模型》(英文)。
见证者与证词(Witness and testimony)
把模型的输出当作证词,加以权衡并注明出处,而不是因其表述方式而信任它;因为流畅并不能确立真实,错误的答案与正确的答案以同样的口吻出现。见《分数的错觉》(英文)。
本真性(Authenticity)
一项读法或发现项的这样一种属性:见证者是通过自己对证据的接触得出它的,而不是抄袭另一个见证者、复述交给它的任务说明或附和既有的共识;它说明的是一项读法从何而来,而不是它是否真实,而且很少能被完整地证明:一个可能的来源所具有、而该见证者没有的错误,有时可以排除从该来源抄袭的可能;一项读法表述得多么自信,对其来源则说明不了任何问题。这里的本真性属于一项读法,而不属于一个模型:模型没有可以忠于的自我,但人们可以追问,一个回答是来自证据,还是来自它看到的另一个回答、它的任务说明的措辞,或训练中固定下来的模式。只有在本真的读法之间,一致才算作佐证;一项照抄而来的读法无论多么准确,都不增加任何东西。正因如此,校勘者对抄自现存抄本的抄本不予采用;也正因如此,我们在任何人进行比较之前记录每位审查者的回答,并且不计入被发现与另一位审查者共享上下文的审查者。本真判断的反面不是错误的判断,而是承袭来的判断:之所以持有它,是因为它被继承了下来,而不是因为它经过了检验。随笔《挣得,而非继承》(英文)对此有详细阐述。见独立性、见证者与证词和对位。
校勘(Collation)
将多个见证者相互比对,以弄清哪些内容可靠;这是一个抽样和交叉核对的过程,无法找回任何审查者都没有提出的缺陷。见《发现项不是裁决》(英文)。
传承(Transmission)
信息通过复制从一个来源传到下一个来源:在抄本中,是从母本传到它的抄本;在 AI 模型之间,是一个模型的输出进入另一个模型的训练数据或工作上下文。抄本传统和 AI 模型群体都可以作为信息传承系统来研究。错误和习惯会随被复制的内容一起传递。正因如此,一个共同的错误可以揭示一个共同的来源,前提是它不太可能是各自独立产生的;也正因如此,AI 审查者之间的一致可能只是在重复同一个源头,而不是对一个发现项的两次确认。研究论文列出了模型输出到达后来模型的四种途径:直接蒸馏、未加标注地混入所采集的文本、有意生产合成数据,以及受模型影响的人类写作;第 10 节又补充了工作上下文,作为尚未纳入该分类的另一个候选途径。传承是一个关乎承袭关系的问题;对位则不是,因为对位的各个声部在同一部作品中同时鸣响,它们共享一位作曲者和一个构思,而不是彼此承袭。见谱系、校勘以及研究论文(英文)第 6 节和第 10 节。
Siglum(抄本代号)
校勘者给一个文本的每份现存或经重构的抄本所取的简短标签,例如一个字母,以便引用和比较其读法;在 CounterProof,它也是一个研究项目的名称:该项目仍在开发之中,其实际价值尚待证明,正在建设一个证据库和评估工具,用于研究 AI 审查者在什么情况下会漏掉同样的问题。对每个受测的 AI 模型,该库将记录关于模型之间关系的已知信息、每次测试所用的确切设置以及给出的每一个回答。如果测试表明 Siglum 有效,CounterProof 打算基于它提供付费评估,因此我们对这些测试的结果有商业利益。见《Siglum》。
对位(Counterpoint)
几条旋律线同时鸣响,每条都保持自己的特性;在 CounterProof,用作审查小组的意象:关键在于每位审查者是否贡献了属于自己的东西,而这一点是意象本身无法显示的。在严格对位中,禁止平行五度和平行八度的规则,阻止两个声部以这些音程平行进行,因为在这些音程上,两个声部听起来可能融为一体。我们的随笔把这条规则与文献学家关于共同错误的规则放在一起,读作一条关于何时可以信任 AI 审查者之间一致的规则,并说明了这一类比止于何处:声部可以各不相同,却仍然共享一位作曲者和一个构思。见《音乐中的对位,方法中的 CounterProof》(英文)。
基准测试分数(Benchmark score)
在该基准测试上、按该基准测试的条件所测得的表现;能否迁移到你的代码库,是这个分数无法回答的另一个问题。数据污染、具有相关性的评判者和 best-of-N 提交,都可能就一个你并没有问的问题给出正确的算术。见《分数的错觉》(英文)和《干净的基准测试不等于干净的代码库》(英文)。
以共识为判定器(Consensus-as-oracle)
一种基准测试设计,其参考标签是其他模型回答的平均值,而不是一个独立的结果;于是,参考模型共同犯下的错误被当作真实来计分。对两位评判者取平均,可以减弱它们各自单独犯下的错误,却对它们共同犯下的错误毫无作用;相关性错误方面的文献发现,能力越强的模型,彼此共享错误的倾向越强。我们研究过的第一个公开披露的实例,是 TypeSafe AI 为其模型 Jev 发布的工作流评估,其参考是 GPT-6 Astra 与 Claude Fable 5.1 的平均值;在该供应商公布的 20 个案例中,有 19 个同时给出了两个参考模型的回答,其中 8 个案例里两者对最终操作意见不一。见《TypeSafe Jev,以共识评分》(英文)和《田野笔记 1》(英文)。
类型化决策模型(Typed-decision model)
一种只返回选择、分数或针对提问者所提供选项的是/否概率,而从不返回文本的模型;它无法说出提问者遗漏的选项。供应商的术语是“System One 模型”。它可以通过把概率分散到各个选项上,来表明没有一个给定选项合适,但问题集所遗漏的东西,对每一个回答它的此类见证者来说都始终处于遗漏状态。据其供应商的描述,2026 年 9 月发布的 TypeSafe AI 的 Jev 是这类模型中第一个公开的模型。这并非对该设计的批评,该设计适合路由和分诊;这是在说明其输出能作为什么的证据、不能作为什么的证据。见《TypeSafe Jev,以共识评分》(英文)。
CRA 测试报告(CRA test report)
为支持制造商依欧盟《网络弹性法案》编制的技术文档而准备的安全测试证据:它是支持性文件,不是符合性认证,也不是一种正式指定的文件类型。该条例要求提供所开展测试的报告(附件七第 6 点),作为履行测试义务的证明(附件一第二部分第 3 点),并在产品投放市场后至少十年内,或在支持期内(以较长者为准),供市场监督管理机构随时调阅(第 13 条第 13 款)。我们不是公告机构。见《标准可能推迟,报告日期不会》(英文)。
AI 辅助带来的技术债务(Technical debt from AI assistance)
AI 辅助工作中遗留未解决的不足之处所造成的未来成本;不是泛指一般的维护,也不是声称每个 AI 辅助项目都会产生它。它是否出现,取决于任务、模型以及围绕它们的工作流程。见《速度会消退,复杂性不会》(英文)。
本页不主张的内容:运用这一方法即可确立某个代码库是健全的。我们尚未证明多审查者审查比单一审查者审查能发现更多真实缺陷;为检验这一点而设计的实验在开展之前即已撤销;任何审查都无法确立无人发现的缺陷不存在。更完整的论证及其局限见我们的工作论文,这是一份尚未经过同行评审的预印本草稿(英文):research.counterproof.io(doi:10.5281/zenodo.22030516)。如果本页内容有误,我们会在本页以书面形式更正。