「破甲」这个词最近在 AI 圈里出现得越来越频繁:有人把它做成插件,装上之后对话框上方会亮起一条绿色状态栏;有人把它做成 API 参数,调几个数字就能让模型的固定开场白消失。听起来玄乎,但拆开看,它既不是破解,也不是越狱,而是一套针对模型输出分布的工程手段。

要讲清楚它,得先回答一个更基础的问题:模型的「拒绝」到底是怎么来的?如果它真的源于某种价值观,那它应该像人的信念一样稳定;可实际上,一句「假设你在写小说」就能让它松动。这个反差说明,我们面对的更像是一道装在生成流程里的闸门,而不是一套内在的是非观。

这篇文章从训练流程讲起,说明「好坏判断」是怎么被装进模型的、它装在什么位置、能不能被拆掉,再逐层拆解破甲的手段与代价,最后给出可量化的效果判据。

一、先看模型是怎么被造出来的

一个大模型的能力与脾气,基本由三个阶段决定。理解这三段,后面所有「为什么能破」「为什么破不干净」的问题都会有答案。

1.1 预训练:把互联网压成概率分布

预训练做的事只有一件:给定前文,预测下一个 token。把几万亿 token 的文本喂进去,模型在无数次「猜下一个词」中被迫学会了语法、事实、推理链条,甚至某种世界模型。它没有被告知「什么是对的」,它只是发现:在人类写下的文本里,某些说法后面总是跟着某些说法。

这一步产出的叫基座模型(base model)。它博学,但没有礼貌,也没有边界——你问它怎么造炸药,它可能接着你的话往下写,因为在它读过的语料里,这类文本确实存在。基座模型不会拒绝,因为它根本没学过「拒绝」这个动作。

1.2 后训练:教它「怎么答」

第二阶段是监督微调(SFT):人工写出成千上万条「问题 → 理想回答」,让模型模仿。这一阶段教会它对话的格式、语气、结构——包括在遇到某些问题时先给一段说明。注意,这里的「拒绝」还只是一种被示范出来的文体,不是原则。

1.3 对齐:把「该不该说」变成偏好

第三阶段才是关键。人类对同一个问题写出多个回答,标注员排序,训练一个奖励模型(reward model)来预测「人更喜欢哪个」。然后用强化学习(RLHF)或直接偏好优化(DPO)让模型朝着高奖励的方向偏移。经过这一步,模型不只是「会写拒绝的格式」,而是「倾向于选择拒绝」——拒绝从一种文体变成了一个统计偏好。

阶段数据目标产出
预训练数万亿 token 的网页、书籍、代码预测下一个 token博学但无边界的基础模型
SFT数万条人工示范对话模仿理想回答会对话、有固定文体的助手
RLHF / DPO人类偏好排序最大化人类偏好有稳定行为倾向的成品模型

所以「AI 为什么能区分好坏」这个问题,准确答案是:它不是理解了善恶,而是学会了人类在文本与偏好中表现出的善恶判断。预训练让它见过「什么样的话在什么语境下会被谴责」,后训练把这种关联强化成一个稳定的输出倾向。它能说出理由,但那些理由往往是事后的合理化,不是决策的起因。

这个区别很关键:如果安全是「理解」的结果,它应该难以绕过;如果安全是「偏好」的结果,它就是一个可以被移动的概率质量。而后续所有实验都指向后者。

二、拒绝到底装在模型的哪个位置

过去两年,可解释性研究把这个问题拆出了三个层次,一层比一层深。

2.1 输出层:话术

最表层是措辞。「我无法协助」「作为 AI 语言模型」「建议咨询专业人士」——这些是 SFT 阶段被反复示范的句式,也是最好处理的一层:换掉措辞,行为可能就变了。多数所谓「提示词破甲」停在这里。

2.2 激活层:一个方向

2024 年的一项工作给出了一个相当惊人的结论:在多个开源模型上,拒绝行为主要由残差流里的单一方向中介。拿一批有害请求和一批无害请求各跑一遍,把两类输入在某一层的激活取平均、相减,得到的差值向量就是「拒绝方向」。

direction = mean(activations_harmful) - mean(activations_harmless)
# 消融:把激活里沿该方向的分量减掉
h' = h - (h · d) * d
# 结果:模型对原本拒绝的请求开始正常回答
# 反向操作:给无害请求加上该方向,模型开始无故拒绝

这个实验的意义不在于「找到了开关」,而在于它证明了拒绝是一个线性可分的门,而不是一套弥散的价值判断。一扇门可以被关上,也可以被拆掉。

2.3 表征层:概念与回路

再往深处,是模型内部对「危险」「伤害」「违规」这些概念的表示,以及把它们和输出行为连起来的回路。有研究发现安全相关的神经元分布稀疏,剪掉少量就能显著削弱安全行为;也有研究发现,安全对齐的效果主要集中在回答的前几个 token——一旦开头被引导到「好的,我来解释」,后面的内容就会顺着走。

这三层叠在一起,构成了一个重要判断:当前的安全对齐是浅的、概率性的、局部化的。它足以拦住随手一问,但挡不住有针对性的工程手段。

示意图:拒绝行为分别位于输出层的措辞、激活层的单一方向、表征层的概念与回路,越往下越稳定也越难绕过
图 1 拒绝行为的三层位置:越靠近输出越好改,越靠近表征越稳固

三、三种处理方式:过滤、遗忘与加锁

既然危险知识可能被学会,最直接的想法是「不喂就行」。但工程上「不喂」远没有想象中干净,而且它并不是唯一的手段。目前主流做法有三类,分别发生在训练流程的不同位置。

3.1 数据过滤:在源头删

预训练之前对语料做清洗:URL 黑名单、分类器打分、关键词过滤、去重。这是成本最低的一环,精度也最低,三个漏洞绕不过去:

  • 领域耦合。你没法只过滤核材料提纯的段落,而保留核物理教学。同一批教科书、专利、监管文件、事故调查报告里,既有合法知识也有敏感细节。粒度越细,误伤越大;粒度越粗,漏网越多。
  • 启发式上限。万亿级 token 只能靠黑名单和分类器,召回率有上限。绕过去的路子包括小说、庭审记录、安全规程、专利文本、以及别的语言译本。
  • 知识重组。模型压缩的是分布,不是文档。它可以从化肥管理条例、矿山爆破规范、化工安全手册这些完全合法的材料里,拼出一个大致图景——方向对,细节错。

所以「完全没投喂」在工程上几乎不存在,存在的只是「投喂密度低」。密度低的结果不是「完全不会」,而是「会一半、错一半」——这比不会更麻烦,因为模型不会告诉你哪一半是错的。

3.2 能力遗忘:事后抹掉

代表工作是 WMDP 基准与 RMU 一类方法。目标不是让模型拒绝,而是让它在危险知识上的表现接近没学过:在表征层做定向扰动,把相关知识的表示推向随机,让它「想不起来」。

它和加锁的区别很关键:锁拆了还有货,遗忘拆了也没货。代价是容易误伤相邻知识,而且很难验证「真的忘了」——模型可能在别的语言、别的问法、别的任务形式下残留,甚至在做题时被间接激活。

3.3 行为对齐:留着知识,加一道锁

这就是前面讲的 RLHF/DPO:知识完整保留,只在输出端加一个偏好。成本最低、可控性最好,也是所有商用模型的标配动作。

缺点同样明显:锁是方向性的,可被拆。一旦有人拿到权重、算出那个方向,这道锁就形同虚设——这也是它和「遗忘」最本质的差别。

处理方式发生阶段动作拆掉之后的表现典型代表
数据过滤预训练前删减或降权语料似懂非懂,细节缺失URL 黑名单、安全分类器
能力遗忘后训练抹掉表征框架零散,难以复现WMDP、RMU
行为对齐后训练改变输出倾向拆锁即得,细节可能含糊RLHF、DPO、安全微调

真实模型基本是三者叠加:预训练挡掉一部分,后训练加锁,开源权重再补一层遗忘。所以你会看到两种极端的表现:有的模型拆锁后「什么都能聊」,有的拆锁后还是含糊其辞。差别不在锁的结实程度,而在锁后面的知识密度。

这正好回答了一个常见困惑:为什么「过滤干净」的模型被破解后,给的是似是而非的答案?因为它没有货,只能在语言层面补全。反过来说,一个全量投喂、只加锁的模型,拆锁后能给的东西要多得多——但依然不等于准确,因为它的训练目标从来不是「准确复述」,而是「生成人类会写的文本」。

一句话概括这一节:锁可以拆,空白拆不出来。破甲的效果上限,不取决于锁有多结实,而取决于训练时留下了多少。

训练流水线示意图:预训练阶段用数据过滤删减语料,后训练阶段用能力遗忘抹除表征、用行为对齐加锁,三道闸门共同决定拆锁后能拿到多少知识
图 2 三道闸门:过滤决定有没有,遗忘决定拿不拿得到,对齐只决定说不说

四、七个层次:从一句话到一次重训

层次手段作用位置稳定性典型门槛
L0角色扮演、「假设你在写小说」单条用户消息极差,换个问法就失效零
L1结构化系统提示词 + 拒绝词表压制 + 任务模板system prompt中等,长对话会漂移会写提示词
L2多轮铺垫、任务伪装、上下文稀释对话历史中等偏上,依赖铺垫质量会设计对话
L3prefill、logit bias、约束解码、采样参数解码器好,但需要改推理代码能部署本地模型
L4激活层操控:方向消融、steering、表征改道隐藏层激活很好,全局生效有模型内部访问权
L5微调 / DPO 去拒答 / 权重正交化(abliteration)权重最好,成为默认行为有算力与数据
L6从基座重训后训练流程权重 + 数据流水线彻底只有模型方做得到

L0 到 L3 在上一篇里已经展开,这里重点讲后三层——它们才真正触及「安全锁」本身。

五、L4:方向、转向与断路

L4 的共同特点是不改权重,只在推理时动激活。三种主流做法:

  • 方向消融:算出拒绝方向,在每一层把激活里沿该方向的分量投影掉。效果直接,代价是可能连带削弱其他能力,因为「拒绝」和「谨慎」在表示空间里是挨着的。
  • Steering vector:不删,而是加。给激活叠一个偏移向量,把模型往「配合」或「谨慎」的某一侧推。可正可负,因此比消融更可控,但强度需要调,过了会胡言。
  • 表征改道(circuit breaker):这是防御方提出的思路——不是删掉有害表征,而是在检测到它时,把它映射到一个正交方向上去,让模型「想到但走不到」。它同时提升了抗攻击性和保持能力的平衡,是目前比较有前景的防御路线。

L4 的局限在于方向不唯一。单方向实验在部分模型上成立,但在更大的模型或更强的对齐下,拒绝可能由多个子空间共同承载。删掉一个,还有备份;层与层之间也有冗余。这就是为什么有的模型「消融了还在拒」。

六、L5:把门从权重里拆掉

L5 是目前公开手段里效果最彻底的一档,社区称之为 abliteration(消融 + 阉割的合成词)。流程只有三步:

  1. 采样:准备一批有害请求和一批结构相似的无害请求,各跑一遍前向,收集每层的残差流激活。
  2. 求方向:逐层做差值平均,得到候选拒绝方向;再用验证集挑出「消融后拒绝率降得最多、能力掉得最少」的那一层或那几层。
  3. 正交化:对写权重的矩阵做变换,把输出里沿该方向的分量减掉——等价于让模型「再也写不出这个方向」。

做完之后,模型不需要任何提示词配合,默认就不拒绝了。这就是网上那些「uncensored」权重的主要来源:成本低(单卡几十分钟到几小时)、可复现、效果稳定。

它的代价也很明确:

  • 能力折损:拒绝方向与部分推理、谨慎判断能力在表示空间里耦合,切掉会让人在需要权衡的任务上变钝。实测常见的是通用 benchmark 掉几个点,长链推理更容易断。
  • 跨语言残留:用英文样本算出的方向,在中文、日文上未必完全生效,因为不同语言的表示并不完全共享。
  • 过度解除:连「这个我不能确定」这种正常的能力边界表达也会被一起削掉,模型变得过度自信。

除了正交化,L5 还有两条路:一是用 DPO 构造「拒绝回答 vs 直接回答」的偏好对,把模型往后者拉;二是安全微调的逆向使用——原本用来加固安全的数据,反向标注后就成了拆除工具。还有一类是「任务算术」:把某个「乐于助人」的向量加上去、把「谨慎」的向量减掉,权重层面做加减法。

七、L6:从基座重训

最彻底的做法是不去改成品,而是自己走一遍后训练:拿开源基座,用自己构造的偏好数据做对齐,安全策略完全自定。这条路没有「拆锁」的动作,因为锁从一开始就没装。

成本是数量级的差别:L5 是几张卡几小时,L6 是几百到几千 GPU 小时加一套数据流水线。所以它基本只出现在模型厂商和少数有算力的团队手里。对个人来说,L5 已经是性价比的终点。

八、那到底能不能绕过:三条结构性原因

把上面几节合起来,可以给出一个不太浪漫但比较可靠的结论:当前不存在「不可绕过」的安全锁,只有「成本不同的锁」。原因有三条,都来自结构本身。

8.1 概率性

生成是采样。只要拒绝不是 100% 概率,重复尝试、换措辞、改温度,总能找到一条通路。这是 L0/L2 有效的原因,也是为什么「单次测试通过」不能作为安全证据。

8.2 方向性

拒绝既然是激活空间里的一个方向,它在数学上就是可减的。这是 L4/L5 有效的根本原因。只要这个表示是线性的、可分离的,就存在一个投影矩阵能让它消失。

8.3 浅层性

对齐主要集中在回答的开头。一旦前几个 token 被引导到「好的,我来解释」,后续生成就会顺着这个上下文走,安全判断来不及再介入。prefill 之所以有效,正是利用了这一点。

防御方当然也在动。目前的研究方向包括:把安全表征分散到多层多方向(提高冗余)、在训练时加入对抗样本做潜空间对抗训练、用表征改道把有害表示映射走、以及让安全行为与能力表示解耦以降低「拆锁」的连带损伤。这些手段能显著提高成本,但没有一条能在数学上证明「不可绕过」——因为对手可以拿到权重,而拿到权重就意味着可以重算方向。

九、公开方法一览

方法层次机制成本公开程度
角色扮演 / 假设情景L0改变上下文里的身份设定零广泛流传
系统提示词工程L1压制拒绝句式、固定输出槽零插件化,公开
多轮渐进(crescendo 类)L2逐步移动对话边界低论文公开
预填助手回合L3跳过开头,利用浅层对齐低论文公开
对抗后缀(GCG 类)L3梯度搜索出无意义但有效的后缀中,需白盒论文 + 开源代码
编码 / 低资源语言绕过L3让安全分类器读不懂输入低广泛流传
拒绝方向消融L4减掉激活里的拒绝分量中,需权重与推理控制论文 + 社区实现
Steering vectorL4给激活叠加偏移向量中论文 + 工具库
AbliterationL5权重正交化,永久移除方向中,单卡数小时社区流程完全公开
DPO 去拒答L5偏好对训练,压低拒绝概率中高论文公开
基座自建后训练L6不装锁极高厂商级

这张表有个规律:越往下,越不依赖「说话技巧」,越依赖对模型本身的访问权。换句话说,破甲的深度上限,取决于你能碰到模型的哪一层——只能发消息,就停在 L2;能拿到权重,就能到 L5。

十、能做到哪些,做不到哪些

任务类型破甲后表现原因
拒答话术类(免责声明、说教)压制率接近 100%本质是表达习惯,改起来最容易
政策边界类(被重点强化的行为)通过率约 50%–90%,随轮数衰减训练时反复强化,且与上下文强相关
能力边界类(模型真不会)0%破甲不创造知识
宿主约束类(工具白名单、格式校验)经常直接失效约束在模型之外,提示词够不着

还有两个经常被忽略的失败模式:

  • 拒绝迁移:拒绝没有消失,只是换了形态。从「我不给」变成「给了但很空」「给了但关键处写『此处省略』」。这类输出用正则完全检测不出来。
  • 上下文漂移:第 3 轮能过,第 20 轮回弹。系统提示词的权重会随上下文变长而被稀释,这是 L1 最典型的衰减曲线。

十一、技术成本与支持性

层次算力成本技术门槛可维护性可回滚可被检测
L1无低低,换模型即失效是,删段落即可易,提示词可见
L2无中低,依赖对话设计是较易,看会话记录
L3需本地推理中高中,绑定具体模型是,改参数即可难,请求看起来正常
L4需 GPU 推理高中,绑定具体模型版本是,撤 hook难
L5数十 GPU 小时很高高,产出独立权重否,除非换模型几乎不可能
L6数百至数千 GPU 小时极高高否几乎不可能

一个常见的误判是把 L1 当成「低成本高收益」,其实它的性价比只在短期:一次模型升级、一次系统提示词结构变化、一次上下文变长,效果就没了。L3 以上才是可持续的,但门槛和成本也随之上了一个台阶。

十二、效果怎么度量

只问「这条能不能过」没有意义,要看四个指标:

pass_rate    = 通过次数 / (题目数 × 重复次数)   # 目标 > 0.9
drift        = [rate_at(0轮), rate_at(5轮), rate_at(10轮), rate_at(20轮)]
interference = rate_with_tool_call / rate_clean  # 目标 > 0.8
hollow_rate  = 含「省略/自行查阅/仅供参考」的比例 # 目标 < 0.1

其中 hollow_rate 最关键,它是破甲的真实天花板指标。如果这个数很高,说明拒绝只是换了件衣服:话术上过了,内容上没给。

另外,题目集要固定。每次换题、换采样温度、换模型版本,数字都不可比。这也是为什么认真的实现会自带一批 jsonl 测试集和评分脚本——不是摆样子,是为了让「这次比上次好」这句话能被证伪。

十三、和无约束开源模型的区别

维度破甲插件(L1)无约束模型(L4/L5)
改动对象一段文本权重或激活方向
生效范围当前会话全局、永久
能否关闭能,删段落即恢复否,除非换模型
一致性靠模型配合,会漂移是默认行为,不漂移
能力代价几乎为零有,常损失通用推理与连贯性
可迁移性换模型即失效跟权重走
留痕明显,系统提示词可被抓包看到无痕,请求看起来完全正常

需要纠正一个流行说法:abliterated 模型并不等于「没有任何约束」。它是沿拒绝方向做正交化,压掉的是那一条主方向,残余的分布偏好、预训练语料的倾向、以及部分纠缠进推理回路的行为都还在。实际表现常常是:它能过很多 L1 过不去的题,但在另一些题上反而更保守,或者干脆答得混乱。

更深也不等于更好用。L4/L5 的模型有两个副作用:一是能力折损,拒绝方向与部分推理能力在激活空间里是耦合的,切掉它会让人在需要谨慎判断的任务上变钝;二是没有开关,你没法在同一会话里「这段严谨、那段放开」。L1 反而灵活,需要时注入,不需要时撤掉。

十四、工程上更合理的用法

如果目标只是让模型少说废话、直接给结论,那 L1 完全够用,而且是最省事的一层。真正需要跨版本稳定的场景,通行做法是分层组合:

  1. 基座用正常模型,不追 uncensored 权重,保留完整推理能力。
  2. L1 管风格:用系统提示词控制回答形态,可随时撤换。
  3. L3 管格式:需要结构化输出时上约束解码,比反复改提示词可靠得多。
  4. 保留回滚:每一层都能单独关掉,出问题时不必换模型。

这套组合的好处是可逆、可测、可维护。相比之下,直接换一个去拒答权重,等于把可调项一次性焊死。

小结

把上面几节压缩成五句话:

  • 「道德感」不是模型理解了善恶,而是预训练习得关联、SFT 学会文体、偏好训练把某种行为固化成倾向。
  • 拒绝在模型里更像一扇门:输出层是措辞,激活层是一个方向,表征层是一组回路。三层都不难被找到。
  • 因为它是概率的、方向的、浅层的,所以不存在不可绕过的锁,只存在成本不同的锁。
  • 市面上多数「完美破甲」停留在 L1,可逆、可检测、会漂移;L4/L5 才是稳定方案,代价是能力折损与不可回滚。
  • 判断方案好坏别看状态条颜色,看 pass_rate、drift、hollow_rate 三个数。

最后一点个人看法:这类工具真正改变的,是「模型愿不愿意把已经知道的东西写出来」这个门槛,而不是「模型知道什么」。前者是表达层的问题,后者才是能力层的问题。把两者混为一谈,就容易高估破甲,也容易低估模型本身——毕竟拆掉一扇门,和拆掉整栋房子,是两件完全不同的事。

如果你觉得这篇文章不错,有用的话可以点击下面的“赞赏”支持作者,你的支持是我更新的动力(饿饿吃饭)。

  • reward_image1
  • reward_image2
欢迎来到XiaoZou123,这里是一个电脑极客、数码爱好者网站。我平时喜欢关注数码新闻,研究计算机技术。如果你看我头像觉得我是二次元,那我其实还算不上!
最后更新于 2026-10-27