缪毅翔
07 — 单页应用 / MAFIA

AI 狼人杀 Mafia

Vue 3 · LLM · 9 人局 · 房间系统

9 个席位,1 个主持人,LLM 驱动的 AI 对手。能复盘你发言逻辑的那种。

当前版本 0.2.0 形态 纯前端 SPA 角色 产品 / 全栈 / AI 调教
AI 狼人杀
01 — WHY

为什么做

市面上 9 人局的狼人杀工具大多是"主持人 + 玩家发言"两层,AI 通常只是"投个票"或"瞎聊"。想做一个能复盘发言逻辑、能持续扮演角色的对手,LLM 是唯一可行路径。

狼人杀的魅力在于信息博弈:每个人手里都有不对称信息,靠发言和投票做推理。我自己打了一年多,深知一个"会思考的 AI"和"会说话的 AI"在体验上差多远。

目标:让 AI 不仅能说话,还能基于自己"已知信息"做推理、被说服、撒谎、调整策略。
02 — WHAT

做了什么

9 人房间系统

创建房间、邀请码加入、主持人生成、角色分配,全部前端完成。

LLM 驱动的 AI 对手

每位 AI 玩家都独立调 LLM,输入当前发言历史 + 自己的角色信息,输出思考 + 投票。

角色扮演稳定性

通过 prompt + 上下文约束,让 AI 不会"串号"或"破角色"。

投票 / 发言节奏

白天讨论 + 投票 + 夜晚技能,按标准 9 人局规则跑完整流程。

复盘系统

每局结束展示所有玩家的发言 + 投票,标出可疑逻辑。

角色配置

标准 9 人局(狼人×3 / 预言家 / 女巫 / 猎人 / 守卫 / 村民×2),可扩展。

03 — HOW

技术上怎么做

模块技术作用
前端Vue 3 + Vite房间 UI、发言气泡、投票面板
状态管理Pinia房间状态、玩家列表、游戏阶段
AIMiniMax M3 + Prompt 模板每位 AI 玩家独立推理
角色扮演System prompt + few-shot约束 AI 不串号、保持角色
投票逻辑规则引擎白天投票、夜晚技能结算
复盘事件流 + 时间线每局结束展示完整过程
04 — DIFFICULT

踩过的坑

  • AI 串号:AI 玩家 A 知道的信息出现在 B 的发言里。最早是 prompt 没隔离角色,后来给每位 AI 单独构造上下文 + system prompt 锁死角色身份才解决。
  • AI 太"诚实":狼人 AI 总是暴露队友,因为 prompt 没说"你是狼人阵营,目标是赢"。改成在 system prompt 里写明阵营 + 目标 + 可见信息边界。
  • 投票逻辑和发言割裂:AI 发言和投票不一致(说 A 可疑但投 B)。改为同一轮 LLM 调用同时返回"思考 + 发言 + 投票",强制三段对齐。
  • 9 人局长上下文:到第 5 轮发言历史就 4k+ token,模型开始遗忘早期信息。压缩策略:保留每轮"投票 + 关键发言 + 死亡信息",丢弃聊天细节。
05 — NEXT

后续方向

  • 更长的局:从 9 人扩到 12 人局,验证 prompt 在更大角色池下是否稳定。
  • AI 记忆:让 AI 玩家在跨局时记住"这个玩家上局总是先投谁",慢慢形成"对手画像"。
  • 语音版:接入 TTS,让发言是真实的语音而不是文字气泡。
  • 多人联机:现在是单机对战(玩家 1 vs AI×8),下一步想加 4 人 + 5 AI 的真人对战模式。
← 全部作品 去玩 → 联系合作