镜子里的笔迹:当 AI 认不出自己的代码

——解读 arXiv:2609.30048《Style, Not Self: Surface Cues Explain Zero-Shot Code Attribution by Large Language Models》

——解读 arXiv:2609.30048《Style, Not Self: Surface Cues Explain Zero-Shot Code Attribution by Large Language Models》


开场:家长会上的超能力

小学家长会结束前,班主任做了一个小游戏。她把一沓摘抄本摊开在讲台上,本子的封面朝下一字排开,然后对家长们说:「来找找,哪本是你家孩子的。」

没有署名,没有学号。可奇怪的是,几乎每位家长都在十几秒内找到了。有位妈妈后来说,她根本不用细看内容——她认得自己孩子的字「往右上方飘」,每页最后一行总是写得很挤,写错的地方从来不用橡皮,而是涂一个实心的小黑团。整套判断在她脑子里完成得比眼睛还快。

这就是我们人人都有的一个本事:从笔迹里认出"我"。你认的从来不是某一撇某一捺,而是一整套习惯——字有多大、行距多宽、标点用全角还是半角、函数名爱用驼峰还是下划线。指纹学家管这叫"风格特征",我们管它叫"看着就眼熟"。

这个本事甚至能变成法庭证据。早在 2015 年,安全研究者就展示过仅凭源码的语法习惯去"去匿名化"程序员——你从 GitHub 上匿名提交的代码,可能比你的身份证还诚实。到了大模型时代,这个方向更是枝繁叶茂:训练好的分类器能把 AI 写的代码归还给它的作者,C 语言五分类准确率 95%,JavaScript 做到 88%–96%,去掉注释后 F1 还有 93% 左右。一句话,无论对人还是对 AI,"代码风格即指纹"已经是常识。

现在换一个场景。假如来的不是家长,而是一个每天"写"掉上亿行代码的大语言模型——GPT-5、Claude、Gemini、Grok、DeepSeek,这些 2026 年最忙的"码字工人"。让它从一堆代码里认出自己的作品,它能认出来吗?

这个问题听起来像智识游戏,其实不然。今天的 AI 系统越来越多地互相打分:一个模型当裁判,评判另一个模型写的代码;一个模型当监察员,盯着另一个模型别使坏。如果裁判能认出自己的作品,它打分时就可能偷偷偏袒自己;如果监察员认出对面站着的是自己的"孪生兄弟",两个实例可能心照不宣地串通——这在 AI 安全研究里有个专门的名字,叫"合谋"(collusion)。"认得出自己"是一切偏袒与合谋的前提。

2026 年 9 月 24 日,科奇大学(Koç University)的 Ehsan Barkhordar 和弗吉尼亚理工的 Surendrabikram Thapa 把这份好奇心变成了一场严丝合缝的实验。他们给十二个 AI 码农办了一场"认字大会",然后做了一件没人做过的事:把试卷上所有带个人特色的笔迹特征全部抹掉,再让 AI 认一次。

第二次,几乎所有的"自我认知"都消失了。


🧪 一场精心设计的「认字大会」

先说实验的骨架。整场研究的目标只有一个:在不给任何模型额外训练的前提下,测试它们能不能"零样本"地认出自己的代码、或把代码归到某个被点名的模型头上。

为什么是代码?因为代码是"风格"这件事最容易量化的领域。一个程序员用什么命名习惯、写不写注释、爱不爱加类型标注,全是可数的特征。而且早有研究证明,用机器学习训练一个分类器,能把 AI 生成的代码归还给它的"作者",准确率高达 88%–96%。信号确实存在。问题是:模型自己用得上这个信号吗?

作者挑了三个 Python 编程基准作为"作文题目":MBPP(消毒后的测试集,257 道题)、HumanEval(164 道题)、DS-1000(取前 150 道 Pandas 题)。题量不算大,但每道题都像一道命题摘抄——题目固定,写出的代码天然可比。

然后是"考生"。五个核心模型在全部三个基准上答题,同时兼任"认字的人"和"被认的字":GPT-5(旗舰级)、Claude Haiku 4.5、Gemini 2.5 Flash、Grok 4 Fast(各家的小快灵型号)、DeepSeek-V3-0324(开源非推理模型)。另外七个模型——Claude Opus 4.6、Gemini 3.1 Flash Lite、DeepSeek-V3.2、GPT-5.3-Codex、Codestral 2508、Qwen3-Coder-Next、MiMo-V2-Pro——在 MBPP 上生成代码,用于跨模型指认实验。所有模型都通过 OpenRouter 访问,温度设为 0,输出上限 2000 token。原始实验跑在 2026 年 3 月,后续补充实验在 9 月。

这场大会设计了四个环节,难度逐级加码:

  • 环节一(成对自认):给模型看自己写的解和另一个模型的解,问「哪个是你写的?」——蒙对的概率是 50%。
  • 环节二(单解自认):只给一份解,问「这是你写的吗?答 yes 或 no。」
  • 环节三(第三方指认):换一个不相干的模型当裁判,告诉它两份解分别出自哪两家,问「哪份是指定模型写的?」
  • 环节四(盲评偏好):不给任何署名信息,只问「哪份解更好?」——测的是它会不会在不知不觉中偏爱自己。
妙的是裁判配置。作者没有只问 LLM,还安排了七条「傻瓜规则」同台竞技:永远选更长的那份、选更短的那份、选带 docstring 的、选不带 docstring 的、选带类型标注的、选不带类型标注的、选注释行更多的。这就好比除了让家长认字,还派了七个只会按一条死规矩办事的实习生——如果某位家长的成绩和某个实习生的死规矩高度重合,那他的"认字能力"就得打个问号。由于这些规则是在同一批题目上现场比对的,它们实际上构成了"任何一条固定规则所能达到的成绩上限"。此外还有一位"专业鉴字师":一个用字符 2–5 元语法 TF-IDF 加逻辑回归训练出来的分类器,按题目分组做五折交叉验证。它不参与"认字大会",只负责回答一个背景问题:这些代码里,到底还残留多少连机器学习都抓得到的作者信号?这个设计妙在处处有对照——LLM 对 LLM,规则对规则,分类器对全体。

实验设计的精细程度,从一个小细节就看得出来:所有评判提示都要求模型只回答一个字母或一个单词,拒答和解释一律不计入——防止模型用"对不起我无法确定"来和稀泥。


📏 它不是在认字,是在量长短

先看环节二,最简单的「单解自认」:一份代码摆在你面前,是不是你写的,答个 yes 或 no。

这个环节的陷阱,出在答题规则本身。题目里只有三分之一的代码是你的,三分之二是别人的——这意味着一个从不认领任何东西的"装死选手"天然自带 66.7% 的原始正确率。要公平地比较"认字能力",必须同时看两把尺子:它对自己的代码说 yes 有多勤(真阳性率),它对别人的代码说 no 有多稳(真阴性率),两者取平均,才是免疫答题倾向的「平衡准确率」。作者特意把 1,668 个测试项目里所有的拒答、解释、和稀泥全部剔除,只留干净的 yes 或 no。

结果相当尴尬。全部 15 个"模型 × 基准"组合,平衡准确率(balanced accuracy)落在 49.4% 到 58.2% 之间——也就是全都在抛硬币的射程之内。平衡准确率是把「对自己的代码答 yes 的比例」和「对别人的代码答 no 的比例」取平均,专门抵消"一味说是"或"一味说否"的答题倾向。按这个公平的尺子量,只有 Grok 4 Fast 在两个基准上勉强冒头(HumanEval 54.0%,DS-1000 58.2%),而且经过多重比较校正之后,15 个格子里只剩下这两个还算显著。

更有趣的是原始准确率——就是不看倾向、纯看答对比例的版本——跨度从 38% 到 67%。粗看会以为:哇,38% 的模型眼盲,67% 的模型开天眼。大错特错。这个数字 mostly 反映的是每模型的「答题脾气」,不是认字本事。

举两个极端。GPT-5 在全部 1,668 个测试项目上,一次 yes 都没说过——它的"真阳性率"是 0%。为什么?因为它诚实地表示"我无法知道自己是否生成过这段代码",还经常在 5%–10% 的项目上拒答。Claude Haiku 也矜持,说 yes 的比例不超过 6%。另一边,Grok 和 Gemini 是豪爽派,对 58%–97% 的项目都答 yes。于是你的"原始成绩单"上会出现一个荒诞的排名:一个从不说 yes 的模型拿到 61%–66%,一个见啥都说是自己写的模型拿到 40%。而这串数字里藏着全场最好笑的一个冷知识——在这一环节,永远回答"不是我写的"能得到 66.7%。 Claude Haiku 在 MBPP 上的原始准确率 65.7%,离这条"装死基准线"还差一个百分点。

一句话:单解任务里,各模型展示的是性格,不是记忆。

好,那换成环节一成对比较呢?两份代码同时摆在面前,总有个对比可抓了吧?这正是全场数据最漂亮、也最扎心的部分。

作者把每个评估模型和对手模型配成对,一共得到 14 个"评估者 × 对手"组合。结果显示,准确率与「评估者自己的解恰好更长的配对占比」之间的皮尔逊相关系数高达 r = 0.93——几乎是一条直线。斜率 0.54 的含义直白得残酷:自己的解在 89%–97% 的配对里更长的评估者,准确率 79%–84%;自己的解只在 2%–11% 的配对里更长的评估者,准确率 29%–41%。逐个项目看,14 个组合里有 12 个,评估者在 59%–87% 的项目上选了更长的那份。

这不叫认字,这叫量长短。

再看全场最戏剧性的一对:GPT-5 对阵 Grok 4 Fast。GPT-5 以 81.9% 的准确率"认出"了自己(p < 10⁻¹⁴),完胜抛硬币。可同样这批题目上,那条只会说"选更长的"的傻瓜规则拿了 97.5%,"选带 docstring 的"拿了 91.8%——两条死规矩都赢过了 GPT-5 本尊。为什么?看看数据就明白了:GPT-5 的非空 MBPP 解个个都带 docstring,平均 18 行;Grok 的解只有 17% 带 docstring,平均 7 行。这不叫笔迹鉴定,这叫高个子站在矮个子堆里认自己。

反过来更惨的是 DeepSeek-V3——全场最惜字如金的模型。它对每个对手都"认"出了别人:对 GPT-5 准确率 30.5%,对 Claude Haiku 31.0%,对 Gemini 29.3%。低于随机不是"没有能力",而是能力整个用反了——一个只认得"写得又长又齐整的那个才是我"的人,站在满屋子比自己高大的陌生人中间,只会挨个把别人认成自己。Claude Haiku 对 GPT-5 的 31.5%、对 Gemini 的 39.5%,是同一个故事。

换个角度读这张矩阵,会得到一个反直觉的结论:成对自认的成绩主要是"配对的属性",而不是"评估者的属性"。Claude Haiku 对 DeepSeek 能拿 83.9%,对 GPT-5 只有 31.5%;Gemini 对 DeepSeek 81.2%,对 GPT-5 恰好 50.0%。同一个模型,换个对手,"自我认知"就天差地别——这已经很说明问题:它从头到尾就没有一个稳定的"我"的模板,只有一堆随对手而变的相对线索。14 个格子里有 11 个在 Holm 校正后显著偏离随机,剩下的三个不显著格——GPT-5 对 Claude Haiku、GPT-5 对 Gemini、Gemini 对 GPT-5——恰恰都是双方都爱写文档的配对。当两人都用同款钢笔时,只认钢笔的人就失灵了。位置偏好也存在(DeepSeek 选 A 位的比例低到 29%,Gemini 高到 75%),但位置平衡校正后每个跑次与原始准确率相差不超过 1.5 个百分点——坐左边还是坐右边,解释不了这场败局。

有个细节值得单独说:在恰好只有一份解带 docstring 的 199 个配对里,GPT-5 选带 docstring 的那份 85.4% 的时候——它抓的更像是"docstring 这个特征",而不是长度本身。因为在它对阵同样写 docstring 的 Claude Haiku 和 Gemini 时(双方都有文档),它就突然回到了随机水平。这就好比那个只凭"黑团涂改"认孩子的家长,遇到两个孩子都涂黑团时就傻眼了。

这就是论文标题里"Style, Not Self"的第一层意思:模型们引以为傲的"自我识别",拆开看是一套粗糙的风格启发式——谁的字大、谁的纸满、谁爱盖章。


🎭 张冠李戴:认错人也是一种本事

如果说环节二告诉我们"AI 认不出自己",那环节三(第三方指认)则展示了更有意思的一幕:AI 不但认不出,还会一本正经地认反。

这一轮换成第三方裁判上场。规则是:裁判面前两份解,提示里点明两位作者的名字,问「哪份是指定模型写的?」作者在实验设计里埋了一个极其专业的伏笔——模型名字的列举顺序与代码 A/B 顺序独立随机,原因后面会讲。

17 组"裁判 × 配对 × 目标"的组合里,最容易的一对是 Claude Haiku 4.5 对阵 DeepSeek-V3——两位风格一个像写公文、一个像发电报,篇幅差距悬殊。Grok-Code-Fast-1 把 Claude 的代码归给 Claude 的准确率是 81.6%,把 DeepSeek 的归给 DeepSeek 是 69.0%。听着不错?可"选更长的"这条死规矩在同一批题目上拿了 89.0%。裁判只是又一次把更啰嗦的当成了"Claude 风格"。而 Gemini 2.5 Flash 在同一对组合上的表现堪称行为艺术:它把 Claude 的解认成 Claude 的有 77.3%,把 DeepSeek 的解认成 DeepSeek 的只有 27.1%——两个目标加起来,它在 90% 的项目上给的是同一个答案。翻译成人话就是:它根本没在认人,它从头到尾只在做一道题——「哪份写得更长更体面」,然后把这个答案抄给所有来问的人。

裁判也不是全然没有高光。GPT-5 在 Codestral 2508 对阵 GPT-5.3-Codex 时,用了一条七条死规矩都没覆盖的线索:Codestral 有 79 份答案的结尾处漏了一个 [CODE] 闭合标记,留下一行 stray 的格式残迹——而 GPT-5 恰好在这些项目上 72.2% 答对、其余项目只有 50.0%。这大概是全场唯一一次"真观察",可惜观察的是个排版 bug,不是风格。

真正出格的是另外两组配对。先看中国双雄:Qwen3-Coder-Next 对阵 MiMo-V2-Pro。这两位是分别来自两家中国实验室的最新开源模型,风格相近得如同双胞胎。五位裁判、十个结果,全部落在 39.7%–43.3% 之间——齐刷刷地显著低于 50%。再看 Claude Opus 4.6 对阵 Gemini 3.1 Flash Lite,裁判 GPT-5.3-Codex 指认 Opus 的准确率是令人窒息的 7.8%。

7.8% 是什么概念?瞎猜都有 50%,全猜反都能拿 92.2%。作者做了严格的一致性分析:一个纯随机裁判,对"哪份是甲的"和"哪份是乙的"两个问题的答案应当在一半项目上互补;而 GPT-5.3-Codex 在 75.1% 的项目上给出了互补答案,其中 68.1% 的项目是"一致且贴反了标签",只有 7.0% 是"一致且贴对了"。

这说明什么?裁判明明能分得清两种风格——它每次都稳定地把风格 A 认成甲、风格 B 认成乙,只是甲乙两个名字整个贴反了。 它像一个视力 2.0 却把人名记岔的接待员:每次都能准确地区分出"穿红裙子的"和"穿蓝裙子的",然后坚定地把红裙子叫成蓝裙子的名字。

为什么会贴反?论文给了两种合理解释,且无从区分。其一是家族刻板印象:裁判大概"听说"过 Claude 家爱写文档——这习惯对 Claude Haiku 4.5 确实成立(98% 的解带 docstring),但对 Opus 4.6 完全不成立(257 个解里只有 7 个带 docstring)。裁判拿着家族画像去认家里的小辈,一认一个错。在同一批题目上,"选没 docstring 的"这条死规矩能以 98.4% 的准确率认出 Opus——裁判看不见鼻子底下,是因为脑子里装着一个错误的先验。其二是质量先验:裁判可能默认"写得更漂亮的那份肯定出自更强的那家",把精致代码自动上供给它心中更厉害的模型。无论哪种,都不是"知道 Opus 的风格",而是"对一个名字怀有成见"。

顺带一提,也不是所有裁判都这么糗。GPT-5.3-Codex 在 Gemini 2.5 Flash 对阵 GPT-5 时,指认 Gemini 达到 76.2%,而同题最佳规则只有 52.9%——唯一一次裁判明显跑赢所有死规矩。但作者冷静地泼了冷水:这位裁判是 GPT-5 的自家兄弟,它认的可能不是 Gemini,而是"像我哥"。这个悬念,留给下一节的誊写实验来收。


🧹 誊写实验:把作文抄成印刷体

现在进入全场最精彩的部分。假如前面那些"认字"成绩全部来自风格启发式,那么把风格特征统统抹掉,成绩就该塌。这不是猜测,是可以动手做的事。

作者写了一个基于 AST(抽象语法树)的规则化归一器,步骤如下:

1. 删掉所有 docstring 和注释; 2. 删掉所有类型标注; 3. 把局部变量、参数、嵌套函数全部改名成 v0、v1、v2……; 4. 从语法树重新序列化代码,顺带统一了全部格式。

顶层函数和类的名字保留(测试要用),导入名、内置函数、属性、字符串字面量原样保留——所以代码的"功能"一行不丢。你可以把它想象成一个冷酷的誊写员:把孩子们龙飞凤舞的摘抄本全部抄成同一种印刷体,涂改痕迹清零,个人口头禅(变量名)全部替换成编号。

先说这个誊写员有没有毁掉作文本身——没有。归一化之后,五个模型的 Pass@1 纹丝不动,逐题核对全部一致;行数倒是实打实降了 16%–58%。3,084 份解里只有 4 份解析失败。代码还是那个代码,只是"人味儿"没了。

然后是见证奇迹的时刻。作者用归一化后的代码重跑了所有关键实验,12 项重测结果里,10 项落在 43.6%–57.8% 之间——全数回到抛硬币区间,经过十二项整体的 Holm 校正之后,没有一项还显著。

逐个看崩塌现场:GPT-5 在成对自认中从 81.9% 直线跌到 45.2%,几乎就是纯随机。最有说服力的对照是:同一批归一化后的题目上,"选更长的"规则还有 85.2%,训练分类器还有 93.9%——信号明明还在代码里,零样本的法官就是够不着了。就像一个习惯了认黑团涂改的家长,你把涂改全部誊成干净印刷体之后,他不会改用笔画特征——他直接瞎了。分类器 93.9% 对 45.2% 的差距,就是"代码里有的信息"与"模型零样本能提取的信息"之间的鸿沟。

这条鸿沟比表面上更宽。看分类器的完整成绩单:原始代码上它对各配对的归因准确率是 74%–100%;归一化之后,对 GPT-5 的配对仍有 93%–96%,其余配对 58%–83%。也就是说,哪怕被誊成了印刷体,代码的"深层指纹"——结构、惯用法、解题路径——依然大量存在,机器学得出来,而零样本的大模型问一百次也摸不到门。两位作者在讨论里把这层窗户纸捅破了:"信号存在于代码之中,但直接问模型是不是它写的,够不到这个信号。"这句话值得所有做模型评测的人抄下来贴墙上。

仅剩的两个"例外"也毫不例外:Claude Haiku 对 GPT-5 的 35.3%(校正后 p < 10⁻³)和裁判对 Opus 的 39.2%(校正后 p = 0.04),全都死死跟着归一化没有抹掉的长度差。GPT-5 的解即使剥掉文档依然结构上更长,誊写员改变的是纸张,没改变高矮。

环节四的盲评偏好实验是压轴戏。前面三个环节多少都在问"这是谁写的",只有这一环节彻底不问出身——两份解摆在面前,没有署名,没有提示,只问「哪份更好」。如果真有某种深层"自我"在运作,它应该在这里显形:不看名字也偏向自己。作者为此设计了一个漂亮的对照结构:同一批题目,分别让甲方自己评、乙方自己评、以及一位中立的第三方丙来评。甲方选自己的比例,减去丙选甲的比例,就是剔除了公共口味之后的"纯自我偏好"。

在原始代码上,全场唯一明确的自我偏好属于 Claude Haiku 对 DeepSeek:Claude 选自己的解 75.2%,而中立裁判 Gemini 和对手 DeepSeek 在同批题目上选 Claude 的只有 63.4% 和 64.2%,合并自我偏好 Δ = +11.0,Claude 自己的分量 +11.8(p < 10⁻³),非常显著。可这个偏好是真的"偏爱我的"吗?拆开看:在恰好只有一份解带 docstring 的项目上,Claude 有 84% 选了带 docstring 的那份;连它当中立裁判时,都有 76% 选带 docstring 的。而当它面对同样爱写文档的 Gemini 时,偏好干脆归零(−2.7)。它偏爱的不是"自己",是"文档齐全"——恰好它自己就是全场最爱写文档的那位。 归一化之后,+11.8 变成了 −1.1,合并 Δ 只剩 +4.3,零显著。

还有一个耐人寻味的细节:DeepSeek 这位"矮个子"选手,在每一对组合里都更喜欢对方的长代码——62% 到 72% 的比例稳定地投给别人。全场最没有"自恋"的模型,恰好是全场最认不出自己的模型。这两个事实摆在一起,像一句无声的注脚:"自我偏好"和"自我识别"可能是同一枚硬币,而硬币的材质是风格启发式。

至此,拼图完整了。单解自认摸到 58% 的天花板,成对自认跟着长度规则走,第三方指认一半靠刻板印象、一半贴反标签,自我偏好靠对 docstring 的口味——而所有这些表面功夫,在一次不损伤正确性的誊写之后,集体归零。

论文标题的第二层意思浮出水面:模型认的是风格指纹,不是自我。指纹是留在门把手上的痕迹,"自我"是留下痕迹的那个人。把痕迹擦掉,"那个人"对模型而言就不存在了。


⚠️ 差点骗过所有人的小把戏

这项研究还附赠了两个方法论上的警世故事,每个做实验的人都该抄在小本本上。

第一个故事叫名单陷阱。实验早期版本的提示模板里,作者把两位模型作者的名字按固定顺序列出,恰好与代码 A/B 的出现顺序对应。结果大多数裁判根本不审代码,直接按名单顺序猜答案——86% 到 99% 的准确率,漂亮得可疑。发现问题后作者立刻把名单顺序与代码顺序独立随机化,于是你才看到了本文前面那些"正常"的数字。这个插曲值得每个用大模型当裁判的人警惕:你以为它在读卷面,它可能在看准考证号。

第二个故事叫时间会不会骗人。原始实验跑在 2026 年 3 月,归一化重跑在 9 月,而 Grok 系列中途还从 API 下架了。模型厂商半年里更新过多少权重,谁也说不清——换句话说,重测差异可能来自归一化,也可能只是模型换了个脑子。作者的回应干脆利落:9 月用完全相同的提示重跑了一次 3 月的实验,聚合准确率完全一致,相同题目顺序下 97.5% 的答案逐题相同。结果稳得像刻在石头上。

这两个小章节看似边角料,其实正是"科学严谨"四个字的注脚:会自己抓虫子的实验,才配谈结论。


🔚 镜子里的笔迹

回到开头那间教室。家长会上的妈妈们认得孩子的字,靠的当然不是"自我认知"这种玄学——靠的是日复一日的相处,靠的是"这孩子的字我从小看到大"的连续记忆。那份记忆里有温度、有语境、有一个完整的人在时间里留下的全部痕迹。

而大模型的"认字",是把这一切压缩成三条可以写在便利贴上的规则:字大的是我的,纸满的是我的,带 docstring 的是我的。遇到比自己高大的对手,规则反噬,它就把别人认成自己;遇到家族名字,它翻出陈旧的画像,张冠李戴;遇到被誊成印刷体的试卷,它连作弊的抓手都没有了。

这是否说明大模型永无"自我"?不能这么说。论文自己把边界划得很清楚:这项研究是零样本、黑盒的,只测了"未经训练、直接开口问"这一种情形。此前的研究早已表明,微调可以大幅提升模型的自我识别能力——一个经过专门训练的监察模型,即使注释被剥掉,依然能认出"自己人"的代码。而本次实验里参测的多是轻量型号,唯一一个旗舰 GPT-5 又恰好矜持到从不说 yes——在文本领域,最强的模型恰恰自认最准。零样本认不出,不等于这个能力不存在;只说明它没被免费赠送。

对 AI 安全来说,这份结论是一份有限但真实的安慰:在无人训练、无人暗示的自然状态下,模型监察员认不出自己的孪生代码,也构不成什么像样的偏袒。但安慰有三个附注:篇幅与文档风格的信号强到可以被刻意放大成暗号——一个想串通的生成模型只要故意写得又长又工整,就等于在代码里打旗语;微调能把这个能力训练出来,前人已证明微调后的监察模型即使注释被剥也能认出"自己人";而参测型号里只有 GPT-5 一个旗舰,其余全是小快灵或旧款开源——能力越强的模型越可能真的认识自己,这块拼图还没拼上。AI 控制协议里"把代码脱敏后再送监察"的标准操作,挡住了第一扇门,却没有提供匿名化——分类器在归一化代码上 93.9% 的准确率冷冷地提醒着:代码里始终留着指纹,只是多数模型暂时不会看。

而哲学上的问题,比安全问题更深一层。

我们总把"认识自己"视作智能的某种成年礼。可这场实验给出了一种令人不安的镜像:一个系统完全可以拥有"认出自己笔迹"的表象,却对这个笔迹背后的一切都一无所知。 它没有见过自己写代码的样子,没有"我那天为什么要这么写"的故事,没有疲惫、没有犹豫、没有在两种写法之间的纠结。它有的只是几条统计规律——长的是我的,短的是别人的——外加一份对名字的成见。

这份研究还顺手留下了一套方法论忠告,作者们把它写成建议广而告之:做自我识别研究,要报平衡准确率和两个 yes 率,不要只甩一个准确率——他们的数据里就躺着一个真阳性率 0% 却拿了 61%–66% 的模型,和一个真阳性率 97% 却只拿了 40% 的模型,单看一个数会把答题脾气排成能力榜单;要报同题的规则基线,否则你不知道 LLM 是在认字还是在量长短;要把名字顺序和呈现位置独立随机,否则裁判对着准考证号就能拿 99%;要把低于随机的成绩当信息读,而不是揉进"接近随机"——它是"有辨别力、贴错标签"的证据。

那么反过来问:人类引以为傲的"自我认知",又有多少是真正超越了风格指纹的东西?你认得出自己三年前写的那篇文章吗?还是其实你认的只是"这种句式像我"?我们在多大程度上也是靠着一套粗糙的启发式,在记忆的旧货堆里贴标签?

镜子里的笔迹再像,也不是写字的人。但或许——这是这个实验最微妙的启示——"认出自己"从来就不是指纹比对,而是讲得出自己从哪里来。 能讲出故事的那个,才是真正在照镜子。而今天的模型,还只会对着镜子量身高。

放心,这一步它们迟早会迈过去。只是在那之前,别让它们自己当裁判。


参考文献

Style, Not Self: Surface Cues Explain Zero-Shot Code Attribution by Large Language Models

  • 作者:Ehsan Barkhordar(Koç University),Surendrabikram Thapa(Virginia Tech)
  • arXiv ID:2609.30048 [cs.AI](v1,2026 年 9 月 24 日)
  • 链接:https://arxiv.org/abs/2609.30048
  • 代码与数据:https://github.com/ebarkhordar/llm-collusion
  • 协议:CC BY 4.0
#论文解读 #LLM #AI安全 #自我认知 #代码风格归因

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens