🤖 Civ6 AI + DeepSeek 增强系统
用大语言模型驱动文明6 AI 决策 — 从调研到可运行原型
100 回合完整游戏成果
7
城市数
12
科技完成
Renaissance
时代
501
得分 vs AI 30
DeepSeek Reasoner (V4 Pro) 驱动,97 次 API 调用,10.3s 平均响应,Grade A+ (7/7)
系统架构
┌─────────────────────────────────────────────────────────────┐
│ Civ-like 模拟环境 │
│ civrealm_env.py (Gymnasium API) │
│ - 六角地图 / 城市 / 科技树 / 单位 / AI 对手 │
│ - observation: 文本化游戏状态 │
│ - action: 研究/建造/训练/移动/建城/结束 │
└──────────────────────────┬──────────────────────────────────┘
│ observation (text)
▼
┌─────────────────────────────────────────────────────────────┐
│ DeepSeek LLM Agent │
│ civrealm_agent.py │
│ - 构造 prompt (游戏状态 + 可用动作 + 策略规则) │
│ - 调用 DeepSeek V4 Flash API │
│ - 6 级 JSON 解析 fallback │
│ - fuzzy action matching │
└──────────────────────────┬──────────────────────────────────┘
│ actions (JSON)
▼
┌─────────────────────────────────────────────────────────────┐
│ Python Bridge │
│ bridge.py / advisor.py │
│ - 也支持真实 Civ6 (文件系统桥接方案) │
│ - Mod 写状态 → Python 读 → API → 写回 → Mod 读取 │
└─────────────────────────────────────────────────────────────┘
Civ6 AI 架构分析
为什么不能直接改 AI?
| 层面 | 能力 | 限制 |
|---|---|---|
| C++ 核心引擎 | 所有 AI 决策逻辑 | 闭源 DLL,无法修改 |
| SQL 权重表 | 调整 AI 偏好(如科技优先级) | 只能微调数值,不能改逻辑 |
| Lua Events | 响应游戏事件、修改可见状态 | 沙盒环境,禁用 io/os/socket |
| FireTuner | 实时 Lua 控制台 | 仅开发模式,需 EnableTuner=1 |
结论:真实 Civ6 中只能通过"文件系统桥接"间接影响 AI。模拟环境则完全可控。
模拟器方案对比
| 方案 | 类型 | Civ6 覆盖 | 是否可用 | 备注 |
|---|---|---|---|---|
| 自建 civrealm_env | Python, Gymnasium | ~40% | 已实现 | 轻量、快速、完全可控 |
| CivRealm (BIGAI) | FreeCiv + Python | ~60% | 需 Docker | ICLR 2024,最完整 |
| Unciv | Kotlin, Civ5 规则 | ~50% | 需改造 | 开源,逻辑/UI 分离 |
| FreeCiv | C, 经典规则 | ~30% | 可用 | 有 headless 模式 |
DeepSeek Agent 决策能力
📚 科技规划
正确选择 Writing → Archery → Engineering 路线,识别秦始皇奇观加速特性推荐文化胜利
🏙 城市扩张
人口 ≥3 时训练 Settler,移动到距离 ≥2 处建城,50 回合 3 城 / 100 回合 4 城
⚙ 生产管理
不中断进行中的生产,优先级:Settler > Library > Granary > Military
🎯 长期策略
根据文明特性和外交关系调整策略,100 回合内达成 Medieval 时代
API 集成细节
| 参数 | 值 |
|---|---|
| 模型 | LLM Reasoner(Pro)/ LLM Flash(标准) |
| 平均延迟 | 10.3s (Pro) / 8.0s (Flash) |
| Token 消耗 | ~2100 tokens/回合 (Pro) / ~750 tokens/回合 (Flash) |
| 可靠性 | 100% 有效动作率(6 级 JSON fallback) |
| 成本 | 100 回合 ≈ 75K tokens ≈ ¥0.15 |
迭代历史
| Iter | 方向 | 成果 |
|---|---|---|
| V3-1 | AI 架构调研 | 确认闭源 C++,Lua 沙盒,推荐文件桥接 |
| V3-2 | 技术验证 + 原型 | Python Bridge + Mod 框架 + DeepSeek 调用验证 |
| V3-3 | CivRealm + 自建模拟器 | Gymnasium 环境,10 回合测试 |
| V3-4 | 决策质量优化 | 多步动作率 30%→100%,奖励 +74% |
| V3-5 | 50 回合完整游戏 | 3 科技,Classical 时代,Grade A |
| V3-6 | 修复 + 100 回合演示 | 4 城 11 科技 Medieval,7/7 全通过 |
| V3-7 | V4 Pro 对比测试 | Renaissance 时代, 7城 501分, +32% vs Flash |
文件索引
src/ai_bridge/
├── bridge.py Python 桥接主循环
├── advisor.py DeepSeek API 调用封装
├── game_state.py 游戏状态数据模型
├── civrealm_env.py Gymnasium 风格模拟环境
├── civrealm_agent.py LLM Agent (prompt + 解析)
├── civrealm_data.py 科技树/单位/建筑数据
├── run_civrealm_test.py 测试运行器
├── run_v4pro_game.py V4 Pro 100回合对比
├── demo.html 可交互游戏回放
├── mod/
│ ├── AIAdvisor.lua Civ6 Mod 框架
│ └── AIAdvisor.modinfo
└── data/
└── *.json 游戏日志 + API 结果
src/research/
├── ai_integration_report.md 可行性调研报告
├── civ6_simulator_research.md 模拟器方案调研
└── technical_design.md 技术设计文档