Back to home

flizzywine

dsh-tavern

基于 DeepSeek Harness(DSH)的 SillyTavern 类文字游戏 Agent,支持候选项生成、对话式人物卡编辑、剧本模式与素材抽取。

Stars
2
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-tavern

基于 DeepSeek Harness(DSH)制作的 SillyTavern 类文字游戏 Agent。

它可以直接导入酒馆人物卡,也可以从小说、剧本和人物素材中制作新卡。选一张卡后,你既可以自由游玩,也可以绑定一份剧本,让故事沿着既定主线长期推进。

dsh-tavern 复用 DSH 的会话、模型、工具调用、重试和上下文能力,把人物卡游玩、候选项、设定编辑、世界书与剧本推进整合成一套完整体验。

dsh-tavern 游戏游玩界面:正文、输入区与右侧剧情状态

候选项分轮生成,绝不会掉格式

这是 dsh-tavern 最核心的设计。

很多文字游戏让模型一次性输出“正文 + 选项”,玩久以后很容易出现选项混进正文、编号丢失、格式崩坏,或者为了维持选项格式而牺牲正文质量。

dsh-tavern 把它们拆成独立调用:

  1. 第一轮只生成故事正文;
  2. 你需要灵感时,再单独点击“生成候选项”;
  3. 候选项以固定结构显示在独立面板,不会写进正文;
  4. 选中后只是填入输入框,你仍然可以修改,也可以完全自由行动。

因此候选项绝不会混入正文,也绝不会出现为了附带选项而掉格式的问题。

自由游玩:四种人物行动 + 一个场景变化

没有绑定剧本时,故事只根据人物卡、世界书和当前会话自由发展。每次生成五个候选:四个人物行动,一个场景变化。

自由游玩模式生成五个候选项

候选不合心意,不必接受,也不必重写正文。点击“重新生成候选项”,直接告诉 Agent 你想往哪里走:

填写意见重新生成自由游玩候选项

它会保留已经写好的正文,只重新生成一组符合意见的候选。

按照用户意见重新生成后的自由游玩候选项

独立总结人物姿势,避免连续性错乱

正文完成后,dsh-tavern 会再进行一次独立结算,把人物此刻的位置、动作和姿势整理成一句状态,保存到会话并注入下一轮。它不要求正文顺手附带总结,因此和候选项一样,不存在掉格式或模型忘记总结的问题。

右侧状态栏会显示“姿势已同步”和最新人物姿势。重新生成正文时会重新结算,回退本轮时也会一起恢复,避免人物忽然换位置、重复动作或姿势前后矛盾。

正文完成后独立总结并同步人物姿势

像聊天一样编辑人物卡

卡片模式把人物设定修改变成一段可以审查的 Agent 对话:先分析问题、比较方案,只有你明确确认后才写入字段。右侧人物卡侧栏始终同步显示当前内容,也可以直接手动编辑并保存。

通过对话分析人物卡但不修改字段,右侧同步显示人物卡

通过对话比较两种修改方案,右侧同步显示人物卡

确认方案后写入人物卡字段,右侧实时显示修改结果

剧本模式:让故事真正沿着主线往下走

自由游玩擅长即兴,但长篇故事最容易遇到的问题,是模型逐渐忘记主线、重复场景,或者一直停留在眼前的对话里。

dsh-tavern 可以给人物卡绑定一份独立小说、剧本或故事大纲。绑定以后,新会话进入剧本模式:Agent 会根据当前剧情读取相关剧本片段,判断故事进行到哪里,并沿着后续冲突、转折和场景继续推进。

自由游玩模式剧本模式
故事方向根据人物卡和当前对话自由发展参考绑定剧本的主线与后续情节
候选项四个人物行动 + 一个场景变化一个最贴合主线的推荐行动
剧情进度没有固定终点记录剧本游标与已读取片段
适合即兴互动、日常陪伴、开放故事小说改编、长篇剧情、明确故事线

人物卡与剧本独立管理

同一张人物卡可以绑定、替换或解绑剧本。人物设定留在卡里,故事路线留在剧本里,不需要把整本小说硬塞进人物卡提示词。

公开案例可以直接绑定 the-missing-silver-bell-caravan.md,从银铃商队失踪开始,沿六幕悬疑主线推进。

看得见的剧情进度

剧本会被分段读取。右侧显示当前游标、已经召回的片段、当前参考内容和接下来的剧情,你可以直接看见故事走到哪里。

剧本正文与右侧剧情进度、召回片段和后续预览

剧本模式的意外发现:自然减少 AI 味

AI 直接续写时,输出往往会逐渐回到常见的句式、节奏和叙事套路,产生明显的“AI 味”。很多预设试图通过禁用词、句式限制或生成后的 AI 味检查来解决,但这些方法容易误伤正常表达。

剧本模式提供了另一条路径:在生成正文时,把当前剧情对应的剧本片段作为局部参考注入上下文。剧本不仅提供故事方向,也提供具体的叙事节奏、动作组织、对白密度和场景细节,从而显著改变模型的输出分布。

因此,它不需要维护禁用词表,也不依赖事后检查,就能自然减少模板化表达,让生成文本更接近剧本本身的叙事质感。

剧本模式只推荐一个主线行动

自由游玩给五种可能,剧本模式只给一个更有剧情意义的推荐。它会承接正文结尾,并把故事带向剧本中的下一处关键场面,而不是把主线稀释成五条互不相干的岔路。

剧本模式只给出一个主线推荐

剧本提供方向,Agent 负责动作、对白、情绪与现场细节。你仍然可以自由输入、偏离推荐、重新生成候选、重写正文或回退本轮;剧本是故事骨架,不是不可违背的选项菜单。

从原始素材制作人物卡

手里只有小说片段、人物设定、世界背景或故事创意,也可以直接开始。

一次选择多份素材,再告诉 Agent 谁是玩家、准备提炼谁。它会通读素材,区分人物信息与世界背景,确认人物关系,然后逐步整理出:

同时选择人物素材与世界背景

  • 角色描述与性格;
  • 场景设定与开场白;
  • 对话示例;
  • 系统提示词与持续指令;
  • 标签、备选开场与世界书。

抽取过程本身也是一场 Agent 对话。你可以要求它先分析、补充遗漏、重新组织某个字段,再确认生成,不必接受一次性完成但充满误解的卡片。

通过 Agent 对话从素材提炼人物卡,右侧同步显示素材与玩家身份

仓库里的完整演示使用:

其他功能

功能能做什么
直接导入酒馆人物卡导入常见的 SillyTavern PNG / JSON 卡,保留主要字段、备选开场和世界书;可用 avra-before.json 测试
导出人物卡将编辑完成的人物卡重新导出为 JSON
带意见重写正文指定保留内容、删减方向、人物反应或对白长度,只替换当前正文
世界书保存地点、组织、道具和人物关系,并按剧情关键词读取相关条目
Guide给当前会话添加持续写作要求,同时影响正文和候选,不污染人物卡
回退本轮一起撤销最近的用户输入、正文、人物姿势和剧本进度
精修正文内容确定后,再单独整理节奏、过渡和措辞
历史会话保存、重命名并继续自由故事、剧本故事、设定对话和素材抽取
自由输入候选永远只是建议,最终行动始终由玩家决定

为什么删除了 SillyTavern 式预设

SillyTavern 的预设混合了两类本应分开的内容:

  1. 流程控制:候选项、姿势总结、重生成、剧本召回、世界书检索和上下文策略。这些不是写作偏好,而是 Agent 的工作流程。在 dsh-tavern 中,它们被拆成多次独立调用和工具,各自生成、校验并持久化,不再要求模型背着一整套格式指令完成所有事情。
  2. 内容偏好:语言风格、叙事视角、人物口吻和行为边界。这些内容应该跟随人物卡,而不是跟随一份全局预设,因此保存在 descriptionpersonalitysystem_promptpost_history_instructionsmes_example 等人物卡字段中。

所以 dsh-tavern 不提供“预设选择”和“预设编辑”。想改变角色与文风,就在卡片模式里和设定 Agent 对话;想改变流程,则调整 Agent 工具与召回策略。换一张人物卡,内容偏好自然一起切换,不需要维护一堆预设和参数。

公开演示案例

仓库附带原创案例 《金麦穗酒馆:失踪的银铃商队》

  • 修改前、对话修改结果与完整世界书版三张人物卡;
  • 两份用于制作人物卡的原始素材;
  • 一份六幕奇幻悬疑剧本;
  • 一套覆盖所有功能的产品演示脚本。

demo/README.md 查看案例文件,或按照 product-demo.md 完整体验。

开始使用

安装完成后运行:

dsh-tavern start

打开 http://127.0.0.1:3081,导入一张人物卡开始游玩。

安装方法与环境要求

需要 Node.js、pnpm、DeepSeek Harness(dsh)和 lsof

克隆仓库并进入项目目录后运行:

pnpm run install:tavern

安装程序会创建独立 Tavern profile、安装依赖、准备本地数据目录,并把 dsh-tavern 命令安装到 ~/.local/bin。安装后请保留仓库目录。

如果终端找不到 dsh-tavern,请把 ~/.local/bin 加入 PATH 后重新打开终端。

启动、停止与日志
dsh-tavern status
dsh-tavern restart
dsh-tavern stop
dsh-tavern start

需要查看前台输出时,可以运行:

dsh --profile tavern

日志位于 ~/.dsh/logs/tavern.log。代码更新并重启后,如果页面仍显示旧界面,请使用 Cmd + Shift + R 强制刷新。

本地数据与当前边界

人物卡、会话、剧本和素材保存在仓库的 data/ 下,并已被 .gitignore 排除。

  • 备选开场白可以导入、编辑和导出,但新会话目前固定使用主开场白;
  • 世界书高级属性会保留,目前界面主要编辑触发词和内容;
  • dsh-tavern 依赖 DSH 的模型配置和运行环境。