【开源自荐】Show Me The Story V4 —— 用 AI 写长篇小说的本地工具

Show Me The Story v4.0.0 —— 面向长篇小说的本地 AI 创作工具

一个可执行文件、一套浏览器界面。连接你自己的 OpenAI 兼容 API,从设定、分批规划、逐章写作,到知识同步、完稿校订与续作,一条流程完成长篇创作。


这是什么?

Show Me The Story 是一款在本地运行的 AI 长篇小说创作工具。它把创作拆成可检查、可修改的步骤:维护设定,分批生成章纲,逐章写作与审核,跟踪事实和伏笔,完稿后再集中校订和导出。

程序不提供模型服务,需要连接你自己的 OpenAI 兼容 API。正文、配置和项目记录保存在本地;调用 AI 时,本次任务需要的正文、设定和提示词会发送给你选择的模型服务。

发布包是单个可执行文件,前端已经内嵌,不需要另装数据库,也不需要部署前后端服务。启动后在浏览器访问 http://localhost:48090 即可使用。


v4 解决了哪些长篇创作问题?

1. 不再要求一开始定死全书

大纲改为分批规划。每批填写梗概并选择 1–36 章,先写眼前确定的部分,随着剧情发展继续追加。尚未开始写作的末批可以整体调整;长期方向和结尾意图会约束后续规划、一致性检查与伏笔处理。

适合两种常见写法:短篇可以一次规划完整;长篇或连载则按阶段规划,避免前期生成大量很快失效的章纲。

2. 长篇上下文保持有界

小说越写越长,不能把全部历史无差别塞进每次请求。v4 会保留近期章节的详细上下文,把远期内容整理为分层摘要和持久化检查点,并通过本地相关性检索选择事实、设定和旧章纲。

写作、批次规划、规划复盘、设定协调和伏笔检查共用这套有界上下文,减少长篇后期的输入膨胀,同时保留与当前任务有关的信息。

3. 正文会反向更新小说知识

角色行为、地点变化、重要物品、事件与承诺等内容,可以从已确认正文中提取为事实,并保留章节、段落和原文引用。作者设定与正文发生冲突时,不会静默覆盖,而是进入待确认建议。

如果 AI 写错了世界规则,也可以先补充或选择已有知识条目,再定向修订当前章节。所选设定会完整进入这次修订请求,避免只靠模糊检索猜测作者意图。

4. 写作仍由作者逐步把关

每章经过 待写 → 生成中 → 待审核 → 已确认

  • 流式显示正文与实时日志,可随时取消任务
  • 对整章提出修改意见,或只编辑、插入、删除某个段落
  • 框选原文后定向修订命中的内容
  • 写前检查章纲与前情,章后核查事实、时间线和伏笔
  • 自动确认模式可连续写作,前几章仍建议人工审核
  • 已确认正文参与后续知识同步;失败草稿不会污染正式知识

5. 完稿后有独立校订流程

小说完成后,可以进入独立的完稿校订工作区:查看问题报告和正文定位,按章执行自动校订,检查具体修改,并对单章撤销。校订保持段落对应关系,不改变剧情结构,也不会混入正常写作知识同步。

校订完成后可导出全文、问题报告等结果。如果准备写续作,还能从完稿项目创建新的续写项目;前作章节与未完伏笔会作为带继承标记的规划上下文保留,但不会计入新项目的写作进度。

6. 项目备份、恢复与中断保护

项目列表可以下载完整 ZIP 备份,并恢复成一个新项目,不覆盖已有数据。恢复前会检查压缩包路径、大小、JSON、项目版本和章节完整性。

正文和进度写入采用事务式回滚保护。程序在保存中断后会尝试恢复上次完整状态;如果章节损坏或恢复失败,会阻止继续打开并保留诊断,避免把读取失败误当成空白章节覆盖。


其他核心能力

  • 多项目管理;项目可选择中文或英文,界面语言可以独立切换
  • 角色、世界观、组织、人物关系与知识规则管理
  • 导入已有小说,本地切章后逐章分析,支持断点续跑
  • 伏笔建议、进度跟踪、回收与继承
  • 可安装写作 Skill,按项目语言和任务类型启用,默认全部关闭
  • 带工具调用能力的写作助理,可查询和修改项目资料
  • TXT、大纲、校订报告等导出
  • OpenAI 兼容接口、流式响应校验、重试与上下文预算控制

推荐使用流程

创建项目 → 配置模型 API → 填写故事方向与必要设定
    ↓
填写本批梗概和章数 → 生成、检查并确认章纲
    ↓
逐章生成 → 人工审核 / 定向修订 → 确认正文
    ↓
按剧情发展继续规划下一批,直到手动完结
    ↓
完稿校订 → 导出 / 备份 → 可选创建续写项目

第一次使用建议只规划少量章节,关闭自动确认,先确认模型、文风和设定执行是否符合预期。遇到具体操作问题,可以直接查阅完整中文指南


安装与数据位置

v4.0.0 Release 下载对应系统的压缩包,解压到准备用来长期保存作品的目录并运行程序。

默认数据目录是程序启动时的工作目录,也可以传入一个已经存在的目录:

.\show-me-the-story.exe "D:\Novels"

项目保存在 storys/<项目名>/,全局 API 配置保存在 api.json。ZIP 项目备份不包含全局 API 配置和用户安装的 Skill,迁移电脑时请分别保留。

兼容性提示:v4 只打开 project_format_version: 4 的项目。v2、v3 和未知格式只做只读探测,不迁移、不写回。旧项目请继续使用对应旧版本,不能通过手改版本号升级。


已知边界

  • 依赖外部模型 API,生成质量、隐私政策和费用取决于所选服务商
  • 一致性核查依据小说上下文,不等于联网事实核验
  • AI 仍可能遗漏或误用设定,关键内容需要作者审核
  • 同一时间只执行一个 AI 任务,避免并发写乱项目数据
  • 程序面向可信本地环境,不应直接暴露到公网

如果你正在用通用聊天窗口反复复制设定、前情和章节正文,v4 的价值就在于把这些内容变成一套可持续推进、能检查也能恢复的本地工作流。

欢迎试用并反馈真实长篇项目中的问题:

9 个赞

这个,有点厉害,这应该是一个非常精妙的 Skill

顺便发一下调试过程的产物,一本为了庆祝胧村正重制登陆NS2而写的同人小说:

当然,这一本由于是边调试边写的,并不是最新版本下的性能的产物。

2 个赞

API配置那个部分加个测试按钮,
因为很多中转服务有奇怪的设定。
比如有些需要加/v1/,有些不需要
有些对模型名需要写分组比如gemini/flash3.5,而有些则需要写成gemini_flash3.5

直接通过生成文字来测试,有点太费劲了

合理,下版得加上,那自动加/v1/后缀也得去掉了。

欸,能断点续传不,我已经关了电脑了,没法测试,就是比如章节生成到一半,结果API断了,超时了,能继续刚才的状态继续生成吗?(就类似续写模式了)

章节是一个最小内容单元了。中途中断相当于在一次AI对话过程中中断,虽然理论上可以实现接着生成,但是技术上需要考虑的情况会非常多,而且一章内容的生成包含好多个不同的流程,中断可能发生在其中任何一个流程中,处理起来会比较麻烦。

对比而言,重新生成这章的内容要简单得多。

我确实没有用过这么奇怪的端点。毕竟如果是说兼容OpenAI接口的话,正常应该都是兼容/v1/chat/completions端点的才对。

这个其实主要是大家都比较混乱,因为用户也不知道这个项目需不需要加V1,因为有些项目需要填V1,有些又不需要填。有些中转项目,当你复制API地址的时候,它会自动帮你带上V1,而有些呢,则只有API的域名。

看了一下,不如我正在使用的写梨眼好用。

很喜欢把创作流程拆成设定->大纲->逐章这种思路,比让 AI 一口气写完可控太多,尤其大纲这步能先对齐整体结构再展开。我平时更多是做图文类内容(产品介绍、培训材料这种),需求其实很像,先理清骨架再逐页填充。最近在用 Booklet AI https://bookletai.org 做这类小册子,也是先出大纲、再逐页生成图文排版,A4 成稿能直接导出 PDF,省了不少手动排版的功夫。两者思路挺像,一个偏长文、一个偏图文。

是的,这样才能控制长篇故事表达的连续性和一致性。但是这样也仍然不能避免故事缺乏长线发展的线索来让整个故事在时间线上有更强的关联,于是我又特意增加了一个伏笔系统,进一步增强相隔遥远的章节间的长线关联,应该是可以让故事整体性会更好一些。

已添加API测试按钮。

既然是开源的,直接就是要什么功能自己造,我弄了一个拉取模型的按钮

酒館用戶想問:可以 嗎?

理論上是可以的,今天太忙了,我還沒有進行具體的測試,但是結構來說,完全可以

我倒是没加这个,我加了对生成一半的章节完全重新生成的按钮(现在如果生成一半卡住了,需要去progress.json清空对应内容,将状态回去,因为直接让AI去做,工具调用经常出问题,AI重写了,但是实际的本地文件没被修改)

  1. 感觉工具调用不太稳定,在让AI 助理 补充设定,世界观、组织,重写章节时,经常走到AI返回内容了,「 准备调用工具」就没有然后了,啥都没改。从sessions里能看到,AI已经返回了补充的内容,只是程序没有成功调用工具做修改,但是这个事情不是每次都有,时不时会调用失败一次。
  2. 会话管理加个批量删除,经常攒很多没用的会话需要删。
  3. 能不能加个手动修改章节内容、大纲内容的东西,有些地方修改点很小,与其指挥AI去改,还不如自己手动改一下。

这个是AI幻觉问题的一种,我可以通过进一步增强提示词约束来缓解这个问题,但是目前应该比较难根治。我用coding agent也偶尔会遇到这个问题,虽然概率不高,但基本每天都能遇到吧,我的解决方法是跟AI说 “继续”

在V1版本就是这样设计的。有比较大的弊端,就是无论手动修改了什么,都需要AI重读整个章节来确保你的修改仍然符合大纲和章节概览(如果不符合还会引起连锁改动),然后也需要重新跑一遍事实核查等各种后处理流程。总之我自己实际操作下来感觉在这个AI流程里面插入手动的改动是非常繁琐麻烦的事情,不如直接告诉AI怎么改,AI改了会自动化的进行所有的必要流程。

合理需求。可以加上。

v2.4.0 版本更新发布

更新内容

新功能

  • 任务级 Token 追踪:流式输出时实时显示累计 prompt/completion tokens,替代旧的字符计数方案(SSE token_usage 事件 + 前端 TaskTokenBadge 组件)
  • 应用版本显示与更新检查:Header 显示版本号 badge,非 dev 构建时自动检查 GitHub releases 并提示新版本
  • 章节正文局部编辑工具:新增 edit_chapter_content agent 工具及 POST /api/chapter/edit 端点,支持 replace_lines / replace_text / insert_after_line / append 四种操作
  • 叙述视角(Writing POV):配置中新增 writing_pov 字段(如"第一人称女主"、“第三人称限知”),注入到写作和修订 prompt 中
  • 伏笔-大纲一致性检查:大纲变更后自动检测伏笔与大纲的冲突,报告推送到前端伏笔页
  • 事实核查冲突处理流程:事实核查多次失败后暂停生成,提供修改大纲/伏笔/重试/保留稿进入审核等选项供用户选择
  • Keyed i18n 系统:SSE 日志、Agent 工具状态、API 错误信息全部改为 message key + 参数模式,正确按 UI 语言/项目语言分别渲染
  • 强化章节元信息剥离stripChapterMetaProse 新增中英文序言模式匹配(如"以下为修订后的第X章完整正文"),写作/修订 prompt 中明确禁止输出此类元文本

Bug 修复

  • Agent 多轮对话上下文丢失:修复 history 重建时遗漏前几轮 user 消息的问题
  • 工具调用重复渲染:从 assistant content 中剥离 <tool_call> 标签,防止工具调用卡片重复显示
  • 异步子任务前端状态:改用引用计数替代布尔值,子任务结束不影响父任务状态
  • 删除章节保留大纲DeleteChapter / DeleteChaptersFrom 仅清除正文和摘要,保留标题与大纲,状态重置为 pending
  • 会话列表 UX:添加边框、汉堡图标、hover 效果
  • 语言选择可见性:选中状态用 btn-primary,未选中用 btn-ghost,形成清晰对比
  • 前端 A11y 警告:修复 Config.svelte 和 Foreshadows.svelte 中所有 label-control 关联问题(37 处)
  • StartAsync 错误传播:异步任务函数返回错误时正确广播失败状态
  • Agent 日志增强:API 调用前记录消息角色序列和字符数,便于调试
  • 空会话自动清理:加载会话列表时自动清理空会话文件
  • 上下文预算:默认 300k tokens,优先从 /models API 获取实际值
  • 配置默认值持久化:LoadConfig 时将应用的默认值写回磁盘

CI/构建

  • Release workflow 通过 -ldflags '-X main.version=...' 注入版本号

文档

  • README 中新增 Star History 段落

完整变更日志: Comparing v2.3.0...v2.4.0 · Nigh/show-me-the-story · GitHub