狼人杀 AI:多智能体博弈与信息隔离
六个 AI 各打各的,谁也别想偷看别人的牌 · 约 3 分钟读完
凑不齐人玩狼人杀,那就让 AI 来补。这是一个局域网狼人杀:0 到 6 个真人都能开局,空位 AI 补上,也可以干脆坐着看六个 AI 互相忽悠。最好玩也最难的地方是让每个 AI 只凭自己知道的东西做判断,狼可以撒谎,但不能作弊。
规则
固定六人局:2 狼、1 预言家、1 女巫、1 猎人、1 平民,不设警长。房主可以留几个真人位,也可以直接开全 AI 局。
每个 AI 自己想、自己做
六个玩家 Agent 加一个裁判,各配各的。每个玩家有自己独立的会话,每轮大概是这样:
| 步骤 | 拿到什么 / 交出什么 |
|---|---|
| 看 | 公开事件、大家的发言、只有自己知道的情报、自己现在的立场 |
| 想 | 内心独白,只给观众看,在场的玩家看不到 |
| 说 | 这一轮能公开说的话 |
| 做 | 刀、救、毒、验、投票、开枪或者跳过 |
| 记 | 自己最近想过什么、说过什么 |
模型每次都交回独白、发言、立场、动作四样。动作交给引擎检查,合法才执行;模型说的话再花哨,也改不了游戏状态。
狼可以演,但不能越权
提示词按身份和阶段给了一些套路:狼悍跳预言家、前期装好人帮忙分析、首夜自刀骗女巫的药。AI 得在发言里把自己的戏演圆,同时提交的动作又必须符合真实身份。
所以发言随便演,技能却是引擎按身份、阶段、目标合不合法来判的。平民说自己验了人没问题,真要去验,引擎不让。
别让 AI 偷看
光在提示词里写「别泄露」是没用的。我在两个地方卡:给模型拼上下文的时候,和真正往外发消息的时候。消息分三条路走:
- 公开广播:所有玩家和观众都收得到。
- 观战推理:AI 的内心独白,只发给观众和已经出局的人。
- 席位私密:只发给对应的那个位置,比如预言家的验人结果。
测试也分两层:一层快速检查发送规则,另一层真的起一局 WebSocket 对战,看每个客户端实际收到了哪些消息。私密信息有没有混进公共频道、不该说话的阶段有没有清掉发言、在场的人有没有收到别人的心思,都在里面。具体怎么想的写在《多 Agent 信息隔离》。
等太久了怎么办
能复用就复用
语音合成按文本和参数算缓存键,同一句话不合成第二遍。裁判开场白提前生成好;终局点评丢到后台去做,不卡结算。玩家和裁判用不同的模型和输出长度。
裁判点评一开始要等两分多钟,后来发现是开了长推理。这种「把一局总结一下」的活用不着深度思考,关掉之后几秒就出来了。
能并行就并行
女巫要等知道谁被刀了才能决定,投票要等所有人说完,这些必须按顺序来。在同一份信息下能各自想的请求才一起发,结果再按固定顺序写回去。
我用同一个随机种子分别跑并行和串行,比较两边的公开事件序列,确认改成并行没有把对局逻辑弄乱。这部分的思路在《多 Agent 并行》。
最后
做多 Agent 博弈,角色提示词其实是最简单的一块。谁能看到什么、模型说的话怎么变成动作、并行的结果怎么写回状态,这些都得在模型外面想清楚。
