📖 长篇中文小说工作台
写长篇的人都懂那种感觉:写到第三十章,突然想不起来第三章里那个配角姓什么;伏笔埋了三十万字,自己先忘了埋在哪;设定越写越多,最后正文、大纲、笔记各说各话。
⚡ ATTENTION IS ALL YOU NEED 怎么吸引读者怎么来,一切为读者服务。先抓人,再自洽:每章必须有核心注意力;事实自洽是底线,不是目标。
这个插件就是给这种时刻准备的——一个装在 DeepSeek Harness 里的长篇中文小说工作台。章节、时间线、事实账本、伏笔、冲突、人物、高光、审稿、提案、计划对齐,都在一个地方;AI 不只是陪你聊,它能直接读这些账本,帮你生成下一章、审稿、补时间线,但所有 AI 产出都先落在「提案」里,你点头才进正文。
不限文体:武侠、悬疑、科幻、言情、文学都可以。内置金庸、古龙、梁羽生、柯南·道尔、阿加莎·克里斯蒂、东野圭吾、刘慈欣、村上春树八套风格预设,也可以自己调。
两个支柱:事实与注意力
| 支柱 | 管什么 | 判据 |
|---|---|---|
| 事实(Canon) | 人物、物品、地点、时间线/事件、事实账本、伏笔、冲突、因果、世界规则 | 空间、时间、逻辑都自洽 |
| 注意力(Attention) | 每章一个 0–100 总分、四拍(钩子/张力/回报/章末牵引)、类型、弃读点 | 读者读不读得下去、想不想追 |
- 事实层保证"不错":事实账本 + 时间线 + 世界/地点(空间自洽检查);
- 注意力层保证"好看":每章必须先有核心注意力设计,再写正文;冷读打分是实测,设计分与实测分的差 ≥20 就是"设计没兑现"。
- 原则、字段、检查规则、生成链路见
docs/ATTENTION.md;世界/地点模型见docs/WORLD-MODEL.md;整本书流水线见docs/FULLBOOK-PIPELINE.md。
先看几张图
⚡ 注意力:每章 0–100 分、曲线、弃读点、设计目标分与实测分的对照

🌍 世界地图:地点、连接、距离/天数/方位,空间自洽可核对

🗺️ 章节地图:按章蛇形铺开,一眼看到进度、注意力分档和素材角标

🕰️ 时间线全景:事件、伏笔埋收、冲突、高光、注意力按章汇合

截图来自 v0.5.0 的只读视图(与工作台内同一份数据,带打印/导出 PDF 样式),使用演示作品《青霜照夜》与《鱼龙舞》的数据,不含真实作品。工作台内的交互界面另有「注意力 / 地图 / 世界 / 整本书」等页签。
版本状态:当前版本 v0.5.0。这一版新增 注意力一号原则(attention is all you need)、世界模型与坐标地图、章节地图、整本书全自动生成流水线、11 个 Agent(独立审稿人 + 注意力设计师)、事实/冲突/伏笔合并视图、人物卡、会话目标选择等。npm 上最新发布见 npm 页面。
安装(30 秒)
- 打开 DeepSeek Harness;
- 进 设置 → 插件;
- 在安装框里输入:
dsh-long-novel-workbench
- 安装,刷新页面;
- 左下角侧栏出现 「📖 长篇中文小说工作台」,点开就能用。
命令行安装也可以:
dsh plugin --profile <你的 profile> add dsh-long-novel-workbench
没有 npm 网络时,也可以从 GitHub Release 下载 tarball 安装。
从本地源码安装(v0.4 开发版)
git clone https://github.com/micellince/dsh-long-novel-workbench.git
cd dsh-long-novel-workbench
npm test # 可选:先确认测试全绿
然后让 profile 的插件指向这个目录(在 DSH 里用插件管理工具 install_bundle,目标填上面的绝对路径),或把本地路径加进 profile 的依赖后再重载插件。改 Host 代码(index.js、lib/*.js)后需要重载插件才生效;改 client.js 后刷新页面即可。
第一次打开
- 点右上角「+ 新建作品」,填书名、类型、目标章数/字数;想要整本生成,就勾选「创建后进入整本书:先生成蓝图与大纲」,先验收蓝图/大纲,再点「生成全文」;
- 开发记录见
WORKLOG.md,待办见BACKLOG.md。
工作台只做看板和验收:所有 AI 动作(审阅、修改、生成方案)都从工作台「发到对话」,由左侧对话里的 Agent 执行,结果以提案/审稿回到工作台。
已经有稿子?点「⬆ 导入作品 / 作品包」,可以直接点「浏览…」选目录或整本书文件(.md / .txt / .epub / .pdf / .mobi)。导入会在 DSH 默认工作区下为这本书新建同名工作区。TXT/EPUB/MOBI(PalmDOC) 纯 JS 解析,PDF 需要 pdftotext。会自动识别 正文/、wiki/entities、大纲.md、追踪.md、写作规范.md、故事线.md,一次导入章节 + 人物卡 + 大纲 + 时间线 + 事实 + 伏笔 + 预设;导入完成点「开始审阅」,AI 会补缺失并核对冲突。只读扫描,不改原文件;
- 数据默认存在
~/StoryDesk,全是普通 Markdown/JSON 文件,能备份、能进 Git、能用别的编辑器打开。
功能一览
工作台共有 19 个页签,按「注意力 / 正文 / 验收 / 工具」分组:注意力(注意力、伏笔、冲突、高光)、正文(章节、地图、世界、人物、时间线、事实账本)、验收(审稿、提案、对齐)、工具(仪表盘、整本书、分工、预设、设置)。
写和改
- 章节编辑器:标题、状态、故事内时间、地点、出场人物、摘要、正文;停止输入 5 秒自动保存,关闭时若有未保存改动会提示。
- 章节历史:覆盖已有章节且内容确实变化前,旧稿自动备份(每章最多保留最近 100 份);可以查看历史版本与当前稿的逐行 diff,并恢复到指定版本——恢复前会先把当前正文再备份一份。
- 批量处理:提案页支持按类型筛选、全选、批量采纳 / 批量驳回;审稿页支持按严重度筛选、全选、批量「标记已修 / 忽略」。单条失败不影响其他条目,失败项会明确提示。 清单发送前可以选目标会话(默认你当前正在看的那个,其次本书上次用过的),不会因为新开过审稿会话就发错地方。
视图
- 人物关系图:人物页可切换「列表 / 关系图」。关系图是 SVG 力导向布局,支持
名字(关系)、名字(关系)、名字:关系等写法;目标人物还没建卡时显示为虚线幽灵节点;节点可拖拽,悬停高亮相邻节点与边,点击打开人物编辑卡。 - 人物卡(游戏化):人物页可按「列表 / 卡片 / 关系图」切换,列表与卡片都按重要性排序(主角 > 反派 > 配角 > 龙套,再按出场章数与冲突数)。卡片视图是游戏角色卡风格;详情是两栏人物卡,带头像、角色色、出场/冲突/事实/高光/注意力均分五个数值。
- 注意力一号原则:工作台常驻「⚡ ATTENTION IS ALL YOU NEED · 怎么吸引读者怎么来 · 一切为读者服务」;总览页置顶口号与注意力指标;生成下一章时工作单把注意力设计放在最前面(最近曲线、疲劳预警、目标分、四拍),并带强制补强(上一章设计分与实测分差 ≥20 或低于均值 → 点名最弱一环要求本章补上);plan 提案没带注意力设计会被直接拒绝。
- 章节地图(🗺️ 地图):按章号蛇形排成进度地图,节点带状态色、注意力分档、字数和「事件 / 冲突收束 / 伏笔埋收 / 高光」角标;计划章用虚线显示;点节点看本章摘要、注意力记录、事件/冲突/伏笔/高光,可跳到章节页。
- 生成整本书(📚 整本书):新建时设总章数/每章字数/预算 → 先让 AI 生成「事实 + 注意力蓝图 + 全书大纲」给你验收 → 点「生成全文」进入一个 goal:AI 自己在会话里建目标、派子 Agent,按卷循环「写 → 审一次 → 修一次」(修订自动采纳),最后全书总审 + 总修;也可选「按 N 章生成」分段跑。全程不打扰你,工作台只显示进度、预算(估算不准,仅参考)和暂停/恢复;结束后提示交给独立审稿人冷读。
- 世界与地点(🌍 世界):世界设定(名称/尺度/现实或架空/时代/步行·骑马·行船日均里程)+ SVG 坐标地图,地点可拖拽调坐标、点开编辑(别名、类型、区域、首现章、与相邻地点的距离/天数/交通/方位);新建作品时可以让 AI 生成世界与 8–20 个地点,老作品可以「AI 反推地点」;检查器会报地点不存在、相邻章之间没有路线、坐标越界/重叠、首现章晚于引用等空间问题。
- 只读视图:世界 / 时间线 / 章节地图都有只读 HTML 视图(同源路由 + 面板内 iframe),带打印样式,便于对照和打印。
- 时间线全景:时间线页第三个视图,按章聚合事件、伏笔埋设/回收、冲突、高光和注意力分数,可按类别过滤;点章标题跳到章节页。
- 冲突按参与方 / 伏笔按回收段:冲突页可按参与方组合折叠(华羽生×张天一…),伏笔页可按计划回收章每 10 章一段折叠,展开看细节,支持搜索。
- 时间线泳道:时间线页可切换「列表 / 泳道」。按卷(没有卷信息时每 20 章)分泳道,横轴是章号;事件按重要度着色,点击可编辑;伏笔的「埋设章 → 回收章」用曲线连接(未回收实线、已回收灰色虚线);顶部有 0.5x–3x 缩放滑块。
- 总览与计划对齐:章数 / 字数进度、每章偏离、事件 / 事实 / 审稿 / 提案的覆盖情况;对齐页会显示当前使用的预设。
- ⚡ 注意力(每章一个 0–100 总分):每章记一条——主类型、0–100 总分、目标分、下一章意愿、钩子 / 张力 / 回报 / 章末牵引、最弱一环、弃读点与详细说明;页面上有 100 分制注意力曲线(类型着色、目标分虚线、弃读点红标)和章节诊断卡。伏笔 / 冲突 / 高光不用搬数据,按章号自动聚合到对应章卡片下(埋了哪些、收了哪些、引爆了哪些)。已有书在注意力页点一次「加入清单:AI 补齐注意力机制」就能逐章补设计;冷读打分只评文本、不写设计。检查器会报:缺记录、章末没牵引、同类型连超 3 章、相邻章骤降、设计与实测差 ≥20、平均分 <60。
数据与检查
- 事实账本时间维度:事实可以填「生效章 / 失效章」(
validFrom/validTo),同一属性在不同阶段合法变化不会再被一刀切报成冲突。 事实页可切换「平表 / 按主体」:按人/物/组织折叠成卡片,展开看这个主体的全部属性与取值,冲突主体有标记,几十条事实不再散开。 - 确定性检查(不花 token):同一属性在重叠章段出现不同取值、伏笔过了计划回收章还没回收、章节引用了没建卡的人物、审稿里的阻断 / 严重问题、计划章节 / 字数与实际进度的偏离。
- 多预设 / 多卷:预设页可以把某套预设「设为当前」,对齐按当前预设计算;预设也可以带章节范围,按卷汇总计划章数与字数。
导入与导出
- 导入 Markdown:作品库页输入本机目录路径,先扫描预览(文件数、章节数、总字数、前 20 章标题),再填作品名导入;可新建作品,也可追加到现有作品并从现有最大章号续号。递归扫描,优先按
#/##标题切章,没有标题则一个文件一章。 - 导出:Markdown 合集、EPUB(EPUB 3)、DOCX。实现零依赖,EPUB 的
mimetype按规范放在第一条且不压缩,DOCX 章节标题使用Heading1样式。
AI 怎么替你干活
统一入口:清单(购物车)。审稿、提案、一致性检查、注意力补齐、世界生成、下一章方案……都先「加入清单」,再一次发到左侧对话,由 Agent 调 novel_desk_* 工具执行;工作台只负责验收。清单发送前可以选目标会话(默认你正在看的那个)。
也可以直接在聊天里说:「给《长夜将明》补第 3 章时间线」「审一下第 2 章」「把这本书写成 60 章」。Agent 会先调 novel_desk_plan / novel_desk_context 拿工作单和上下文,再提交提案。
生成整本书:新建作品时设总章数/每章字数/预算 → 先让 AI 产「事实 + 注意力蓝图 + 全书大纲」给你验收 → 点「生成全文」(或按 N 章),进入一个 goal:AI 自建目标、用 subagent 分派,按卷循环「写 → 审一次 → 修一次」,最后总审 + 总修,结束提示交给独立审稿人。全程不打断你,预算到 80% 提醒、100% 自动暂停。
所有 AI 结果都先停在「提案」里:可以 采纳 / 提修改意见 / 让 AI 按意见重写 / 驳回,也可以批量采纳或驳回。章节正文提案带逐行 diff,采纳前自动备份旧稿。它不会背着你改正文(整本书流水线里的"流程内修订"是例外:工作台按 runId 自动采纳,提案页留痕)。
所有 AI 结果都先停在「提案」里:可以 采纳 / 提修改意见 / 让 AI 按意见重写 / 驳回,也可以批量采纳或驳回一批提案。章节正文提案带逐行 diff,采纳前自动备份旧稿。它不会背着你改正文。
11 个 Agent 分工
总编、大纲师、世界观师、人物师、时间线师、伏笔师、连续性审稿、文笔审稿、责任编辑,加上 独立审稿人(零上下文冷读)和 注意力设计师(权重最高)。
前九位都是「带背景的稽核」:先读账本和预设,再判对不对、合不合规。独立审稿人反过来——零上下文首读,不读账本、预设、大纲、人物卡,只拿到一章正文,像一个第一次读到的读者,说哪里抓得住、哪里想弃读、人物可不可信、信息过载还是不足。
「分工」页顶部有一张高亮卡,可以选 读一章 或 读全书,再点「带这章 / 全书进新会话」:它会新开一个干净会话,只带正文。读一章给 8 行内的本章意见;读全书给 12 行内的整体意见(主线、人物、节奏、断点)。整本放得下就整本投递;大部头(比如 95 万字的《鱼龙舞》)自动转成分批工作单,由子 Agent 分别读正文再汇总——不会硬塞进一个上下文。读完把「首读」审稿写回审稿页。文章没写完也能跑——单章评的是这一章本身,不看全书连贯性。
注意力设计师(权重 10,最高)不写正文,专门管"这一章靠什么留住人":定本章主类型(事件 / 情感 / 文字 / 悬念 / 关系),在哪一拍埋哪条伏笔、哪条冲突升级、保留哪段高光做兑现,给目标分。它是在生成阶段干活的——写大纲、做下一章方案、写正文时,设计先于情节产出并落成 attention 记录;已有书则在注意力页点「+ 加入清单:AI 补齐注意力机制」,AI 逐章补设计。
独立审稿人只负责实测:给每章 0–100 分、写清哪里不足、最弱一环、弃读点、会不会读下一章。设计和实测写进同一条记录,按章号合并;两个分数差 ≥20 就是设计没兑现。
每个角色有职责、输入、产出,写在「分工」页里,AI 写作和审稿时会读这份分工。你可以改。
数据在哪
~/StoryDesk/
library.json
projects/<id>/
project.json
chapters/NNNN.md ← frontmatter + 正文
facts.json ← 事实账本(可带 validFrom / validTo)
events.json ← 时间线
foreshadow.json ← 伏笔
conflicts.json ← 冲突
characters.json ← 人物(可带 relationships)
world.json ← 世界设定(尺度/类型/时代/坐标空间/交通模型)
pipeline.json ← 整本书生成流水线(模式/阶段/预算/进度/会话)
locations.json ← 地点(坐标/别名/连接距离与天数/方位)
attention.json ← 注意力(每章 0–100 总分 + 四拍 + 详细说明)
highlights.json ← 高光(注意力的兑现素材)
reviews.json ← 审稿
proposals.json ← 提案
agents.json ← 11 个 Agent 分工(含独立审稿人、注意力设计师)
presets.json ← 写作预设(可带 chapterFrom / chapterTo 做多卷)
.backups/ ← 章节历史版本(每章最多 100 份)与采纳正文提案前的旧稿
没有数据库,没有私有格式。停用插件,数据还在。
目录根可以用环境变量 STORY_DESK_ROOT 覆盖(测试 / 多套数据时很有用)。
它还会替你看这些
- 同一个属性,在生效区间重叠的章段里出现两个不同取值 → 事实冲突;不同阶段合法变化不报
- 伏笔过了计划回收章还没回收 → 报警
- 章节引用了没建卡的人物 → 提示
- 审稿里的阻断/严重问题 → 进总览
- 计划章数/字数 vs 实际进度 → 对齐页
- 注意力:缺记录、章末没牵引、同类型连超 3 章、相邻章骤降、设计分与实测分差 ≥20、平均分 <60
- 空间:地点没登记、相邻章之间没有路线、坐标越界/重叠、地点首现章晚于引用
- 生成:预算 80% 提醒 / 100% 暂停;整本书阶段进度与卡住恢复
这些规则都是确定性的,不花 token。
开发与测试
需要 Node 22+(^22.19.0 || >=24.0.0)。仓库没有第三方依赖,也没有构建步骤。
git clone https://github.com/micellince/dsh-long-novel-workbench.git
cd dsh-long-novel-workbench
npm test # node --test test/,零依赖
node --check index.js # 宿主入口语法检查
node --check client.js # 浏览器模块语法检查
- 测试自己用临时目录,正常不会碰
~/StoryDesk;手动调试请显式隔离:STORY_DESK_ROOT=/tmp/storydesk-dev npm test。 - 本地开发:让 profile 的插件指向本仓库;改 Host 代码(
index.js、lib/*.js)后重载插件,改client.js后刷新页面。 - CI 在 Node 22 / 24 上跑上面这些检查;推送
v*tag 会用NPM_TOKEN发布 npm(见.github/workflows/)。
细节(热重载、发布流程、代码风格)见 CONTRIBUTING.md,版本变更见 CHANGELOG.md。
欢迎 Star,也欢迎来骂
如果这个工作台帮你少踩一个坑,点个 ⭐ 就是最大的鼓励;用着不顺手、缺什么功能、发现 bug,直接开 Issue 告诉我,我会看。
也欢迎 PR:预设、Agent 分工、检查规则都是数据驱动的,很好加。
License
MIT。拿去用,随便改。
Made for people who write long things. 如果你也在写一本很长的书,祝你写得完。
No comments yet. Be the first to write one.