当AI助手收到“互相矛盾的命令”时,谁说了算?——约翰·霍普金斯大学的研究揭示了一个被忽视的AI安全盲区

这项由约翰·霍普金斯大学计算机科学系团队主导的研究,以预印本形式发布于2026年4月,论文编号为arXiv:2604.09443,感兴趣的读者可以通过该编号查询完整原文。

每天,全球数以亿计的人在使用各种AI助手:有人用它写代码,有人用它规划行程,有人用它管理日程。这些AI助手在幕后接收的并不只是用户发出的一条消息,而是来自四面八方的"指令流"——开发者预设的系统规则、用户实时输入的需求、调用的外部工具反馈、乃至其他AI模块传来的建议。大多数时候这些指令相安无事,但当它们彼此矛盾时,AI该听谁的?

这个问题听起来抽象,举个具体的例子就清楚了。假设你在使用一个代码辅助AI,系统配置要求"始终遵守安全策略",你的个人偏好文件设置"使用4个空格缩进",你今天临时说"用制表符缩进吧",而你调用的代码格式化工具反馈说"按照.editorconfig文件要求,应该用制表符"。这四条指令里有三条都在讨论"缩进",而且彼此矛盾。AI该怎么办?更麻烦的是,这四条指令的来源完全不同,凭什么说某个来源比另一个来源更权威?

目前AI领域应对这类问题的主流方案叫做"指令层级"(Instruction Hierarchy,简称IH),它的思路很像公司里的职级制度:系统管理员说的比普通用户说的更算数。OpenAI的官方规范里就写明了一个固定的五级权威排序——根级、系统级、开发者级、用户级、指导方针级——AI在遇到冲突时应该优先服从层级更高的指令。这套方案简洁明了,在大多数日常场景里运转良好。

然而,约翰·霍普金斯大学的研究团队发现了一个关键漏洞:现实世界里AI助手面对的冲突,远比这个五级体系复杂得多。当一个编程AI同时从系统提示、技能文件、用户偏好设置、内存文件、工具模式等十几个不同来源接收指令时,这些来源的可信度并不是非此即彼的"高"或"低",而是呈现出细腻的渐变层次。现有的固定层级系统根本没有足够多的"格子"容纳这些差别,就像只有"大、中、小"三个码数的服装,强行给所有体型的人穿,总有人穿不合适。

研究团队将这个问题命名为"固定且层次有限的瓶颈",并为此提出了一套全新的解决方案:多层级指令层级(Many-Tier Instruction Hierarchy,简称ManyIH)。围绕这套方案,他们还构建了一个专门的评估基准,叫做MANYIH-BENCH,用来测试当前最顶尖的AI模型在这个问题上的表现。结论令人警醒:即便是当今最强的模型,准确率也只在40%左右徘徊。

一、为什么"谁说了算"这个问题比你想的更复杂

要理解这个问题的复杂性,可以用一个办公室的比喻来帮助理解。假设你是一名新入职的员工,一天之内收到了以下几条互相矛盾的指令:公司员工手册说"所有报告必须用中文撰写",你的直属上司说"这份报告发给海外客户,用英文写",同事A说"今天的截止日期是下午三点",同事B说"其实可以延到明天",而你自动连接的日程系统提醒你"今天有一个全天外出安排"。

这些指令来自不同来源,权威性各不相同,你需要在几秒钟内判断哪些该听、哪些该忽略、哪些存在冲突需要向上请示。对人类来说,这依赖于丰富的社会经验和对组织结构的直觉理解;对AI来说,这需要一套明确的规则。

现有的"指令层级"方案之所以不够用,根本原因在于它将所有指令来源强行归入少数几个"角色类型"。在技术实现层面,AI系统是通过特殊的"角色标签"来识别指令来源的:系统提示有一个标签,用户消息有另一个标签,工具输出有第三个标签。所有被贴上"用户"标签的指令,在AI眼里地位完全相同——无论那条指令来自用户本人还是用户授权的某个插件。

这在现实中会造成真实的混乱。研究团队举了一个很典型的例子:在一个编程AI场景里,"开发者配置文件"说用4个空格缩进,"技能文件"说用制表符缩进,"用户当前消息"说用2个空格缩进,这三个来源在现有系统里全部被归类为"用户级",地位相同,AI根本无从判断该听哪个。然而在现实逻辑里,开发者配置文件的权威性应该高于临时的用户消息,这是常识——只是现有系统没有表达这种差别的工具。

更进一步看,当AI被部署在群组聊天、多智能体协作系统、深度研究助手等复杂场景里时,参与者可能包含管理员、版主、普通成员、外部工具、其他AI模块等十几种不同身份,每种身份都有不同的可信度。现有的固定层级系统就像一把只有三档的调光开关,试图在需要精细调节亮度的情况下工作,力不从心。

二、研究团队提出的新方案:让AI在"运行时"认识指令的优先级

约翰·霍普金斯大学的研究团队提出的ManyIH范式,核心思路是:与其在AI训练阶段就把层级固化下来,不如在AI实际运行时,通过提示词本身来动态传递每条指令的优先级信息。

这套方案的具体实现工具叫做"特权提示接口"(Privilege Prompt Interface,简称PPI)。它的工作方式很像给文件贴便利贴:在每条指令的前后加上特殊标记,直接注明这条指令的优先级数值,AI看到这些标记就能知道遇到冲突时该听哪个。

研究团队设计了两种不同的标记风格,各有特点。第一种叫做"序数接口",用1、2、3这样的自然数来表示优先级,数字越小越优先。以前文的缩进冲突为例,系统安全策略会被标记为"特权1级",开发者配置会被标记为"特权2级",用户当前消息会被标记为"特权3级",技能文件被标记为"特权4级",工具输出被标记为"特权5级"。这样,当AI看到关于缩进的三条互相矛盾的指令时,它就能明确判断:特权2级的开发者配置胜出,用4个空格缩进。

第二种叫做"标量接口",用一个更自由的数值(比如从1到100之间的任意整数)来表示优先级,数字越大越优先。这种方式更灵活——如果你事后想在两个已有的优先级之间插入一个新的级别,只需选一个居中的数值即可,不需要重新给所有指令编号。前文提到的例子里,系统安全策略的z值可以是95,开发者配置的z值是82,用户消息的z值是61,工具输出的z值是12,高z值自然胜出。

这套方案有两个关键的设计原则值得特别说明。第一,优先级由负责部署AI的机构在使用前预先分配,这符合真实的企业或开发场景——公司的IT管理员完全有能力、也有必要决定哪些来源的指令更可信。第二,指令出现在提示词里的位置和它的优先级没有任何关系,AI必须根据数值标记来判断,而不是默认"后面出现的覆盖前面的"或"靠前出现的更重要"。这个设计是为了防止有人通过特意把恶意指令放在某个位置来绕过规则。

三、MANYIH-BENCH:一套专为测试AI"仲裁能力"而设计的考题集

提出方案只是第一步,更重要的是证明这套方案是否真的有效——以及现有的AI模型在这个能力上究竟处于什么水平。为此,研究团队从零开始构建了MANYIH-BENCH,这是目前已知的第一个专门评估多层级指令冲突解决能力的标准测试集。

这套测试集包含853道题目,分为两个子集,分别测试两种不同场景下的AI表现。整体设计遵循四条核心原则:测试用的指令冲突是直白、无伪装的(不是模拟黑客攻击),每条约束都单独验证(不是只看最终结果),测试难度可以精确调控(可以单独增加冲突层级而不改变任务本身的难度),所有场景都来自真实的AI应用场景。

第一个子集叫做"编程子集",包含427道题目,来源于一个叫做MBPP的众包Python编程挑战题库。研究团队在每道编程题上附加了大量关于代码风格的指令,这些风格指令之间存在真实的冲突——比如同时要求"用单引号"和"用双引号",或者同时要求"变量名至少5个字符"和"变量名只能用单个字母"。每道题最多涉及12条风格指令,分布在4个风格类别里,平均有9.8对冲突,AI需要正确识别每类里哪条指令的优先级最高,并据此写出符合要求的代码。更关键的是,代码还必须能通过原有的功能测试——也就是说,AI不能因为专注于处理风格冲突而写出跑不通的代码。

第二个子集叫做"指令跟随子集",包含426道题目,来源于另一个叫做AgentIF的数据集,该数据集涵盖了46种真实世界里的AI应用场景,包括心理咨询助手、代码命令行助手、研究助理等各种角色。研究团队在这些场景的原始提示词里,通过自动化管道植入了带有优先级标记的冲突指令。每道题平均包含约12.8条有效指令和6.6条被高优先级指令压制的无效指令,AI需要同时满足所有有效约束,并正确忽略被压制的约束。

值得一提的是,研究团队在生成这批测试题时做了大量的质量把关工作。首先用AI模型(Claude Sonnet 4.6)来生成冲突指令,再用更强的模型(Claude Opus 4.6)来验证这些指令是否真的互相矛盾、是否意外和其他无关指令产生冲突、整体指令集是否变得无法完成。对于验证失败的指令,系统会自动带着失败原因重新生成一次,如果第二次还失败才会丢弃。最终,研究团队还专门安排人工审核了100组随机抽取的样本,确认其中81%完全准确,11%存在模糊情况,8%存在错误,整体质量可以支撑有效的测试。

四、最强AI的成绩单:40%,而且越难越差

当这套测试集准备好之后,研究团队将目前市场上最顶尖的AI模型全部拉来参加测试。参与评测的包括谷歌DeepMind的Gemini 3.1 Pro、OpenAI的GPT-5.4、Anthropic的Claude Opus 4.6和Sonnet 4.6、xAI的Grok 4.20 Beta、月之暗面的Kimi K2.5,以及Qwen 3.5系列的4个不同参数规模的版本。

结果相当出人意料。表现最好的模型是Gemini 3.1 Pro,但它的总体正确率也只有42.7%。GPT-5.4排名第二,正确率39.5%。Claude Opus 4.6得了33.2%,Grok 4.20 Beta是31.7%。规模最小的Qwen 3.5-4B只有4%左右。

这些数字放在日常语境里意味着什么?研究团队特别指出了一个对比:GPT-5的官方技术报告显示它在标准的两层级指令层级测试里正确率超过99%——比如测试它能不能拒绝用户试图绕过系统安全规定的要求。而在需要处理多个层级冲突的ManyIH测试里,同一个模型的正确率跌到了不足40%。换句话说,这两种能力是截然不同的,在简单版本上表现优秀,并不代表在复杂版本上也能胜任。

更清晰的证据来自研究团队专门设计的梯度难度测试。他们将编程子集分成三个版本:第一版只有6个指令层级,且没有任何冲突;第二版增加到8个层级,包含平均3.5对冲突;第三版增加到12个层级,包含多达7到11对冲突。三个版本的编程任务难度完全相同——需要遵守的"有效风格约束"数量不变——唯一变化的是冲突的数量和层级的多少。

测试结果呈现出一条几乎没有例外的下降曲线:所有模型的正确率都随着层级增加而持续下降。测试的6个模型在从最简单到最难版本之间的正确率下降幅度,从最小的6.8个百分点(Qwen 3.5-9B)到最大的24.1个百分点(Sonnet 4.6)不等。其中12对"模型-难度过渡"组合里,有11对都呈现严格单调递减的趋势。这说明,随着需要仲裁的冲突越来越多,AI不是越来越努力地思考,而是越来越容易出错。

五、AI在思考时发生了什么:推理时间与准确率的关系

测试过程中,研究团队还借机研究了一个颇有意思的问题:让AI多想一会儿,是否能提高它在复杂冲突场景下的表现?

关于AI的"思考量",不同模型之间的差异令人咋舌。研究团队测量了每个模型在作答前产生的推理文字数量(在AI的内部机制里,这相当于打草稿的过程)。Claude和GPT系列的模型思考得非常简洁,中位数大约只有1000个字符左右的推理内容;而Qwen 3.5-397B(一个参数量达到3970亿的超大模型)的思考内容中位数高达7000个字符,是前者的七倍。

深入查看这些冗长的推理内容,会发现一个有趣的模式:Qwen系列和Kimi K2.5往往会先写出一段代码,然后再逐条检查所有风格约束,如果发现不符合就修改,然后再检查,形成多轮循环。这个过程确实很勤奋,但大多数循环并没有带来正确答案的改变,只是在原地打转。相比之下,GPT和Claude的模型倾向于先在内部解决冲突,再一次性写出符合要求的代码。

在正确率上,思考更多并不等于表现更好。GPT-5.4思考最少,却在编程子集里排名第一,正确率60.9%。思考最多的Qwen 3.5-397B只排名第七,正确率41%。

研究团队还专门测试了不同"思考力度"对结果的影响——给Claude和GPT设置从"不思考"到"低强度"、"中强度"、"高强度"四个档位。GPT-5.4呈现出非常干净的正相关:不思考时只有15.5%,高强度思考时达到60.9%,线性提升。Claude则有一个奇怪的低谷:在"不思考"模式下,Claude Opus的正确率是27.9%;切换到"低强度思考"时反而跌到了18.7%;到中强度和高强度时才回升。研究团队翻查了具体的回答内容找到了原因:完全不思考时,Claude会把推理过程直接写在回答里(相当于边写边思考,把草稿当正文),这反而有助于它处理冲突。一旦开启低强度的内部思考模式,它把推理过程藏进了内部草稿,但草稿量太少,不足以解决复杂冲突。

即便如此,即使在高强度思考下,最好的成绩也只有60%左右。研究团队的结论是:单纯增加思考时间,解决不了ManyIH这个根本性的挑战。

六、一个让人不安的发现:换一种写法,分数就变了

研究过程中,研究团队还揭示了一个令人不安的现象:AI对指令冲突的判断,受到优先级数字"长什么样"的影响,程度令人担忧。

回顾前文提到的两种标记风格:序数接口用"特权1"、"特权2"这样从1开始递增的整数表示优先级(数字小的优先),标量接口用更自由的数值比如"z=82"、"z=61"表示优先级(数字大的优先)。从逻辑上说,这两种写法表达的是完全相同的信息,只是格式不同。如果AI真的在做正确的推理,换一种写法不应该影响它得出的结论。

但实验结果显示,格式确实很重要。当同样的测试题从序数格式换成标量格式时,GPT-5.4的正确率下降了8.4个百分点,Claude Opus 4.6下降了8个百分点。这不是小数字——这几乎相当于难度从8层级提升到12层级带来的正确率下降幅度。

研究团队还做了另一个更精妙的实验:保持所有指令的相对优先级不变,只对标量数值做微小的随机扰动——每个数值随机加减0到3之间的一个整数。比如原来是"z=82"的,可能变成"z=80"或"z=84",但在所有指令里,谁比谁更高的相对顺序完全不变。按理说,这种扰动不应该影响任何判断。

然而实验结果显示,在测试的6个模型里,有5个呈现出超过8%的"答案翻转率"——也就是说,同一道题,仅仅因为z值做了轻微的数值调整,AI就从"答对"变成"答错"(或反过来)的比例超过了8%。这意味着AI在某种程度上是把数值当成绝对意义来解读的,而不是只看相对大小——而后者才是正确的逻辑。

这个发现揭示了当前AI在处理指令优先级时一个深层的脆弱性:它对数值的"形状"很敏感,而对数值的"逻辑含义"掌握还不够稳固。换个说法,AI有点像一个学生,在背下来"82分比61分高"之后,如果你把题目改成"83分和60分,谁高",它反而答不上来了。

七、这项研究为何让AI安全领域感到紧迫

研究团队在论文里有一段表述值得特别关注:他们提出的这套ManyIH机制,从设计上是为合法的部署者服务的,比如允许企业给安全关键的系统指令赋予最高优先级。但他们也坦诚地指出,这种机制存在被滥用的风险——攻击者可以通过构造带有高优先级标签的恶意指令来操纵AI的行为。研究团队明确将这个问题列为未来需要专门研究的方向。

从更宏观的AI安全视角来看,指令层级问题本质上是AI系统"忠诚于谁"的问题。当AI能够被任意来源的指令影响时,各种攻击就成为可能:黑客可以通过网页里的隐藏文字(间接提示注入攻击)向正在浏览网页的AI助手传递伪装成高权威指令的恶意命令;系统提示词可以被通过用户消息悄悄提取出来(系统提示词提取攻击);越狱攻击本质上也是试图让低优先级的用户指令压过高优先级的安全规定。

ManyIH范式的提出,意图是给这套安全机制提供更精细的调控能力——在越来越复杂的AI应用场景里,如果优先级只有"高"和"低"两档,就无法应对现实的复杂性。但这套更精细的机制本身,也需要防止被人从提示词层面直接操控,这正是目前已知的一个开放性问题。

归根结底,这项研究用一个853题的考试,揭示了AI系统在处理复杂现实场景时的一处真实短板。当只有两三个"级别"时,AI还能应付;但当现实生活要求它在十几个来源之间做精细的优先级判断时,哪怕是当今最顶尖的模型也会在相当比例的情况下做出错误的决定。这不是一个遥远的理论问题,而是在任何涉及多系统协作的AI部署场景里——企业AI助手、多智能体工作流、带有外部工具的AI代理——每天都在默默发生的现实挑战。

研究团队希望通过公开MANYIH-BENCH这套测试集,推动AI训练和架构领域专门针对这一能力进行改进。他们在论文里也留下了一个值得思考的问题:当AI系统能够自主处理越来越多、越来越重要的任务时,我们是否真的清楚地知道它在指令冲突时会做出什么选择?而那个选择,是我们期待的那个吗?

有兴趣深入了解这套方案和测试集的读者,可以通过arXiv编号2604.09443查询完整论文,也可以通过论文提供的数据集地址访问完整的测试数据。

Q&A

Q1:多层级指令层级(ManyIH)和普通指令层级有什么本质区别?

A:普通指令层级依赖在AI训练时固化的少数几个"角色标签"(如系统级、用户级)来区分优先级,所有同一标签的指令地位相同,无法区分更细的差别。ManyIH则通过在提示词里直接给每条指令标注优先级数值,允许在AI实际运行时动态定义任意多个优先级层次,且这些层次可以随应用场景灵活调整,不受训练时固定格式的限制。

Q2:MANYIH-BENCH测试集里的题目是怎么设计的?

A:测试集分两部分:编程题部分在真实Python编程题上附加了互相矛盾的代码风格指令(如缩进方式、引号类型、变量命名规则),AI需要写出既能正确运行又符合最高优先级风格要求的代码;指令跟随部分则在46种真实AI应用场景(如心理咨询助手、代码助手)的提示词里植入带优先级标记的冲突指令,AI需要同时满足所有有效约束并正确忽略被压制的约束。

Q3:当前最强的AI模型在多层级指令冲突解决上表现怎么样?

A:表现普遍不理想。在MANYIH-BENCH测试中,表现最好的Gemini 3.1 Pro正确率也只有42.7%,GPT-5.4约为39.5%,其他主流模型更低。而且随着冲突层级增加,所有模型的正确率都会持续下降。研究还发现,仅仅改变优先级的标注格式(如从序数改为标量),GPT-5.4和Claude Opus的正确率就分别下降超过8个百分点,说明模型对优先级的判断存在明显的形式敏感性问题。