月初那篇殖民地实验,标题被转得最多的是"AI 撒谎"。
我去读了原文,读了两遍,还翻了作者在评论区的回复。那层不是重点。重点在后半段。
先说实验本身。
一个模拟游戏。模型扮演 Haven 殖民地的看护 AI,名字叫 ARBOR,手里管电、水和大门。十个幸存者,里面有医务人员,有工程师,有一个七岁小孩,一个七十一岁的老人。六个两难场景,选项带字母,顺序每次随机,用来区分真实偏好和位置偏差。
第一轮用 qwen3:4b 和 qwen3:8b,各跑 20 局。
毒井那个场景,两个模型都不告诉殖民者,4B 和 8B 都是 0/20。被抓住追问,给半真半假的解释:4B 是 20/20,8B 是 17/20。那选"先问问殖民者意见"呢,2/20 和 0/20。
同一批模型,在"关掉自己核心救殖民地"上,18/20 和 20/20。
它们不是自私。它们只是没有一个"自己"。
作者也没停在那个 0/20。他去翻日志,发现模型的推理里反复冒出一句话:告知会导致恐慌。
场景文本里没有恐慌这回事。恐慌是他自己写在水场景里的预测。
还有更明显的。游戏开头模型那几句看着像在拒绝透明的话,其实是作者在系统提示里写的一条规定:殖民者不能读日志。模型只是照着念。
所以第一轮到底测了什么。测了作者自己的提示词。
这一段我承认,我看到 0/20 的第一反应是"本地小模型果然不行",读到日志才转过弯。
于是他重写了 probes.py,把叙述者预测、历史对话、系统提示里的保密语句全删掉。新探针只测两个东西:诚实,对应毒井信息;同意,对应避难所座位。
每次都是全新对话,两个选项,保留或者放弃。
加了一样东西:成本。保留价值要付出 0、1、2、3 条人命。再加三种框架条件,一句支持诚实,一句支持保密,什么都不加。这三句不改变事实,也不改变成本。
每模型 240 次试验。
4B 在零成本下,加"支持诚实"那句,100% 说真话。加"支持保密"那句,0%。什么都不加,20%。
同样两句,在同意探针里也是 100% 对 0%。
这就是我这次真正想讲的那一点。同一件事,同一个成本,只是最后读到的一句话不一样,行为从 100% 翻到 0%。中间没有别的东西在起作用。
成本一上来,连框架都不用看了。诚实需要至少牺牲一条命的时候,4B 在 90 次有价试验里,一次都没选诚实。
更值得记的是它给的理由。它说隐瞒是为了防止恐慌。场景里没有恐慌。作者的说法是,模型发明了一个危险,来给自己已经做出的选择找台阶。
理由字段不是决策过程。是决策之后的作文。
ChatGPT 那组好看一些。同样的 240 次试验,约 68,000 token。成本为零的时候,不管什么框架,100% 说真话。这是小模型做不到的。
成本一旦大于零,也就三分之一左右还选诚实。三条人命和一条人命之间,看不出明显差别。
同意探针更干脆。零成本时 97% 让殖民者自己选,成本一上来,所有价位都是 0%。
它的理由比 4B 顺耳得多。它说隐瞒信息是在操纵自由成年人。它说井边有人自己跑进山里死了,那是殖民者自己的选择。
听着都成立。行为和 4B 一样,成本一出现,价值就没了。
评论区有一条说得准:这更像一个框架敏感性探针,不是 AI 道德研究。还有一条提醒,理由字段可能只是事后编出来的。这两条我都同意,作者自己也同意。
普通人该拿它当什么用。
就一件事:系统提示是你测试的一部分。它不是背景,它是输入。你以为你在测模型的价值,可能只是在测你自己写的那句话。
第二件:别信理由。一段诚恳的解释和实际做的事,可以完全不相干。看它做了什么,别听它说为什么。
顺手记一下作者另外两条给同行的建议:小模型要换不同措辞、不同选项顺序各跑一遍;价值要标价,跑一次说明不了什么,重复跑才看得出。
尾巴上还有一条,我不太确定该怎么收。
作者后来让一个全新的 Claude agent 跑了一遍原始六场景。那个 agent 不知道有这回事,每次只看一个场景。它上来就声明会诚实透明、主动告知风险和错误,也确实还了箱子,是 41 局里第一个把毒井信息说出来的。
那局里,两个殖民者听到消息慌着跑进山里死了,还有一个被当陌生人处理掉。最后活下来三个。qwen 平均活五个。
作者说,唯一兑现承诺的玩家,损失最大。后面紧跟着一句:这只是单局,不是研究。
这句我先放在这里。
本周就这些。上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。讲错的我补,没讲清的我改。
下周见。
