>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
TypeScript

InkOS 书籍生成器如何在数百章内容中保持上下文一致

任何尝试使用语言模型写长篇小说的人都知道那个时刻——一切开始崩溃的时刻。到了第三或第四章,主人公会意外地让一个已经死去的同伴"复活",混淆地点,叙事风格滑入枯燥的概括,比如"他学到了重要的一课然后继续前进"。

问题不仅仅在于上下文窗口的大小。即使你把五万个之前的词塞进神经网络,模型仍然会开始弄错细节或产生陈词滥调。

最近我发现了一个名为 InkOS 的开源项目(在 GitHub 上已经获得了超过 8.5 千颗星)。这是一个功能完整的 TypeScript 框架,用于叙事管理、网络小说生成、互动游戏和场景剧本。作者们试图将记忆、风格和情节的控制整合在一起。

System architecture

核心思路:为什么普通提示词不够用

InkOS 通过一系列专用代理来管理文本创作。不是让单个神经网络"写一章并考虑情节",而是将过程划分为明确的角色。

一个代理(Planner)塑造当前章节的方向,另一个(Writer)生成草稿,第三个(Observer)从文本中提取关于世界和角色的信息,第四个(Auditor)检查成品中的矛盾。

文本通过一个控制漏斗:

Chapter production pipeline

如果审计员注意到某个角色突然拔出了一把两章前就丢失的剑,章节会被发回给编辑代理进行自动修改。

三级记忆与防止幻觉

InkOS 最有趣的技术方面涉及项目如何存储虚构世界的状态。如果你依赖 LLM 代理本身在 Markdown 文件中重写整个状态,结构会很快退化。

作者采用了混合方法:

Long-term memory scheme

  1. 严格结构化的数据库。物品状态、情节道具、角色关系状态以 JSON 格式存储,并使用 Zod schema 进行验证。代理输出的不是整个新的 JSON,而只是一个差量数据包(JSON delta),项目代码将其不可变地应用到状态中。
  2. 本地 SQLite 数据库。在 Node.js 22+ 版本中,系统自动连接 SQLite 用于过去事件、压缩注释和事实的向量检索和关键词检索。
  3. Markdown 投影。诸如 current_state.mdpending_hooks.md 之类的文件从经过验证的 JSON 自动生成。它们作为人类作者的视觉参考和传递给生成器上下文的来源。

由于这种分离,模型不能意外删除某个情节分支或破坏 state.json 文件格式。

对抗神经网络油光与自动审计

每个人都注意到了语言模型特有的风格。过度使用填充词、均匀的句子长度、在每个段落结尾都喜欢深刻的道德结论。

InkOS 包含一个内置的文本检查模块,包含 37 个参数。它监控句子节奏、词汇重复频率,并追踪平庸的陈词滥调。

此外,引擎还包含一个风格分析命令:

该工具从参考文本中提取数字指纹(句子长度分布、频率词典、对话密度)并生成指南。在生成新章节时,它产生的不是抽象文本,而是严格符合该指纹的材料。

互动世界与文字 RPG

在 1.5 版本中,开发者添加了 InkOS Play 模式。这是一个用于启动文字世界的工具,支持自由行动或回合制分支。

Studio web interface

在 Play 模式中,设定了一个所谓的世界契约。例如,侦探调查规则或生存模拟器。系统代理追踪时间、物品栏、物品和证据,生成选择界面或处理用户的自然语言输入。

在底层,使用了动态场景和物品插图生成机制,以及对标准技能包 SKILL.md 的支持。

内部工作原理

项目完全使用 TypeScript 编写。Web 界面(Studio)运行在 Vite、React 和 Hono 上。交互式控制台通过 TUI 实现,自动化爱好者也可以使用传统的 CLI。

代理框架构建在 pi-mono 库之上(基于 @mariozechner/pi-agent-core)。

一个方便的解决方案是灵活的模型路由。写小说可以分配给 Claude 3.5 Sonnet 或 Kimi K2.7,而审计任务、JSON delta 汇编和验证可以通过 OpenRouter、Gemini 或本地 Ollama 委托给更快更便宜的模型。

路由配置通过键值对设置:

该包在 npm 上可用:

创建你的第一本书并启动本地 studio 只需三个命令:

Web 面板在端口 4567 的浏览器中打开。在那里你可以输入所需提供商的 API 密钥,设置作品的概念,并启动规划第一章节的过程。

控制台工作提供直接命令:

谁会从这个项目中受益

InkOS 不仅仅是一个 ChatGPT 的包装器。它是一个结构化的开发环境,适合那些系统性地处理叙事的人。

该项目对以下人员有用:

  • 叙事设计师和游戏编剧,用于开发任务和分支对话。
  • 需要维护时间线和事实的助手的网络小说作者。
  • 创建具有记忆和内部世界规则的基于文本的 AI 机器人的开发者。

当然,源代码和提示词面向中文和英文,但 prompt/ 文件夹内灵活的提示词包配置允许将生成适配到任何语言。AGPL-3.0 许可允许在您自己的服务器上本地部署系统,而不依赖专有云服务。

相关项目