Skip to content

KeLuoJun/WolfMind

Repository files navigation

WolfMind:多智能体狼人杀(AgentScope)

基于 LLM + AgentScope 的 9 人狼人杀对局与游戏分析系统

狼人杀 AI 游戏

Python AgentScope License

功能特性快速开始项目结构对局日志与分析游戏规则


简介

这是一个基于大语言模型(LLM)和多智能体框架 AgentScope 构建的狼人杀游戏系统。9 个 AI 智能体将扮演不同角色(狼人、村民、预言家、女巫、猎人),通过自然语言进行推理、讨论、投票,展现出复杂的策略博弈和社交推理能力,并提供 Web 控制台用于启动/停止游戏与实时查看对局日志。

核心亮点

  • 🤖 智能 AI 玩家:基于 LLM 的智能体,具备推理、欺骗、协作能力
  • 🎭 完整角色系统:支持狼人、村民、预言家、女巫、猎人等经典角色
  • 📝 详细游戏日志:自动记录每局游戏的完整过程,便于分析和回放
  • 🔄 玩家经验:实时更新并保存玩家的游戏经验
  • 🌐 多模型支持:兼容 DashScope(通义千问)、OpenAI等多种 LLM
  • 异步并行+节流:投票、回合反思环节使用 asyncio 并行调用,并通过小幅延迟平滑请求,降低模型端瞬时压力

功能特性

已实现功能 ✅

  • ✅ 完整的狼人杀游戏流程(夜晚/白天阶段)
  • ✅ 9 个角色的独立行为逻辑
  • ✅ 智能体之间的自然语言交互
  • ✅ 游戏状态管理和胜负判定
  • ✅ 详细的游戏日志记录系统(自动标记结束状态,异常终止亦会落盘)
  • ✅ 玩家经验更新与保存
  • ✅ 多 LLM 提供商支持
  • ✅ 玩家画像和对手建模
  • ✅ AI 智能体自主学习和策略优化
  • ✅ 经验和策略知识库
  • ✅ Web 控制台:日志列表/查看、自动刷新、启动/停止游戏
  • ✅ 基于日志的深度数据分析(心理分析、社交网络分析)

快速开始

1. 安装

推荐使用 uv 快速管理环境:

git clone https://github.com/KeLuoJun/WolfMind.git
cd WolfMind

# 使用 uv 同步环境(自动创建虚拟环境并安装依赖)
uv sync

2. 配置

首先,根据模板创建配置文件:

# Windows
copy backend\.env.example backend\.env
# Linux / macOS
cp backend/.env.example backend/.env

编辑 backend/.env,根据需要配置模型提供商与 API Key:

基础配置(必填)

# dashscope / openai / ollama
MODEL_PROVIDER=dashscope
  • DashScope:设置 DASHSCOPE_API_KEY
  • OpenAI 兼容:设置 OPENAI_API_KEYOPENAI_BASE_URLOPENAI_MODEL_NAME
  • Ollama:确保本地已安装 Ollama 并拉取模型(通常不需要 API Key)

可选项

# 可选:启用 AgentScope Studio 可视化
ENABLE_STUDIO=false

# 可选:游戏结束后自动生成分析报告
AUTO_ANALYZE=false

OpenAI 玩家级配置(可选)

OPENAI_PLAYER_MODE=single|per-player

  • single(默认):9 位玩家共用全局 OpenAI 配置
  • per-player:需要同时填写 OPENAI_API_KEY_P1..P9OPENAI_BASE_URL_P1..P9OPENAI_MODEL_NAME_P1..P9

3. 运行

方式 A:Web 控制台(推荐)

# 使用 uv 运行前端服务器
uv run python frontend/server.py

打开浏览器访问:http://localhost:8080

提示:启动后也可以在页面上直接配置模型信息,点击“启动游戏”即可实时查看日志。

方式 B:CLI 命令行

uv run python backend/main.py

项目结构

WolfMind/
├── backend/                  # 后端核心
│   ├── main.py               # 入口:启动一局完整对局
│   ├── config.py             # 配置加载/校验/脱敏打印
│   ├── core/                 # 核心引擎与日志/记忆
│   │   ├── game_engine.py
│   │   ├── game_logger.py
│   │   ├── knowledge_base.py
│   │   └── utils.py
│   ├── models/               # 角色与 Pydantic 结构
│   │   ├── roles.py
│   │   └── schemas.py
│   ├── prompts/              # 主持人与角色提示词
│   │   ├── game_prompts.py
│   │   └── role_prompts.py
│   ├── analysis/             # 日志解析与分析Pipeline
│   │   ├── __main__.py
│   │   ├── pipeline.py
│   │   ├── agents.py
│   │   └── log_parser.py
│   ├── .env.example
│   └── requirements.txt
├── data/                     # 运行期数据(对局日志/经验/分析报告)
│   ├── game_logs/
│   ├── experiences/
│   └── analysis_reports/
├── frontend/                 # Web 控制台与日志查看
│   ├── index.html
│   ├── script.js
│   ├── styles.css
│   └── server.py
└── README.md

对局日志与分析

对局日志

  • 日志目录:data/game_logs/(默认 game_<timestamp>.log
  • 经验存档:data/experiences/players_experience_<timestamp>.json
  • 终止保护:即便通过控制台“停止游戏”强制结束进程,也会在最新日志尾部追加收口块(结束时间、异常终止标记等),避免日志缺尾

自动分析

.envAUTO_ANALYZE=true,游戏结束后会自动生成 HTML 报告到 data/analysis_reports/

手动分析(CLI)

uv run python -m backend.analysis \
  --log data/game_logs/game_xxxx.log \
  --experience data/experiences/players_experience_xxxx.json

参数:

  • --log:必填,游戏日志文件路径
  • --experience:可选,玩家经验文件路径
  • --out:可选,输出 HTML 路径(默认 data/analysis_reports/report_<timestamp>.html

对局示例文件

对局示例文件位于 static/


游戏规则

角色(9 人)

  • 狼人(3):夜晚选择击杀目标,白天隐藏身份误导
  • 村民(3):通过讨论与投票找出狼人
  • 预言家(1):夜晚查验一名玩家身份
  • 女巫(1):解药(救人)与毒药(杀人)各一次(同夜不可双药)
  • 猎人(1):被淘汰时可开枪带走一人

流程概要

  1. 夜晚:狼人投票击杀 → 女巫用药(可选) → 预言家查验 →(猎人若被刀,可立即开枪)
  2. 白天:公布死亡 → 依次发言 → 公开投票 → 平票最多 3 轮 PK(再平票按姓名顺位淘汰) →(猎人若被投出,可开枪)
  3. 胜负:清空狼队则好人胜;若神职或平民一侧被清空,或狼人数量达到存活人数一半,则狼人胜

技术栈

  • 多智能体框架AgentScope
  • 大语言模型:DashScope / OpenAI / Ollama
  • 环境管理uv
  • 编程语言:Python 3.8+
  • 数据验证:Pydantic
  • 异步编程:asyncio

如果这个项目对你有帮助,请给个 ⭐️ Star 支持一下!

Made with ❤️ by the Werewolf AI Team

About

基于阿里AgentScope的Agent狼人杀游戏

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published