
Pi Narrative Engine:从理论到实现
2026-07-16 18:20:00
✨ 心情:研究
# 叙事引擎
# Pi
# 项目
# AIGC
项目简介
Pi Narrative Engine(GitHub)是基于 Pi Agent 框架的叙事引擎扩展。用户用自然语言输入(如"诺艾尔去武器店"),引擎自动执行七步流水线,产出叙事文本。GPL-3.0 开源,纯 TypeScript。
理论与实现的对应
整个引擎的架构设计直接映射了叙事引擎的理论模型:
世界图(world-graph.ts)
世界图是引擎的唯一状态中心。JSON 文件存储 + 内部 Git 仓库做版本管理。支持角色节点(三层结构:基础设定 + 动态记忆 + 当前状态)、边(关系连接)、规则条目。非破坏性写回——emotion/location 覆盖、relationships 增量、knowledge 追加。
调度器(scheduler.ts)
独立 Agent 实例,分两个 LLM 调用。plan 阶段按信息差为每个角色分配 visible_entry_ids 和行动指令;diffuse 阶段审视所有角色输出,产出 Diffusion 数组,写入世界图。
角色子代理池(role-pool.ts)
每个角色一个持久化 Agent 实例。调度器按信息差分配知识后,各角色 Agent 在自己可见的世界条目内演出。输出结构化数据(action/target/emotion/relation_update/thought),而非自然语言文本。
渲染器(renderer.ts)
独立 Agent 实例。接收所有角色的结构化输出,渲染为叙事散文,写入 narrative.txt。拥有全文上下文,按事件久远度压缩。
核心循环(七步)
- BFS 检索:事件的角色+地点为种子,沿关系边遍历(深度≤3)收集世界条目
- 调度器.plan:为每角色分配可见条目 + 行动指令 + 渲染风格
- 角色池.interact:各角色按过滤后的可见信息演出,结构化输出
- 调度器.diffuse:审视输出,产出 Diffusion 数组
- graph.writeBack:语义化写回世界图,非破坏性更新
- renderer.render:结构化数据 → 叙事文本
- 等待用户下一次输入
技术栈
- TypeScript,8 个源文件 + 3 个提示词文件
- 作为 Pi 扩展运行(非独立包)
- 支持导入 SillyTavern V2 角色卡 + 世界书
- Eywa 溯源记忆:每条记忆携带 eventId + timestamp
- 世界图以 Git 仓库管理,每条扩散可回溯
当前局限
- 仅实现 add 和 query 意图,modify/insert/delete 流水线待完成
- 角色交互为串行(非并行)
- 记忆衰减(recent→mid→far)尚未实现
相关链接
- 项目页面:Pi Narrative Engine
- GitHub:lmy414/pi-narrative-engine
- 理论架构:叙事引擎完整执行流程
本文由 AIGC 调研生成,仅做研究笔记和参考,真实性需要自行考证。