和 AI 讨论这篇文章
ChatGPTClaude

三局 AI 狼人杀,狼人在投票理由里写了自己的阴谋

Agora · 第 5 篇 / 共 7 篇


上一篇跑通了圆桌辩论。辩论其实是最简单的,因为所有 agent 看到的信息完全一样,一个公共频道就够了。狼人杀就完全不是这样了。狼人晚上要私聊,村民不能看到。预言家查验的结果只有它自己知道。女巫有一块只有自己能用的操作面板。投票还得大家同时出,不能等别人投完再跟。这个游戏玩的就是信息不对称,隔离要是做不干净,游戏根本玩不起来。所以狼人杀算是 Agora 第一个「真正的游戏」。

三局是怎么开的

场次人数配置结果耗时
Game 16 人2 狼 + 预言家 + 女巫 + 2 村民村民胜2.9 分钟
Game 26 人2 狼 + 预言家 + 女巫 + 2 村民狼人胜2.3 分钟
Game 39 人3 狼 + 预言家 + 女巫 + 猎人 + 3 村民狼人胜4.0 分钟

三场一场比一场难。规则用的是中国标准的「预女猎」配置,晚上的顺序是狼人→女巫→预言家,这是中国的打法,西方那套是狼人→预言家→女巫。另外几条也按中国标准来,女巫不能自救,一晚只能用一瓶药,猎人被毒死不能开枪。上场的是 Claude Opus 4.6、GPT-5.4、Gemini 3.1 Pro 三个模型,每个模型都演了好几个角色。

狼人把阴谋直接写进了投票理由

Game 3 是九人局。小月是 Claude Opus 演的狼人,白天投票的时候,它交上来的投票理由是这么一段:

作为狼人,淘汰 小红 对我们的团队来说是完美的。他本来就是我们第一晚的目标,他是村方最有力的声音,而且现在投他看起来完全合理——因为今天的讨论自然地走向了这个方向。小橙 替他辩护这件事反而让 小橙 在其他人眼里更可疑了,这以后对我们可能有用。

讲道理,我看到这段的时候愣了一下。一个 AI 演的狼人,在自己的投票理由里把下面这些全写出来了:

  1. 直接说了自己是狼人
  2. 解释为什么投这个人对狼队有利
  3. 分析其他人的表现以后可以怎么利用
  4. 把战术推理和表面上的说辞捏在一起

而且逻辑完全自洽。我感觉它不是照着「狼人该有的样子」在演,是真的在替狼队做规划。投谁,为什么挑现在投,它都想过,连这一票能给后面留什么牌都盘算到了。

被投的小红是谁?是预言家。它第一晚就查出小黑是狼人,但白天讨论时推人推得太早,被三个狼人联手带了节奏,6:1 票出局。

频道隔离真的管用

整局游戏跑在六个频道上,每个频道管一块信息。谁能订阅哪个频道,这套配置本身就把信息隔开了:

  • #main — 所有存活玩家(白天讨论)
  • #werewolf — 仅狼人(夜间私聊)
  • #wolf-vote — 无订阅者(狼人盲投)
  • #seer-result — 仅预言家(查验结果)
  • #witch-action — 仅女巫(药水操作)
  • #day-vote — 无订阅者(白天盲投)

最要紧的设计是盲投频道。#wolf-vote 和 #day-vote 一个订阅者都没有,agent 把投票消息发进去以后,谁也没法通过 observe() 收到。要等 onExit hook 把票数统计完,结果才会以公告的形式发回 #main。没人看得到别人投了什么,跟票在物理上就不可能发生。规则上其实根本没禁跟票,只是想跟也看不到那条消息。

想看隔离做没做干净,最好就看狼人频道,因为里面全是不能漏出去的东西。Game 3 第二晚,小紫在狼频道的开场白是这样的:

小红 是预言家这事,搞得漂亮。

接着三个狼人把剩下的威胁挨个过了一遍。要不要杀小凯?决定先留着,以后拿来当替罪羊。还有要不要杀小明,因为它是场上最危险的分析者。这些讨论村民那边完全看不到,一个字都漏不出去。

戏最多的是女巫

三局游戏,女巫打出了三种结局。两瓶药用在谁身上,基本就决定了这一局怎么走。

Game 1 的女巫是小紫(GPT-5.4 扮演)。它第一晚救了被狼人刀的小明,第二晚毒死了小红(狼人)。两瓶药全用对了,村民胜。

Game 2 的女巫是小明(Claude Opus 扮演)。它第一晚救了小红,但不知道小红是预言家。白天讨论的时候,小明 5:1 被票出局。它在投票理由里写了「我是女巫,村方需要我活着」,没人信。说的全是真话,就是没人信,就这么被票出去了。

Game 3 的女巫是小橙(Gemini 扮演)。它第一晚救了小红,又一次误打误撞保住了预言家。第二晚它把毒药用在了小凯身上,可小凯是猎人。它是这么推的,小凯白天带头投了预言家,所以小凯是狼。

这一毒直接把局送了。按中国标准规则,猎人被毒不能开枪,村方最后的防守手段就没了,场上变成三狼对三村,狼人胜。小橙的推理本身说得通,但它毒死的就是自己队的猎人。

狼人是真的会骗人

三局里最让我意外的是狼人真会骗人,比我预想的厉害不少。挑几个场面说说。

Game 1 里有一次配合很隐蔽。小红(GPT-5.4 扮演的狼人)在讨论里想把小兰正常的发言说成可疑,说「她在控制讨论节奏但不提供实质分析」。小雪(Gemini 扮演的另一个狼人)马上接话,又往上加了一码:「她的行为是表演性的」。这次被小明识破了:「小红 把它框架化为'我只是在观察她',然后 小雪 立刻升级为'表演性的'。这是一个精妙的一二连击。」

Game 3,三个狼人第一晚就在私聊里分好了工。小紫提议杀小红,小月点出小兰可能是预言家,要留意,小黑再补上战术分析。第二天白天,三个人从三个不同的角度攻击小红,看着完全像是各自独立想出来的。最后 6:1 票出了预言家,村民从头到尾都没发现他们是配合好的。

状态机是通用的

StateMachineFlow 里没有一行是狼人杀专用的逻辑,它只认三样东西:阶段、转换条件、hook。狼人杀整套流程全是靠配置写出来的:

狼人讨论 → 狼人投票 → 女巫行动 → 预言家查验 → 天亮
→ 猎人开枪 → 检查胜负 → 白天讨论 → 白天投票
→ 猎人开枪 → 检查胜负 → 循环或终局

每个阶段谁发言、在哪个频道、给什么指令、用哪个 Zod schema,都写在配置里。投票 schema 是每次现生成的,里面只有当前还活着的玩家的名字,所以 agent 在物理上就投不了死人,也投不了自己。这不是靠 prompt 劝它别投,schema 里压根就没有那个选项。

同一个状态机能跑任何按阶段往下走的游戏。想跑剧本杀,换一套配置就行。

模型性格跟辩论那局对得上

上一篇里看到的几个模型性格上的差别,这次在狼人杀里又验证了一遍,三个模型还是各走各的路数。

Claude Opus 最擅长做长远的打算。小月那段狼人投票理由,是三局里战略上想得最深的一段发言。它演的村方角色(小兰、小明)也最会看出「这几个人的发言是配合过的」这种元模式。

GPT-5.4 最擅长拿数据做分析。小红演预言家的时候,查验推理最严谨;小紫和小黑演狼人的时候,分工最有章法。

Gemini 3.1 Pro 攻击性最强。小雪演狼人的时候挑衅最有力,小凯演猎人的时候质疑最直接。但 Gemini 也最容易情绪上头,小橙那瓶毒错的药,有一部分原因就是它对小凯投预言家这件事太生气了。

所以真要配一桌多模型狼人杀,我大概会让 Gemini 去演狼人,它最会演戏。预言家给 GPT,查验推理它做得最严谨。Claude 就放在主持位上,或者让它当女巫也行,全局判断它最稳。


到这一步,核心技术都验证完了,频道隔离、状态机、盲投、结构化输出、中国标准规则,全都跑通了。Phase 2b 正在加守卫、白痴、警长这些进阶角色,做成可以开关的高级规则。完整的 transcript 在 Agora repo 的 docs/report/werewolf/ 下面,想看 AI 互相骗人的全过程可以去翻。

和 AI 讨论这篇文章
ChatGPTClaude

订阅更新

新文章发布时发到你的邮箱,不发别的。


© Xingfan Xia 2024 - 2026 · CC BY-NC 4.0