这是一个基于大语言模型(LLM)开发的「血染钟楼」游戏AI说书人系统。该系统能够自动负责游戏的开局角色分配、夜晚/白天的规则推动、与玩家的交互,以及全局状态与标记的维护,为玩家提供沉浸式的桌上角色扮演游戏体验。
- AI驱动的角色分配:根据玩家数量、剧本要求和角色平衡规则自动生成合理的角色配置
- 昼夜循环管理:自动处理夜晚角色技能执行和白天讨论、处决流程
- 智能交互系统:通过命令行与玩家进行沟通,引导游戏进程
- 状态管理:维护玩家身份、存活状态、特殊标记等游戏核心数据
- 剧本解析:支持加载和解析不同的游戏剧本(暗流涌动、梦殒春宵、黯月初升等)
- 规则执行:根据角色技能和游戏规则自动执行相应操作
├── src/ # 源代码目录
│ ├── main.js # 程序入口
│ └── modules/ # 模块目录
│ ├── agent/ # LLM代理相关模块
│ ├── game/ # 游戏核心逻辑模块
│ ├── common/ # 通用工具模块
│ └── utils/ # 工具函数模块
├── game_script/ # 游戏剧本文件(JSON格式)
├── knowledge/ # 游戏规则和术语知识库
├── AGENT.MD # AI代理详细说明文档
├── QA.MD # 问答与澄清文档
├── package.json # 项目依赖配置
├── .env.example # 环境变量模板
└── README.md # 项目说明文档(当前文件)
- Node.js 14.x 或更高版本
- npm 或 yarn 包管理器
npm install
# 或
yarn install项目需要通过环境变量来配置LLM API的访问信息。请按照以下步骤操作:
- 复制
.env.example文件并重命名为.env
cp .env.example .env- 编辑
.env文件,填入以下必要信息:
# LLM API配置
BASE_URL=your_api_base_url # LLM接口地址
MODEL=your_model_name # 模型标识
API_KEY=your_api_key # API访问密钥
注意:这些环境变量对项目运行至关重要,请确保填入正确的API信息。
node src/main.js调试模式下会固定剧本与玩家数量(默认8人),方便开发测试:
DEBUG=1 node src/main.js- 启动程序后,系统会自动初始化游戏环境
- 根据玩家数量进行角色分配
- 游戏进入夜晚阶段,AI说书人会引导角色发动技能
- 夜晚结束后进入白天阶段,玩家可进行讨论和发动技能
- 白天结束时进行处决投票
- 系统会检查胜利条件,若未满足则继续下一轮昼夜循环
- 玩家输入格式:
座位号 文本内容 - 当AI说书人询问时,对应座位的玩家输入回应
- 处决命令:
execute 座位号或none(不处决任何人) - 确认继续:在某些阶段输入
ok确认继续游戏
在 game_script/ 目录下创建新的剧本JSON文件,推荐查阅钟楼博物馆
如果需要使用 RAG 能力,请先拉取官方 Wiki 数据至本地知识库:
node scripts/spider.js
该命令会将页面内容转换为 Markdown 并存放到 knowledge/ 目录下。参考钟楼百科
可以通过修改 src/modules/agent/ 目录下的文件来调整AI代理的行为和提示词设计。
- 本项目使用LLM API,请注意相关的使用成本和限制
- 当前版本通过命令行与玩家交互,未来可扩展为Web或IM界面
- 系统设计支持规则的灵活扩展,但某些特殊规则可能需要额外开发
本项目采用 Creative Commons Attribution-NonCommercial 4.0 International License(CC BY-NC 4.0)许可协议。
核心许可条款:
- 署名:您必须给出适当的署名,提供指向本许可协议的链接,并表明是否进行了修改。
- 非商业性使用:您不得将本项目用于商业目的。
- 禁止附加限制:您不得适用法律术语、技术措施或其他手段来限制他人依法享有的本许可协议授予的权利。
详细的许可条款请参阅项目根目录下的LICENSE文件。