不一定得是一张角色卡
TavernHeadless 的第一目标场景,不是让角色卡继续变得更复杂, 而是让一个客户端项目本身就可以承担过去“角色卡”承担的事情。
角色卡不是唯一形态
在 SillyTavern 的语境里,角色卡是最主要的分发单位。一个角色、一个设定、一套世界观、一部分交互规则,往往都被压进一张卡里。
这很自然。酒馆的生态就是这样发展起来的。作者要分享内容,就把内容做成角色卡。使用者要开始一个场景,就导入角色卡。
但这也带来一个问题:当一个项目越来越复杂时,它仍然被迫表现为“一张角色卡”。
它可能已经有独立的前端界面,有复杂的状态,有自己的规则系统,有多角色交互,也有大量 UI 事件和数据流。可在酒馆里,它还是要被打包成角色卡,最多再把一部分前端塞进 iframe。
这时,角色卡已经不再只是角色卡。它变成了一个项目的容器。
客户端项目也可以是一张角色卡
TavernHeadless 想换一个方向。
如果一个项目本来就是一个完整的客户端,那就让它作为客户端存在。它可以是一个网页应用,也可以是桌面应用、移动端应用、游戏项目,或者一个更具体的交互界面。
它不需要被塞回酒馆的角色卡格式里。它只需要通过 API 和 TavernHeadless 交互。
从这个角度看,一个客户端项目就可以是一张角色卡。
这里的“角色卡”不再指一个固定格式的文件,而是指一套可运行的 AI RP 体验:
- 它有自己的界面。
- 它有自己的交互方式。
- 它可以绑定角色、世界书、预设、记忆和状态。
- 它可以调用引擎能力,完成对话、分支、重试、记忆维护和工具调用。
- 它可以按自己的产品形态展示内容,而不是受限于酒馆消息区和 iframe。
这就是 TavernHeadless 的第一目标场景。
为什么说 TavernHeadless 是引擎
我把 TavernHeadless 称为引擎,不是因为它有一个很大的界面,也不是因为它要把所有事情都做完。
正相反,它不绑定界面。
它提供的是 AI RP 项目反复需要的底层能力:
- 会话、楼层和消息页。
- 分支和重新生成。
- 变量系统。
- 记忆系统。
- 提示词编排。
- 酒馆资产兼容。
- 工具调用和 MCP。
- Prompt Runtime。
- Session State。
- 官方 SDK。
这些能力放在一起,就构成了 AI RP 项目的引擎层。客户端不需要从头处理这些问题,只需要决定自己要做成什么样。
说它像“AI RP 的 Unity 引擎”,这个目标听起来确实很大。但它的核心并不神秘。
这件事没有想象中难
TavernHeadless 要做的很多事情,都不是凭空发明。
酒馆已经证明了很多基础模型是可行的。提示词编排可以参考酒馆的做法。对话流程、变量模型、世界书触发、正则处理,也都有成熟经验可以借鉴。在这个基础上,TavernHeadless 做了更适合后端引擎的拆分和扩展。
工具调用和 MCP 也不是从零开始。现在很多 Agent 项目已经在处理这些问题,可以参考的工程经验很多。
Prompt Runtime 看起来像一个高级能力,但它本质上是把提示词编排过程显式化、结构化、可追踪化。它有设计价值,但技术难度并不夸张。
Session State 也是类似。它是在 Client Data 之后进一步明确出来的。Client Data本质上是客户端专属数据域。Session State 则在这个基础上增加治理、审计、回溯和提交机制,让影响叙事正史的状态有明确边界。
这些事情加在一起,工程量不小,但并不是不可理解的难题。
Vibe Coding 的意义
TavernHeadless 也是通过 Vibe Coding 搭起来的。
这件事本身说明了一个问题:在 LLM 辅助开发已经足够成熟的今天,搭建这样一套引擎不再只属于大型团队。
只要边界清楚,模块拆得合理,测试和文档跟得上,一个人也可以逐步建立一套带有基础能力和高级能力的 AI RP 引擎。
当然,Vibe Coding 不能替代设计。它可以提高实现速度,但不能替使用者判断系统应该有什么边界。TavernHeadless 真正重要的部分,不是代码写得快,而是先想清楚哪些能力应该属于引擎,哪些能力应该留给客户端。
引擎有了,客户端就自由了
引擎层稳定之后,客户端可以有很多形态。
它可以是一个面向创作者的 RP 工作台。它可以是一个 LLM 驱动的剧情游戏。它可以是一个多角色互动项目。它也可以只是一个聊天机器人,虽然对于普通聊天机器人来说,TavernHeadless 可能显得过重。
关键点在于,开发者不再需要为了做一个复杂 AI RP 项目,先重复实现会话、记忆、变量、提示词拼接、分支、工具调用这些基础能力。
这些能力由引擎提供。客户端只负责表达自己的产品形态。
这就是 TavernHeadless 想打开的空间:AI RP 项目不一定得被做成一张角色卡。它可以是一整个客户端项目,而 TavernHeadless 负责提供后面的引擎能力。