ChatRPG
一句话定位:C# Blazor 多智能体跑团引擎——Examiner/Navigator/Narrator/Archivist/Scribe 五智能体 ReAct 管线 + 叙事图(节点/边/条件门控)驱动单人 D&D 风格冒险,是开源侧工程化程度最高的「DM 大脑」之一。 类型:多智能体 AI 跑团引擎 · 开源 · 许可:MIT · 仓库:KarmaKamikaze/ChatRPG
1. 项目概述
ChatRPG 把「AI 当 DM」拆成了五个专职智能体协同工作:玩家输入先经 Examiner(裁决行动是否可行,输出 ALLOWED/CONDITIONALLY ALLOWED/DISALLOWED + 理由)→ Navigator(更新叙事图:哪些剧情节点解锁、哪些条件满足)→ Narrator(把裁决与图变化编织成沉浸式叙事)→ Archivist(维护世界状态:角色/环境/摘要)→ Scribe(开团前把剧本解析成叙事图)。世界本身是一张叙事图:节点(地点/剧情点)+ 有向边(带条件门控),保证叙事逻辑自洽。支持上传 PDF 模组(pgvector 向量检索)。
2. 核心功能
- 五智能体 ReAct 管线(工具调用 + 思维链,debug 开关齐全)。
- 叙事图世界模型:节点状态(undiscovered/ongoing/completed)、边条件评估(
CheckGraphUpdateConditions工具)。 - 战役持久化:角色卡、消息历史、游戏摘要、战役快照(
AddIsSnapshotToCampaign迁移可见)。 - 模组支持:预设起始剧本 + 自定义剧本(Scribe 建图 + ScenarioDocumentService 向量检索,PDF/PdfPig 加载)。
- Blazor Server 全栈 UI:登录(Identity)、战役总览、角色立绘(DALL-E)、叙事图可视化(Graphviz)。
- 流式聊天补全(
StreamChatCompletions)。
3. 技术架构
- .NET 9(README 写 net8.0 已过时,csproj 实测
net9.0)+ Blazor Server + EF Core + PostgreSQL(pgvector 硬编码在启动流程,但仅剧本文档搜索用到)。 - LangChain(.NET 版 tryAGI/LangChain)0.16.0 家族:OpenAiProvider + ReActAgentChain + 自定义 AgentTool(SearchScenarioTool/UpdateGraphTool 等)。
- 多智能体均为 Transient 服务,构造时强校验 OpenAI key(
ThrowIfNullOrEmpty)。 - Identity(EF Core)+ 测试账号 test/test(Development 环境自动创建)。
4. 本机实测记录(✅ 完整运行)
从零补齐环境的全过程(详见《开源项目实测报告》第 4 节):
- 环境:便携 PostgreSQL 16.8(工作区 initdb)+ 便携 .NET 9 SDK;NuGet 因 schannel TLS 全挂 → Node 抓 250+ 个包做本地源、22 轮迭代 restore。
- 5 类代码补丁(均标注 [PATCH]):
Program.cs:pgvector 缺失时跳过(否则迁移无法运行);ChatRPG.csproj:LangChain 0.17.0 → 0.16.0(0.17.1 删除了 IChatModel API)、官方 OpenAI SDK 2.13.0 直引;- 新增
OpenAiProviderFactory:读OpenAIEndpoint配置 → 10 处调用点改为可指向任意 OpenAI 兼容端点; UpdateCharacterTool/UpdateEnvironmentTool:IdentityModel 8.x 移除IsNullOrEmpty扩展 → 改string.IsNullOrEmpty(x);PortraitGenerator:DALL-E 立绘打桩禁用(官方 OpenAI SDK 与 tryAGI.OpenAI 程序集同名冲突)。
- 运行结果:构建 0 错误;启动自动执行 28 个 EF 迁移建表;
http://127.0.0.1:5080服务正常(账号 test/test);OpenAIEndpoint=http://127.0.0.1:5002/v1指向本地 KoboldCpp → 五智能体管线全本地。 - 踩坑:.NET 默认 Windows EventLog 日志在沙箱崩溃 → appsettings 禁用。
5. 如何运行(复现,原版要求)
git clone https://github.com/KarmaKamikaze/ChatRPG && cd ChatRPG
# 1. PostgreSQL + pgvector 扩展 + 数据库 chatrpg(postgres/postgres)
# 2. appsettings.json 填 ApiKeys:OpenAI
# 3. dotnet tool install --global dotnet-ef && dotnet ef database update
dotnet build --configuration Release && cd bin/Release/net8.0 && ./ChatRPG
(本机复现请直接采用实测报告的补丁版本:net9.0 + LangChain 0.16 + OpenAIEndpoint 配置。)
6. 优劣势分析
| 优势 | 劣势 |
|---|---|
| 五智能体分工 + 叙事图是「可解释 DM」的最佳开源参考 | 依赖栈重(.NET+PostgreSQL+pgvector+LangChain 版本敏感) |
| 裁决(Examiner)机制解决「玩家为所欲为」问题 | 原版硬编码 OpenAI(需补丁才可换端点) |
| 模组 PDF → 叙事图 → 检索的完整内容管线 | 单人 RPG,无多人/社交机制 |
| 工程规范好(迁移、快照、流式、debug 开关) | 作者活跃度与社区规模有限 |
7. 参考链接
- 仓库:https://github.com/KarmaKamikaze/ChatRPG
- 勿混淆:shadow3aaa/chatrpg(同名,据称 QQ 群聊跑团方向)
- 机核社区文章:https://www.gcores.com/games/104029