【开源自荐】Show Me The Story (更新至V3) —— 用 AI 写长篇小说的本地工具

Show Me The Story [v3] —— 用 AI 系统化写长篇小说的本地工具

单文件、零折腾、数据留在本地。接上你习惯的 OpenAI 兼容 API,从设定、分卷大纲到逐章创作与全书优化,形成一条可控的长篇创作流水线。

  • 项目仓库:show-me-the-story
  • 界面语言:中文 / English,可随时切换
  • 支持平台:Windows, Linux, MacOS
  • 许可证:MIT

这是什么?

Show Me The Story 是一款面向网文 / 长篇小说作者的 AI 辅助写作工具。它不是在线 SaaS,也不是只能聊天出片段的通用对话框——而是一套面向长篇的完整小说生产流水线

  • 管理多个故事项目
  • 结构化维护角色、世界观、组织与人物关系
  • AI 生成全书 / 分卷大纲,支持无限追加新卷
  • 导入已有正文,按章分析且可在中断后恢复
  • 按章写作、审核、确认,带一致性检查、伏笔追踪与叙事记忆
  • 段落级编辑与 AI 修订;可选「去 AI 味」润色、章节衔接优化、全书优化
  • 全局写作助理可查询和操作项目资料

全部跑在你自己的电脑上,通过浏览器界面操作。发布包是单个可执行文件,前端界面已内嵌,无需单独部署 Node 或数据库。


适合谁用?

你可能正在…… 这个工具能帮你
有完整构思,想快速拉出百章甚至千章量级大纲 先生成卷骨架,再按卷生成章节大纲,前情自动压缩
已经写了一部分,想接着往下写 导入已有正文,逐章分析;中断后可从检查点恢复并生成后续大纲
怕 AI 写着写着人设崩塌、前后矛盾 结构化设定 + 写前一致性检查 + 章后事实核查 + 叙事记忆
想埋长线伏笔又怕后面忘了 内置伏笔系统,写作时自动注入活跃伏笔
讨厌一股「AI 腔」 可选技能包去 AI 味
习惯自己调 API、换模型 支持任意 OpenAI 兼容接口,配置保存在本地

如果你只是偶尔让 AI 写几百字段子,这款工具可能偏重;但如果你想系统化地推进一部长篇,它会比通用聊天窗口顺手得多。


核心功能一览

1. 多项目管理与本地数据

每个故事是独立项目,设定、进度、章节和聊天记录互不干扰。启动后先选项目或新建,随时切换;项目语言可在创建时选择中文或英文,决定 AI 提示词与生成正文的语言。

v3 的章节正文采用分章文件存储:大型作品不会再因一个不断膨胀的进度文件而拖慢读写,前端也会按需加载章节正文。

2. 故事配置与结构化设定

  • 基础配置:书名、梗概、写作风格、每章目标字数、核心写作提示词等
  • 角色:姓名、性格、背景、外貌等字段化维护
  • 世界观:条目化管理设定细节
  • 组织:可勾选成员,方便群体关系维护
  • 关系图谱:Canvas 力导向图可视化人物 / 组织 / 世界观之间的关联,支持拖拽与缩放

修改关键设定后,若已有已确认章节,可触发设定协调——AI 会比对新旧设定与正文,尽量自动兼容,并刷新待写章节的大纲。

3. 大纲阶段:短篇直接写,长篇按卷写

  • 根据故事配置生成全书章节大纲
  • 大纲确认后进入写作阶段
  • 支持提出修订意见让 AI 改大纲
  • 支持 inline 编辑单章 pending 大纲
  • 层级大纲:先生成卷级骨架,再逐卷生成章节大纲;已完成卷会压缩为摘要,避免超长篇上下文失控
  • 无限连载:可追加新卷,并自动扩展总章节数与生成新卷大纲
  • 导入已有作品:粘贴全文后本地切章 → 预览确认 → 逐章分析大纲与摘要;任意时刻停止后均可恢复

若已有确认过的章节,会拒绝「整本重新生成大纲」,避免覆盖已完成内容;需要追加章节请用「生成后续大纲」。

4. 写作阶段(重头戏)

每章经历 待写 → 生成中 → 待审核 → 已确认 的状态流转:

  • 流式输出:生成过程实时显示,长章节也不会卡死页面
  • 写前检查:对照前情与上一章结尾,发现大纲与已写剧情冲突时自动微调本章大纲
  • 章节脉络约束:写作时注入后续章节大纲摘要,减少「提前剧透式」误写
  • 事实核查:章后自动核查人设、时间线、伏笔、重复事件等,不通过则自动重写(最多 3 次)
  • 定向修订:可对任意章节(含已确认章)提出修改意见,最小化改动,不影响其他章
  • 段落 Block 编辑:正文按自然段拆分为稳定 Block,可手动编辑、插入、删除,或让 AI 只修订某个段落
  • 引用式修订:框选正文后引用到修改意见,AI 优先只重写命中的自然段
  • 自动确认模式:开启后,每章生成完毕自动确认并继续下一章,适合通宵赶稿(随时可关)
  • 章节衔接优化:已确认 ≥ 2 章时,可批量检查相邻章开头是否生硬,仅必要时微调开头
  • 叙事记忆:每章完成后提取大纲未覆盖的关键细节,在后续写作和核查中持续注入
  • 导出:支持导出 TXT、复制单章内容

5. 伏笔、叙事记忆与全书优化

AI 可建议伏笔,也可手动创建。伏笔有生命周期(已埋下 → 推进中 → 已回收 / 已放弃),写作时会把与本章相关的活跃伏笔注入 prompt。

叙事记忆会记录角色、地点、物品、事件与承诺等不易写进大纲的细节,并附带原文片段,降低长篇写作中“写过却忘了”的概率。

全书章节全部确认后,还可进行全书诊断、一致性核查和优化路线图:先审阅报告与工单,再按选择执行定向修订或润色,避免让 AI 不加区分地重写整本书。

6. 技能(Skill)系统

内置若干可选技能文件,默认全部关闭,由作者按需启用:

功能性流程(大纲、正文、核查)默认不注入技能,避免无意改变文风;只有你明确开启才会生效。

7. 全局写作助理

独立聊天界面,带工具调用能力,可读写项目内的角色、章节、大纲、伏笔等。适合「帮我查一下第三章谁出场了」「把某角色性格改一下」这类交互式操作。

日常核心流程(生成 / 确认 / 修订)都通过页面按钮直接完成,不依赖聊天间接操作。


典型使用流程

新建项目 → 填写 API 配置与故事设定
    ↓
(可选)AI 生成初始角色 / 世界观
    ↓
生成大纲 / 分卷骨架 → 审阅 / 修改 → 确认大纲
    ↓
逐章生成 → 审阅 → 确认(或开启自动确认连写)
    ↓
(可选)去 AI 味润色、优化章节衔接、全书诊断与定向优化 → 导出全文

续写已有作品时,在大纲页选择「导入已有内容」,先检查本地切章预览,再启动逐章分析;中断后可直接恢复,完成后生成后续大纲或追加新卷。


安装与运行

环境要求

  • 一个 OpenAI 兼容 的 API(Base URL + API Key + 模型名)
  • 操作系统:Linux / Windows / macOS(Release 提供多平台预编译包)

从源码构建

# 推荐:一键构建(含前端)
task build

# 运行(默认端口 48090,可用 PORT 环境变量修改)
./show-me-the-story.exe

浏览器访问 http://localhost:48090 即可。

开发模式

task dev            # 编译并启动 Go 后端

数据存放位置

  • 全局 API 配置:api.json(与程序同目录)
  • 各故事项目:storys/{项目名}/ 下,含进度、设定、章节正文、聊天记录等

数据全在本地,换电脑时拷贝整个目录即可迁移。

v3 兼容性提示:v3 使用新的项目存储格式。为保护正文,v3 会将旧版或无法识别的工程显示为不兼容且不会打开;请使用创建该工程的原版本程序继续操作。本版本不提供自动迁移。


技术特点(给折腾党看的)

  • Go 后端零第三方依赖,标准库实现 HTTP、SSE、文件存储
  • 单二进制分发,前端 Vite + Svelte 构建产物通过 embed 内嵌
  • 异步任务互斥:同一时间只跑一个 AI 任务,避免并发写乱数据;可随时停止
  • 流式 SSE 推送:生成过程实时可见,前端做了节流、尾部窗口与按需章节加载优化,长篇不卡顿
  • API 调用无限重试:网络抖动自动退避重试;401/403/404 等配置错误会立即报错
  • 大书上下文换挡:完成的卷压缩为卷摘要,仅保留当前卷的详细章节大纲,支持超长篇持续写作

使用建议

  1. 先写好故事配置再生成大纲——梗概、风格、核心提示词越具体,大纲质量越稳定。
  2. 角色和世界观尽量结构化维护——写作时会自动匹配注入,比每次在聊天里重复描述靠谱。
  3. 不要跳过审核——至少前几章手动确认,确认 AI 文风与叙事节奏符合预期后再开自动确认。
  4. 模型选择——长文写作建议用上下文窗口较大的模型;核查与大纲可用同一模型,也可按成本分层。超长篇可优先使用分卷大纲。
  5. 技能默认关闭是刻意的——需要改文风时再开润色类技能,避免干扰主线生成。

已知局限

  • 依赖外部 LLM API,质量与成本取决于你所选模型与服务商
  • 本质是辅助工具,不是一键出完美成书;大纲、正文仍建议人工审阅
  • 同一时间只能执行一个 AI 任务,批量操作需排队
  • v3 与旧版工程不兼容,且暂无自动迁移;升级前请确认仍可使用旧版本程序打开旧工程

小结

Show Me The Story 把长篇创作拆成了可复用的流程:设定 → 分卷大纲 → 分章写作 → 核查与记忆维护 → 全书优化 → 导出。全程本地可控、项目可管理,既能从零开书,也能导入已有作品后继续连载。

欢迎试用、反馈使用体验,也欢迎交流提示词调优、模型搭配与长篇实战心得。

7 个赞

这个,有点厉害,这应该是一个非常精妙的 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