目录

一、项目简介

二、技术栈选择

三、技术学习

3.1 LangGraph

3.2 Prompt

四、系统功能

五、后续计划


一、项目简介

StoryEcho是一个基于大语言模型的沉浸式互动叙事平台,核心围绕“自由扮演、实时生成、多线结局”这三方面,构建文字冒险体验。与传统分支叙事游戏不同,StoryEcho不再依赖大量预设的剧情树,而是让大模型在每一轮交互中根据用户输入的行为意图,实时生成后续剧情。用户在平台中可以通过文字表达自己的行动想法,系统会判断行动是否合理、是否成功,并据此推动故事发展,最终导向不同的结局。

平台面向单人沉浸式体验场景,支持多题材故事(如科幻、武侠、悬疑等),并提供完整的角色属性、背包、人际关系、任务进度等状态追踪机制。通过将大模型的生成能力与传统状态机逻辑相结合,StoryEcho希望在“自由叙事”与“游戏规则”之间找到一个可行的平衡点,既能保留文字冒险的开放感,又能让玩家的每一次选择产生实质性的反馈。

二、技术栈选择

后端主要基于 Python 开发,使用 Flask 作为 Web 服务框架,负责处理前端请求、管理会话状态以及调用大模型接口。

核心叙事调度采用 LangGraph 框架,用于构建多智能体协作流程,其中包含意图解析、逻辑裁判、叙事导演等不同节点。每个节点承担明确职责,通过有向无环图进行状态传递,从而降低单一模型处理复合任务时可能出现的逻辑混乱问题。大模型方面,项目计划接入主流的通用大语言模型 API,用于生成剧情描述、对话内容以及解析用户输入意图。

前端采用 Vue 框架进行开发,配合响应式状态管理库,实现游戏化主视窗、属性面板、背包系统等组件的模块化封装。前后端通过 RESTful API 进行数据交互,支持异步请求与状态同步。

持久化层使用 SQLite 或类似轻量级数据库,用于存储用户账号、角色存档、结局记录等结构化数据,同时结合 LangGraph 自带的 Checkpointer 机制实现状态序列化与节点回溯。

三、技术学习

3.1 LangGraph

在 LangChain 框架中,链(Chain)作为一种基础构建单元,主要用于将多个语言模型调用与工具调用按照既定顺序进行组织。然而,当这一机制应用于复杂且动态的对话场景时,其链式结构逐渐显现出一定的局限性。首先,链通常采用线性执行模式,各步骤按照预定义顺序依次运行,这在需要动态路由或条件分支的对话流程中显得不够灵活。其次,在多轮交互过程中,状态管理往往依赖开发者手动维护与显式传递,不仅增加了实现复杂度,也容易引入状态不一致或逻辑错误。此外,尽管链支持外部工具调用,但在涉及多工具协同的场景下,其集成与调度方式仍不够直观,尤其是在需要根据上下文动态选择和切换工具时,链式结构难以提供清晰且可扩展的解决方案

在这样的背景下,LangGraph 被引入作为对上述问题的改进方案。它以图(Graph)结构为核心,将应用逻辑组织为一个有向状态图,其中各个处理步骤被抽象为节点,执行路径通过边进行连接,从而能够自然地表达非线性流程。借助这种结构,开发者可以更直观地实现条件分支与动态路由使复杂对话流程的构建更加灵活。在状态管理方面,LangGraph内置了统一的状态机制,可以自动维护多轮对话中的上下文信息,减少了手动传递状态的负担。在工具使用上,该框架支持将多个外部工具集成到统一流程中,并能够根据当前上下文动态选择和调用,从而提升系统的适应性与扩展能力。同时,LangGraph还提供了状态持久化能力,使对话过程可以被安全地暂停与恢复,适用于需要长时间运行的复杂任务。

在理解了LangGraph的基本设计思想之后,可以进一步从其几个核心概念入手。首先是State(状态),它是整个应用运行的基础载体,可以是一个简单的字典,也可以是一个Pydantic模型,用于统一存储用户输入、上下文信息以及模型在执行过程中产生的中间结果,可以理解为一个贯穿全流程的“数据中心”。其次是Node(节点),通常以Python函数的形式存在,每个节点负责对当前State进行处理并返回更新后的结果,对应流程中的一个具体步骤。最后是Edge(边),用于连接不同节点,并定义执行路径。除了常规的顺序连接外,LangGraph还支持基于条件的动态路由,使流程可以根据当前状态灵活变化。

在实际运行过程中,程序会先将用户输入及相关参数写入 State,并从起始节点 _start_ 开始执行。随后,State 会沿着预先定义好的 Edge 在不同 Node 之间流转。每经过一个节点,系统都会根据当前逻辑对 State 进行读取与更新,然后再传递给下一个节点,直到最终到达结束节点 _end_。整个执行过程可以理解为“State 在图结构中的一次流动”。

结合一个典型的 Agent + RAG 流程来看,这种图结构的优势会更加直观。在该流程中,系统首先在 agent 节点对用户问题进行初步判断,如果问题本身已经足够清晰,则可以直接生成答案并结束流程;如果问题较为模糊或信息不足,则会通过条件边进入 retrieve 节点,从外部知识库中检索相关信息。在检索之后,如果发现问题表达仍然不够准确,还可以进入 rewrite 节点对问题进行重写优化,然后再回到 agent 重新判断,从而形成一个迭代过程;如果检索结果已经足够支持回答,则进入 generate 节点生成最终答案,并结束流程。

需要注意的是,在这个过程中,不同节点之间并不是单一的线性关系,而是通过条件边实现动态分支。例如从 agent 出发,既可能直接结束,也可能进入检索流程;而 retrieve 之后也可能走向重写或直接生成答案。这种灵活的结构使得系统能够根据实际情况动态调整执行路径。不过,由于 agent、retrieve 和 rewrite 之间可能形成循环,在实际实现时通常需要设置最大迭代次数,以避免出现无限循环的问题。

通过这样的组织方式,LangGraph 可以将原本复杂的对话逻辑拆解为清晰的节点与路径,不仅提高了系统的可读性,也使得流程控制和功能扩展变得更加自然。

参考博客:langchain系列(六)- LangGraph入门以及介绍-CSDN博客

3.2 Prompt

在与大语言模型(LLM)进行交互时,输入给模型的文本通常被称为提示词(Prompt)。但 Prompt 并不仅仅是简单的一句话输入,而是一种用于引导模型思维与行为的工程化手段。通过精心设计的 Prompt,可以明确地向模型传达关键信息,包括其所扮演的角色(你是谁)、需要完成的任务(你要干什么)、解决问题的方式或步骤(你要怎么干),以及最终输出的形式与规范(你要输出成什么样)。因此,Prompt 本质上是一种对模型生成过程进行约束与引导的重要工具,在实际应用中直接影响结果的质量与可控性。

参考博客:什么是提示词(Prompt),提示词类型、结构解析 - 教程 - jzssuanfa - 博客园

                  一文搞懂prompt - 知乎

四、系统功能

StoryEcho 的功能围绕“账号与角色管理”、“剧情生成与交互”、“状态追踪与判定”、“存档与结局收集”四个主要方向展开。

在账号与角色管理方面,平台提供完整的用户注册与登录体系,每个账号下可以创建多个独立的故事存档,分别对应不同题材和初始身份。系统内置角色生成器,支持用户自定义角色姓名、基础属性与外貌特征,并在创建角色时根据所选故事题材动态生成一套包含初始数值、物品及世界观背景的初始状态。

在剧情生成与交互方面,平台内置多个题材的剧本资源池,每个题材由一套结构化配置文件定义。用户进入故事后,系统会根据当前剧情节点与角色状态,实时生成符合“五要素”(心理、动作、环境、对话、状态提示)的叙事文本,并提供多个具有实质性差异的行动选项。同时,用户也可以自由输入自己的行为意图,系统会尝试理解并转化为可执行的游戏指令。

在状态追踪与判定方面,系统维护一个高维度的角色状态向量,包括体力、心情、金钱等核心属性,背包中的物品列表,与多个NPC的好感度,以及主线和支线任务的进度。当用户做出某个行动时,逻辑裁判模块会结合当前属性与行动难度进行成功与否的判定,并将结果反馈给状态机进行数值更新,同时约束叙事导演生成的剧情内容。举例来说,如果角色敏捷度不足却尝试翻墙,系统会判定行动失败,并让叙事模型生成一段对应的失败剧情和后果。

在存档与结局收集方面,系统支持自动存档与手动存档,用户可以随时保存当前进度,并通过可视化的剧情分支图谱查看已走过的路径,支持回溯到之前的关键决策点重新尝试。每个故事均设计了多种结局,包括主线结局、支线结局、失败结局和隐藏结局。系统会自动记录用户达成的结局,并在结局画廊中展示收集进度。此外,平台还提供多周目继承机制,达成特定结局后,新创建的角色可以获得属性加成或解锁隐藏的起始身份,鼓励用户反复探索不同故事线。

五、后续计划

下周的重点是搭建完整的前后端框架。首先,我们将使用 FastAPI 构建后端服务,实现简单的会话。前端方面,我们将基于 Vue3 构建互动界面,包括故事选择页、主游戏窗口(叙事展示区、属性面板、背包和任务栏)以及行动输入区域。完成基础框架后,我们将把之前设计的规则引擎集成到后端中,让玩家能够真正通过文字指令推动剧情并获得状态反馈。这一阶段的目标是跑通完整的用户交互流程,为后续引入 LangGraph 和大模型能力奠定坚实的基础。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐