Skip to content

Gousting/trpg-agent

Repository files navigation

TRPG Agent — 中文 COC 跑团 KP

本地 AI 主持人,跑《克苏鲁的呼唤》。你说,它听,然后以守秘人的身份回答——全部本地运行,零 API 成本。

状态:Phase 4.5 完成 — 动态剧情事件、RPG 风格存档(自动存档+NL触发+多人加载)、SQLite 持久层、97 项测试全绿。

怎么跑

git clone https://github.com/Gousting/trpg-agent.git
cd trpg-agent
uv sync
cp .env.example .env   # 编辑 OLLAMA_HOST 指向你的 Ollama
uv run python tests/test_integration.py   # Phase 4 全链路测试 (6 轮)

前提:Ollama 运行中,已 pull 模型(默认 gemma4:12b)。

uv run pytest tests/ -v   # 97 项单元测试

架构

借鉴 DMbot 的架构范式——"LLM 提议叙事,代码拥有硬状态"。

玩家输入 → 检定分类器 → 掷骰引擎 → [Ollama] → sanitize 清洗 → GS 解析 → KP 回答
                ↓                        ↑                    ↓
         SAN/战斗/幸运/孤注一掷    system prompt          SQLite DB
                ↓                        ↑              (调查员/NPC/任务/历史)
         Session 管理器(多人联机 + 存档/读档 + 上下文窗口 + recap压缩)

已完成模块

Phase 1-2:核心管线

模块 说明
llm/sanitize.py 中文 KP 回答清洗 (12 项正则)
llm/client.py Ollama 异步客户端
prompts/kp_core_zh.md 守秘人核心人格 (2587 字)
rules/coc.py COC 7 版检定引擎
rules/engine.py 通用掷骰引擎
session.py Session 管理器
memory/game_state.py COC 游戏状态
memory/history.py 对话历史

Phase 3:掷骰路由

模块 说明
llm/roll_router.py 检定分类器 (constrained JSON)

Phase 4:完整游戏系统

模块 说明
rules/sanity.py SAN 检定、临时/不定疯狂
rules/combat.py 格斗/射击/闪避/反击
rules/luck.py 幸运值消耗与恢复
rules/pushing.py 孤注一掷重试
memory/gs_parser.py 动态剧情事件 — KP 回复中 <!--GS--> 标记块自动写入游戏状态
memory/database.py SQLite 持久层 — 调查员跨 session 复用、声纹绑定、快照存档

多人联机 + RPG 存档

模块 说明
session.py speaker 参数支持多人说话、自动存档(每5轮)、NL保存/加载意图检测、多人加载摘要
session.py is_multiplayer / loaded_from / loaded_state_summary() 辅助属性

测试

文件 说明
tests/test_unit.py 39 项单元测试
tests/test_phase4.py 20 项规则测试
tests/test_integration.py 6 轮全链路集成测试
tests/test_multiplayer.py 17 项多人联机 + RPG 存档测试
tests/test_database.py 6 项数据库集成测试

迭代路线

详见 ROADMAP.md。 Phase 1 纯文字闭环 ✅ · Phase 2 状态与记忆 ✅ · Phase 3 掷骰路由 ✅ · Phase 4 完整游戏系统 ✅ · Phase 4.5 动态剧情+多人联机+SQLite ✅ · Phase 5 语音链路 → Phase 6 平板客户端。

许可

MIT

About

中文COC跑团KP Agent — 本地AI主持人,基于DMbot架构范式

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages