大学毕业之后,想凑齐八到十二个人打一局完整的狼人杀,几乎成了奢侈。可这游戏真正迷人的地方,从来不只是社交本身——而是那套逻辑推演、话术博弈,以及在只言片语里反复确认谁在说谎的过程。
Wolfcha 想还原的,正是后面这部分。
它的设定很简单:一桌人里只有你是真人,其余七到十一个座位,全部交给大语言模型扮演。我原本以为这又是一个”AI 玩 XX”的演示项目,点开扫两眼就关掉。结果连开了四局,每局结束都想再来一次。
让它和别的项目拉开距离的,不是某个炫技的功能,而是一个反直觉的设计选择。
它没有把 AI 做得更聪明,而是刻意让它犯错
大多数”AI 玩游戏”的项目,思路是一致的:写一段冗长的系统提示词,把规则讲清楚,再三强调”请认真推理”,然后期待模型表现得足够精明。
Wolfcha 走了相反的方向。开局之前,每一个 AI 玩家都会被随机分配若干认知偏差——过度相信预言家之间的对跳关系、容易被发言的语气带节奏、记不住前一晚的刀口、被质疑就上头、或者干脆是个关键时刻就消失的划水型。
这些缺陷不是模型能力不足的副产物,而是被显式写进配置里的。源码中有一个名为 mistakePattern 的字段,含义直白:认知缺陷。
效果是立竿见影的。你坐在一桌”普通人”中间,有人判断精准,有人满嘴跑火车,有人在最该站出来的时候掉了链子。你会真切地对着屏幕产生情绪,想让某个号别再发言了。
而这种”想让 7 号闭嘴”的冲动,恰恰是狼人杀的乐趣所在。一桌完美无瑕、滴水不漏的 AI,反而会让游戏失去张力。
复盘环节,把单机游戏变成了一场社群体验
真正让我停不下来的,是每局结束后的点评。
它不是一句冷冰冰的”系统评价:A+“,而是这一桌玩家各自用自己的口吻,给你写下评语、贴上标签、颁出 MVP 与 SVP。预言家首夜被刀,会得到”天妒英才”;拿到狼牌却装预言家骗走警徽,是”演技大师”;猎人开枪带走了好人,叫”擦枪走火”;女巫救下的队友恰好是狼,则是”助纣为虐”。
读这些标签的时候,那种感觉很难形容——它不像一台机器在结算分数,更像狼人杀群里几个相熟的老玩家在复盘你这一局的得失。
值得一提的是,奖项系统会优先把人类玩家评上。这看似是一个微不足道的细节,却让整场游戏的体感发生了变化:一个本质上是单机的产品,被这套互评机制悄悄推向了社群体验的方向。
为什么这些 AI 听起来像不同的人
翻看源码会发现,每个 AI 玩家其实由两层独立的人格构成。
表层是 Persona,决定这个角色说话的口吻、用词习惯、被质疑时的反应方式,以及拿到狼牌后如何表演。深层是 PlayerMind,规定这个人打牌时相对稳定的性格底色——敢不敢诈、记忆偏好、风险承受能力,以及在场上的话语权重。
于是同一桌里,可能坐着一位说话直、归票狠的出租车老司机,一位爱打比方、容易被情绪牵着走的互联网产品经理,和一位平时谨慎话少、关键时刻才显露强势的应届毕业生。每个人的发言都由模型实时生成,但被人格设定牢牢框住——底层模型再强,说出来的话也必须符合”这个人本来就这么讲话”。
更进一步,这一桌十几个座位可以分别由不同的大模型驱动,DeepSeek、Qwen、Gemini 在同一局里同台。看一桌出自不同模型的 AI 互相试探、彼此甩锅,本身就是一种观察的乐趣。
这套双层人格的实现,大概是我见过的”让模型扮演角色”里,工程上最成熟的一种。
规则的完整程度,超出了一个 demo 应有的水准
狼人杀的乐趣有一半藏在规则的细节里,而 Wolfcha 把这些细节几乎都还原了。
八种角色一应俱全:村民、狼人、预言家、女巫、守卫、猎人、白痴、白狼王。守卫与女巫在同一夜救同一个人会”奶穿”,被救者反而死亡;警长拥有 1.5 票权重;平票之后进入 PK 发言,两位候选人重新辩论再投;白狼王可以在白天自爆并带走一人,跳过当轮投票;白痴被票出后翻牌免死,但失去投票权;猎人若死于毒杀则不能开枪。
源码里连阵营都做了严格区分。这种程度的完整度,已经不像一个临时拼凑的黑客松作品,而更接近一个可以正式上线的产品。
几处见功力的工程取舍
抛开玩法,单从工程角度看,这个项目也有不少值得借鉴的判断。
它按用途给模型温度分了档:日常发言用 1.1,让语气更接近真人;技能决策用 0.4,保证理性;赛后复盘用 0.1,追求准确。一个系统、五种人格,这比用统一温度叠加超长提示词的做法要克制得多。
为了应对模型偶尔不守格式的输出,它设计了一整套 JSON 容错流水线:先剥离思维标签,再提取 markdown 围栏,修补悬挂的引号,做容忍性解析,实在不行还有按句号切分的兜底。一路降级下来,模型偶尔出格也不会让整局崩溃。
此外,长提示词被分块缓存,不变的部分缓存一小时以节省 token;玩家在 AI 思考过程中切换菜单、修改设置或重新开局时,旧任务会被优雅地自动取消,这是回合制游戏处理状态竞态的经典解法。最值得玩味的是它的复盘策略:投票准确率、查验次数、是否奶穿这类客观事实交给规则层计算,绝不让模型臆测;评语和奖项这类主观评价才交给模型,保留温度。
项目以 MIT 协议开源,README 提供中英双语,附带 Dockerfile。如果你也在做 AI 对话类产品,character-generator.ts 与 game-analysis.ts 这两个文件值得专门读一读。
项目地址在 github.com/oil-oil/wolfcha,想直接体验可以打开 wolf-cha.com。
如果想自己跑一局,一份够用的部署方案
这个项目可以本地运行,但不太建议用消费级单卡硬扛。一局八人,每局要完成一次角色生成的大调用、每天八到十一段发言与技能决策、外加赛后的复盘,整局大约需要三十到六十次模型调用,token 消耗在八千到一万五千之间。日常玩,单张 4090 跑 7B 或 9B 量化模型已经够用;想要更舒服的体验,可以上 27B,或带推理蒸馏的版本。
我自己一直用共绩算力,原因有几个:常用的预制服务比较齐全,VLLM、Ollama、llama-factory、ComfyUI 都能开箱即用,省去自己配环境的麻烦;模型市场也比较全,Qwen3.5 系列、IndexTTS、CosyVoice 等都能直接取用;它支持 K8S YAML 导入,对 Wolfcha 这种带 Dockerfile 的 Next.js 项目尤其友好;更实际的是可以按局开关,玩完关掉推理容器、只留前端,月度成本能压到几十块。(顺带说明,这不是广告投放,是我用过一段时间的真实体验。)
下面给三档配置,按需取用。
入门体验,单张 4090。 推理引擎用 VLLM;主模型选 Qwen3.5-9B-Claude-4.6-Opus-Reasoning-Distilled-v2;语音用 IndexTTS;再加上 Wolfcha 自己的 Docker 镜像即可。需要说明的是,这个 9B 模型蒸馏自 Claude 4.6 Opus 的推理链路,作者自报在 benchmark 上更高、token 消耗更省;就我这几局的体感而言,它确实比原生 9B 稳一些,但这毕竟是社区微调、数据为作者自行公布,不宜当成官方结论看待。
进阶舒适,四张 4090。 推理仍用 VLLM,主模型换成 Qwen3.5-27B;若追求极致质量,可改用对应的 Reasoning-Distilled-v2-GGUF 版本;语音切到 CosyVoice,并用 llama-factory 为角色生成提速。
继续折腾,给画面加上图像生成。 实时表情立绘可用亚秒级出图的 Z-Image Turbo,关键节点的高质量立绘交给 Qwen-Image,偏写实的风格用 Flux.1-Krea,若想让系统读懂聊天截图来做总结,再补一个 Qwen3-VL 多模态模型。
部署本身并不复杂:先开容器、挂载显卡并选好 VLLM 预制服务,从模型市场加载主模型,开启 TTS 服务,再导入 K8S YAML 部署主应用、把 LLM_BASE_URL 指向 VLLM,就可以开局了。想省成本的话,可以让角色生成和发言走不同的 endpoint,复盘环节换用更小的模型,玩家发言不开 TTS 也能再省下约三成开销。需要提醒的是,模型市场的镜像体积和型号更新较快,发文之前最好按当前页面再核对一遍。
写在最后
Wolfcha 真正打动我的,不是它在技术上有多新,而是它的设计哲学始终在一条正确的线上:承认 AI 并不完美,把认知缺陷显式写进系统,游戏才有了人味;让规则层负责事实、模型层负责温度,输出才能既不胡说又不冰冷;用玩家圈内的黑话沟通,准确命中了核心用户;而那套 AI 互评机制,则把一款单机游戏,变成了一种可以反复回味的社群体验。
它提醒我一件容易被忽略的事——在很多 AI 产品里,难的从来不是把模型做得更聪明,而是知道什么时候该让它收着一点。
你上一次和一桌”假人”玩到忘记时间,是在什么游戏里?
#AI产品 #AIAgent #狼人杀 #开源项目 #大模型 #LLM #算力 #产品经理 #独立开发