Kagari (篝火) - 功能详细说明
Kagari 不仅仅是一个聊天界面,它是一个基于多 Agent 协作的、用于驱动叙事游戏的结构化框架。它的核心是将 LLM 的非结构化文本转变为可操作的、游戏化的指令。
1. 核心架构:多 Agent 协作系统
Kagari 的所有功能都由一个多 Agent 系统协同实现。
| Agent | 职责 | 触发时机 | 视角 |
|---|---|---|---|
| GM Agent (叙事引擎) | 主动推进剧情、扮演NPC、控制UI、裁决行动。 | 实时(核心) | 上帝视角 |
| 玩家 Agent (书记官) | 被动监听对话,总结玩家已知信息。 | 实时(辅助) | 有限视角 |
| 作家 Agent (小说家) | 读取游戏日志,将其改编为小说。 | 事后(批处理) | 上帝视角 |
2. V1.0 核心功能 (体验驱动)
V1.0 的所有功能都旨在最大化沉浸感和最小化玩家心智负担。
2.1. 结构化 UI (JSON 驱动)
这是 Kagari 与纯文本聊天的最大区别。GM Agent 的输出不是文本,而是结构化的 JSON 指令,前端 React 组件负责解析并渲染这些指令。
-
对话与旁白 (
dialogue/narrate){"type": "narrate", "text": "你走进了一个昏暗的洞穴..."}{"type": "dialogue", "character": "老法师", "text": "年轻人,你终于来了。"}
-
玩家选项 (
options)- 渲染为交互式按钮,而不是让玩家手动输入 "1" 或 "A"。
{"type": "options", "choices": [{"label": "拔剑", "value": "draw_sword"}, {"label": "保持警惕", "value": "stay_alert"}]}
-
多功能面板 (
panel_update)- 动态更新侧边栏或弹出窗口的内容。
{"type": "panel_update", "target_panel": "character_sheet", "data": {"hp": 80, "mp": 50}}
2.2. 沉浸式氛围系统
GM Agent 可以直接控制游戏的声画表现。
-
AIGC 实时插图
- GM 在描述关键场景时,会同步发送一个插图生成指令。
{"type": "ui_control", "action": "show_image", "prompt": "一个宏伟的雪山,风格化,插画"}- 框架在后台调用 AIGC (DALL-E, SD 等) API,生成并显示图片。
-
动态背景音乐 (BGM)
- GM 根据剧情氛围切换背景音乐或播放音效。
{"type": "ui_control", "action": "play_music", "value": "tense_battle"}{"type": "ui_control", "action": "play_sound", "value": "door_creak"}
2.3. 玩家 Agent (书记官)
此 Agent 被动监听 GM 和玩家的对话,并自动为玩家整理“笔记”。它只记录玩家视角已知的信息,并将其填入 UI 的专用面板。
-
[人物] 面板:
- 触发:
GM: "你遇到了一个自称‘张三’的铁匠。" - 记录:
人物:张三 (铁匠,在风车镇遇到,似乎很沮丧)
- 触发:
-
[地点] 面板:
- 触发:
GM: "你们抵达了‘风车镇’。" - 记录:
地点:风车镇 (一个宁静的小镇)
- 触发:
-
[物品] 面板:
- 触发:
玩家: "我打开宝箱。"GM: "你找到了一把‘生锈的钥匙’。" - 记录:
物品:生锈的钥匙 (从洞穴宝箱中找到)
- 触发:
-
[线索] 面板 (推理游戏核心):
- 触发:
GM: "张三说:‘我昨晚一整晚都在打铁!’" - 记录:
线索/证言:张三声称自己有不在场证明 (打铁)
- 触发:
2.4. 作家 Agent (小说家)
此 Agent 在游戏结束后(或章节结束时)被激活,它是一个后处理器 (Post-Processor)。
- 读取日志: 它会获取整个游玩过程的完整日志(包含 GM 描述、玩家的选择)。
- 文学再创作: 它将生硬的“Q&A”式对话和“你选择了A”这样的日志,改编成文笔流畅、包含心理活动和动作描写的小说章节。
- 产出: 玩家在通关后,会额外获得一部由自己“主演”的、独一无二的同人小说,极大增强了成就感和分享欲。
2.5. 宏观游戏管理
-
世界地图 (战争迷雾)
- 剧本可以提供一张预设的、被“战争迷雾”覆盖的底图。
- GM Agent 可以通过指令动态点亮(揭示)特定区域。
{"type": "ui_control", "action": "reveal_map", "area_id": "windmill_town"}- 这为玩家提供了“空间感”和探索的动力。
-
剧情检查点 (存档/回档)
- GM Agent 可以在关键剧情点(如完成一个任务、进入新章节)自动创建“检查点”。
{"type": "system", "action": "create_checkpoint", "title": "击败史莱姆王"}- 存档 (Save): 玩家的进度被保存为一个“剧情树”节点。
- 日志 (Log): 玩家可以清晰地看到自己玩到了哪里。
- 回档 (Reload): 玩家可以从任意历史检查点重新开始,探索不同的剧情分支,实现 "What If..." 玩法。
3. V2.0 路线图 (普惠友好)
V2.0 的核心是降低成本和实现无限记忆,让 Kagari 真正“小模型友好”。
3.1. 记忆核心 (RAG)
- 目的: 解决 LLM 的“上下文窗口”限制和昂贵的 Token 费用。
- 实现:
- 向量化: 所有的对话历史、场景描述、人物背景都会被实时切片并存入一个向量数据库。
- RAG (检索增强生成): 当 GM Agent 需要叙事时,Kagari 框架会先从向量库中检索出与当前情境最相关的“记忆片段”(如“玩家在三个月前提到过的NPC”),并将其注入到提示词中。
- 价值: 即使是小型模型,也能拥有“无限”的长期记忆。
3.2. 知识图谱 (状态管理)
- 目的: RAG 只解决“记忆”,不解决“事实状态”。例如,一个 NPC 的好感度、一个任务是否完成。
- 实现: 使用知识图谱来维护一个严格的“世界状态数据库”。
(玩家A) --[好感度: 50]--> (NPC_B)(任务X) --[状态: 已完成]--> (True)(玩家A) --[持有]--> (物品Y)
- 价值: 确保 LLM 在叙事时不会出现逻辑错误(例如玩家已经卖掉的道具又出现,或者已经敌对的 NPC 突然变得友好)。
4. V3.0 路线图 (实验性)
4.1. 动态 UI Agent
- 目的: 实现终极的自由度,让 LLM 不仅叙述故事,更能创造玩法。
- 设想: GM Agent 可以根据特定的游戏场景,动态生成临时的、全新的 UI 组件。
- 示例:
- 黑客入侵: GM Agent 生成一个“模拟终端”的 UI 窗口,玩家必须输入“指令”来解谜。
- 炼金术: GM Agent 生成一个“合成台” UI,玩家可以将 [物品] 面板中的道具拖拽进去进行组合。
- 推理: GM Agent 生成一个《逆转裁判》式的“指证”界面,让玩家将 [线索] 和 [人物] 关联起来。