导入角色卡
支持 SillyTavern 的 V1、V2、V3 角色卡,PNG 或 JSON 文件。卡里的图片用作故事封面,世界书用来搭建开局的世界。
开源项目 · 开发中
用 SillyTavern 角色卡玩的互动小说。AI 用第一人称写一段故事,结尾给两个选项;想做选项之外的事,可以自己写一句。
目前需要自己运行服务器。手机 App 还没有上架应用商店,用 Expo Go 打开;网页版在本地启动。
雾是从海面漫上来的。我走到码头尽头的时候,它已经没过了栏杆。灯塔就在前面,灯却是灭的。 老周在信里说过:雾港的灯一旦灭了,就得有人去点上——可写这封信的人,三天前就不见了。 身后响起一声钟,低沉,潮湿,像是从水底浮上来的。
点选项往下读,也可以改主角的名字、切换夜间模式、打开世界状态。实际使用时,每一段由你配置的模型生成。
需要一张角色卡和主角的名字,其他设置都可以留空。
支持 SillyTavern 的 V1、V2、V3 角色卡,PNG 或 JSON 文件。卡里的图片用作故事封面,世界书用来搭建开局的世界。
名字必填。也可以选一个身份(过路的旅人、旧相识……),设定每段写多长、用什么文风。同一张卡可以开好几个故事。
AI 用第一人称写下一段,结尾给两个选项。点一个继续;想做别的,点“自己写”。
开局时,AI 先读角色卡,整理出人物、地点、物品、组织和秘密。之后每一段都参照这些来写,并随剧情更新。
鼠标移到节点上,相关的关系会高亮;点击查看详情。点一下节点,查看详情和相关的关系。
新来的守夜人。目标:把灯重新点亮。
正文由导演模型写。世界状态、前情摘要和大纲由后台另外整理,不挡下一段;写每一段时,这些都放进上下文,更早的细节导演会去翻原文。
一场戏、一章结束时,后台把前情整理成摘要和全书梗概。原文一直保留;人物和地点的状态另外保存,整理时不会丢。
大纲把主线分成一拍一拍,写每一段时导演都看得到当前这一拍;剧情走偏了,后台会改大纲。还没收回的伏笔另外记在线索表里。
回到前面的某一段重新选。世界状态、摘要和大纲都退回到那一段时的样子。每个存档能回退的次数有上限,默认 1 次。
选项以外的行动,点“自己写”,用一句话告诉导演你要做什么。
网络断了,或者 App 切到后台,回来以后从断的地方接着写,不重复也不缺字。
在“更多”里点“写结局”,可以说明想要怎样的结局,AI 会写一大段收尾。
在“设置 → 模型”里添加:选服务商,贴上 API Key,模型列表会自动出来。可以添加好几个,点一下就能换一个来写故事。费用由模型服务商按用量收取。
目前没有公共服务,需要在自己的电脑或云主机上运行服务器,客户端连接到它。
生产环境第一次启动前要生成主密钥和令牌签名密钥。主密钥丢了,已保存的模型 Key 就解不开了,请另外备份。
$ git clone https://github.com/Hexthebaldy/BetterTavern.git$ cd BetterTavern# 生成密钥,把输出的两行写进 deploy/.env$ docker compose -f deploy/docker-compose.yml run --rm migrate bettertavern keygen$ docker compose -f deploy/docker-compose.yml up -d# 接口监听 127.0.0.1:8000,对外访问要放在带 TLS 的反向代理后面
$ git clone https://github.com/Hexthebaldy/BetterTavern.git$ cd BetterTavern$ cp apps/server/.env.example apps/server/.env# 用 Docker 起 PostgreSQL;用本机的 PostgreSQL 16 就跳过这一行,改 .env 里的 DATABASE_URL$ make db-up$ make install && make migrate$ make dev# 另开一个终端,启动整理世界状态的后台任务$ make worker# 接口文档:http://localhost:8000/docs
$ make js-install$ make web# 浏览器打开 http://localhost:5173# 部署时用 make web-build 生成 apps/web/dist,和接口放在同一个域名下
$ cp apps/mobile/.env.example apps/mobile/.env# 把 apps/mobile/.env 里的地址改成电脑的局域网 IP$ make mobile-install$ cd apps/mobile && npm start# 手机上用 Expo Go 扫终端里的二维码
不收费,BetterTavern 是开源项目。写故事用的是你自己的模型 Key,费用由模型服务商按用量收取。
是的,目前没有公共服务。故事、世界状态和 Key 都存在你自己运行的服务器上,一台常开的电脑或一台小云主机就够。
还没有上架 App Store 和 Google Play。现在用 Expo Go 打开:在电脑上启动客户端(见上面部署里的“手机”),用手机扫终端里的二维码。手机和电脑要在同一个网络里,或者用 Tailscale 这类组网工具连起来。
SillyTavern 的角色卡:PNG 图片或 JSON 文件,V1、V2、V3 都可以,最大 16 MB。PNG 卡的数据存在图片文件里,压缩过或截图得到的图片会丢掉这些数据,要用原文件。
可以。添加模型时选“自定义兼容端点”,填上兼容 OpenAI 接口的地址。端点在本机或内网时,服务器要设置 ALLOW_PRIVATE_ENDPOINTS=true。
开局时 AI 先整理出世界状态,之后每写完一段,后台都按剧情更新它,下一段参照它来写。一场戏、一章结束时,前情整理成摘要;后台还维护一份大纲,导演写的时候对照;更早的细节,导演会去翻原文。写偏了,可以回到前面某一段重新选。
界面有中文、英文和日文,在“设置 → 语言”里切换。故事正文不限定语言,一般跟着开局时的界面语言、角色卡和你写的话走。
BetterTavern 不收集故事内容。写故事时,需要的前情会发给你选的模型服务商,他们怎么处理数据以各家的条款为准;介意的话,可以用自己电脑上跑的模型。