# AgentScope 三国狼人杀案例

本目录包含第六章 AgentScope 框架的完整实战案例，展示了如何使用 AgentScope 构建一个融合中国古典文化元素的多智能体在线游戏。

## 📁 文件说明

- `main_cn.py` - 主要游戏逻辑和控制器
- `prompt_cn.py` - 中文提示词管理
- `game_roles.py` - 游戏角色定义和配置
- `structured_output_cn.py` - 结构化输出模型定义
- `utils_cn.py` - 游戏工具函数和辅助方法
- `README.md` - 本说明文档

## 🎮 案例特点

- **消息驱动架构**：展示 AgentScope 的核心消息传递机制
- **并发协作**：演示多智能体同时在线的实时交互
- **角色扮演**：每个智能体具备双重身份（游戏角色+三国人物）
- **结构化输出**：通过 Pydantic 模型约束智能体行为
- **容错机制**：单个智能体异常不影响整体游戏流程

## 🛠️ 环境准备

### 1. 安装依赖

```bash
pip install agentscope
pip install dashscope
pip install pydantic
```

### 2. 配置环境变量

设置阿里云 DashScope API Key：

```bash
# Linux/Mac
export DASHSCOPE_API_KEY="your-api-key-here"

# Windows PowerShell
$env:DASHSCOPE_API_KEY="your-api-key-here"

# Windows CMD
set DASHSCOPE_API_KEY=your-api-key-here
```

获取 API Key：https://dashscope.console.aliyun.com/apiKey

### 3. 运行游戏

```bash
python main_cn.py
```

## 🎭 游戏角色说明

### 游戏角色
- **狼人**：夜晚击杀好人，白天隐藏身份
- **预言家**：每晚查验一名玩家身份
- **女巫**：拥有解药和毒药各一瓶
- **猎人**：被投票出局时可开枪带走一名玩家
- **村民**：通过推理和投票找出狼人

### 三国人物
- **刘备**：仁德宽厚，善于团结众人
- **关羽**：忠义刚烈，言辞直接
- **张飞**：性格豪爽，容易冲动
- **诸葛亮**：智慧超群，分析透彻
- **曹操**：雄才大略，善于权谋
- **司马懿**：深谋远虑，城府极深

## 🏗️ 架构设计

### 分层架构
```
游戏控制层 (ThreeKingdomsWerewolfGame)
    ├── 游戏状态管理
    ├── 流程控制
    └── 胜负判定

智能体交互层 (MsgHub)
    ├── 消息路由
    ├── 并发处理
    └── 状态同步

角色建模层 (DialogAgent)
    ├── 角色提示词
    ├── 结构化输出
    └── 行为约束
```

### 核心组件

**1. 消息中心 (MsgHub)**
```python
async with MsgHub(
    participants=self.werewolves,
    enable_auto_broadcast=True
) as hub:
    # 狼人夜晚讨论
    for wolf in self.werewolves:
        await wolf(structured_model=DiscussionModelCN)
```

**2. 结构化输出**
```python
class VoteModelCN(BaseModel):
    vote: str = Field(description="投票目标玩家姓名")
    reason: str = Field(description="投票理由")
    confidence: int = Field(ge=1, le=10, description="信心程度")
```

**3. 并发管道**
```python
vote_msgs = await fanout_pipeline(
    self.alive_players,
    msg=vote_announcement,
    structured_model=get_vote_model_cn(self.alive_players),
    enable_gather=False,
)
```

## 🎯 游戏流程

### 夜晚阶段
1. **狼人讨论**：狼人通过 MsgHub 协商击杀目标
2. **预言家查验**：预言家选择查验对象
3. **女巫行动**：女巫决定是否使用解药/毒药

### 白天阶段
1. **死亡公布**：公布夜晚死亡玩家
2. **自由讨论**：所有存活玩家参与讨论
3. **投票淘汰**：投票选择淘汰对象
4. **猎人技能**：被淘汰的猎人可开枪

## 🔧 自定义配置

### 修改游戏人数
```python
# 在 main_cn.py 中修改
await game.setup_game(player_count=8)  # 支持 6-12 人
```

### 添加新角色
```python
# 在 game_roles.py 中添加
ROLES["守护者"] = {
    "description": "守护者",
    "ability": "每晚可以守护一名玩家",
    "team": "好人阵营"
}
```

### 自定义提示词
```python
# 在 prompt_cn.py 中修改
def get_role_prompt(role: str, character: str) -> str:
    # 自定义角色提示词逻辑
    pass
```

## 🐛 常见问题

### Q: 游戏无法启动？
A: 检查以下几点：
- 确认 DASHSCOPE_API_KEY 环境变量已设置
- 验证 API Key 是否有效
- 检查网络连接是否正常

### Q: 智能体输出格式错误？
A: 可能原因：
- 模型理解能力限制
- 提示词设计不够清晰
- 结构化输出约束过于复杂

### Q: 游戏流程卡住？
A: 建议：
- 检查 MsgHub 的消息传递
- 验证并发管道的执行状态
- 查看控制台错误日志

## 📚 技术亮点

### 1. 消息驱动架构
- 智能体间完全通过消息交互
- 支持异步并发处理
- 天然的分布式能力

### 2. 结构化输出约束
- 游戏规则转化为代码约束
- 提升系统稳定性和可预测性
- 便于调试和监控

### 3. 双重角色建模
- 游戏角色 + 三国人物的创新设计
- 展现不同人格的策略差异
- 增强游戏的趣味性和真实感

## 🚀 扩展方向

- **增加游戏模式**：支持更多狼人杀变体
- **优化 AI 策略**：提升智能体的游戏水平
- **可视化界面**：开发 Web 或桌面客户端
- **实时观战**：支持人类玩家观战和互动
- **数据分析**：统计游戏数据和智能体表现

## 🤝 贡献指南

欢迎提交 Issue 和 Pull Request：
- 报告游戏 Bug 或异常
- 提出新功能建议
- 优化代码实现
- 完善文档说明

---

*本案例是 Hello-Agents 教程第六章的核心实战项目，展示了 AgentScope 框架在构建复杂多智能体应用方面的强大能力。*